diff options
Diffstat (limited to 'arch/x86/mm')
| -rw-r--r-- | arch/x86/mm/hugetlbpage.c | 1 | ||||
| -rw-r--r-- | arch/x86/mm/init.c | 33 | ||||
| -rw-r--r-- | arch/x86/mm/init_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/init_64.c | 1 | ||||
| -rw-r--r-- | arch/x86/mm/kmmio.c | 1 | ||||
| -rw-r--r-- | arch/x86/mm/mmio-mod.c | 1 | ||||
| -rw-r--r-- | arch/x86/mm/pageattr.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/pat.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/pgtable.c | 1 | ||||
| -rw-r--r-- | arch/x86/mm/pgtable_32.c | 1 |
10 files changed, 34 insertions, 11 deletions
diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c index f46c340727b8..069ce7c37c01 100644 --- a/arch/x86/mm/hugetlbpage.c +++ b/arch/x86/mm/hugetlbpage.c | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |
| 10 | #include <linux/hugetlb.h> | 10 | #include <linux/hugetlb.h> |
| 11 | #include <linux/pagemap.h> | 11 | #include <linux/pagemap.h> |
| 12 | #include <linux/slab.h> | ||
| 13 | #include <linux/err.h> | 12 | #include <linux/err.h> |
| 14 | #include <linux/sysctl.h> | 13 | #include <linux/sysctl.h> |
| 15 | #include <asm/mman.h> | 14 | #include <asm/mman.h> |
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index e71c5cbc8f35..b278535b14aa 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | #include <linux/gfp.h> | ||
| 1 | #include <linux/initrd.h> | 2 | #include <linux/initrd.h> |
| 2 | #include <linux/ioport.h> | 3 | #include <linux/ioport.h> |
| 3 | #include <linux/swap.h> | 4 | #include <linux/swap.h> |
| @@ -331,11 +332,23 @@ int devmem_is_allowed(unsigned long pagenr) | |||
| 331 | 332 | ||
| 332 | void free_init_pages(char *what, unsigned long begin, unsigned long end) | 333 | void free_init_pages(char *what, unsigned long begin, unsigned long end) |
| 333 | { | 334 | { |
| 334 | unsigned long addr = begin; | 335 | unsigned long addr; |
| 336 | unsigned long begin_aligned, end_aligned; | ||
| 335 | 337 | ||
| 336 | if (addr >= end) | 338 | /* Make sure boundaries are page aligned */ |
| 339 | begin_aligned = PAGE_ALIGN(begin); | ||
| 340 | end_aligned = end & PAGE_MASK; | ||
| 341 | |||
| 342 | if (WARN_ON(begin_aligned != begin || end_aligned != end)) { | ||
| 343 | begin = begin_aligned; | ||
| 344 | end = end_aligned; | ||
| 345 | } | ||
| 346 | |||
| 347 | if (begin >= end) | ||
| 337 | return; | 348 | return; |
| 338 | 349 | ||
| 350 | addr = begin; | ||
| 351 | |||
| 339 | /* | 352 | /* |
| 340 | * If debugging page accesses then do not free this memory but | 353 | * If debugging page accesses then do not free this memory but |
| 341 | * mark them not present - any buggy init-section access will | 354 | * mark them not present - any buggy init-section access will |
| @@ -343,7 +356,7 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) | |||
| 343 | */ | 356 | */ |
| 344 | #ifdef CONFIG_DEBUG_PAGEALLOC | 357 | #ifdef CONFIG_DEBUG_PAGEALLOC |
| 345 | printk(KERN_INFO "debug: unmapping init memory %08lx..%08lx\n", | 358 | printk(KERN_INFO "debug: unmapping init memory %08lx..%08lx\n", |
| 346 | begin, PAGE_ALIGN(end)); | 359 | begin, end); |
| 347 | set_memory_np(begin, (end - begin) >> PAGE_SHIFT); | 360 | set_memory_np(begin, (end - begin) >> PAGE_SHIFT); |
| 348 | #else | 361 | #else |
| 349 | /* | 362 | /* |
| @@ -358,8 +371,7 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) | |||
| 358 | for (; addr < end; addr += PAGE_SIZE) { | 371 | for (; addr < end; addr += PAGE_SIZE) { |
| 359 | ClearPageReserved(virt_to_page(addr)); | 372 | ClearPageReserved(virt_to_page(addr)); |
| 360 | init_page_count(virt_to_page(addr)); | 373 | init_page_count(virt_to_page(addr)); |
| 361 | memset((void *)(addr & ~(PAGE_SIZE-1)), | 374 | memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE); |
| 362 | POISON_FREE_INITMEM, PAGE_SIZE); | ||
| 363 | free_page(addr); | 375 | free_page(addr); |
| 364 | totalram_pages++; | 376 | totalram_pages++; |
| 365 | } | 377 | } |
| @@ -376,6 +388,15 @@ void free_initmem(void) | |||
| 376 | #ifdef CONFIG_BLK_DEV_INITRD | 388 | #ifdef CONFIG_BLK_DEV_INITRD |
| 377 | void free_initrd_mem(unsigned long start, unsigned long end) | 389 | void free_initrd_mem(unsigned long start, unsigned long end) |
| 378 | { | 390 | { |
| 379 | free_init_pages("initrd memory", start, end); | 391 | /* |
| 392 | * end could be not aligned, and We can not align that, | ||
| 393 | * decompresser could be confused by aligned initrd_end | ||
| 394 | * We already reserve the end partial page before in | ||
| 395 | * - i386_start_kernel() | ||
| 396 | * - x86_64_start_kernel() | ||
| 397 | * - relocate_initrd() | ||
| 398 | * So here We can do PAGE_ALIGN() safely to get partial page to be freed | ||
| 399 | */ | ||
| 400 | free_init_pages("initrd memory", start, PAGE_ALIGN(end)); | ||
| 380 | } | 401 | } |
| 381 | #endif | 402 | #endif |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 5cb3f0f54f47..bca79091b9d6 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
| @@ -25,11 +25,11 @@ | |||
| 25 | #include <linux/pfn.h> | 25 | #include <linux/pfn.h> |
| 26 | #include <linux/poison.h> | 26 | #include <linux/poison.h> |
| 27 | #include <linux/bootmem.h> | 27 | #include <linux/bootmem.h> |
| 28 | #include <linux/slab.h> | ||
| 29 | #include <linux/proc_fs.h> | 28 | #include <linux/proc_fs.h> |
| 30 | #include <linux/memory_hotplug.h> | 29 | #include <linux/memory_hotplug.h> |
| 31 | #include <linux/initrd.h> | 30 | #include <linux/initrd.h> |
| 32 | #include <linux/cpumask.h> | 31 | #include <linux/cpumask.h> |
| 32 | #include <linux/gfp.h> | ||
| 33 | 33 | ||
| 34 | #include <asm/asm.h> | 34 | #include <asm/asm.h> |
| 35 | #include <asm/bios_ebda.h> | 35 | #include <asm/bios_ebda.h> |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index e9b040e1cde5..ee41bba315d1 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
| 30 | #include <linux/memory_hotplug.h> | 30 | #include <linux/memory_hotplug.h> |
| 31 | #include <linux/nmi.h> | 31 | #include <linux/nmi.h> |
| 32 | #include <linux/gfp.h> | ||
| 32 | 33 | ||
| 33 | #include <asm/processor.h> | 34 | #include <asm/processor.h> |
| 34 | #include <asm/bios_ebda.h> | 35 | #include <asm/bios_ebda.h> |
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c index 536fb6823366..5d0e67fff1a6 100644 --- a/arch/x86/mm/kmmio.c +++ b/arch/x86/mm/kmmio.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/kdebug.h> | 21 | #include <linux/kdebug.h> |
| 22 | #include <linux/mutex.h> | 22 | #include <linux/mutex.h> |
| 23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
| 24 | #include <linux/slab.h> | ||
| 24 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
| 25 | #include <asm/tlbflush.h> | 26 | #include <asm/tlbflush.h> |
| 26 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c index 34a3291ca103..3adff7dcc148 100644 --- a/arch/x86/mm/mmio-mod.c +++ b/arch/x86/mm/mmio-mod.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | #include <linux/module.h> | 27 | #include <linux/module.h> |
| 28 | #include <linux/debugfs.h> | 28 | #include <linux/debugfs.h> |
| 29 | #include <linux/slab.h> | ||
| 29 | #include <linux/uaccess.h> | 30 | #include <linux/uaccess.h> |
| 30 | #include <linux/io.h> | 31 | #include <linux/io.h> |
| 31 | #include <linux/version.h> | 32 | #include <linux/version.h> |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index cf07c26d9a4a..28195c350b97 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
| @@ -6,13 +6,13 @@ | |||
| 6 | #include <linux/bootmem.h> | 6 | #include <linux/bootmem.h> |
| 7 | #include <linux/module.h> | 7 | #include <linux/module.h> |
| 8 | #include <linux/sched.h> | 8 | #include <linux/sched.h> |
| 9 | #include <linux/slab.h> | ||
| 10 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |
| 11 | #include <linux/interrupt.h> | 10 | #include <linux/interrupt.h> |
| 12 | #include <linux/seq_file.h> | 11 | #include <linux/seq_file.h> |
| 13 | #include <linux/debugfs.h> | 12 | #include <linux/debugfs.h> |
| 14 | #include <linux/pfn.h> | 13 | #include <linux/pfn.h> |
| 15 | #include <linux/percpu.h> | 14 | #include <linux/percpu.h> |
| 15 | #include <linux/gfp.h> | ||
| 16 | 16 | ||
| 17 | #include <asm/e820.h> | 17 | #include <asm/e820.h> |
| 18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index ae9648eb1c7f..edc8b95afc1a 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/debugfs.h> | 12 | #include <linux/debugfs.h> |
| 13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
| 14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
| 15 | #include <linux/gfp.h> | 15 | #include <linux/slab.h> |
| 16 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
| 17 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
| 18 | #include <linux/rbtree.h> | 18 | #include <linux/rbtree.h> |
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index c9ba9deafe83..5c4ee422590e 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | #include <linux/mm.h> | 1 | #include <linux/mm.h> |
| 2 | #include <linux/gfp.h> | ||
| 2 | #include <asm/pgalloc.h> | 3 | #include <asm/pgalloc.h> |
| 3 | #include <asm/pgtable.h> | 4 | #include <asm/pgtable.h> |
| 4 | #include <asm/tlb.h> | 5 | #include <asm/tlb.h> |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 46c8834aedc0..1a8faf09afed 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | #include <linux/swap.h> | 6 | #include <linux/swap.h> |
| 7 | #include <linux/smp.h> | 7 | #include <linux/smp.h> |
| 8 | #include <linux/highmem.h> | 8 | #include <linux/highmem.h> |
| 9 | #include <linux/slab.h> | ||
| 10 | #include <linux/pagemap.h> | 9 | #include <linux/pagemap.h> |
| 11 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
| 12 | #include <linux/module.h> | 11 | #include <linux/module.h> |
