Aurelien Jarno a écrit :
The initrd seems to works well, but it generates a strange failure
during the boot:
[...]
Mount-cache hash table entries: 512
Checking for 'wait' instruction... available.
checking if image is initramfs...it isn't (bad gzip magic numbers);
looks like an initrd
Bad page state in process 'swapper'
page:81010000 flags:0x00080000 mapping:00000000 mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
Call Trace:
[<8005c748>] bad_page+0x68/0xa8
[<8005ccf0>] free_hot_cold_page+0x1a4/0x1b4
[<802a0000>] ic_bootp_recv+0x238/0x6a0
[<80080138>] __fput+0x14c/0x1cc
[<8001b094>] free_init_pages+0xa4/0xfc
[<802a0000>] ic_bootp_recv+0x238/0x6a0
[<802a0000>] ic_bootp_recv+0x238/0x6a0
[<802a0000>] ic_bootp_recv+0x238/0x6a0
[<80288d98>] free_initrd+0x28/0x44
[<80288e80>] populate_rootfs+0xcc/0x110
[<80292860>] spawn_softlockup_task+0x30/0x50
[<80010498>] init+0x54/0x300
[<80010498>] init+0x54/0x300
[<80013074>] kernel_thread_helper+0x10/0x18
[<80013064>] kernel_thread_helper+0x0/0x18
Freeing initrd memory: 2520k freed
NET: Registered protocol family 16
NET: Registered protocol family 2
[...]
This message is not present when initrd is not used, and it also does
not appear with the previous way of passing the size and location of the
initrd.
I don't have time to look more now, I will give you some more details
when/if I found some time to work on that.
This failure is due to the fact that initrd_reserve_bootmem is not set
anymore to 1 in arch/mips/kernel/setup.c. It is set to 1 when the initrd
location and size are read from the command line arguments, but not when
read from the place where QEMU put it.
Setting this value to 1 fixes the problem, but it is rather a big hack
than a fix.
About the patch itself, another comment: you should add a #ifdef
CONFIG_BLK_DEV_INITRD #endif for the block concerning the initrd in
arch/mips/qemu/q-firmware.c
Bye,
Aurelien
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32@xxxxxxxxxx | aurelien@xxxxxxxxxxx
`- people.debian.org/~aurel32 | www.aurel32.net