Re: 2.6.12.1 problems I meet (please CC: me)

Wang Jian
2005-06-30T10:34:21Z

2005/6/30, Wang Jian <larkwang@gmail.com>:
> Hi,
>
> I use a customized kernel to do packets analysis. The analysis code is
> linked into kernel. It will vmalloc() nearly 128M (a little less) when
> initialized.
>
> The original code runs on 2.6.10 and works fine. The platform is a
> general P4 with 100M ethernet. The user space system is a 8M compressed
> ramdisk image which is a 32M filesystem.
>
> Now I want to make it work on 2.6.12+ and on Athlon64 platform, for
> better driver and better CPU/NIC performance.
>
> I have a P4 box (compilation bed, CB), a 2-way Athlon64 box (test bed,
> TB).
>
> The problems are:
>
> 2. I compile kernel 2.6.12.1 for K7 on CB. Boot it on TB, the system
> boot up execept that the analysis code can't vmalloc() the needed memory.
>
> "allocation failed: out of vmalloc space - use vmalloc=<size> to increase size."
>
> If I use vmalloc=256m in boot command line, then
>
> initrd extends beyond end of memory (0x37fef716 > 0x30000000)
> initrd extends beyond end of memory (0x37fef716 > 0x30000000)
> Kernel panic - unsyncing: VFS: Unable to mount root fs on unknown-block
> (1,0)
>

This problem also presents itself in 2.6.10.

I remove 512M physic RAM from this TB, so it has 512M RAM left. The
problem is then gone. The needed memory can be correctly vmalloc()
during boot without vmalloc=256m specified in boot command line.

I am curious why this happens?

1. With 512M physic RAM, vmalloc(16776989 * 8) succeeds.
2. With 1G physic RAM, vmalloc(16776989 * 8) fails.
3. With 1G physic RAM, vmalloc=256m boot option will cause kernel fail
to expand a 8M initrd image which is of 32M filesystem.