[U-Boot] initramfs support through the initrd mechanism of u-boot

Currently the support of Linux initial file system by u-boot is a file system image through "initrd". I tweaked a little of both the "lib_arm/armlinux.c" and the initramfs of Linux (a gziped cpio) so that the initramfs file could be passed to the kernel. For example: bootm c0008000 c1008000 will pass c1008000 to kernel as the start address of a initramfs.
However in the Linux kernel it seems that it expects a physical address of initrd start, but u-boot passes a virtual address if MMU is enable. So a "virt_to_phy" should be used on the address before it is passed to the kernel.
I'm currently using a Mini6410 (with Samsung S3C6410 CPU), an ARM board from China.
Thanks, Thomas

Hi Thomas,
Le 14/07/2011 16:17, Cao, Da-Shi (EB-Presales-ZTE/HW-GZ) a écrit :
Currently the support of Linux initial file system by u-boot is a file system image through "initrd". I tweaked a little of both the "lib_arm/armlinux.c" and the initramfs of Linux (a gziped cpio) so that the initramfs file could be passed to the kernel.
Not sure why you need this. Can you not simply make a uImage of the initrd and leave bootm untouched?
For example: bootm c0008000 c1008000 will pass c1008000 to kernel as the start address of a initramfs.
That's already what's being done except for the format of the initramfs IIUC, see http://www.denx.de/wiki/view/DULG/LinuxRamdiskRoot for instance.
However in the Linux kernel it seems that it expects a physical address of initrd start, but u-boot passes a virtual address if MMU is enable. So a "virt_to_phy" should be used on the address before it is passed to the kernel.
Hmm... This should be a problem anyway, whether you pass a gzipped CPIO or an U-Boot initrd image I guess. How do you get to this diagnostic?
I'm currently using a Mini6410 (with Samsung S3C6410 CPU), an ARM board from China.
Thanks, Thomas
Amicalement,
participants (2)
-
Albert ARIBAUD
-
Cao, Da-Shi (EB-Presales-ZTE/HW-GZ)