|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 05/25] arm/altp2m: Rename and extend p2m_alloc_table.
Hi Julien,
On 08/03/2016 07:57 PM, Julien Grall wrote:
> Hello Sergej,
>
> Title: s/altp2m/p2m/
>
> On 01/08/16 18:10, Sergej Proskurin wrote:
>> The initially named function "p2m_alloc_table" allocated pages solely
>> required for the host's p2m. The new implementation leaves p2m
>> allocation related parts inside of this function to generally initialize
>> p2m/altp2m tables. This is done generically, as the host's p2m and
>> altp2m tables are allocated similarly. Since this function will be used
>> by the altp2m initialization routines, it is not made static. In
>> addition, this commit provides the overlay function "p2m_table_init"
>> that is used for the host's p2m allocation/initialization.
>>
>> Signed-off-by: Sergej Proskurin <proskurin@xxxxxxxxxxxxx>
>> ---
>> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
>> Cc: Julien Grall <julien.grall@xxxxxxx>
>> ---
>> v2: Removed altp2m table initialization from "p2m_table_init".
>> ---
>> xen/arch/arm/p2m.c | 29 +++++++++++++++++++++++------
>> 1 file changed, 23 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
>> index 17f3299..63fe3d9 100644
>> --- a/xen/arch/arm/p2m.c
>> +++ b/xen/arch/arm/p2m.c
>> @@ -1277,11 +1277,11 @@ void guest_physmap_remove_page(struct domain *d,
>> p2m_remove_mapping(d, gfn, (1 << page_order), mfn);
>> }
>>
>> -static int p2m_alloc_table(struct domain *d)
>> +int p2m_alloc_table(struct p2m_domain *p2m)
>
> The function p2m_alloc_table should not be exposed outside of the p2m.
> I explained it why in the previous patch.
>
It will be considered in the next patch.
>> {
>> - struct p2m_domain *p2m = &d->arch.p2m;
>> - struct page_info *page;
>> unsigned int i;
>> + struct page_info *page;
>> + struct vttbr *vttbr = &p2m->vttbr;
>>
>> page = alloc_domheap_pages(NULL, P2M_ROOT_ORDER, 0);
>> if ( page == NULL )
>> @@ -1293,11 +1293,28 @@ static int p2m_alloc_table(struct domain *d)
>>
>> p2m->root = page;
>>
>> - p2m->vttbr.vttbr = page_to_maddr(p2m->root) |
>> ((uint64_t)p2m->vmid & 0xff) << 48;
>> + /* Initialize the VTTBR associated with the allocated p2m table. */
>> + vttbr->vttbr = 0;
>> + vttbr->vmid = p2m->vmid & 0xff;
>> + vttbr->baddr = page_to_maddr(p2m->root);
>
> This change does not belong to this patch. If we want to use VTTBR, it
> should be in patch #3.
>
Will not be considered if we decide to drop the patch #03.
>> +
>> + return 0;
>> +}
>> +
>> +static int p2m_table_init(struct domain *d)
>> +{
>> + int rc;
>> + struct p2m_domain *p2m = p2m_get_hostp2m(d);
>> +
>> + rc = p2m_alloc_table(p2m);
>> + if ( rc != 0 )
>> + return -ENOMEM;
>> +
>> + d->arch.altp2m_active = false;
>
> Please avoid to spread the change for altp2m everywhere. The addition
> of altp2m in the p2m code should really be a single patch.
>
Ok, thank you. I will move this part to altp2m_init.
>>
>> /*
>> * Make sure that all TLBs corresponding to the new VMID are
>> flushed
>> - * before using it
>> + * before using it.
>> */
>> p2m_flush_tlb(p2m);
>>
>> @@ -1440,7 +1457,7 @@ static int p2m_init_hostp2m(struct domain *d)
>> if ( rc )
>> return rc;
>>
>> - return p2m_alloc_table(d);
>> + return p2m_table_init(d);
>> }
>>
>> int p2m_init(struct domain *d)
>>
>
>
Best regards,
~Sergej
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |