History

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.

Mike Rapoport committed 8 years ago

Commit 53ab85e1 parent 20132885 files · +6 −31Browse files

Unified · Split

5 files
  1. arch/sparc/kernel/mdesc.c +2 −1
  2. arch/x86/platform/efi/quirks.c +3 −3
  3. drivers/firmware/efi/apple-properties.c +1 −1
  4. include/linux/bootmem.h +0 −2
  5. mm/nobootmem.c +0 −24
arch/sparc/kernel/mdesc.c+2−1
@@ -12,6 +12,7 @@ · 11 unmodified lines
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) · 172 unmodified lines
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
196static struct mdesc_mem_ops memblock_mdesc_ops = {197static struct mdesc_mem_ops memblock_mdesc_ops = {
arch/x86/platform/efi/quirks.c+3−3
@@ -333,7 +333,7 @@ void __init efi_reserve_boot_services(void) · 332 unmodified lines
333 333
334 /*334 /*
335 * Because the following memblock_reserve() is paired335 * Because the following memblock_reserve() is paired
336 * with free_bootmem_late() for this region in336 * with memblock_free_late() for this region in
337 * efi_free_boot_services(), we must be extremely337 * 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) or339 * critical regions of memory (like the kernel image) or
@@ -364,7 +364,7 @@ void __init efi_reserve_boot_services(void) · 24 unmodified lines
364 * doesn't make sense as far as the firmware is364 * doesn't make sense as far as the firmware is
365 * concerned, but it does provide us with a way to tag365 * concerned, but it does provide us with a way to tag
366 * those regions that must not be paired with366 * 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) · 43 unmodified lines
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)
drivers/firmware/efi/apple-properties.c+1−1
@@ -235,7 +235,7 @@ static int __init map_properties(void) · 234 unmodified lines
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 }
include/linux/bootmem.h+0−2
@@ -30,8 +30,6 @@ extern unsigned long free_all_bootmem(void); · 29 unmodified lines
30extern void reset_node_managed_pages(pg_data_t *pgdat);30extern void reset_node_managed_pages(pg_data_t *pgdat);
31extern void reset_all_zones_managed_pages(void);31extern void reset_all_zones_managed_pages(void);
32 32
33extern 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 034#define BOOTMEM_LOW_LIMIT 0
37 35
mm/nobootmem.c+0−24
@@ -33,30 +33,6 @@ unsigned long min_low_pfn; · 32 unmodified lines
33unsigned long max_pfn;33unsigned long max_pfn;
34unsigned long long max_possible_pfn;34unsigned 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 */
45void __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
60static void __init __free_pages_memory(unsigned long start, unsigned long end)36static void __init __free_pages_memory(unsigned long start, unsigned long end)
61{37{
62 int order;38 int order;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t