Currently dma_bitsize is zero by default on single NUMA node machines. This makes all alloc_domheap_pages() calls with MEMF_no_dma return NULL.
There is only 1 user of MEMF_no_dma: dom0_memflags, which are used during memory allocation for Dom0. Failing allocation with default dom0_memflags is especially severe for the PV Dom0 case: it makes alloc_chunk() to use suboptimal 2MB allocation algorithm with a search for higher memory addresses. This can lead to the NMI watchdog timeout during PV Dom0 construction on some machines, which can be worked around by specifying "dma_bits" in Xen's cmdline manually. Fix the issue by initialising dma_bitsize even on single NUMA machines. Signed-off-by: Sergey Dyasli <[email protected]> --- CC: Andrew Cooper <[email protected]> CC: Jan Beulich <[email protected]> CC: Julien Grall <[email protected]> CC: Wei Liu <[email protected]> CC: Boris Ostrovsky <[email protected]> CC: George Dunlap <[email protected]> CC: Roger Pau Monné <[email protected]> --- xen/common/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index e591601f9c..4515282c27 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1863,7 +1863,7 @@ void __init end_boot_allocator(void) nr_bootmem_regions = 0; init_heap_pages(virt_to_page(bootmem_region_list), 1); - if ( !dma_bitsize && (num_online_nodes() > 1) ) + if ( !dma_bitsize ) dma_bitsize = arch_get_dma_bitsize(); printk("Domain heap initialised"); -- 2.17.1 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
