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