Hi Andrew,
I noticed that __memblock_free_early and memblock_free has the same code. At first I think we can delete __memblock_free_early till __memblock_free_late remind me __memblock_free_early is meaningful. It’s a note to call this before struct
page was initialized.
So I choose to make __memblock_free_early a wrapper of memblock_free. Here is the patch (see attachment file):
From 5f21fb0409e91b42373832627e44cd0a8275c820 Mon Sep 17 00:00:00 2001
From: Wentao Wang <witallwang@gmail.com>
Date: Thu, 22 Nov 2018 11:35:59 +0800
Subject: [PATCH] Make __memblock_free_early a wrapper of memblock_free rather
than dup it
Signed-off-by: Wentao Wang <witallwang@gmail.com>
---
mm/memblock.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/mm/memblock.c b/mm/memblock.c
index 9a2d5ae..08bf136 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1546,12 +1546,7 @@ void * __init memblock_alloc_try_nid(
*/
void __init __memblock_free_early(phys_addr_t base, phys_addr_t size)
{
- phys_addr_t end = base + size - 1;
-
- memblock_dbg("%s: [%pa-%pa] %pF\n",
- __func__, &base, &end, (void *)_RET_IP_);
- kmemleak_free_part_phys(base, size);
- memblock_remove_range(&memblock.reserved, base, size);
+ memblock_free(base, size);
}
/**
--
1.8.3.1
Testing:
Build with memblock, system bootup normally and works well.
Regards,
Wentao