mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 20:59:41 +02:00

The mmc probing order has become unpredictable due to recent linux kernel changes, therefore devices like the raspberry pi that have two mmc interface most of the time can't boot from the hard-coded root path. Modify the u-boot script to fetch the PARTUUID of the second partition of the sd card and use it to put root=PARTUUID=<xxx> in the command line passed to the dom0 kernel. Reviewed-by: Diego Sueiro <diego.sueiro@arm.com> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com> Reviewed-by: Christopher Clark <christopher.w.clark@gmail.com> Tested-by: Christopher Clark <christopher.w.clark@gmail.com> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
59 lines
1.8 KiB
Plaintext
59 lines
1.8 KiB
Plaintext
# Set the fdt address to what came from the GPU, so we can edit it
|
|
fdt addr ${fdt_addr}
|
|
|
|
# Pull the bootargs that the GPU has edited
|
|
fdt get value bootargs /chosen bootargs
|
|
|
|
# Set module load addresses
|
|
setenv xen_loadaddr "0x00200000"
|
|
setenv kernel_loadaddr "0x00400000"
|
|
|
|
# Add some space to the fdt so we can edit it
|
|
fdt resize 0x1000
|
|
echo Add boot arguments for Xen
|
|
fdt set /chosen xen,xen-bootargs "console=dtuart dtuart=/soc/serial@7e215040 dom0_mem='@@RPI_DOM0_MEM@@' @@RPI_DEBUG_XEN_ARGS@@"
|
|
|
|
echo Add a dom0 node to chosen to put Linux boot information in
|
|
fdt mknode /chosen dom0
|
|
|
|
echo Set this for the Linux boot command
|
|
fdt set /chosen/dom0 compatible "multiboot,module"
|
|
|
|
# Tell Xen where PCI is
|
|
fdt set /scb/pcie@7d500000 device_type "pci"
|
|
# Workaround to fix:
|
|
# "Unable to retrieve address 0 for /scb/pcie@7d500000/pci@1,0/usb@1,0"
|
|
fdt rm /scb/pcie@7d500000/pci@1,0/usb@1,0
|
|
|
|
echo Delay to allow the MMC card to be ready
|
|
sleep 1
|
|
|
|
# Retrieve PARTUUID for the rootfs partition of the sdcard
|
|
part uuid mmc 1:2 rootfs_partuuid
|
|
|
|
echo Add boot arguments for dom0
|
|
setenv dom0_bootargs "console=hvc0 earlycon=xenboot debug root=PARTUUID=${rootfs_partuuid} rootwait"
|
|
fdt set /chosen xen,dom0-bootargs \"${dom0_bootargs}\"
|
|
|
|
echo Load Xen into memory
|
|
fatload mmc 1:1 ${xen_loadaddr} xen
|
|
echo Xen loaded, size: 0x$filesize
|
|
|
|
echo Load Linux kernel into memory
|
|
fatload mmc 1:1 ${kernel_loadaddr} Image
|
|
setenv kernel_size 0x$filesize
|
|
echo Linux loaded, size: 0x$filesize
|
|
|
|
echo Set the address and size for the Linux kernel so Xen can pick it up
|
|
fdt set /chosen/dom0 reg <${kernel_loadaddr} ${kernel_size}>
|
|
|
|
# Define the size and address cells
|
|
fdt set /chosen '#size-cells' <1>
|
|
fdt set /chosen '#address-cells' <1>
|
|
|
|
# Display the chosen fdt section - can be important for debugging
|
|
fdt print /chosen
|
|
|
|
echo Boot Xen
|
|
booti ${xen_loadaddr} - ${fdt_addr}
|