diff options
| author | Mike Rapoport <rppt@linux.vnet.ibm.com> | 2018-10-30 18:09:25 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-31 11:54:16 -0400 |
| commit | 53ab85ebfd27cdf16c8ddc72781c072a63bef3cb (patch) | |
| tree | f47fc1cf55b72578a2404261af6dc8d63de23afe | |
| parent | 2013288f723887837d2f1cebef5fcf663b2319de (diff) | |
memblock: replace free_bootmem_late with memblock_free_late
The free_bootmem_late and memblock_free_late do exactly the same thing:
they iterate over a range and give pages to the page allocator.
Replace calls to free_bootmem_late with calls to memblock_free_late and
remove the bootmem variant.
Link: http://lkml.kernel.org/r/1536927045-23536-25-git-send-email-rppt@linux.vnet.ibm.com
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Ley Foon Tan <lftan@altera.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Paul Burton <paul.burton@mips.com>
Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: Rich Felker <dalias@libc.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Serge Semin <fancer.lancer@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/sparc/kernel/mdesc.c | 3 | ||||
| -rw-r--r-- | arch/x86/platform/efi/quirks.c | 6 | ||||
| -rw-r--r-- | drivers/firmware/efi/apple-properties.c | 2 | ||||
| -rw-r--r-- | include/linux/bootmem.h | 2 | ||||
| -rw-r--r-- | mm/nobootmem.c | 24 |
5 files changed, 6 insertions, 31 deletions
diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c index 59131e72ee78..a41526bd91e2 100644 --- a/arch/sparc/kernel/mdesc.c +++ b/arch/sparc/kernel/mdesc.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
| 13 | #include <linux/miscdevice.h> | 13 | #include <linux/miscdevice.h> |
| 14 | #include <linux/bootmem.h> | 14 | #include <linux/bootmem.h> |
| 15 | #include <linux/memblock.h> | ||
| 15 | #include <linux/export.h> | 16 | #include <linux/export.h> |
| 16 | #include <linux/refcount.h> | 17 | #include <linux/refcount.h> |
| 17 | 18 | ||
| @@ -190,7 +191,7 @@ static void __init mdesc_memblock_free(struct mdesc_handle *hp) | |||
| 190 | 191 | ||
| 191 | alloc_size = PAGE_ALIGN(hp->handle_size); | 192 | alloc_size = PAGE_ALIGN(hp->handle_size); |
| 192 | start = __pa(hp); | 193 | start = __pa(hp); |
| 193 | free_bootmem_late(start, alloc_size); | 194 | memblock_free_late(start, alloc_size); |
| 194 | } | 195 | } |
| 195 | 196 | ||
| 196 | static struct mdesc_mem_ops memblock_mdesc_ops = { | 197 | static struct mdesc_mem_ops memblock_mdesc_ops = { |
diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c index 669babcaf245..4b70d0f5a803 100644 --- a/arch/x86/platform/efi/quirks.c +++ b/arch/x86/platform/efi/quirks.c | |||
| @@ -333,7 +333,7 @@ void __init efi_reserve_boot_services(void) | |||
| 333 | 333 | ||
| 334 | /* | 334 | /* |
| 335 | * Because the following memblock_reserve() is paired | 335 | * Because the following memblock_reserve() is paired |
| 336 | * with free_bootmem_late() for this region in | 336 | * with memblock_free_late() for this region in |
| 337 | * efi_free_boot_services(), we must be extremely | 337 | * efi_free_boot_services(), we must be extremely |
| 338 | * careful not to reserve, and subsequently free, | 338 | * careful not to reserve, and subsequently free, |
| 339 | * critical regions of memory (like the kernel image) or | 339 | * critical regions of memory (like the kernel image) or |
| @@ -364,7 +364,7 @@ void __init efi_reserve_boot_services(void) | |||
| 364 | * doesn't make sense as far as the firmware is | 364 | * doesn't make sense as far as the firmware is |
| 365 | * concerned, but it does provide us with a way to tag | 365 | * concerned, but it does provide us with a way to tag |
| 366 | * those regions that must not be paired with | 366 | * those regions that must not be paired with |
| 367 | * free_bootmem_late(). | 367 | * memblock_free_late(). |
| 368 | */ | 368 | */ |
| 369 | md->attribute |= EFI_MEMORY_RUNTIME; | 369 | md->attribute |= EFI_MEMORY_RUNTIME; |
| 370 | } | 370 | } |
| @@ -414,7 +414,7 @@ void __init efi_free_boot_services(void) | |||
| 414 | size -= rm_size; | 414 | size -= rm_size; |
| 415 | } | 415 | } |
| 416 | 416 | ||
| 417 | free_bootmem_late(start, size); | 417 | memblock_free_late(start, size); |
| 418 | } | 418 | } |
| 419 | 419 | ||
| 420 | if (!num_entries) | 420 | if (!num_entries) |
diff --git a/drivers/firmware/efi/apple-properties.c b/drivers/firmware/efi/apple-properties.c index 60a95719ecb8..2b675f788b61 100644 --- a/drivers/firmware/efi/apple-properties.c +++ b/drivers/firmware/efi/apple-properties.c | |||
| @@ -235,7 +235,7 @@ static int __init map_properties(void) | |||
| 235 | */ | 235 | */ |
| 236 | data->len = 0; | 236 | data->len = 0; |
| 237 | memunmap(data); | 237 | memunmap(data); |
| 238 | free_bootmem_late(pa_data + sizeof(*data), data_len); | 238 | memblock_free_late(pa_data + sizeof(*data), data_len); |
| 239 | 239 | ||
| 240 | return ret; | 240 | return ret; |
| 241 | } | 241 | } |
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 706cf8ef6678..bcc7e2fcb6a6 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
| @@ -30,8 +30,6 @@ extern unsigned long free_all_bootmem(void); | |||
| 30 | extern void reset_node_managed_pages(pg_data_t *pgdat); | 30 | extern void reset_node_managed_pages(pg_data_t *pgdat); |
| 31 | extern void reset_all_zones_managed_pages(void); | 31 | extern void reset_all_zones_managed_pages(void); |
| 32 | 32 | ||
| 33 | extern void free_bootmem_late(unsigned long physaddr, unsigned long size); | ||
| 34 | |||
| 35 | /* We are using top down, so it is safe to use 0 here */ | 33 | /* We are using top down, so it is safe to use 0 here */ |
| 36 | #define BOOTMEM_LOW_LIMIT 0 | 34 | #define BOOTMEM_LOW_LIMIT 0 |
| 37 | 35 | ||
diff --git a/mm/nobootmem.c b/mm/nobootmem.c index 85e1822ce918..ee0f7fc37fd1 100644 --- a/mm/nobootmem.c +++ b/mm/nobootmem.c | |||
| @@ -33,30 +33,6 @@ unsigned long min_low_pfn; | |||
| 33 | unsigned long max_pfn; | 33 | unsigned long max_pfn; |
| 34 | unsigned long long max_possible_pfn; | 34 | unsigned long long max_possible_pfn; |
| 35 | 35 | ||
| 36 | /** | ||
| 37 | * free_bootmem_late - free bootmem pages directly to page allocator | ||
| 38 | * @addr: starting address of the range | ||
| 39 | * @size: size of the range in bytes | ||
| 40 | * | ||
| 41 | * This is only useful when the bootmem allocator has already been torn | ||
| 42 | * down, but we are still initializing the system. Pages are given directly | ||
| 43 | * to the page allocator, no bootmem metadata is updated because it is gone. | ||
| 44 | */ | ||
| 45 | void __init free_bootmem_late(unsigned long addr, unsigned long size) | ||
| 46 | { | ||
| 47 | unsigned long cursor, end; | ||
| 48 | |||
| 49 | kmemleak_free_part_phys(addr, size); | ||
| 50 | |||
| 51 | cursor = PFN_UP(addr); | ||
| 52 | end = PFN_DOWN(addr + size); | ||
| 53 | |||
| 54 | for (; cursor < end; cursor++) { | ||
| 55 | __free_pages_bootmem(pfn_to_page(cursor), cursor, 0); | ||
| 56 | totalram_pages++; | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | static void __init __free_pages_memory(unsigned long start, unsigned long end) | 36 | static void __init __free_pages_memory(unsigned long start, unsigned long end) |
| 61 | { | 37 | { |
| 62 | int order; | 38 | int order; |
