Re: [PATCH] mm: memblock: add more debug logs

From: Faiyaz Mohammed
Date: Wed Nov 11 2020 - 03:01:44 EST



On 11/10/2020 11:46 PM, Mike Rapoport wrote:
Hi,

On Tue, Nov 10, 2020 at 05:49:58PM +0530, Faiyaz Mohammed wrote:
Exact caller of memblock_phys_alloc_range is not available with
"memblock=debug". Below information is not enough for memory accounting.
for example:
[ 0.000000] memblock_reserve: [0x000000023fc6b000-0x000000023fc6bfff] memblock_alloc_range_nid+0xc0/0x188

To enhance the memblock_dbg information or to get the exact owner of the
memblock_reserve, add debug logs in memblock_phys_alloc_range function.
Why would you want to use memblock=debug for memory accounting or for
tracking of the owners of the reserved memory?
We do memblock reserved accounting to track owners to know size of memory

allocated by different drivers/owners through memblock_reserve, which help

in comparing different kernel version and in optimizations.


After adding logs:
[ 0.000000] memblock_phys_alloc_range: 4096 bytes align=0x1000 from=0x0000000000000000 max_addr=0x0000000000000000 early_pgtable_alloc+0x24/0x178
[ 0.000000] memblock_reserve: [0x000000023fc6b000-0x000000023fc6bfff] memblock_alloc_range_nid+0xc0/0x188

Signed-off-by: Faiyaz Mohammed <faiyazm@xxxxxxxxxxxxxx>
---
mm/memblock.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/mm/memblock.c b/mm/memblock.c
index 049df41..f65af9f 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1419,6 +1419,9 @@ phys_addr_t __init memblock_phys_alloc_range(phys_addr_t size,
phys_addr_t start,
phys_addr_t end)
{
+ memblock_dbg("%s: %llu bytes align=0x%llx from=%pa max_addr=%pa %pS\n",
+ __func__, (u64)size, (u64)align, &start, &end,
+ (void *)_RET_IP_);
return memblock_alloc_range_nid(size, align, start, end, NUMA_NO_NODE,
false);
}
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation