Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
xen
5c3608fa-fix-MEMF_no_dma-allocations-for-single...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5c3608fa-fix-MEMF_no_dma-allocations-for-single-NUMA.patch of Package xen
# Commit 5ac2dddb173b69be259ce4b259e73f971a4816c1 # Date 2019-01-09 15:45:14 +0100 # Author Sergey Dyasli <sergey.dyasli@citrix.com> # Committer Jan Beulich <jbeulich@suse.com> mm/page_alloc: fix MEMF_no_dma allocations for single NUMA 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 ignoring MEMF_no_dma in cases when dma_bitsize is zero, which means there is no DMA zone. This shouldn't cause any issues for Dom0 because alloc_heap_pages() will first use higher memory addresses for satisfying memory allocation requests. Signed-off-by: Sergey Dyasli <sergey.dyasli@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1515,7 +1515,9 @@ struct page_info *alloc_domheap_pages( if ( (zone_hi = min_t(unsigned int, bits_to_zone(bits), zone_hi)) == 0 ) return NULL; - if ( dma_bitsize && ((dma_zone = bits_to_zone(dma_bitsize)) < zone_hi) ) + if ( !dma_bitsize ) + memflags &= ~MEMF_no_dma; + else if ( (dma_zone = bits_to_zone(dma_bitsize)) < zone_hi ) pg = alloc_heap_pages(dma_zone + 1, zone_hi, order, memflags, d); if ( (pg == NULL) &&
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor