x86/xen: discard RAM regions above the maximum reservation
authorDavid Vrabel <david.vrabel@citrix.com>
Mon, 19 Jan 2015 11:08:05 +0000 (11:08 +0000)
committerDavid Vrabel <david.vrabel@citrix.com>
Fri, 23 Oct 2015 13:20:03 +0000 (14:20 +0100)
During setup, discard RAM regions that are above the maximum
reservation (instead of marking them as E820_UNUSABLE).  This allows
hotplug memory to be placed at these addresses.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
arch/x86/xen/setup.c

index 1c30e4ab1022bda71ff80d841509605ae07034cc..387b60d9bd0ee3995aab148468be0fa6ddc335b5 100644 (file)
@@ -829,6 +829,8 @@ char * __init xen_memory_setup(void)
        addr = xen_e820_map[0].addr;
        size = xen_e820_map[0].size;
        while (i < xen_e820_map_entries) {
+               bool discard = false;
+
                chunk_size = size;
                type = xen_e820_map[i].type;
 
@@ -843,10 +845,11 @@ char * __init xen_memory_setup(void)
                                xen_add_extra_mem(pfn_s, n_pfns);
                                xen_max_p2m_pfn = pfn_s + n_pfns;
                        } else
-                               type = E820_UNUSABLE;
+                               discard = true;
                }
 
-               xen_align_and_add_e820_region(addr, chunk_size, type);
+               if (!discard)
+                       xen_align_and_add_e820_region(addr, chunk_size, type);
 
                addr += chunk_size;
                size -= chunk_size;