diff options
author | Yang Shi <yang.shi@linaro.org> | 2016-05-26 18:16:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-26 18:35:44 -0400 |
commit | 957949243bac5dc25e2a651f17059f54f184913e (patch) | |
tree | e8848b501570ca042a5a2a88b5a318c655260da6 | |
parent | 50755bc1c305340660bbfa65fdae3ed113d8fe0e (diff) |
mm: make CONFIG_DEFERRED_STRUCT_PAGE_INIT depends on !FLATMEM explicitly
Per the suggestion from Michal Hocko [1], DEFERRED_STRUCT_PAGE_INIT
requires some ordering wrt other initialization operations, e.g.
page_ext_init has to happen after the whole memmap is initialized
properly.
For SPARSEMEM this requires to wait for page_alloc_init_late. Other
memory models (e.g. flatmem) might have different initialization
layouts (page_ext_init_flatmem). Currently DEFERRED_STRUCT_PAGE_INIT
depends on MEMORY_HOTPLUG which in turn
depends on SPARSEMEM || X86_64_ACPI_NUMA
depends on ARCH_ENABLE_MEMORY_HOTPLUG
and X86_64_ACPI_NUMA depends on NUMA which in turn disable FLATMEM
memory model:
config ARCH_FLATMEM_ENABLE
def_bool y
depends on X86_32 && !NUMA
so FLATMEM is ruled out via dependency maze. Be explicit and disable
FLATMEM for DEFERRED_STRUCT_PAGE_INIT so that we do not reintroduce
subtle initialization bugs
[1] http://lkml.kernel.org/r/20160523073157.GD2278@dhcp22.suse.cz
Link: http://lkml.kernel.org/r/1464027356-32282-1-git-send-email-yang.shi@linaro.org
Signed-off-by: Yang Shi <yang.shi@linaro.org>
Cc: Michal Hocko <mhocko@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/Kconfig | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/Kconfig b/mm/Kconfig index 2664c118b5d2..22fa8189e4fc 100644 --- a/mm/Kconfig +++ b/mm/Kconfig | |||
@@ -649,6 +649,7 @@ config DEFERRED_STRUCT_PAGE_INIT | |||
649 | default n | 649 | default n |
650 | depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT | 650 | depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT |
651 | depends on MEMORY_HOTPLUG | 651 | depends on MEMORY_HOTPLUG |
652 | depends on !FLATMEM | ||
652 | help | 653 | help |
653 | Ordinarily all struct pages are initialised during early boot in a | 654 | Ordinarily all struct pages are initialised during early boot in a |
654 | single thread. On very large machines this can take a considerable | 655 | single thread. On very large machines this can take a considerable |