Set default domain_to_node() allocation preference before dropping
authorKeir Fraser <keir.fraser@citrix.com>
Sun, 6 Jul 2008 19:16:24 +0000 (20:16 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Sun, 6 Jul 2008 19:16:24 +0000 (20:16 +0100)
domain reference when calling alloc_domheap_pages().
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/common/memory.c

index 983048a9a51d92c0c3710d3b9041eed3ae18f0f7..e4d1a59f87992521c4c0daf0818d1efe13c6a1e1 100644 (file)
@@ -287,7 +287,7 @@ static long memory_exchange(XEN_GUEST_HANDLE(xen_memory_exchange_t) arg)
     unsigned long in_chunk_order, out_chunk_order;
     xen_pfn_t     gpfn, gmfn, mfn;
     unsigned long i, j, k;
-    unsigned int  memflags = 0;
+    unsigned int  node, memflags = 0;
     long          rc = 0;
     struct domain *d;
     struct page_info *page;
@@ -344,7 +344,10 @@ static long memory_exchange(XEN_GUEST_HANDLE(xen_memory_exchange_t) arg)
         d,
         XENMEMF_get_address_bits(exch.out.mem_flags) ? :
         (BITS_PER_LONG+PAGE_SHIFT)));
-    memflags |= MEMF_node(XENMEMF_get_node(exch.out.mem_flags));
+    node = XENMEMF_get_node(exch.out.mem_flags);
+    if ( node == NUMA_NO_NODE )
+        node = domain_to_node(d);
+    memflags |= MEMF_node(node);
 
     for ( i = (exch.nr_exchanged >> in_chunk_order);
           i < (exch.in.nr_extents >> in_chunk_order);