• Conor Dooley's avatar
    RISC-V: enable sparsemem by default for defconfig · 41555cc9
    Conor Dooley authored
    on an arch level, RISC-V defaults to FLATMEM. On PolarFire SoC, the
    memory layout is almost always sparse, with a maximum of 1 GiB at
    0x8000_0000 & a possible 16 GiB range at 0x10_0000_0000. The Icicle kit,
    for example, has 2 GiB of DDR - so there's a big hole in the memory map
    between the two gigs. Prior to v6.1-rc1, boot times from defconfig
    builds were pretty bad on Icicle but enabling sparsemem would fix those
    issues. As of v6.1-rc1, the Icicle kit no longer boots from defconfig
    builds with the in-kernel devicetree. A change to the memory map
    resulted in a futher "sparse-ification", producing a splat on boot:
    
    	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
    	---[ end Kernel panic - not syncing: Failed to allocate 1073741824 bytes for node 0 memory map ]---
    
    With the aim of keeping defconfig builds booting on icicle, enable
    SPARSEMEM_MANUAL.
    Signed-off-by: default avatarConor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20221021160028.4042304-1-conor@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    41555cc9
defconfig 4.58 KB