mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 12:10:38 -04:00
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>
This commit is contained in:
committed by
Linus Torvalds
parent
2013288f72
commit
53ab85ebfd
@@ -12,6 +12,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/miscdevice.h>
|
#include <linux/miscdevice.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
|
#include <linux/memblock.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/refcount.h>
|
#include <linux/refcount.h>
|
||||||
|
|
||||||
@@ -190,7 +191,7 @@ static void __init mdesc_memblock_free(struct mdesc_handle *hp)
|
|||||||
|
|
||||||
alloc_size = PAGE_ALIGN(hp->handle_size);
|
alloc_size = PAGE_ALIGN(hp->handle_size);
|
||||||
start = __pa(hp);
|
start = __pa(hp);
|
||||||
free_bootmem_late(start, alloc_size);
|
memblock_free_late(start, alloc_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct mdesc_mem_ops memblock_mdesc_ops = {
|
static struct mdesc_mem_ops memblock_mdesc_ops = {
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ void __init efi_reserve_boot_services(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Because the following memblock_reserve() is paired
|
* Because the following memblock_reserve() is paired
|
||||||
* with free_bootmem_late() for this region in
|
* with memblock_free_late() for this region in
|
||||||
* efi_free_boot_services(), we must be extremely
|
* efi_free_boot_services(), we must be extremely
|
||||||
* careful not to reserve, and subsequently free,
|
* careful not to reserve, and subsequently free,
|
||||||
* critical regions of memory (like the kernel image) or
|
* critical regions of memory (like the kernel image) or
|
||||||
@@ -364,7 +364,7 @@ void __init efi_reserve_boot_services(void)
|
|||||||
* doesn't make sense as far as the firmware is
|
* doesn't make sense as far as the firmware is
|
||||||
* concerned, but it does provide us with a way to tag
|
* concerned, but it does provide us with a way to tag
|
||||||
* those regions that must not be paired with
|
* those regions that must not be paired with
|
||||||
* free_bootmem_late().
|
* memblock_free_late().
|
||||||
*/
|
*/
|
||||||
md->attribute |= EFI_MEMORY_RUNTIME;
|
md->attribute |= EFI_MEMORY_RUNTIME;
|
||||||
}
|
}
|
||||||
@@ -414,7 +414,7 @@ void __init efi_free_boot_services(void)
|
|||||||
size -= rm_size;
|
size -= rm_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
free_bootmem_late(start, size);
|
memblock_free_late(start, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!num_entries)
|
if (!num_entries)
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ static int __init map_properties(void)
|
|||||||
*/
|
*/
|
||||||
data->len = 0;
|
data->len = 0;
|
||||||
memunmap(data);
|
memunmap(data);
|
||||||
free_bootmem_late(pa_data + sizeof(*data), data_len);
|
memblock_free_late(pa_data + sizeof(*data), data_len);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ extern unsigned long free_all_bootmem(void);
|
|||||||
extern void reset_node_managed_pages(pg_data_t *pgdat);
|
extern void reset_node_managed_pages(pg_data_t *pgdat);
|
||||||
extern void reset_all_zones_managed_pages(void);
|
extern void reset_all_zones_managed_pages(void);
|
||||||
|
|
||||||
extern void free_bootmem_late(unsigned long physaddr, unsigned long size);
|
|
||||||
|
|
||||||
/* We are using top down, so it is safe to use 0 here */
|
/* We are using top down, so it is safe to use 0 here */
|
||||||
#define BOOTMEM_LOW_LIMIT 0
|
#define BOOTMEM_LOW_LIMIT 0
|
||||||
|
|
||||||
|
|||||||
@@ -33,30 +33,6 @@ unsigned long min_low_pfn;
|
|||||||
unsigned long max_pfn;
|
unsigned long max_pfn;
|
||||||
unsigned long long max_possible_pfn;
|
unsigned long long max_possible_pfn;
|
||||||
|
|
||||||
/**
|
|
||||||
* free_bootmem_late - free bootmem pages directly to page allocator
|
|
||||||
* @addr: starting address of the range
|
|
||||||
* @size: size of the range in bytes
|
|
||||||
*
|
|
||||||
* This is only useful when the bootmem allocator has already been torn
|
|
||||||
* down, but we are still initializing the system. Pages are given directly
|
|
||||||
* to the page allocator, no bootmem metadata is updated because it is gone.
|
|
||||||
*/
|
|
||||||
void __init free_bootmem_late(unsigned long addr, unsigned long size)
|
|
||||||
{
|
|
||||||
unsigned long cursor, end;
|
|
||||||
|
|
||||||
kmemleak_free_part_phys(addr, size);
|
|
||||||
|
|
||||||
cursor = PFN_UP(addr);
|
|
||||||
end = PFN_DOWN(addr + size);
|
|
||||||
|
|
||||||
for (; cursor < end; cursor++) {
|
|
||||||
__free_pages_bootmem(pfn_to_page(cursor), cursor, 0);
|
|
||||||
totalram_pages++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init __free_pages_memory(unsigned long start, unsigned long end)
|
static void __init __free_pages_memory(unsigned long start, unsigned long end)
|
||||||
{
|
{
|
||||||
int order;
|
int order;
|
||||||
|
|||||||
Reference in New Issue
Block a user