meta-virtualization/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in
luca fancellu f939b5bdbd xen, rpi4: Use PARTUUID for rootfs discovery
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>
2021-10-08 07:30:44 -04:00

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}