diff options
-rw-r--r-- | arch/i386/Kconfig | 8 | ||||
-rw-r--r-- | arch/i386/kernel/setup.c | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 6004bb0795e0..968fabd8723f 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -464,7 +464,6 @@ config NUMA | |||
464 | depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI)) | 464 | depends on SMP && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || (X86_SUMMIT && ACPI)) |
465 | default n if X86_PC | 465 | default n if X86_PC |
466 | default y if (X86_NUMAQ || X86_SUMMIT) | 466 | default y if (X86_NUMAQ || X86_SUMMIT) |
467 | select SPARSEMEM_STATIC | ||
468 | 467 | ||
469 | # Need comments to help the hapless user trying to turn on NUMA support | 468 | # Need comments to help the hapless user trying to turn on NUMA support |
470 | comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" | 469 | comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support" |
@@ -493,6 +492,10 @@ config HAVE_ARCH_ALLOC_REMAP | |||
493 | depends on NUMA | 492 | depends on NUMA |
494 | default y | 493 | default y |
495 | 494 | ||
495 | config ARCH_FLATMEM_ENABLE | ||
496 | def_bool y | ||
497 | depends on (ARCH_SELECT_MEMORY_MODEL && X86_PC) | ||
498 | |||
496 | config ARCH_DISCONTIGMEM_ENABLE | 499 | config ARCH_DISCONTIGMEM_ENABLE |
497 | def_bool y | 500 | def_bool y |
498 | depends on NUMA | 501 | depends on NUMA |
@@ -503,7 +506,8 @@ config ARCH_DISCONTIGMEM_DEFAULT | |||
503 | 506 | ||
504 | config ARCH_SPARSEMEM_ENABLE | 507 | config ARCH_SPARSEMEM_ENABLE |
505 | def_bool y | 508 | def_bool y |
506 | depends on NUMA | 509 | depends on (NUMA || (X86_PC && EXPERIMENTAL)) |
510 | select SPARSEMEM_STATIC | ||
507 | 511 | ||
508 | config ARCH_SELECT_MEMORY_MODEL | 512 | config ARCH_SELECT_MEMORY_MODEL |
509 | def_bool y | 513 | def_bool y |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index fdfcb0cba9b4..27c956db0461 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -954,6 +954,12 @@ efi_find_max_pfn(unsigned long start, unsigned long end, void *arg) | |||
954 | return 0; | 954 | return 0; |
955 | } | 955 | } |
956 | 956 | ||
957 | static int __init | ||
958 | efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg) | ||
959 | { | ||
960 | memory_present(0, start, end); | ||
961 | return 0; | ||
962 | } | ||
957 | 963 | ||
958 | /* | 964 | /* |
959 | * Find the highest page frame number we have available | 965 | * Find the highest page frame number we have available |
@@ -965,6 +971,7 @@ void __init find_max_pfn(void) | |||
965 | max_pfn = 0; | 971 | max_pfn = 0; |
966 | if (efi_enabled) { | 972 | if (efi_enabled) { |
967 | efi_memmap_walk(efi_find_max_pfn, &max_pfn); | 973 | efi_memmap_walk(efi_find_max_pfn, &max_pfn); |
974 | efi_memmap_walk(efi_memory_present_wrapper, NULL); | ||
968 | return; | 975 | return; |
969 | } | 976 | } |
970 | 977 | ||
@@ -979,6 +986,7 @@ void __init find_max_pfn(void) | |||
979 | continue; | 986 | continue; |
980 | if (end > max_pfn) | 987 | if (end > max_pfn) |
981 | max_pfn = end; | 988 | max_pfn = end; |
989 | memory_present(0, start, end); | ||
982 | } | 990 | } |
983 | } | 991 | } |
984 | 992 | ||