x86/mm changes for v3.3
Subsystems (4)
Linus,
Please pull the latest x86-mm-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-mm-for-linus
out-of-topic modifications in x86-mm-for-linus:
-----------------------------------------------include/linux/mm.h # 54c29c6: mm, x86: Remove debug_pagealloc_emm/debug-pagealloc.c # 54c29c6: mm, x86: Remove debug_pagealloc_e
Thanks,
Ingo
------------------>
H Hartley Sweeten (1):
arch/x86/kernel/e820.c: quiet sparse noise about plain integer as NULL pointer
Ludwig Nussel (1):
x86: Fix mmap random address range
Mike Ditto (1):
arch/x86/kernel/e820.c: Eliminate bubble sort from sanitize_e820_map()
Pekka Enberg (7):
x86, mm: Use MAX_DMA_PFN for ZONE_DMA on 32-bit x86, mm: Move zone init from paging_init() on 64-bit x86, mm: Use max_pfn instead of highend_pfn x86, mm: Wrap ZONE_DMA32 with CONFIG_ZONE_DMA32 x86, mm: Use max_low_pfn for ZONE_NORMAL on 64-bit x86, mm: Prepare zone_sizes_init() for unification x86, mm: Unify zone_sizes_init()
Petr Holasek (1):
x86/numa: Add constraints check for nid parameters
Stanislaw Gruszka (2):
x86/mm: Initialize high mem before free_all_bootmem() mm, x86: Remove debug_pagealloc_enabled
arch/x86/include/asm/init.h | 2 + arch/x86/kernel/e820.c | 59 +++++++++++++++++------------------------- arch/x86/mm/init.c | 23 ++++++++++++++++ arch/x86/mm/init_32.c | 29 ++++++++------------- arch/x86/mm/init_64.c | 11 +------- arch/x86/mm/mmap.c | 4 +- arch/x86/mm/numa.c | 10 ++++--- arch/x86/mm/pageattr.c | 6 ---- include/linux/mm.h | 10 ------- init/main.c | 5 --- mm/debug-pagealloc.c | 3 -- 11 files changed, 69 insertions(+), 93 deletions(-)
arch/x86/include/asm/init.h +2 -0
@@ -5,6 +5,8 @@extern void __init early_ioremap_page_table_range_init (void );#endif +extern void __init zone_sizes_init (void ); + extern unsigned long __init kernel_physical_mapping_init(unsigned long start, unsigned long end,
arch/x86/kernel/e820.c +24 -35
87 lines not on this page · raw message
arch/x86/mm/init.c +23 -0
@@ -3,6 +3,7 @@#include <linux/ioport.h> #include <linux/swap.h> #include <linux/memblock.h> +#include <linux/bootmem.h> /* for max_low_pfn */ #include <asm/cacheflush.h> #include <asm/e820.h>
@@ -15,6 +16,7 @@#include <asm/tlbflush.h> #include <asm/tlb.h> #include <asm/proto.h> +#include <asm/dma.h> /* for MAX_DMA_PFN */ unsigned long __initdata pgt_buf_start;unsigned long __meminitdata pgt_buf_end;
@@ -392,3 +394,24 @@ void free_initrd_mem(unsigned long start, unsigned long end) free_init_pages("initrd memory", start, PAGE_ALIGN(end)); }#endif + +void __init zone_sizes_init (void ) +{ +unsigned long max_zone_pfns[MAX_NR_ZONES ]; + +memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); + +#ifdef CONFIG_ZONE_DMA + max_zone_pfns[ZONE_DMA ] =MAX_DMA_PFN ; +#endif +#ifdef CONFIG_ZONE_DMA32 + max_zone_pfns[ZONE_DMA32 ] =MAX_DMA32_PFN ; +#endif + max_zone_pfns[ZONE_NORMAL ] = max_low_pfn; +#ifdef CONFIG_HIGHMEM + max_zone_pfns[ZONE_HIGHMEM ] = max_pfn; +#endif + +free_area_init_nodes (max_zone_pfns); +} +
arch/x86/mm/init_32.c +11 -18
@@ -674,22 +674,6 @@ void __init initmem_init(void) }#endif /* !CONFIG_NEED_MULTIPLE_NODES */ -static void __init zone_sizes_init (void ) -{ -unsigned long max_zone_pfns[MAX_NR_ZONES ]; -memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); -#ifdef CONFIG_ZONE_DMA - max_zone_pfns[ZONE_DMA ] = -virt_to_phys ((char *)MAX_DMA_ADDRESS ) >>PAGE_SHIFT ; -#endif - max_zone_pfns[ZONE_NORMAL ] = max_low_pfn; -#ifdef CONFIG_HIGHMEM - max_zone_pfns[ZONE_HIGHMEM ] = highend_pfn; -#endif - -free_area_init_nodes (max_zone_pfns); -} -void __init setup_bootmem_allocator (void ) { printk(KERN_INFO " mapped low ram: 0 - %08lx\n",
@@ -760,6 +744,17 @@ void __init mem_init(void)#ifdef CONFIG_FLATMEM BUG_ON (!mem_map);#endif +/* +* With CONFIG_DEBUG_PAGEALLOC initialization of highmem pages has to +* be done before free_all_bootmem(). Memblock use free low memory for +* temporary data (see find_range_array()) and for this purpose can use +* pages that was already passed to the buddy allocator, hence marked as +* not accessible in the page tables when compiled with +* CONFIG_DEBUG_PAGEALLOC. Otherwise order of initialization is not +* important here. +*/ +set_highmem_pages_init (); +/* this will put all low memory onto the freelists */ totalram_pages +=free_all_bootmem ();
@@ -771,8 +766,6 @@ void __init mem_init(void)if (page_is_ram (tmp) &&PageReserved (pfn_to_page (tmp))) reservedpages++; -set_highmem_pages_init (); - codesize = (unsigned long ) &_etext - (unsigned long ) &_text; datasize = (unsigned long ) &_edata - (unsigned long ) &_etext; initsize = (unsigned long ) &__init_end - (unsigned long ) &__init_begin;
arch/x86/mm/init_64.c +1 -10
@@ -614,15 +614,6 @@ void __init initmem_init(void)void __init paging_init (void ) { -unsigned long max_zone_pfns[MAX_NR_ZONES ]; - -memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); -#ifdef CONFIG_ZONE_DMA - max_zone_pfns[ZONE_DMA ] =MAX_DMA_PFN ; -#endif - max_zone_pfns[ZONE_DMA32 ] =MAX_DMA32_PFN ; - max_zone_pfns[ZONE_NORMAL ] = max_pfn; -sparse_memory_present_with_active_regions (MAX_NUMNODES );sparse_init ();
@@ -634,7 +625,7 @@ void __init paging_init(void)*/ node_clear_state (0 ,N_NORMAL_MEMORY ); -free_area_init_nodes (max_zone_pfns); +zone_sizes_init (); }/*
arch/x86/mm/mmap.c +2 -2
@@ -75,9 +75,9 @@ static unsigned long mmap_rnd(void)*/ if (current->flags &PF_RANDOMIZE ) {if (mmap_is_ia32 ()) - rnd = (long )get_random_int () % (1 <<8 ); + rnd =get_random_int () % (1 <<8 );else - rnd = (long )(get_random_int () % (1 <<28 )); + rnd =get_random_int () % (1 <<28 ); }return rnd <<PAGE_SHIFT ; }
arch/x86/mm/numa.c +6 -4
@@ -430,8 +430,9 @@ static int __init numa_alloc_distance(void)* calls are ignored until the distance table is reset with * numa_reset_distance(). * -* If @from or @to is higher than the highest known node at the time of -* table creation or @distance doesn't make sense, the call is ignored. +* If @from or @to is higher than the highest known node or lower than zero +* at the time of table creation or @distance doesn't make sense, the call +* is ignored. * This is to allow simplification of specific NUMA config implementations. */ void __init numa_set_distance (int from,int to,int distance)
@@ -439,8 +440,9 @@ void __init numa_set_distance(int from, int to, int distance)if (!numa_distance &&numa_alloc_distance () <0 )return ; -if (from >= numa_distance_cnt || to >= numa_distance_cnt) { -printk_once (KERN_DEBUG "NUMA: Debug: distance out of bound, from=%d to=%d distance=%d\n" , +if (from >= numa_distance_cnt || to >= numa_distance_cnt || + from <0 || to <0 ) { +pr_warn_once ("NUMA: Warning: node ids are out of bound, from=%d to=%d distance=%d\n" , from, to, distance);return ; }
arch/x86/mm/pageattr.c +0 -6
@@ -1334,12 +1334,6 @@ void kernel_map_pages(struct page *page, int numpages, int enable) }/* -* If page allocator is not up yet then do not call c_p_a(): -*/ -if (!debug_pagealloc_enabled) -return ; - -/* * The return value is ignored as the calls cannot fail. * Large pages for identity mappings are not used at boot time * and hence no memory allocations during large page split.
include/linux/mm.h +0 -10
@@ -1537,23 +1537,13 @@ static inline void vm_stat_account(struct mm_struct *mm,#endif /* CONFIG_PROC_FS */ #ifdef CONFIG_DEBUG_PAGEALLOC -extern int debug_pagealloc_enabled; -extern void kernel_map_pages (struct page *page,int numpages,int enable); - -static inline void enable_debug_pagealloc (void ) -{ - debug_pagealloc_enabled =1 ; -}#ifdef CONFIG_HIBERNATION extern bool kernel_page_present (struct page *page);#endif /* CONFIG_HIBERNATION */ #else static inline void kernel_map_pages (struct page *page,int numpages,int enable) {} -static inline void enable_debug_pagealloc (void ) -{ -}#ifdef CONFIG_HIBERNATION static inline bool kernel_page_present (struct page *page) {return true; }#endif /* CONFIG_HIBERNATION */
init/main.c +0 -5
@@ -282,10 +282,6 @@ static int __init unknown_bootoption(char *param, char *val)return 0 ; } -#ifdef CONFIG_DEBUG_PAGEALLOC -int __read_mostly debug_pagealloc_enabled =0 ; -#endif -static int __init init_setup (char *str) {unsigned int i;
@@ -597,7 +593,6 @@ asmlinkage void __init start_kernel(void) }#endif page_cgroup_init (); -enable_debug_pagealloc ();debug_objects_mem_init ();kmemleak_init ();setup_per_cpu_pageset ();
mm/debug-pagealloc.c +0 -3
@@ -95,9 +95,6 @@ static void unpoison_pages(struct page *page, int n)void kernel_map_pages (struct page *page,int numpages,int enable) { -if (!debug_pagealloc_enabled) -return ; -if (enable)unpoison_pages (page, numpages);else
Quoted 4 lines · Ingo Molnar
Please pull the latest x86-mm-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitx86-mm-for-linus
What I get from there does not match what you describe AT ALL:
Quoted 18 lines
H Hartley Sweeten (1):
arch/x86/kernel/e820.c: quiet sparse noise about plain integer as NULL pointerLudwig Nussel (1):
x86: Fix mmap random address rangeMike Ditto (1):
arch/x86/kernel/e820.c: Eliminate bubble sort fromsanitize_e820_map()Pekka Enberg (7):
x86, mm: UseMAX_DMA_PFNforZONE_DMAon 32-bit x86, mm: Move zone init frompaging_init()on 64-bit x86, mm: Usemax_pfninstead ofhighend_pfnx86, mm: WrapZONE_DMA32withCONFIG_ZONE_DMA32x86, mm: Usemax_low_pfnforZONE_NORMALon 64-bit x86, mm: Preparezone_sizes_init()for unification x86, mm: Unifyzone_sizes_init()
Quoted 6 lines
Petr Holasek (1):
x86/numa: Add constraints check for nid parametersStanislaw Gruszka (2):
x86/mm: Initialize high mem beforefree_all_bootmem()mm, x86: Removedebug_pagealloc_enabled
Instead of the above, I see
Stefano Stabellini (5):
x86, mm: Calculate precisely the memory needed by init_memory_mapping Revert "x86,xen: introduce x86_init.mapping.pagetable_reserve" x86, init : Move memblock_x86_reserve_range PGTABLE tofind_early_table_space
x86-64, mm: Do not assume head_64.S used 4KB pages when !use_pse
x86_32: Calculate additional memory needed by the fixmap
which is old and crappy.
What the heck is going on, Ingo?
Linus
Quoted 43 lines · Linus Torvalds
Quoted 4 lines · Ingo Molnar
Please pull the latest x86-mm-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitx86-mm-for-linusWhat I get from there does not match what you describe AT ALL:
Quoted 18 lines
H Hartley Sweeten (1):
arch/x86/kernel/e820.c: quiet sparse noise about plain integer as NULL pointerLudwig Nussel (1):
x86: Fix mmap random address rangeMike Ditto (1):
arch/x86/kernel/e820.c: Eliminate bubble sort fromsanitize_e820_map()Pekka Enberg (7):
x86, mm: UseMAX_DMA_PFNforZONE_DMAon 32-bit x86, mm: Move zone init frompaging_init()on 64-bit x86, mm: Usemax_pfninstead ofhighend_pfnx86, mm: WrapZONE_DMA32withCONFIG_ZONE_DMA32x86, mm: Usemax_low_pfnforZONE_NORMALon 64-bit x86, mm: Preparezone_sizes_init()for unification x86, mm: Unifyzone_sizes_init()Quoted 6 lines
Petr Holasek (1):
x86/numa: Add constraints check for nid parametersStanislaw Gruszka (2):
x86/mm: Initialize high mem beforefree_all_bootmem()mm, x86: Removedebug_pagealloc_enabledInstead of the above, I see
Stefano Stabellini (5):
x86, mm: Calculate precisely the memory needed byinit_memory_mappingRevert "x86,xen: introduce x86_init.mapping.pagetable_reserve" x86, init : Movememblock_x86_reserve_rangePGTABLE tofind_early_table_space
x86-64, mm: Do not assumehead_64.Sused 4KB pages when !use_pse
x86_32: Calculate additional memory needed by the fixmap
Quoted 3 lines
which is old and crappy.
What the heck is going on, Ingo?
Hm, my bad, what happened is that i dropped that old broken crap locally, but forgot to push it out so the two branches got out of sync.
I've now force-pushed it, and the pull request is below again.
Sorry about that - what makes this doubly annoying is that you could have pulled that old crap without any of us intending it
...
Sorry about that.
Thanks,
Ingo
-------------->
Linus,
Please pull the latest x86-mm-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-mm-for-linus
out-of-topic modifications in x86-mm-for-linus:
-----------------------------------------------include/linux/mm.h # 54c29c6: mm, x86: Remove debug_pagealloc_emm/debug-pagealloc.c # 54c29c6: mm, x86: Remove debug_pagealloc_e
Thanks,
Ingo
------------------>
H Hartley Sweeten (1):
arch/x86/kernel/e820.c: quiet sparse noise about plain integer as NULL pointer
Ludwig Nussel (1):
x86: Fix mmap random address range
Mike Ditto (1):
arch/x86/kernel/e820.c: Eliminate bubble sort from sanitize_e820_map()
Pekka Enberg (7):
x86, mm: Use MAX_DMA_PFN for ZONE_DMA on 32-bit x86, mm: Move zone init from paging_init() on 64-bit x86, mm: Use max_pfn instead of highend_pfn x86, mm: Wrap ZONE_DMA32 with CONFIG_ZONE_DMA32 x86, mm: Use max_low_pfn for ZONE_NORMAL on 64-bit x86, mm: Prepare zone_sizes_init() for unification x86, mm: Unify zone_sizes_init()
Petr Holasek (1):
x86/numa: Add constraints check for nid parameters
Stanislaw Gruszka (2):
x86/mm: Initialize high mem before free_all_bootmem() mm, x86: Remove debug_pagealloc_enabled
arch/x86/include/asm/init.h | 2 + arch/x86/kernel/e820.c | 59 +++++++++++++++++------------------------- arch/x86/mm/init.c | 23 ++++++++++++++++ arch/x86/mm/init_32.c | 29 ++++++++------------- arch/x86/mm/init_64.c | 11 +------- arch/x86/mm/mmap.c | 4 +- arch/x86/mm/numa.c | 10 ++++--- arch/x86/mm/pageattr.c | 6 ---- include/linux/mm.h | 10 ------- init/main.c | 5 --- mm/debug-pagealloc.c | 3 -- 11 files changed, 69 insertions(+), 93 deletions(-)
arch/x86/include/asm/init.h +2 -0
@@ -5,6 +5,8 @@extern void __init early_ioremap_page_table_range_init (void );#endif +extern void __init zone_sizes_init (void ); + extern unsigned long __init kernel_physical_mapping_init(unsigned long start, unsigned long end,
arch/x86/kernel/e820.c +24 -35
87 lines not on this page · raw message
arch/x86/mm/init.c +23 -0
@@ -3,6 +3,7 @@#include <linux/ioport.h> #include <linux/swap.h> #include <linux/memblock.h> +#include <linux/bootmem.h> /* for max_low_pfn */ #include <asm/cacheflush.h> #include <asm/e820.h>
@@ -15,6 +16,7 @@#include <asm/tlbflush.h> #include <asm/tlb.h> #include <asm/proto.h> +#include <asm/dma.h> /* for MAX_DMA_PFN */ unsigned long __initdata pgt_buf_start;unsigned long __meminitdata pgt_buf_end;
@@ -392,3 +394,24 @@ void free_initrd_mem(unsigned long start, unsigned long end) free_init_pages("initrd memory", start, PAGE_ALIGN(end)); }#endif + +void __init zone_sizes_init (void ) +{ +unsigned long max_zone_pfns[MAX_NR_ZONES ]; + +memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); + +#ifdef CONFIG_ZONE_DMA + max_zone_pfns[ZONE_DMA ] =MAX_DMA_PFN ; +#endif +#ifdef CONFIG_ZONE_DMA32 + max_zone_pfns[ZONE_DMA32 ] =MAX_DMA32_PFN ; +#endif + max_zone_pfns[ZONE_NORMAL ] = max_low_pfn; +#ifdef CONFIG_HIGHMEM + max_zone_pfns[ZONE_HIGHMEM ] = max_pfn; +#endif + +free_area_init_nodes (max_zone_pfns); +} +
arch/x86/mm/init_32.c +11 -18
@@ -674,22 +674,6 @@ void __init initmem_init(void) }#endif /* !CONFIG_NEED_MULTIPLE_NODES */ -static void __init zone_sizes_init (void ) -{ -unsigned long max_zone_pfns[MAX_NR_ZONES ]; -memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); -#ifdef CONFIG_ZONE_DMA - max_zone_pfns[ZONE_DMA ] = -virt_to_phys ((char *)MAX_DMA_ADDRESS ) >>PAGE_SHIFT ; -#endif - max_zone_pfns[ZONE_NORMAL ] = max_low_pfn; -#ifdef CONFIG_HIGHMEM - max_zone_pfns[ZONE_HIGHMEM ] = highend_pfn; -#endif - -free_area_init_nodes (max_zone_pfns); -} -void __init setup_bootmem_allocator (void ) { printk(KERN_INFO " mapped low ram: 0 - %08lx\n",
@@ -760,6 +744,17 @@ void __init mem_init(void)#ifdef CONFIG_FLATMEM BUG_ON (!mem_map);#endif +/* +* With CONFIG_DEBUG_PAGEALLOC initialization of highmem pages has to +* be done before free_all_bootmem(). Memblock use free low memory for +* temporary data (see find_range_array()) and for this purpose can use +* pages that was already passed to the buddy allocator, hence marked as +* not accessible in the page tables when compiled with +* CONFIG_DEBUG_PAGEALLOC. Otherwise order of initialization is not +* important here. +*/ +set_highmem_pages_init (); +/* this will put all low memory onto the freelists */ totalram_pages +=free_all_bootmem ();
@@ -771,8 +766,6 @@ void __init mem_init(void)if (page_is_ram (tmp) &&PageReserved (pfn_to_page (tmp))) reservedpages++; -set_highmem_pages_init (); - codesize = (unsigned long ) &_etext - (unsigned long ) &_text; datasize = (unsigned long ) &_edata - (unsigned long ) &_etext; initsize = (unsigned long ) &__init_end - (unsigned long ) &__init_begin;
arch/x86/mm/init_64.c +1 -10
@@ -614,15 +614,6 @@ void __init initmem_init(void)void __init paging_init (void ) { -unsigned long max_zone_pfns[MAX_NR_ZONES ]; - -memset (max_zone_pfns,0 ,sizeof (max_zone_pfns)); -#ifdef CONFIG_ZONE_DMA - max_zone_pfns[ZONE_DMA ] =MAX_DMA_PFN ; -#endif - max_zone_pfns[ZONE_DMA32 ] =MAX_DMA32_PFN ; - max_zone_pfns[ZONE_NORMAL ] = max_pfn; -sparse_memory_present_with_active_regions (MAX_NUMNODES );sparse_init ();
@@ -634,7 +625,7 @@ void __init paging_init(void)*/ node_clear_state (0 ,N_NORMAL_MEMORY ); -free_area_init_nodes (max_zone_pfns); +zone_sizes_init (); }/*
arch/x86/mm/mmap.c +2 -2
@@ -75,9 +75,9 @@ static unsigned long mmap_rnd(void)*/ if (current->flags &PF_RANDOMIZE ) {if (mmap_is_ia32 ()) - rnd = (long )get_random_int () % (1 <<8 ); + rnd =get_random_int () % (1 <<8 );else - rnd = (long )(get_random_int () % (1 <<28 )); + rnd =get_random_int () % (1 <<28 ); }return rnd <<PAGE_SHIFT ; }
arch/x86/mm/numa.c +6 -4
@@ -430,8 +430,9 @@ static int __init numa_alloc_distance(void)* calls are ignored until the distance table is reset with * numa_reset_distance(). * -* If @from or @to is higher than the highest known node at the time of -* table creation or @distance doesn't make sense, the call is ignored. +* If @from or @to is higher than the highest known node or lower than zero +* at the time of table creation or @distance doesn't make sense, the call +* is ignored. * This is to allow simplification of specific NUMA config implementations. */ void __init numa_set_distance (int from,int to,int distance)
@@ -439,8 +440,9 @@ void __init numa_set_distance(int from, int to, int distance)if (!numa_distance &&numa_alloc_distance () <0 )return ; -if (from >= numa_distance_cnt || to >= numa_distance_cnt) { -printk_once (KERN_DEBUG "NUMA: Debug: distance out of bound, from=%d to=%d distance=%d\n" , +if (from >= numa_distance_cnt || to >= numa_distance_cnt || + from <0 || to <0 ) { +pr_warn_once ("NUMA: Warning: node ids are out of bound, from=%d to=%d distance=%d\n" , from, to, distance);return ; }
arch/x86/mm/pageattr.c +0 -6
@@ -1334,12 +1334,6 @@ void kernel_map_pages(struct page *page, int numpages, int enable) }/* -* If page allocator is not up yet then do not call c_p_a(): -*/ -if (!debug_pagealloc_enabled) -return ; - -/* * The return value is ignored as the calls cannot fail. * Large pages for identity mappings are not used at boot time * and hence no memory allocations during large page split.
include/linux/mm.h +0 -10
@@ -1537,23 +1537,13 @@ static inline void vm_stat_account(struct mm_struct *mm,#endif /* CONFIG_PROC_FS */ #ifdef CONFIG_DEBUG_PAGEALLOC -extern int debug_pagealloc_enabled; -extern void kernel_map_pages (struct page *page,int numpages,int enable); - -static inline void enable_debug_pagealloc (void ) -{ - debug_pagealloc_enabled =1 ; -}#ifdef CONFIG_HIBERNATION extern bool kernel_page_present (struct page *page);#endif /* CONFIG_HIBERNATION */ #else static inline void kernel_map_pages (struct page *page,int numpages,int enable) {} -static inline void enable_debug_pagealloc (void ) -{ -}#ifdef CONFIG_HIBERNATION static inline bool kernel_page_present (struct page *page) {return true; }#endif /* CONFIG_HIBERNATION */
init/main.c +0 -5
@@ -282,10 +282,6 @@ static int __init unknown_bootoption(char *param, char *val)return 0 ; } -#ifdef CONFIG_DEBUG_PAGEALLOC -int __read_mostly debug_pagealloc_enabled =0 ; -#endif -static int __init init_setup (char *str) {unsigned int i;
@@ -597,7 +593,6 @@ asmlinkage void __init start_kernel(void) }#endif page_cgroup_init (); -enable_debug_pagealloc ();debug_objects_mem_init ();kmemleak_init ();setup_per_cpu_pageset ();
mm/debug-pagealloc.c +0 -3
@@ -95,9 +95,6 @@ static void unpoison_pages(struct page *page, int n)void kernel_map_pages (struct page *page,int numpages,int enable) { -if (!debug_pagealloc_enabled) -return ; -if (enable)unpoison_pages (page, numpages);else