[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
Hi Hongyan, On 30/04/2020 21:44, Hongyan Xia wrote: From: Hongyan Xia <hongyxia@xxxxxxxxxx> When there is not an always-mapped direct map, xenheap allocations need to be mapped and unmapped on-demand. Signed-off-by: Hongyan Xia <hongyxia@xxxxxxxxxx> --- xen/common/page_alloc.c | 45 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 10b7aeca48..1285fc5977 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2143,6 +2143,7 @@ void init_xenheap_pages(paddr_t ps, paddr_t pe) void *alloc_xenheap_pages(unsigned int order, unsigned int memflags) { struct page_info *pg; + void *ret;ASSERT(!in_irq()); @@ -2151,14 +2152,27 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)if ( unlikely(pg == NULL) ) return NULL;- memguard_unguard_range(page_to_virt(pg), 1 << (order + PAGE_SHIFT));+ ret = page_to_virt(pg);- return page_to_virt(pg);+ if ( !arch_has_directmap() && + map_pages_to_xen((unsigned long)ret, page_to_mfn(pg), 1UL << order, + PAGE_HYPERVISOR) ) The only user (arm32) of split domheap/xenheap has no directmap. So this will break arm32 as we don't support superpage shattering (for good reasons). In this configuration, only xenheap pages are always mapped. Domheap will be mapped on-demand. So I don't think we need to map/unmap xenheap pages at allocation/free. Cheers, -- Julien Grall
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |