[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 13/16] xen/page_alloc: add a path for xenheap when there is no direct map
On 28.04.2021 13:04, Hongyan Xia wrote: > On Thu, 2021-04-22 at 14:31 +0200, Jan Beulich wrote: >> As I don't think we have many cases where code actually depends on >> being able to apply __va() (or equivalent) to the address returned >> from alloc_xenheap_pages(), I think this should instead involve >> vmap(), with the vmap area drastically increased (perhaps taking all >> of the space the direct map presently consumes). For any remaining >> users of __va() or alike these should perhaps be converted into an >> alias / derivation of vmap_to_{mfn,page}() then. > > That's true, and this was my first implementation (and also Wei's > original proposal) which worked okay. But, several problems got in the > way. > > 1. Partial unmap. Biggest offender is xmalloc which allocates and could > then free part of it, which means we need to be able to partially unmap > the region. vmap() does not support this. If the direct map went fully away, and hence if Xen heap pages got vmap()-ed, there's no reason to keep xmalloc() from forwarding to vmalloc() instead of going this partial-unmap route. > 2. Fast PA->VA. There is currently no way to go from PA to VA in > vmapped pages, unless we somehow repurpose or add new fields in > page_info. Also, VA->PA is possible but very slow now. There is not > much PA->VA in the critical path but see 3. There would better not be any PA->VA. Can you point out examples where it would be hard to avoid using such? I also don't see the connection to 3 - is EPT code using PA->VA a lot? p2m-ept.c does not look to have a single use of __va() or ..._to_virt(). > 3. EPT. Mapping and unmapping EPT in HVM hypercalls and MMIO are so > many and so slow that it is probably not possible to keep them as > domheap pages due to the big performance drop after removing the direct > map. If we move them to xenheap pages on vmap, then this depends on 2 > for page table walking. See my proposal to defer unmapping of the domain's own pages (and I would consider the p2m pages to be part of the domain's ones for this purpose). In fact, since the p2m pages come from a fixed, separate pool I wonder whether the entire pool couldn't be mapped in e.g. the per-domain VA range. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |