diff options
author | Yinghai Lu <yinghai@kernel.org> | 2010-08-25 16:39:17 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-08-27 14:12:29 -0400 |
commit | 72d7c3b33c980843e756681fb4867dc1efd62a76 (patch) | |
tree | 9607345d9fa055dd501aacf0772258fb72897035 /arch/x86/Kconfig | |
parent | 301ff3e88ef9ff4bdb92f36a3e6170fce4c9dd34 (diff) |
x86: Use memblock to replace early_res
1. replace find_e820_area with memblock_find_in_range
2. replace reserve_early with memblock_x86_reserve_range
3. replace free_early with memblock_x86_free_range.
4. NO_BOOTMEM will switch to use memblock too.
5. use _e820, _early wrap in the patch, in following patch, will
replace them all
6. because memblock_x86_free_range support partial free, we can remove some special care
7. Need to make sure that memblock_find_in_range() is called after memblock_x86_fill()
so adjust some calling later in setup.c::setup_arch()
-- corruption_check and mptable_update
-v2: Move reserve_brk() early
Before fill_memblock_area, to avoid overlap between brk and memblock_find_in_range()
that could happen We have more then 128 RAM entry in E820 tables, and
memblock_x86_fill() could use memblock_find_in_range() to find a new place for
memblock.memory.region array.
and We don't need to use extend_brk() after fill_memblock_area()
So move reserve_brk() early before fill_memblock_area().
-v3: Move find_smp_config early
To make sure memblock_find_in_range not find wrong place, if BIOS doesn't put mptable
in right place.
-v4: Treat RESERVED_KERN as RAM in memblock.memory. and they are already in
memblock.reserved already..
use __NOT_KEEP_MEMBLOCK to make sure memblock related code could be freed later.
-v5: Generic version __memblock_find_in_range() is going from high to low, and for 32bit
active_region for 32bit does include high pages
need to replace the limit with memblock.default_alloc_limit, aka get_max_mapped()
-v6: Use current_limit instead
-v7: check with MEMBLOCK_ERROR instead of -1ULL or -1L
-v8: Set memblock_can_resize early to handle EFI with more RAM entries
-v9: update after kmemleak changes in mainline
Suggested-by: David S. Miller <davem@davemloft.net>
Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index dcb0593b4a66..542bb2610cbb 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -27,6 +27,7 @@ config X86 | |||
27 | select HAVE_PERF_EVENTS if (!M386 && !M486) | 27 | select HAVE_PERF_EVENTS if (!M386 && !M486) |
28 | select HAVE_IOREMAP_PROT | 28 | select HAVE_IOREMAP_PROT |
29 | select HAVE_KPROBES | 29 | select HAVE_KPROBES |
30 | select HAVE_MEMBLOCK | ||
30 | select ARCH_WANT_OPTIONAL_GPIOLIB | 31 | select ARCH_WANT_OPTIONAL_GPIOLIB |
31 | select ARCH_WANT_FRAME_POINTERS | 32 | select ARCH_WANT_FRAME_POINTERS |
32 | select HAVE_DMA_ATTRS | 33 | select HAVE_DMA_ATTRS |
@@ -195,9 +196,6 @@ config ARCH_SUPPORTS_OPTIMIZED_INLINING | |||
195 | config ARCH_SUPPORTS_DEBUG_PAGEALLOC | 196 | config ARCH_SUPPORTS_DEBUG_PAGEALLOC |
196 | def_bool y | 197 | def_bool y |
197 | 198 | ||
198 | config HAVE_EARLY_RES | ||
199 | def_bool y | ||
200 | |||
201 | config HAVE_INTEL_TXT | 199 | config HAVE_INTEL_TXT |
202 | def_bool y | 200 | def_bool y |
203 | depends on EXPERIMENTAL && DMAR && ACPI | 201 | depends on EXPERIMENTAL && DMAR && ACPI |
@@ -590,14 +588,13 @@ config NO_BOOTMEM | |||
590 | default y | 588 | default y |
591 | bool "Disable Bootmem code" | 589 | bool "Disable Bootmem code" |
592 | ---help--- | 590 | ---help--- |
593 | Use early_res directly instead of bootmem before slab is ready. | 591 | Use memblock directly instead of bootmem before slab is ready. |
594 | - allocator (buddy) [generic] | 592 | - allocator (buddy) [generic] |
595 | - early allocator (bootmem) [generic] | 593 | - early allocator (bootmem) [generic] |
596 | - very early allocator (reserve_early*()) [x86] | 594 | - very early allocator (memblock) [some generic] |
597 | - very very early allocator (early brk model) [x86] | 595 | - very very early allocator (early brk model) [x86] |
598 | So reduce one layer between early allocator to final allocator | 596 | So reduce one layer between early allocator to final allocator |
599 | 597 | ||
600 | |||
601 | config MEMTEST | 598 | config MEMTEST |
602 | bool "Memtest" | 599 | bool "Memtest" |
603 | ---help--- | 600 | ---help--- |