Re: [PATCH] m68k: mm: Move initrd phys_to_virt handling after paging_init()

From: Finn Thain
Date: Mon Feb 27 2023 - 17:47:20 EST


On Mon, 27 Feb 2023, Geert Uytterhoeven wrote:

> When booting with an initial ramdisk on platforms where physical memory
> does not start at address zero (e.g. on Amiga):
>
> initrd: 0ef0602c - 0f800000
> Zone ranges:
> DMA [mem 0x0000000008000000-0x000000f7ffffffff]
> Normal empty
> Movable zone start for each node
> Early memory node ranges
> node 0: [mem 0x0000000008000000-0x000000000f7fffff]
> Initmem setup node 0 [mem 0x0000000008000000-0x000000000f7fffff]
> Unable to handle kernel access at virtual address (ptrval)
> Oops: 00000000
> Modules linked in:
> PC: [<00201d3c>] memcmp+0x28/0x56
>
> As phys_to_virt() relies on m68k_memoffset and module_fixup(), it must
> not be called before paging_init(). Hence postpone the phys_to_virt
> handling for the initial ramdisk until after calling paging_init().
>

Thanks for debugging this issue.

> While at it, reduce #ifdef clutter by using IS_ENABLED() instead.
>
> Fixes: 376e3fdecb0dcae2 ("m68k: Enable memtest functionality")

I apologise for the trouble caused by that patch.