All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	x86@kernel.org, linux-mips@vger.kernel.org,
	Max Filippov <jcmvbkbc@gmail.com>, Guo Ren <guoren@kernel.org>,
	sparclinux@vger.kernel.org, linux-hexagon@vger.kernel.org,
	WANG Xuerui <kernel@xen0n.name>,
	Greg Ungerer <gerg@linux-m68k.org>,
	linux-arch@vger.kernel.org,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	linux-csky@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Vineet Gupta <vgupta@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	linux-snps-arc@lists.infradead.org,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	linux-alpha@vger.kernel.org, linux-um@lists.infradead.org,
	linux-m68k@lists.linux-m68k.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Stafford Horne <shorne@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	Brian Cain <bcain@quicinc.com>, Mic hal Simek <monstr@monstr.eu>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-parisc@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, Dinh Nguyen <dinguyen@kernel.org>,
	linux-riscv@lists.infradead.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Richard Weinberger <richard@nod.at>,
	Andrew Morton <akpm@linux-foundation.org>,
	linuxppc-dev@lists.ozlabs.org,
	"David S. Miller" <davem@davemloft.net>,
	Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel.org>, WANG Xuerui <kernel@xen0n.name>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev,
	openrisc@lists.librecores.org, sparclinux@vger.kernel.org,
	x86@kernel.org, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 18:41:49 +0000	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalignd, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUSd to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf\x16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj@00)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Conor Dooley <conor@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Brian Cain <bcain@quicinc.com>,
	"David S. Miller" <davem@davemloft.net>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Greg Ungerer <gerg@linux-m68k.org>, Guo Ren <guoren@kernel.org>,
	Helge Deller <deller@gmx.de>, Huacai Chen <chenhuacai@kernel.org>,
	Matt Turner <mattst88@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Michal Simek <monstr@monstr.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Rich Felker <dalias@libc.org>,
	Richard Weinberger <richard@nod.at>,
	Russell King <linux@armlinux.org.uk>,
	Stafford Horne <shorne@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Vineet Gupta <vgupta@kernel>
Subject: Re: [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM
Date: Tue, 31 Jan 2023 20:41:49 +0200	[thread overview]
Message-ID: <Y9lg7R1Yd931C+y5@kernel.org> (raw)
In-Reply-To: <Y9lULIIOneBUFE/E@spud>

Hi Conor,

On Tue, Jan 31, 2023 at 05:47:24PM +0000, Conor Dooley wrote:
> Hey Mike,
> 
> On Sun, Jan 29, 2023 at 02:42:35PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > 
> > Every architecture that supports FLATMEM memory model defines its own
> > version of pfn_valid() that essentially compares a pfn to max_mapnr.
> > 
> > Use mips/powerpc version implemented as static inline as a generic
> > implementation of pfn_valid() and drop its per-architecture definitions.
> > 
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > Acked-by: Guo Ren <guoren@kernel.org>		# csky
> > Acked-by: Huacai Chen <chenhuacai@loongson.cn>	# LoongArch
> > Acked-by: Stafford Horne <shorne@gmail.com>	# OpenRISC
> 
> Hmm, so this landed in linux-next today and I bisected a boot failure in
> my CI to it. However, I am not really sure if it is a real issue worth
> worrying about as the platform it triggered on is supposed to be using
> SPARSEMEM, but isn't.
> I had thought that my CI was using a config with SPARSEMEM since that
> became required for riscv defconfig builds to boot in v6.1-rc1, but I
> must have just forgotten to add it to my $platform_defconfig builds too.
> However, those $platform_defconfig builds continued booting without
> SPARSEMEM enabled until today.

The issue seems to be that the generic pfn_valid() does not take into
account pfn_offset when it compares it with max_mapnr.
Can you please test with the patch below?

diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 13d2a844d928..6796abe1900e 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -26,7 +26,7 @@ static inline int pfn_valid(unsigned long pfn)
 	extern unsigned long max_mapnr;
 	unsigned long pfn_offset = ARCH_PFN_OFFSET;
 
-	return pfn >= pfn_offset && pfn < max_mapnr;
+	return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
 }
 #define pfn_valid pfn_valid
 #endif

> for $platform_defconfig builds I now see the following, which is in turn
> followed by an opps. The full output is at the bottom of this mail.
> 
> 	WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> 	Modules linked in:
> 	CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> 	 ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> 	epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> 	 gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> 	 t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> 	 s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> 	 a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> 	 a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> 	 s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> 	 s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> 	 s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> 	 s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> 	 t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> 	status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> 	[<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> 	[<ffffffff8000dfc4>] copy_process+0x636/0x1196
> 	[<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> 	[<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> 	[<ffffffff8077056e>] rest_init+0x28/0xea
> 	[<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> 	[<ffffffff80800de4>] start_kernel+0x72c/0x75c
> 
> In my mind, there's a kernel misconfiguration issue, but it's not the
> same splat as I used to get when using FLATMEM in this configuration:
> 	OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> 	Machine model: Microchip PolarFire-SoC Icicle Kit
> 	earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> 	printk: bootconsole [ns16550a0] enabled
> 	printk: debug: skip boot console de-registration.
> 	efi: UEFI not found.
> 	Zone ranges:
> 	  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> 	  Normal   [mem 0x0000000100000000-0x000000107fffffff]
> 	Movable zone start for each node
> 	Early memory node ranges
> 	  node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> 	  node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> 	  node   0: [mem 0x0000001040000000-0x000000107fffffff]
> 	Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> 	Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map
> 	CPU: 0 PID: 0 Comm: swapper Not tainted 5.19.0-dirty #1
> 	Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> 	Call Trace:
> 	[<ffffffff800057f0>] show_stack+0x30/0x3c
> 	[<ffffffff807d5802>] dump_stack_lvl+0x4a/0x66
> 	[<ffffffff807d5836>] dump_stack+0x18/0x20
> 	[<ffffffff807d1ae8>] panic+0x124/0x2c6
> 	[<ffffffff80814064>] free_area_init_core+0x0/0x11e
> 	[<ffffffff80813720>] free_area_init_node+0xc2/0xf6
> 	[<ffffffff8081331e>] free_area_init+0x222/0x260
> 	[<ffffffff808064d6>] misc_mem_init+0x62/0x9a
> 	[<ffffffff80803cb2>] setup_arch+0xb0/0xea
> 	[<ffffffff8080039a>] start_kernel+0x88/0x4ee
> 
> Turning on SPARSEMEM fixes both problems, but I'm just not sure if there
> is some underlying issue here that I don't know enough about the area to
> understand.
> 
> Thanks,
> Conor.
> 
> [    0.000000] Linux version 6.2.0-rc4-00538-g6e265f6be0c8 (conor@wendy) (riscv64-unknown-linux-gnu-gcc (g5964b5cd727)
>  11.1.0, GNU ld (GNU Binutils) 2.37) #1 SMP PREEMPT @7
> [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
> [    0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit
> [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020100000 (options '115200n8')
> [    0.000000] printk: bootconsole [ns16550a0] enabled
> [    0.000000] printk: debug: skip boot console de-registration.
> [    0.000000] efi: UEFI not found.
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x000000107fffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfbfffff]
> [    0.000000]   node   0: [mem 0x00000000bfc00000-0x00000000bfffffff]
> [    0.000000]   node   0: [mem 0x0000001040000000-0x000000107fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000107fffffff]
> [    0.000000] On node 0, zone Normal: 15990272 pages in unavailable ranges
> [    0.000000] SBI specification v0.3 detected
> [    0.000000] SBI implementation ID=0x1 Version=0x10000
> [    0.000000] SBI TIME extension detected
> [    0.000000] SBI IPI extension detected
> [    0.000000] SBI RFENCE extension detected
> [    0.000000] SBI SRST extension detected
> [    0.000000] SBI HSM extension detected
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv: base ISA extensions acdfim
> [    0.000000] riscv: ELF capabilities acdfim
> [    0.000000] percpu: Embedded 19 pages/cpu s37048 r8192 d32584 u77824
> [    0.000000] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 294407
> [    0.000000] Kernel command line: earlycon keep_bootcon reboot=cold
> [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] software IO TLB: area num 4.
> [    0.000000] software IO TLB: mapped [mem 0x00000000bbc00000-0x00000000bfc00000] (64MB)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]       fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000   (2048 kB)
> [    0.000000]       pci io : 0xffffffc6ff000000 - 0xffffffc700000000   (  16 MB)
> [    0.000000]      vmemmap : 0xffffffc700000000 - 0xffffffc800000000   (4096 MB)
> [    0.000000]      vmalloc : 0xffffffc800000000 - 0xffffffd800000000   (  64 GB)
> [    0.000000]      modules : 0xffffffff01352000 - 0xffffffff80000000   (2028 MB)
> [    0.000000]       lowmem : 0xffffffd800000000 - 0xffffffe7ffe00000   (  63 GB)
> [    0.000000]       kernel : 0xffffffff80000000 - 0xffffffffffffffff   (2047 MB)
> [    0.000000] Memory: 1067600K/2095104K available (7639K kernel code, 4898K rwdata, 4096K rodata, 2183K init, 410K bss, 1027504K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
> [    0.000000] rcu: Preemptible hierarchical RCU implementation.
> [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4.
> [    0.000000] rcu:     RCU debug extended QS entry/exit.
> [    0.000000]  Trampoline variant of Tasks RCU enabled.
> [    0.000000]  Tracing variant of Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] CPU with hartid=0 is not available
> [    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
> [    0.000000] riscv-intc: 64 local interrupts mapped
> [    0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts.
> [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
> [    0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
> [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [    0.000004] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
> [    0.009687] Console: colour dummy device 80x25
> [    0.014654] printk: console [tty0] enabled
> [    0.019313] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
> [    0.030490] pid_max: default: 32768 minimum: 301
> [    0.036094] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.044458] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
> [    0.055493] ------------[ cut here ]------------
> [    0.060606] WARNING: CPU: 0 PID: 0 at mm/vmalloc.c:479 __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.070040] Modules linked in:
> [    0.073421] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.082157] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.088972] epc : __vmap_pages_range_noflush+0x2d4/0x4c8
> [    0.094838]  ra : __vmap_pages_range_noflush+0x3e0/0x4c8
> [    0.100707] epc : ffffffff801461e4 ra : ffffffff801462f0 sp : ffffffff81203b90
> [    0.108674]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : ffffffe7bfe57000
> [    0.116643]  t1 : ffffffffffff8000 t2 : 00000000000001a7 s0 : ffffffff81203c50
> [    0.124611]  s1 : ffffffe7bfe56040 a0 : 0000000000000000 a1 : ffffffe7c7df2840
> [    0.132588]  a2 : ffffffff812ebae8 a3 : 0000000000001000 a4 : 0000000000080200
> [    0.140564]  a5 : 0000000000fffe00 a6 : 0000000001040056 a7 : ffffffffffffffff
> [    0.148541]  s2 : 0000000001040024 s3 : ffffffff80de1118 s4 : ffffffc80400c000
> [    0.156518]  s5 : ffffffc80400c000 s6 : 00000000000000e7 s7 : 0000000000000000
> [    0.164495]  s8 : ffffffc80400bfff s9 : 00fffffffffff000 s10: ffffffc804008000
> [    0.172472]  s11: ffffffe7bfe0d100 t3 : 0000000000000000 t4 : fffffffffff00000
> [    0.180449]  t5 : 00000000000f0000 t6 : ffffffe7bfe22ac4
> [    0.186317] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003
> [    0.195060] [<ffffffff8014762a>] __vmalloc_node_range+0x392/0x52e
> [    0.201802] [<ffffffff8000dfc4>] copy_process+0x636/0x1196
> [    0.207878] [<ffffffff8000ec42>] kernel_clone+0x4a/0x2f4
> [    0.213755] [<ffffffff8000f15e>] user_mode_thread+0x7c/0x9a
> [    0.219918] [<ffffffff8077056e>] rest_init+0x28/0xea
> [    0.225429] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.232460] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.238434] ---[ end trace 0000000000000000 ]---
> n):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:0kB pagetables:4kB sec_pagetables:0kB all_unreclaimable? no
> [    0.423801] DMA32 free:940780kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1046528kB managed:940780kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> [    0.452034] lowmem_reserve[]: 0 0 0
> [    0.455919] Normal free:126248kB boost:0kB min:0kB low:0kB high:0kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1048576kB managed:126820kB mlocked:0kB bounce:0kB free_pcp:156kB local_pcp:156kB free_cma:0kB
> [    0.484652] lowmem_reserve[]: 0 0 0
> [    0.488538] DMA32: 1*4kB (M) 1*8kB (M) 0*16kB 1*32kB (M) 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 229*4096kB (M) = 940780kB
> [    0.503367] Normal: 2*4kB (ME) 0*8kB 2*16kB (UE) 2*32kB (ME) 3*64kB (UME) 0*128kB 2*256kB (ME) 3*512kB (UME) 3*1024kB (UME) 3*2048kB (UME) 28*4096kB (M) = 126248kB
> [    0.519722] 0 total pagecache pages
> [    0.523579] 0 pages in swap cache
> [    0.527264] Free swap  = 0kB
> [    0.530445] Total swap = 0kB
> [    0.533652] 523776 pages RAM
> [    0.536833] 0 pages HighMem/MovableOnly
> [    0.541090] 256876 pages reserved
> [    0.544833] Unable to handle kernel NULL pointer dereference at virtual address 000000000000003c
> [    0.554576] Oops [#1]
> [    0.557092] Modules linked in:
> [    0.560470] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.2.0-rc4-00538-g6e265f6be0c8 #1
> [    0.570841] Hardware name: Microchip PolarFire-SoC Icicle Kit (DT)
> [    0.577664] epc : rest_init+0x44/0xea
> [    0.581726]  ra : rest_init+0x44/0xea
> [    0.585788] epc : ffffffff8077058a ra : ffffffff8077058a sp : ffffffff81203f70
> [    0.593764]  gp : ffffffff812e9fe0 tp : ffffffff8120fa80 t0 : 0000000000000000
> [    0.601741]  t1 : 0000000000000000 t2 : 0000000000000040 s0 : ffffffff81203f90
> [    0.609718]  s1 : fffffffffffffff4 a0 : 0000000000000000 a1 : fffffffffffffff4
> [    0.617695]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
> [    0.625672]  a5 : 0000000000000000 a6 : 0000000001212dec a7 : ffffffffd8bc86ae
> [    0.633649]  s2 : ffffffff80de0bf0 s3 : ffffffe7c7de7700 s4 : 0000000000000000
> [    0.641626]  s5 : ffffffff812eb018 s6 : ffffffff80a00008 s7 : 0000000000000000
> [    0.649603]  s8 : 00000000bfb85036 s9 : 0000000000000000 s10: 0000000000000000
> [    0.657580]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [    0.665557]  t5 : ffffffff812158a8 t6 : 0000000000000000
> [    0.671416] status: 0000000200000120 badaddr: 000000000000003c cause: 000000000000000d
> [    0.680157] [<ffffffff80800670>] arch_post_acpi_subsys_init+0x0/0x18
> [    0.687188] [<ffffffff80800de4>] start_kernel+0x72c/0x75c
> [    0.693195] ---[ end trace 0000000000000000 ]---
> [    0.698325] Kernel panic - not syncing: Attempted to kill the idle task!
> [    0.705729] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---



-- 
Sincerely yours,
Mike.

  reply	other threads:[~2023-01-31 18:42 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-29 12:42 [PATCH v2 0/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` Mike Rapoport
2023-01-29 12:42 ` [PATCH v2 1/4] arm: include asm-generic/memory_model.h from page.h rather than memory.h Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-02-03 14:30   ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-02-03 14:30     ` David Hildenbrand
2023-01-29 12:42 ` [PATCH v2 2/4] m68k: use asm-generic/memory_model.h for both MMU and !MMU Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-02-03 14:31   ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-12 17:35   ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-12 17:35     ` Guenter Roeck
2023-02-13  1:15     ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  1:15       ` Mike Rapoport
2023-02-13  6:25       ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-02-13  6:25         ` Guenter Roeck
2023-01-29 12:42 ` [PATCH v2 3/4] mips: drop definition of pfn_valid() for DISCONTIGMEM Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-02-03 14:31   ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-02-03 14:31     ` David Hildenbrand
2023-01-29 12:42 ` [PATCH v2 4/4] mm, arch: add generic implementation of pfn_valid() for FLATMEM Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-29 12:42   ` Mike Rapoport
2023-01-30  5:06   ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-30  5:06     ` Michael Ellerman
2023-01-31 17:47   ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 17:47     ` Conor Dooley
2023-01-31 18:41     ` Mike Rapoport [this message]
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:41       ` Mike Rapoport
2023-01-31 18:55       ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-01-31 18:55         ` Conor Dooley
2023-02-03 14:33   ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-03 14:33     ` David Hildenbrand
2023-02-12 16:13   ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:13     ` Guenter Roeck
2023-02-12 16:26     ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 16:26       ` Mike Rapoport
2023-02-12 17:38       ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-12 17:38         ` Guenter Roeck
2023-02-13  1:26     ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  1:26       ` Mike Rapoport
2023-02-13  6:37       ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  6:37         ` Guenter Roeck
2023-02-13  7:54         ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport
2023-02-13  7:54           ` Mike Rapoport

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y9lg7R1Yd931C+y5@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=bcain@quicinc.com \
    --cc=chenhuacai@kernel.org \
    --cc=chenhuacai@loongson.cn \
    --cc=conor@kernel.org \
    --cc=dalias@libc.org \
    --cc=davem@davemloft.net \
    --cc=deller@gmx.de \
    --cc=dinguyen@kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=gerg@linux-m68k.org \
    --cc=guoren@kernel.org \
    --cc=jcmvbkbc@gmail.com \
    --cc=kernel@xen0n.name \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=loongarch@lists.linux.dev \
    --cc=mattst88@gmail.com \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=openrisc@lists.librecores.org \
    --cc=palmer@dabbelt.com \
    --cc=richard@nod.at \
    --cc=shorne@gmail.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tsbogend@alpha.franken.de \
    --cc=vgupta@kernel.org \
    --cc=x86@kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.