|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/18] arm/altp2m: Renamed and extended p2m_alloc_table.
Hello Julien,
On 07/04/2016 08:43 PM, Julien Grall wrote:
> Hello Sergej,
>
> On 04/07/16 12:45, Sergej Proskurin wrote:
>> +int p2m_table_init(struct domain *d)
>> +{
>> + int i = 0;
>> + int rc = -ENOMEM;
>> + struct p2m_domain *p2m = p2m_get_hostp2m(d);
>> +
>> + spin_lock(&p2m->lock);
>> +
>> + rc = p2m_alloc_table(p2m);
>> + if ( rc != 0 )
>> + goto out;
>> +
>> + d->arch.vttbr = d->arch.p2m.vttbr.vttbr;
>> +
>> + /*
>> + * Make sure that all TLBs corresponding to the new VMID are
>> flushed
>> + * before using it.
>> */
>> flush_tlb_domain(d);
>>
>> spin_unlock(&p2m->lock);
>>
>> - return 0;
>> + if ( hvm_altp2m_supported() )
>> + {
>> + /* Init alternate p2m data */
>> + for ( i = 0; i < MAX_ALTP2M; i++ )
>> + {
>> + d->arch.altp2m_vttbr[i] = INVALID_MFN;
>> + rc = p2m_alloc_table(d->arch.altp2m_p2m[i]);
>
> Why do we need to allocate all the altp2m root page tables at the
> creation of the domain? This is wasting up to 80KB (2-root page for 10
> altp2m) per domain even if it may not be used at all by the domain.
>
As previously discussed in patch #05, I will change this behavior in a
way that altp2m views will be allocated at run time only when they are
needed. Thank you.
>> + if ( rc != 0 )
>> + goto out;
>> + }
>> +
>> + d->arch.altp2m_active = 0;
>> + }
>> +
>> +out:
>> + return rc;
>> }
>>
>> #define MAX_VMID 256
>> diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h
>> index 783db5c..451b097 100644
>> --- a/xen/include/asm-arm/p2m.h
>> +++ b/xen/include/asm-arm/p2m.h
>> @@ -171,7 +171,7 @@ int relinquish_p2m_mapping(struct domain *d);
>> *
>> * Returns 0 for success or -errno.
>> */
>> -int p2m_alloc_table(struct domain *d);
>> +int p2m_table_init(struct domain *d);
>>
>> /* Context switch */
>> void p2m_save_state(struct vcpu *p);
>>
>
> Regards,
>
Best,
~Sergej
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |