Re: vmalloc kernel parameter

From: H. Peter Anvin
Date: Wed Jun 28 2006 - 22:06:40 EST


Followup to: <20060628163339.d2110437.vsu@xxxxxxxxxxx>
By author: Sergey Vlasov <vsu@xxxxxxxxxxx>
In newsgroup: linux.dev.kernel
>
> > Hi, I'm having troubles when using the vmalloc kernel parameter.
> >
> > My grub config looks as shown below. If I set vmalloc to anything
> > bigger than 128M (the default) then the kernel will not boot and it
> > will log the following on the console:
> >
> > VFS: Cannot open root device "LABEL=/" or unknown-block(0,0)
> > Please append a correct "root=" boot option
> > Kernel Panic - not syncing: VFS Unable to mount root fs on
> > unknown-block(0,0)
> >
> > If I specify 128M or less then the kernel will boot just fine and
> > /proc/meminfo will show the effect in VmallocTotal.
> >
> > Any hint on what I'm crashing with?
>
> This is a known problem with GRUB: it tries to put initrd at the highest
> possible address in memory, and assumes the standard vmalloc area size.
> You need to trick GRUB into thinking that your machine has less memory
> by using "uppermem 524288" (512M) or even lower - then the initrd data
> will still be accessible for the kernel even with larger vmalloc area.
>

Grub is just following protocol in that way. The kernel really ought
to move the initrd to the spot that it wants, preferrably as early as
possible in the boot. On i386, it could do it in assembly before even
enabling paging; on x86-64 none of this is an issue...

-hpa

-
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/