
Hi Matthew,
Hi Robert.
Do you see U-Boot detecting and loading the ram disk image once you invoke your bootm command above? eg:
## Loading RAMDisk Image at 00500000 ... Image Name: uboot ext2 ramdisk rootfs Created: 2009-06-15 14:39:13 UTC Image Type: M68K Linux RAMDisk Image (gzip compressed) Data Size: 5219290 Bytes = 5 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Ramdisk to 4fa79000, end 4ff733da ... OK
I believe that for U-Boot to pass the ram disk image information to the kernel, it needs to be able to detect the ram disk image in the first place. You can use U-Boot's mkimage utility to add a header onto your ram disk image.
I used the mkimage, the U-Boot successfully recognized the ramdisk image, and it set the ramdisk_start and ramdisk_end variables (I turned on the debug feature). See the followings:
* kernel: cmdline image address = 0x81000000 ## Booting kernel from Legacy Image at 81000000 ... Image Name: Linux-2.6.30-dirty Created: 2009-06-23 10:11:33 UTC Image Type: MIPS Linux Kernel Image (gzip compressed) Data Size: 1589415 Bytes = 1.5 MB Load Address: 80100000 Entry Point: 80104530 Verifying Checksum ... OK kernel data at 0x81000040, len = 0x001840a7 (1589415) * ramdisk: cmdline image address = 0x81ffffc0 ## Loading init Ramdisk from Legacy Image at 81ffffc0 ... Image Name: Simple Embedded Linux Framework Created: 2007-01-21 18:52:48 UTC Image Type: MIPS Linux RAMDisk Image (gzip compressed) Data Size: 1642848 Bytes = 1.6 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ramdisk start = 0x82000000, ramdisk end = 0x82191160 Uncompressing Kernel Image ... OK kernel loaded at 0x80100000, end = 0x8044a200 ## Transferring control to Linux (at address 80104530) ... ## Giving linux memsize in bytes, 134217728
This is because you're explicitly telling the kernel where to find the ram disk image in memory. Take a look at drivers/block/brd.c in the kernel src.
As I saw, the arch/mips/kernel/setup.c (rd_start_early and rd_size_early) set these informations.
This is arch specific in U-Boot but I'd also check that your MIPS kernel has support for a) correctly parsing the U-Boot environment provided to it and b) providing the required data to other parts of the kernel for utilisation of the ram disk, eg initrd_start / initrd_end as an example.
If you're struggling to pass other args to the kernel then it sounds like there is more of a fundamental issue somewhere, though. Maybe just double check Documentation/kernel-parameters.txt to make sure you're passing syntax in a form that the kernel will recognise?
Hope that helps.
Cheers, -- Matt
I don't know yet, if it can or can't pass other arguments. I check only that one so far. But the command line parameters work well, I tried the kgdb, the ramdisk, etc. It's only a problem with this environment variable. But I'm just debugging...
Best regards, Robert Hodaszi