Re: [BUG] 2.6.26-rc1 hangs during boot on UltraSPARC 5

From: Mikael Pettersson
Date: Wed May 07 2008 - 14:24:50 EST


David Miller writes:
> From: Mikael Pettersson <mikpe@xxxxxxxx>
> Date: Tue, 6 May 2008 21:38:24 +0200
>
> > I removed "| CON_BOOT" and got what looks like the same oops
> > Raúl Porcel reported earlier today (which he for some reason
> > sent only to the lists, not to you or me); his oops was:
>
> I can reproduce this problem here in my t1000.
>
> It looks like some kind of initrd regression.
>
> Looking at the crashes, the kernel seems to be trying
> to dereference a physical address when peeking at the
> initrd instead of using a virtual one. That's a big
> clue.
>
> This patch should fix it:
>
> commit d45100f7b69e3d9cd0cd5e956b6ac2c78d460d07
> Author: David S. Miller <davem@xxxxxxxxxxxxx>
> Date: Tue May 6 15:19:54 2008 -0700
>
> sparc64: Fix initrd regression.
>
> We die because we forget to convert initrd_start and
> initrd_end to virtual addresses.
>
> Reported by Mikael Pettersson
>
> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
>
> diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
> index db8e7fb..ec3e2c7 100644
> --- a/arch/sparc64/mm/init.c
> +++ b/arch/sparc64/mm/init.c
> @@ -771,6 +771,9 @@ static void __init find_ramdisk(unsigned long phys_base)
> initrd_end = ramdisk_image + sparc_ramdisk_size;
>
> lmb_reserve(initrd_start, initrd_end);
> +
> + initrd_start += PAGE_OFFSET;
> + initrd_end += PAGE_OFFSET;
> }
> #endif
> }

This solved my boot problem. Thanks.

Tested-by: Mikael Pettersson <mikpe@xxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/