aboutsummaryrefslogtreecommitdiffstats
path: root/package/boot
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2023-06-02 13:48:38 +0200
committerPetr Štetiar <ynezz@true.cz>2023-06-13 14:15:22 +0200
commit848759c2362fc60fef8aa76f2adeb228af3cae65 (patch)
tree333ceca6269efab4929816e23000e5319b1c85a2 /package/boot
parentc05c0699d4798b02f8ee88159236142e08c0c4cd (diff)
downloadupstream-848759c2362fc60fef8aa76f2adeb228af3cae65.tar.gz
upstream-848759c2362fc60fef8aa76f2adeb228af3cae65.tar.bz2
upstream-848759c2362fc60fef8aa76f2adeb228af3cae65.zip
uboot-armsr: add support for QEMU armv7/armv8
Add new package so we can use self-compiled bootloader during QEMU based testing and development. Backported fix[1] is needed for EFI boot from virtio devices. 1. https://patchwork.ozlabs.org/project/uboot/patch/20230424134946.v10.7.Ia5f5e39c882ac22b5f71c4d576941b34e868eeba@changeid/ Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit b8e3fa2d1205213c71bc356744e9bed6cd8e69f9)
Diffstat (limited to 'package/boot')
-rw-r--r--package/boot/uboot-armsr/Makefile36
-rw-r--r--package/boot/uboot-armsr/patches/001-v2023.07-bootstd-Use-blk-uclass-device-numbers-to-set-efi-bootdev.patch62
2 files changed, 98 insertions, 0 deletions
diff --git a/package/boot/uboot-armsr/Makefile b/package/boot/uboot-armsr/Makefile
new file mode 100644
index 0000000000..ce53d19b79
--- /dev/null
+++ b/package/boot/uboot-armsr/Makefile
@@ -0,0 +1,36 @@
+include $(TOPDIR)/rules.mk
+
+PKG_VERSION:=2023.04
+PKG_RELEASE:=1
+
+PKG_HASH:=e31cac91545ff41b71cec5d8c22afd695645cd6e2a442ccdacacd60534069341
+
+include $(INCLUDE_DIR)/u-boot.mk
+include $(INCLUDE_DIR)/package.mk
+
+define U-Boot/Default
+ BUILD_TARGET:=armsr
+endef
+
+define U-Boot/qemu_armv7
+ NAME:=QEMU ARM Virtual Machine 32-bit
+ BUILD_SUBTARGET:=armv7
+ BUILD_DEVICES:=generic
+ UBOOT_CONFIG:=qemu_arm
+endef
+
+define U-Boot/qemu_armv8
+ NAME:=QEMU ARM Virtual Machine 64-bit
+ BUILD_SUBTARGET:=armv8
+ BUILD_DEVICES:=generic
+ UBOOT_CONFIG:=qemu_arm64
+endef
+
+UBOOT_TARGETS := \
+ qemu_armv7 \
+ qemu_armv8
+
+UBOOT_CUSTOMIZE_CONFIG := \
+ --enable CMD_EFIDEBUG
+
+$(eval $(call BuildPackage/U-Boot))
diff --git a/package/boot/uboot-armsr/patches/001-v2023.07-bootstd-Use-blk-uclass-device-numbers-to-set-efi-bootdev.patch b/package/boot/uboot-armsr/patches/001-v2023.07-bootstd-Use-blk-uclass-device-numbers-to-set-efi-bootdev.patch
new file mode 100644
index 0000000000..f4c8118952
--- /dev/null
+++ b/package/boot/uboot-armsr/patches/001-v2023.07-bootstd-Use-blk-uclass-device-numbers-to-set-efi-bootdev.patch
@@ -0,0 +1,62 @@
+From: Simon Glass <sjg@chromium.org>
+To: U-Boot Mailing List <u-boot@lists.denx.de>
+Subject: [PATCH v10 7/9] bootstd: Use blk uclass device numbers to set efi
+ bootdev
+Date: Mon, 24 Apr 2023 13:49:50 +1200
+Message-ID:
+ <20230424134946.v10.7.Ia5f5e39c882ac22b5f71c4d576941b34e868eeba@changeid>
+
+From: Mathew McBride <matt@traverse.com.au>
+
+When loading a file from a block device, efiload_read_file
+was using the seq_num of the device (e.g "35" of virtio_blk#35)
+instead of the block device id (e.g what you get from running
+the corresponding device scan command, like "virtio 0")
+
+This cause EFI booting from these devices to fail as an
+invalid device number is passed to blk_get_device_part_str:
+
+ Scanning bootdev 'virtio-blk#35.bootdev':
+ distro_efi_read_bootflow_file start (efi,fname=<NULL>)
+ distro_efi_read_bootflow_file start (efi,fname=<NULL>)
+ setting bootdev virtio, 35, efi/boot/bootaa64.efi, 00000000beef9a40, 170800
+ efi_dp_from_name calling blk_get_device_part_str
+ dev=virtio devnr=35 path=efi/boot/bootaa64.efi
+ blk_get_device_part_str (virtio,35)
+ blk_get_device_by_str (virtio, 35)
+ ** Bad device specification virtio 35 **
+ Using default device tree: dtb/qemu-arm.dtb
+ No device tree available
+ 0 efi ready virtio 1 virtio-blk#35.bootdev.par efi/boot/bootaa64.efi
+ ** Booting bootflow 'virtio-blk#35.bootdev.part_1' with efi
+ blk_get_device_part_str (virtio,0:1)
+ blk_get_device_by_str (virtio, 0)
+ No UEFI binary known at beef9a40 (image buf=00000000beef9a40,addr=0000000000000000)
+ Boot failed (err=-22)
+
+Signed-off-by: Mathew McBride <matt@traverse.com.au>
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Signed-off-by: Petr Štetiar <ynezz@true.cz> [backport to 2023.04]
+---
+
+(no changes since v8)
+
+Changes in v8:
+- Add new patch to use blk uclass device numbers to set efi bootdev
+
+ boot/bootmeth_efi.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/boot/bootmeth_efi.c
++++ b/boot/bootmeth_efi.c
+@@ -117,7 +117,9 @@ static int efiload_read_file(struct blk_
+ * this can go away.
+ */
+ media_dev = dev_get_parent(bflow->dev);
+- snprintf(devnum_str, sizeof(devnum_str), "%x", dev_seq(media_dev));
++ snprintf(devnum_str, sizeof(devnum_str), "%x:%x",
++ desc ? desc->devnum : dev_seq(media_dev),
++ bflow->part);
+
+ strlcpy(dirname, bflow->fname, sizeof(dirname));
+ last_slash = strrchr(dirname, '/');