Thread (25 messages) 25 messages, 3 authors, 2021-05-14

Re: arm32: panic in move_freepages (Was [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid())

From: Mike Rapoport <rppt@kernel.org>
Date: 2021-04-29 06:58:07
Also in: kvmarm, linux-mm, lkml
Subsystem: memblock and memory management initialization, memory management, the rest · Maintainers: Mike Rapoport, Andrew Morton, Linus Torvalds

Possibly related (same subject, not in this thread)

On Thu, Apr 29, 2021 at 08:48:26AM +0800, Kefeng Wang wrote:
On 2021/4/28 13:59, Mike Rapoport wrote:
quoted
On Tue, Apr 27, 2021 at 07:08:59PM +0800, Kefeng Wang wrote:
quoted
On 2021/4/27 14:23, Mike Rapoport wrote:
quoted
On Mon, Apr 26, 2021 at 11:26:38PM +0800, Kefeng Wang wrote:
quoted
On 2021/4/26 13:20, Mike Rapoport wrote:
quoted
On Sun, Apr 25, 2021 at 03:51:56PM +0800, Kefeng Wang wrote:
quoted
On 2021/4/25 15:19, Mike Rapoport wrote:

       On Fri, Apr 23, 2021 at 04:11:16PM +0800, Kefeng Wang wrote:

           I tested this patchset(plus arm32 change, like arm64 does)
           based on lts 5.10,add some debug log, the useful info shows
           below, if we enable HOLES_IN_ZONE, no panic, any idea,
           thanks.

       Are there any changes on top of 5.10 except for pfn_valid() patch?
       Do you see this panic on 5.10 without the changes?

Yes, there are some BSP support for arm board based on 5.10,
Is it possible to test 5.12?
Do you use SPARSMEM? If yes, what is your section size?
What is the value if CONFIG_FORCE_MAX_ZONEORDER in your configuration?
Yes,

CONFIG_SPARSEMEM=y

CONFIG_SPARSEMEM_STATIC=y

CONFIG_FORCE_MAX_ZONEORDER = 11

CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
#define SECTION_SIZE_BITS    26
#define MAX_PHYSADDR_BITS    32
#define MAX_PHYSMEM_BITS     32
It seems that with SPARSEMEM we don't align the freed parts on pageblock
boundaries.

Can you try the patch below:
diff --git a/mm/memblock.c b/mm/memblock.c
index afaefa8fc6ab..1926369b52ec 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1941,14 +1941,13 @@ static void __init free_unused_memmap(void)
 		 * due to SPARSEMEM sections which aren't present.
 		 */
 		start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
-#else
+#endif
 		/*
 		 * Align down here since the VM subsystem insists that the
 		 * memmap entries are valid from the bank start aligned to
 		 * MAX_ORDER_NR_PAGES.
 		 */
 		start = round_down(start, MAX_ORDER_NR_PAGES);
-#endif
 
 		/*
 		 * If we had a previous bank, and there is a space
 
-- 
Sincerely yours,
Mike.

_______________________________________________
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