When Xen allocates the guest's memory, it will try to use non-DMA-able zones first (probably because they are less precious). If there are no such pages available on a certain node, Xen will revert to allocating low pages from another node and thus ignoring the node-preference. This patch fixes this by first checking if non-DMA pages are available on a node and reverting to DMA-able pages if not. This fixes incorrect NUMA memory allocation on nodes with memory below the DMA border (4GB on x86-64, affects for instance dual-node machines with 4gig on each node). Andre. P.S. This fix was already part of my NUMA guest patches back in August, this is just an extract of these. Signed-off-by: Andre Przywara -- Andre Przywara AMD-Operating System Research Center (OSRC), Dresden, Germany Tel: +49 351 277-84917 ----to satisfy European Law for business letters: AMD Saxony Limited Liability Company & Co. KG, Wilschdorfer Landstr. 101, 01109 Dresden, Germany Register Court Dresden: HRA 4896, General Partner authorized to represent: AMD Saxony LLC (Wilmington, Delaware, US) General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy