x86/bigmem: eliminate struct domain address width restriction PDX-es are 64 bits wide in that case, and hence no limit needs to be enforced. Reported-by: Andrew Cooper Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- v2: Use "const unsigned int bits = 0" instead of #define / #undef (as suggested by IanC). --- unstable.orig/xen/arch/x86/domain.c 2015-09-22 12:54:38.000000000 +0200 +++ unstable/xen/arch/x86/domain.c 2015-08-26 09:24:28.000000000 +0200 @@ -204,6 +204,7 @@ smap_check_policy_t smap_policy_change(s return old_policy; } +#ifndef CONFIG_BIGMEM /* * The hole may be at or above the 44-bit boundary, so we need to determine * the total bit count until reaching 32 significant (not squashed out) bits @@ -225,10 +226,14 @@ static unsigned int __init noinline _dom return bits; } +#endif struct domain *alloc_domain_struct(void) { struct domain *d; +#ifdef CONFIG_BIGMEM + const unsigned int bits = 0; +#else /* * We pack the PDX of the domain structure into a 32-bit field within * the page_info structure. Hence the MEMF_bits() restriction. @@ -237,6 +242,7 @@ struct domain *alloc_domain_struct(void) if ( unlikely(!bits) ) bits = _domain_struct_bits(); +#endif BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE); d = alloc_xenheap_pages(0, MEMF_bits(bits));