<div dir="ltr"><div dir="ltr">On Thu, Nov 11, 2021 at 2:29 PM HAGIO KAZUHITO(萩尾 一仁) <<a href="mailto:k-hagio-ab@nec.com">k-hagio-ab@nec.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Lianbo, Ankur,<br>
<br>
> This change covers more scenarios and looks good to me. Could you please update this patch? Ankur and Kazu.<br>
<br>
I've updated, does this work well?<br>
<br></blockquote><div><br></div><div>Thank you for the update, Kazu. It works well.</div><div><br></div><div>Acked-by: Lianbo Jiang <<a href="mailto:lijiang@redhat.com">lijiang@redhat.com</a>></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
--<br>
>From 9d6fca4d951f8bbb8c83078339e092da2d2fb0e0 Mon Sep 17 00:00:00 2001<br>
From: Kazuhito Hagio <<a href="mailto:k-hagio-ab@nec.com" target="_blank">k-hagio-ab@nec.com</a>><br>
Date: Thu, 11 Nov 2021 15:20:52 +0900<br>
Subject: [PATCH] arm64: Update SECTION_SIZE_BITS for kernels >= 5.12<br>
<br>
Update the default SECTION_SIZE_BITS value for arm64 Linux 5.12<br>
and later kernels that contain kernel commit f0b13ee23241<br>
("arm64/sparsemem: reduce SECTION_SIZE_BITS").<br>
<br>
Reported-by: Ankur Bansal <<a href="mailto:er.ankurbansal@gmail.com" target="_blank">er.ankurbansal@gmail.com</a>><br>
Signed-off-by: Kazuhito Hagio <<a href="mailto:k-hagio-ab@nec.com" target="_blank">k-hagio-ab@nec.com</a>><br>
---<br>
 arm64.c | 8 +++++++-<br>
 defs.h  | 4 +++-<br>
 2 files changed, 10 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/arm64.c b/arm64.c<br>
index 3dcbcc642fda..94681d1a37db 100644<br>
--- a/arm64.c<br>
+++ b/arm64.c<br>
@@ -1116,7 +1116,13 @@ arm64_get_section_size_bits(void)<br>
        int ret;<br>
        char *string;<br>
<br>
-       machdep->section_size_bits = _SECTION_SIZE_BITS;<br>
+       if (THIS_KERNEL_VERSION >= LINUX(5,12,0)) {<br>
+               if (machdep->pagesize == 65536)<br>
+                       machdep->section_size_bits = _SECTION_SIZE_BITS_5_12_64K;<br>
+               else<br>
+                       machdep->section_size_bits = _SECTION_SIZE_BITS_5_12;<br>
+       } else<br>
+               machdep->section_size_bits = _SECTION_SIZE_BITS;<br>
<br>
        if ((string = pc->read_vmcoreinfo("NUMBER(SECTION_SIZE_BITS)"))) {<br>
                machdep->section_size_bits = atol(string);<br>
diff --git a/defs.h b/defs.h<br>
index 971005596506..a2f30853a4b1 100644<br>
--- a/defs.h<br>
+++ b/defs.h<br>
@@ -3261,7 +3261,9 @@ typedef signed int s32;<br>
 #define ARM64_STACK_SIZE   (16384)<br>
 #define ARM64_IRQ_STACK_SIZE   ARM64_STACK_SIZE<br>
<br>
-#define _SECTION_SIZE_BITS      30<br>
+#define _SECTION_SIZE_BITS           30<br>
+#define _SECTION_SIZE_BITS_5_12      27<br>
+#define _SECTION_SIZE_BITS_5_12_64K  29<br>
 #define _MAX_PHYSMEM_BITS       40<br>
 #define _MAX_PHYSMEM_BITS_3_17  48<br>
 #define _MAX_PHYSMEM_BITS_52    52<br>
-- <br>
2.27.0<br>
<br>
</blockquote></div></div>