Thread (14 messages) 14 messages, 7 authors, 2020-12-07

RE: [PATCH] arm64: mm: decrease the section size to reduce the memory reserved for the page map

From: Song Bao Hua (Barry Song) <hidden>
Date: 2020-12-07 01:41:35
Also in: lkml

-----Original Message-----
From: Mike Rapoport [mailto:rppt@linux.ibm.com]
Sent: Saturday, December 5, 2020 12:44 AM
To: Will Deacon <will@kernel.org>
Cc: liwei (CM) <redacted>; catalin.marinas@arm.com; fengbaopeng
[off-list ref]; nsaenzjulienne@suse.de; steve.capper@arm.com;
Song Bao Hua (Barry Song) [off-list ref];
linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; butao
[off-list ref]
Subject: Re: [PATCH] arm64: mm: decrease the section size to reduce the memory
reserved for the page map

On Fri, Dec 04, 2020 at 11:13:47AM +0000, Will Deacon wrote:
quoted
On Fri, Dec 04, 2020 at 09:44:43AM +0800, Wei Li wrote:
quoted
For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
do not free the reserved memory for the page map, decrease the section
size can reduce the waste of reserved memory.

Signed-off-by: Wei Li <redacted>
Signed-off-by: Baopeng Feng <redacted>
Signed-off-by: Xia Qing <redacted>
---
 arch/arm64/include/asm/sparsemem.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/include/asm/sparsemem.h
b/arch/arm64/include/asm/sparsemem.h
quoted
quoted
index 1f43fcc79738..8963bd3def28 100644
--- a/arch/arm64/include/asm/sparsemem.h
+++ b/arch/arm64/include/asm/sparsemem.h
@@ -7,7 +7,7 @@

 #ifdef CONFIG_SPARSEMEM
 #define MAX_PHYSMEM_BITS	CONFIG_ARM64_PA_BITS
-#define SECTION_SIZE_BITS	30
+#define SECTION_SIZE_BITS	27
We chose '30' to avoid running out of bits in the page flags. What changed?
I think that for 64-bit there are still plenty of free bits. I didn't
check now, but when I played with SPARSEMEM on m68k there were 8 bits
for section out of 32.
quoted
With this patch, I can trigger:

./include/linux/mmzone.h:1170:2: error: Allocator MAX_ORDER exceeds
SECTION_SIZE
quoted
#error Allocator MAX_ORDER exceeds SECTION_SIZE

if I bump up NR_CPUS and NODES_SHIFT.
I don't think it's related to NR_CPUS and NODES_SHIFT.
This seems rather 64K pages that cause this.

Not that is shouldn't be addressed.
Right now, only 4K PAGES will define ARM64_SWAPPER_USES_SECTION_MAPS.
Other cases will use vmemmap_populate_basepages().
The original patch should be only addressing the issue in 4K pages:
https://lore.kernel.org/lkml/20200812010655.96339-1-liwei213@huawei.com/ (local)

would we do something like the below?
#ifdef CONFIG_ARM64_4K_PAGE
#define SECTION_SIZE_BITS	27
#else
#define SECTION_SIZE_BITS	30
#endif
quoted
Will
--
Sincerely yours,
Mike.
Thanks
Barry


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help