On 23/12/2019 18:23, Julien Grall wrote:
> Hi,
>
> On 17/12/2019 21:15, Andrew Cooper wrote:
>> xc_dom_p2m() and dom->p2m_host[] implement a linear transform for
>> translated
>> domains, but waste a substantial chunk of RAM doing so.
>>
>> ARM literally never reads dom->p2m_host[] (because of the
>> xc_dom_translated()
>> short circuit in xc_dom_p2m()).  Drop it all.
>>
>> x86 HVM does use dom->p2m_host[] for
>> xc_domain_populate_physmap_exact() calls
>> when populating 4k pages.  Reuse the same tactic from 2M/1G ranges
>> and use an
>> on-stack array instead.  Drop the memory allocation.
>>
>> x86 PV guests do use dom->p2m_host[] as a non-identity transform. 
>> Rename the
>> field to pv_p2m to make it clear it is PV-only.
>
> Nice cleanup! This will probably make slightly faster guest boot :).
>
>> @@ -359,7 +356,6 @@ static int populate_guest_memory(struct
>> xc_dom_image *dom,
>>   static int meminit(struct xc_dom_image *dom)
>>   {
>>       int i, rc;
>> -    xen_pfn_t pfn;
>>       uint64_t modbase;
>>         uint64_t ramsize = (uint64_t)dom->total_pages << XC_PAGE_SHIFT;
>> @@ -423,11 +419,6 @@ static int meminit(struct xc_dom_image *dom)
>>       assert(ramsize == 0); /* Too much RAM is rejected above */
>>         dom->p2m_size = p2m_size;
>
> Do we need to keep p2m_size?

Yes, I think so.

There are some common checks which would fail if it becomes 0, and
importantly, it is used to locate safe gfns for temporary physmap mappings.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to