--- arch/x86/include/asm/e820.h | 1 + arch/x86/kernel/e820.c | 2 ++ drivers/acpi/acpi_memhotplug.c | 4 ++++ 3 files changed, 7 insertions(+) Index: linux/arch/x86/include/asm/e820.h =================================================================== --- linux.orig/arch/x86/include/asm/e820.h +++ linux/arch/x86/include/asm/e820.h @@ -69,6 +69,7 @@ static inline bool is_ISA_range(u64 s, u { return s >= ISA_START_ADDRESS && e <= ISA_END_ADDRESS; } +extern bool use_exactmap; #endif /* __ASSEMBLY__ */ #include Index: linux/arch/x86/kernel/e820.c =================================================================== --- linux.orig/arch/x86/kernel/e820.c +++ linux/arch/x86/kernel/e820.c @@ -838,6 +838,7 @@ static int __init parse_memopt(char *p) } early_param("mem", parse_memopt); +bool use_exactmap; static int __init parse_memmap_one(char *p) { char *oldp; @@ -857,6 +858,7 @@ static int __init parse_memmap_one(char #endif e820.nr_map = 0; userdef = 1; + use_exactmap = true; return 0; } Index: linux/drivers/acpi/acpi_memhotplug.c =================================================================== --- linux.orig/drivers/acpi/acpi_memhotplug.c +++ linux/drivers/acpi/acpi_memhotplug.c @@ -363,5 +363,9 @@ static void acpi_memory_device_remove(st void __init acpi_memory_hotplug_init(void) { +#ifdef CONFIG_X86 + if (use_exactmap) + return; +#endif acpi_scan_add_handler_with_hotplug(&memory_device_handler, "memory"); }