of: fdt: add size 0 check after page align
PATCH 1/1 of: fdt: add size 0 check after page align
From: Daero Lee <[email protected]>
After page aligning, the size may become zero. So I added exception handling code for size 0.
example : 4K page size
[before page align]
base = 0x1800
size = 0x1100
[after page align]
size = 0x900
base = 0x2000
size &= PAGE_MASK(~0x7FFF) = 0--- drivers/of/fdt.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/of/fdt.c +5 -0
@@ -1232,6 +1232,11 @@ void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) base =PAGE_ALIGN (base); } size &=PAGE_MASK ; +if (!size) { +pr_warn ("Ignoring memory block 0x%llx - 0x%llx\n" , + base, base + size); +return ; + }if (base >MAX_MEMBLOCK_ADDR ) { pr_warn("Ignoring memory block 0x%llx - 0x%llx\n",
Signature · 1 line
2.25.1
Quoted 5 lines · On Sat, Mar 2, 2024 at 8:03 AM <[email protected]> wrote:
From: Daero Lee <[email protected]>
After page aligning, the size may become zero. So I added exception handling code for size 0.
That may be true, but when would anyone only have memory regions of less than 2 pages. In any case memblock_add will just do nothing. What is the actual problem you are having?
Rob
From: [email protected]
Reply-To:
Subject:
In-Reply-To: CAL_JsqKNGjKq3vcUPFiPa9JNq-8=oP=uBSD=tyKaPMH3cvAkww@mail.gmail.com
Quoted 9 lines
Quoted 5 lines
From: Daero Lee <[email protected]>
After page aligning, the size may become zero. So I added exception handling code for size 0.
That may be true, but when would anyone only have memory regions of less than 2 pages. In any case
memblock_addwill just do nothing. What is the actual problem you are having?
I modified the patch to clear this. Please check.
PATCH 1/1 of: fdt: modify small size memory check
In reply to Rob HerringQuoted 4 lines
Quoted 4 lines
From: Daero Lee <[email protected]>
Quoted 8 lines
Quoted 2 lines
After page aligning, the size may become zero. So I added exception handling code for size 0.
That may be true, but when would anyone only have memory regions of less than 2 pages. In any case
memblock_addwill just do nothing. What is the actual problem you are having?Rob
Ignore the previous mail.
I modified the patch to clear this size check routine. Please check
-------------------------------------------------------------------------
From 2135d37c37f8c369033f79102b17ddf5bb3ff838 Mon Sep 17 00:00:00 2001
From: Daero Lee <[email protected]>
Date: Mon, 4 Mar 2024 23:21:14 +0900
Subject: [PATCH] of: fdt: modify small size memory check
Small size memory which is less than 1 PAGE_SIZE after page align should not be added to memblock.
In this patch, the size check was modified to make it clear.
--- drivers/of/fdt.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/of/fdt.c +4 -6
@@ -1220,18 +1220,16 @@ int __init early_init_dt_scan_chosen(char *cmdline)void __init __weak early_init_dt_add_memory_arch (u64 base,u64 size) {const u64 phys_offset =MIN_MEMBLOCK_ADDR ; +u64 abase =PAGE_ALIGN (base), aend =PAGE_ALIGN_DOWN (base + size); -if (size <PAGE_SIZE - (base & ~PAGE_MASK )) { +if ((aend - abase) <PAGE_SIZE ) {pr_warn ("Ignoring memory block 0x%llx - 0x%llx\n" , base, base + size);return ; } -if (!PAGE_ALIGNED (base)) { - size -=PAGE_SIZE - (base & ~PAGE_MASK ); - base =PAGE_ALIGN (base); - } - size &=PAGE_MASK ; + base = abase; + size = (aend - abase) &PAGE_MASK ;if (base >MAX_MEMBLOCK_ADDR ) { pr_warn("Ignoring memory block 0x%llx - 0x%llx\n",
--
2.25.1
Re: [PATCH] of: fdt: modify small size memory check
Quoted 8 lines · On Mon, Mar 4, 2024 at 9:03 AM <[email protected]> wrote:
Quoted 8 lines
Quoted 7 lines
From: Daero Lee <[email protected]>
After page aligning, the size may become zero. So I added exception handling code for size 0.
Quoted 8 lines
Quoted 5 lines
That may be true, but when would anyone only have memory regions of less than 2 pages. In any case
memblock_addwill just do nothing. What is the actual problem you are having?Rob
Ignore the previous mail.
I modified the patch to clear this size check routine. Please check
You still haven't answered my questions above.
Though the patch below is a bit more readable than what we currently have...
Quoted 48 lines
-------------------------------------------------------------------------
From2135d37c37f8c369033f79102b17ddf5bb3ff838Mon Sep 17 00:00:00 2001
From: Daero Lee <[email protected]>
Date: Mon, 4 Mar 2024 23:21:14 +0900
Subject: [PATCH] of: fdt: modify small size memory checkSmall size memory which is less than 1
PAGE_SIZEafter page align should not be added to memblock.In this patch, the size check was modified to make it clear.
Signed-off-by Daero Lee <[email protected]>--- drivers/of/fdt.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)drivers/of/fdt.c +4
-7@@ -1220,18 +1220,16 @@ int __init early_init_dt_scan_chosen(char *cmdline)void __init __weak early_init_dt_add_memory_arch (u64 base,u64 size) {const u64 phys_offset =MIN_MEMBLOCK_ADDR ; +u64 abase =PAGE_ALIGN (base), aend =PAGE_ALIGN_DOWN (base + size); -if (size <PAGE_SIZE - (base & ~PAGE_MASK )) { +if ((aend - abase) <PAGE_SIZE ) {pr_warn ("Ignoring memory block 0x%llx - 0x%llx\n" , base, base + size);return ; } -if (!PAGE_ALIGNED (base)) { - size -=PAGE_SIZE - (base & ~PAGE_MASK ); - base =PAGE_ALIGN (base); - } - size &=PAGE_MASK ; + base = abase; + size = (aend - abase) &PAGE_MASK ;if (base >MAX_MEMBLOCK_ADDR ) { pr_warn("Ignoring memory block 0x%llx - 0x%llx\n", --2.25.1
PATCH 1/1 of: fdt: modify small size memory check
Quoted 13 lines
Quoted 13 lines
Quoted 13 lines
Quoted 8 lines
From: Daero Lee <[email protected]>
After page aligning, the size may become zero. So I added exception handling code for size 0.
That may be true, but when would anyone only have memory regions of less than 2 pages. In any case
memblock_addwill just do nothing. What is the actual problem you are having?
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
Rob
Ignore the previous mail.
I modified the patch to clear this size check routine. Please checkYou still haven't answered my questions above.
Though the patch below is a bit more readable than what we currently have...
Well.. I don't see any 'real' problem with this.
But I'm not sure if it's appropriate to leave a part that will be returned directly in the next fuction called. Wouldn't it be better to handle the part can be handled in this function, rather than expecting the next function to handle this exception?