diff --git a/debian/changelog b/debian/changelog index 85e23aea355a98bb84e05ad93073cd5822a125fd..2c705116224797d4eaccd4c736109a4ab32d3ab9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,57 @@ +u-boot (2024.01+dfsg-5) unstable; urgency=medium + + * Upload to unstable. + + -- Vagrant Cascadian <vagrant@debian.org> Fri, 19 Apr 2024 11:32:03 -0700 + +u-boot (2024.01+dfsg-4) experimental; urgency=medium + + [ Martyn Welch ] + * d/targets: Enable support for am625-sk + + [ Vagrant Cascadian ] + * debian/control: Add missing Build-Depends-Arch on + gcc-arm-linux-gnueabihf for am625-sk targets. + * Move u-boot-exynos (odroid, odroid-xu3) platforms to + u-boot-exynos-binaries in contrib. + * Move u-boot-amlogic platforms to u-boot-amlogic-binaries in contrib. + + -- Vagrant Cascadian <vagrant@debian.org> Thu, 18 Apr 2024 15:50:25 -0700 + +u-boot (2024.01+dfsg-3) unstable; urgency=medium + + * Switch away from dh-builtusing to fix build failure on armhf. + + -- Vagrant Cascadian <vagrant@debian.org> Wed, 20 Mar 2024 11:38:00 -0700 + +u-boot (2024.01+dfsg-2) unstable; urgency=medium + + [ Philippe Coval ] + * debian/patches: Add Olimex A20-Olinuxino Micro reboot patch + (Closes: #1060752) + + [ Aurelien Jarno ] + * debian/patches: Apply patches from upstream to fix USB crash on + VisionFive 2. (Closes: #1062664) + * debian/patches: Apply patch from upstream to improve VisionFive 2 1.2A + support. + * debian/patches: Apply patch from upstream to support saving + environment on VisionFive 2. + * debian/patches: Apply patch submitted upstream fixing device-tree + corruption on riscv64. (Closes: #1060682) + * debian/patches: Apply patch submitted upstream fixing data corruption + on HiFive Unmatched. + + [ Ðндрей Лухнов ] + * debian/targets.mk: add orangepi_pc_plus to sunxi platforms + (Closes: #1061432) + + [ Nicolas Boulenguez ] + * Delegate the Built-Using field to the dh-builtusing debhelper tool + (Closes: #1051098) + + -- Vagrant Cascadian <vagrant@debian.org> Tue, 19 Mar 2024 16:27:45 -0700 + u-boot (2024.01+dfsg-1) unstable; urgency=medium * New upstream version. diff --git a/debian/control b/debian/control index 7a6bbc31ccfdda16bad9d9f42186c924a18e1012..7e3082e19ab33aa94c9bf8b90d537499c7b26ddf 100644 --- a/debian/control +++ b/debian/control @@ -18,6 +18,7 @@ Build-Depends-Arch: arm-trusted-firmware (>= 2.9~) [arm64], crust-firmware (>= 0.3-2~) [arm64], device-tree-compiler, + gcc-arm-linux-gnueabihf [arm64], libfdt-dev:native [arm64], libgnutls28-dev, libgnutls28-dev:native [arm64], @@ -26,6 +27,8 @@ Build-Depends-Arch: libssl-dev:native, lzop [armhf], opensbi (>= 1.3) [riscv64], + python3-jsonschema [arm64], + python3-yaml [arm64], uuid-dev, uuid-dev:native [arm64], Build-Depends-Indep: @@ -58,10 +61,13 @@ Description: A boot loader for embedded systems Included platforms: ${u-boot:platforms} -Package: u-boot-amlogic +Package: u-boot-amlogic-binaries Architecture: arm64 +Section: contrib/admin Multi-Arch: same Depends: ${misc:Depends} +Breaks: u-boot-amlogic (<= 2024.01+dfsg-3) +Replaces: u-boot-amlogic (<= 2024.01+dfsg-3) Recommends: arm-trusted-firmware [arm64] Description: A boot loader for amlogic systems Das U-Boot is a cross-platform bootloader for embedded systems, @@ -73,7 +79,7 @@ Description: A boot loader for amlogic systems This package includes boot loaders for various amlogic platforms. . Included platforms: - ${u-boot-amlogic:platforms} + ${u-boot-amlogic-binaries:platforms} Package: u-boot-asahi Architecture: arm64 @@ -221,6 +227,25 @@ Description: A boot loader for exynos systems Included platforms: ${u-boot-exynos:platforms} +Package: u-boot-exynos-binaries +Architecture: armhf +Section: contrib/admin +Multi-Arch: same +Depends: ${misc:Depends} +Breaks: u-boot-exynos (<= 2024.01+dfsg-3) +Replaces: u-boot-exynos (<= 2024.01+dfsg-3) +Description: A boot loader for exynos systems + Das U-Boot is a cross-platform bootloader for embedded systems, + used as the default boot loader by several board vendors. It is + intended to be easy to port and to debug, and runs on many + supported architectures, including PPC, ARM, MIPS, x86, m68k, + NIOS, and Microblaze. + . + This package includes boot loaders for various Exynos platforms. + . + Included platforms: + ${u-boot-exynos-binaries:platforms} + Package: u-boot-mvebu Architecture: arm64 Multi-Arch: same @@ -308,6 +333,25 @@ Description: A boot loader for SiFive systems Included platforms: ${u-boot-sifive:platforms} +Package: u-boot-sitara-binaries +Architecture: arm64 +Section: contrib/admin +Multi-Arch: same +Depends: ${misc:Depends} +Description: Boot loader binaries for TI Sitara systems + Das U-Boot is a cross-platform bootloader for embedded systems, + used as the default boot loader by several board vendors. It is + intended to be easy to port and to debug, and runs on many + supported architectures, including PPC, ARM, MIPS, x86, m68k, + NIOS, and Microblaze. + . + This package includes the U-Boot derived boot loader binaries + which need to be combined with currently unpackaged firmware to + boot various Sitara platforms. + . + Included platforms: + ${u-boot-sitara-binaries:platforms} + Package: u-boot-starfive Architecture: riscv64 Multi-Arch: same diff --git a/debian/patches/allwinner/0001-arm-sunxi-Reduce-inrush-current-on-Olimex-A20-OLinuX.patch b/debian/patches/allwinner/0001-arm-sunxi-Reduce-inrush-current-on-Olimex-A20-OLinuX.patch new file mode 100644 index 0000000000000000000000000000000000000000..f33e9aa03dc14f3977bbdf19a6790534c5147e3e --- /dev/null +++ b/debian/patches/allwinner/0001-arm-sunxi-Reduce-inrush-current-on-Olimex-A20-OLinuX.patch @@ -0,0 +1,64 @@ +From a55fa8acd219c025fca06ff130c95b97bc6cbd79 Mon Sep 17 00:00:00 2001 +From: Philippe Coval <rzr@users.sf.net> +Date: Sat, 6 Jan 2024 11:06:41 +0100 +Subject: [PATCH] arm: sunxi: Reduce inrush current on Olimex + A20-OLinuXino_MICRO configs + +This change fix reboot, both configurations +were tested on my Olimex A20 Micro Rev E with debian-12. + +This issue was also present and fixed on A20 Lime2 (in 8311e84b18), +quoting Olliver Schinagl: + + The lime2 features a too large capacitor on the LDO3 output, which + causes the PMIC to shutdown when enabling power. To be able to still + boot up however, we must gradually enable power on LDO3 for this board. + We do this by enabling both the inrush quirk and the maximum slope the + AXP209 supports. + +Link: https://bugs.debian.org/1060752 +Series-to: u-boot@lists.denx.de +Series-links: 1:187331 +Series-version: 2 +Cc: Olliver Schinagl <oliver@schinagl.nl> +Cc: Priit Laes <plaes@plaes.org> +Cc: Maxime Ripard <maxime.ripard@bootlin.com> +Signed-off-by: Philippe Coval <rzr@users.sf.net> +Series-changes: 2 +- Add qirk to eMMC configuration of same machine +Forwarded: http://patchwork.ozlabs.org/project/uboot/list/?series=394499 +Bug-Debian: https://bugs.debian.org/1060752 +Applied-Upstream: https://source.denx.de/u-boot/u-boot/-/commit/c93a6fc8f5313b2aa7081d53c3061c7c1b94afca#v2024.04-rc3-48-gc93a6fc8f5 +Signed-off-by: Philippe Coval <rzr@users.sf.net> +--- + configs/A20-OLinuXino_MICRO-eMMC_defconfig | 1 + + configs/A20-OLinuXino_MICRO_defconfig | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/configs/A20-OLinuXino_MICRO-eMMC_defconfig b/configs/A20-OLinuXino_MICRO-eMMC_defconfig +index ca5869f43d..2f26b0ca01 100644 +--- a/configs/A20-OLinuXino_MICRO-eMMC_defconfig ++++ b/configs/A20-OLinuXino_MICRO-eMMC_defconfig +@@ -20,6 +20,7 @@ CONFIG_ETH_DESIGNWARE=y + CONFIG_MII=y + CONFIG_SUN7I_GMAC=y + CONFIG_SUN7I_GMAC_FORCE_TXERR=y ++CONFIG_AXP_ALDO3_INRUSH_QUIRK=y + CONFIG_AXP_ALDO3_VOLT=2800 + CONFIG_AXP_ALDO4_VOLT=2800 + CONFIG_SCSI=y +diff --git a/configs/A20-OLinuXino_MICRO_defconfig b/configs/A20-OLinuXino_MICRO_defconfig +index db4270f9b2..673ab85c8a 100644 +--- a/configs/A20-OLinuXino_MICRO_defconfig ++++ b/configs/A20-OLinuXino_MICRO_defconfig +@@ -20,6 +20,7 @@ CONFIG_ETH_DESIGNWARE=y + CONFIG_MII=y + CONFIG_SUN7I_GMAC=y + CONFIG_SUN7I_GMAC_FORCE_TXERR=y ++CONFIG_AXP_ALDO3_INRUSH_QUIRK=y + CONFIG_AXP_ALDO3_VOLT=2800 + CONFIG_AXP_ALDO4_VOLT=2800 + CONFIG_SCSI=y +-- +2.43.0 + diff --git a/debian/patches/am62x/0008-arm-dts-k3-am625-Don-t-try-to-build-the-final-firmwa.patch b/debian/patches/am62x/0008-arm-dts-k3-am625-Don-t-try-to-build-the-final-firmwa.patch new file mode 100644 index 0000000000000000000000000000000000000000..f6e87db0d98abf2214687058f2adc7205e6c09b1 --- /dev/null +++ b/debian/patches/am62x/0008-arm-dts-k3-am625-Don-t-try-to-build-the-final-firmwa.patch @@ -0,0 +1,70 @@ +From: Martyn Welch <martyn.welch@collabora.com> +Date: Mon, 12 Feb 2024 17:41:04 +0000 +Subject: arm: dts: k3-am625*: Don't try to build the final firmware images + +The final firmware images require the inclusion of firmware elements that +are not yet available in linux-firmware. Build the U-Boot elements so that +these can be combined with the other elements at a later date. + +Signed-off-by: Martyn Welch <martyn.welch@collabora.com> +--- + arch/arm/dts/k3-am625-beagleplay-u-boot.dtsi | 4 ++++ + arch/arm/dts/k3-am625-sk-binman.dtsi | 8 ++++++++ + 2 files changed, 12 insertions(+) + +diff --git a/arch/arm/dts/k3-am625-beagleplay-u-boot.dtsi b/arch/arm/dts/k3-am625-beagleplay-u-boot.dtsi +index d6c6baa..6df20ad 100644 +--- a/arch/arm/dts/k3-am625-beagleplay-u-boot.dtsi ++++ b/arch/arm/dts/k3-am625-beagleplay-u-boot.dtsi +@@ -176,6 +176,8 @@ + #define SPL_AM625_BEAGLEPLAY_DTB "spl/dts/k3-am625-beagleplay.dtb" + #define AM625_BEAGLEPLAY_DTB "arch/arm/dts/k3-am625-beagleplay.dtb" + ++#if 0 ++ + &spl_am625_sk_dtb { + filename = SPL_AM625_BEAGLEPLAY_DTB; + }; +@@ -193,3 +195,5 @@ + }; + + #endif ++ ++#endif +diff --git a/arch/arm/dts/k3-am625-sk-binman.dtsi b/arch/arm/dts/k3-am625-sk-binman.dtsi +index 41277bf..9e61d2f 100644 +--- a/arch/arm/dts/k3-am625-sk-binman.dtsi ++++ b/arch/arm/dts/k3-am625-sk-binman.dtsi +@@ -7,6 +7,8 @@ + + #ifdef CONFIG_TARGET_AM625_R5_EVM + ++#if 0 ++ + &binman { + tiboot3-am62x-hs-evm.bin { + filename = "tiboot3-am62x-hs-evm.bin"; +@@ -139,6 +141,8 @@ + + #endif + ++#endif ++ + #ifdef CONFIG_TARGET_AM625_A53_EVM + + #define SPL_NODTB "spl/u-boot-spl-nodtb.bin" +@@ -147,6 +151,8 @@ + #define UBOOT_NODTB "u-boot-nodtb.bin" + #define AM625_SK_DTB "u-boot.dtb" + ++#if 0 ++ + &binman { + ti-dm { + filename = "ti-dm.bin"; +@@ -461,3 +467,5 @@ + }; + }; + #endif ++ ++#endif diff --git a/debian/patches/riscv64/board-starfive-handle-compatible-property-in-dynamic.patch b/debian/patches/riscv64/board-starfive-handle-compatible-property-in-dynamic.patch new file mode 100644 index 0000000000000000000000000000000000000000..df3e72c900512bed9c8f3e9189bc91cfe6f4381b --- /dev/null +++ b/debian/patches/riscv64/board-starfive-handle-compatible-property-in-dynamic.patch @@ -0,0 +1,57 @@ +From 465e7e6d506a419ab12ed0817d8f083d43584602 Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno <aurelien@aurel32.net> +Date: Wed, 10 Jan 2024 21:17:44 +0100 +Subject: [PATCH] board: starfive: handle compatible property in dynamic DT + configuration + +The difference between the StarFive VisionFive 2 1.2A and 1.3B boards is +handled dynamically by looking at the PCB version in the EEPROM in order +to have a single u-boot version for both versions of the board. While +the "model" property is correctly handled, the "compatible" one is +always the the one of version 1.3b. + +This patch add support for dynamically configuring that property. + +Fixes: 9b7060bd15e7 ("riscv: dts: jh7110: Combine the board device tree files of 1.2A and 1.3B") + +Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> +Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com> +--- + board/starfive/visionfive2/spl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/board/starfive/visionfive2/spl.c b/board/starfive/visionfive2/spl.c +index 336f0cdfc9..911add429d 100644 +--- a/board/starfive/visionfive2/spl.c ++++ b/board/starfive/visionfive2/spl.c +@@ -61,11 +61,13 @@ static const struct starfive_vf2_pro starfive_verb[] = { + + void spl_fdt_fixup_version_a(void *fdt) + { ++ static const char compat[] = "starfive,visionfive-2-v1.2a\0starfive,jh7110"; + u32 phandle; + u8 i; + int offset; + int ret; + ++ fdt_setprop(fdt, fdt_path_offset(fdt, "/"), "compatible", compat, sizeof(compat)); + fdt_setprop_string(fdt, fdt_path_offset(fdt, "/"), "model", + "StarFive VisionFive 2 v1.2A"); + +@@ -106,11 +108,13 @@ void spl_fdt_fixup_version_a(void *fdt) + + void spl_fdt_fixup_version_b(void *fdt) + { ++ static const char compat[] = "starfive,visionfive-2-v1.3b\0starfive,jh7110"; + u32 phandle; + u8 i; + int offset; + int ret; + ++ fdt_setprop(fdt, fdt_path_offset(fdt, "/"), "compatible", compat, sizeof(compat)); + fdt_setprop_string(fdt, fdt_path_offset(fdt, "/"), "model", + "StarFive VisionFive 2 v1.3B"); + +-- +2.42.0 + diff --git a/debian/patches/riscv64/configs-visionfive2-Disable-ENV_IS_NOWHERE.patch b/debian/patches/riscv64/configs-visionfive2-Disable-ENV_IS_NOWHERE.patch new file mode 100644 index 0000000000000000000000000000000000000000..db514308f1fe36e8e5cda2023422a1e1b977be50 --- /dev/null +++ b/debian/patches/riscv64/configs-visionfive2-Disable-ENV_IS_NOWHERE.patch @@ -0,0 +1,34 @@ +From 386db9a26b454d33b688fbe811289daaa22466af Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno <aurelien@aurel32.net> +Date: Sat, 27 Jan 2024 14:48:45 +0100 +Subject: [PATCH] configs: visionfive2: Disable ENV_IS_NOWHERE + +The VisionFive 2 board supports saving the u-boot environment settings +are saved to on-board SPI flash. However the defconfig enables both +ENV_IS_NOWHERE and ENV_IS_IN_SPI_FLASH, preventing the "saveenv" command +to work. Fix that by disabling ENV_IS_NOWHERE. + +Fixes: 7d79bed00c9e ("configs: starfive: Enable environment in SPI flash support") + +Reported-by: E Shattow <lucent@gmail.com> +Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> +Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com> +--- + configs/starfive_visionfive2_defconfig | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig +index 1b7d57bac7..c68f3c2def 100644 +--- a/configs/starfive_visionfive2_defconfig ++++ b/configs/starfive_visionfive2_defconfig +@@ -77,7 +77,6 @@ CONFIG_CMD_TFTPPUT=y + CONFIG_CMD_BOOTSTAGE=y + CONFIG_OF_BOARD=y + CONFIG_ENV_OVERWRITE=y +-CONFIG_ENV_IS_NOWHERE=y + CONFIG_ENV_IS_IN_SPI_FLASH=y + CONFIG_ENV_SECT_SIZE_AUTO=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y +-- +2.42.0 + diff --git a/debian/patches/riscv64/efi_loader-avoid-pointer-access-after-calling-efi_de.patch b/debian/patches/riscv64/efi_loader-avoid-pointer-access-after-calling-efi_de.patch new file mode 100644 index 0000000000000000000000000000000000000000..a2abd7a7fb92812c5f59074c843ac54e7f815a61 --- /dev/null +++ b/debian/patches/riscv64/efi_loader-avoid-pointer-access-after-calling-efi_de.patch @@ -0,0 +1,80 @@ +From f674a2f9a9f9c28fddde53f0a0b2f3e3c3b342ee Mon Sep 17 00:00:00 2001 +From: Masahisa Kojima <masahisa.kojima@linaro.org> +Date: Fri, 19 Jan 2024 09:45:44 +0900 +Subject: [PATCH 1/2] efi_loader: avoid pointer access after calling + efi_delete_handle + +efi_delete_handle() calls efi_purge_handle(), then it finally +frees the EFI handle. +Both diskobj and handle variables in efi_disk_remove() have +the same pointer, we can not access diskobj->dp after calling +efi_delete_handle(). + +This commit saves the struct efi_device_path pointer before +calling efi_delete_handle(). This commit also fixes the +missing free for volume member in struct efi_disk_obj. + +This commit also removes the container_of() calls, and +adds the TODO comment of missing efi_close_protocol() call +for the parent EFI_BLOCK_IO_PROTOCOL. + +Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org> +Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> +--- + lib/efi_loader/efi_disk.c | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c +index 013842f077..105f080125 100644 +--- a/lib/efi_loader/efi_disk.c ++++ b/lib/efi_loader/efi_disk.c +@@ -707,7 +707,9 @@ int efi_disk_remove(void *ctx, struct event *event) + struct udevice *dev = event->data.dm.dev; + efi_handle_t handle; + struct blk_desc *desc; ++ struct efi_device_path *dp = NULL; + struct efi_disk_obj *diskobj = NULL; ++ struct efi_simple_file_system_protocol *volume = NULL; + efi_status_t ret; + + if (dev_tag_get_ptr(dev, DM_TAG_EFI, (void **)&handle)) +@@ -718,24 +720,30 @@ int efi_disk_remove(void *ctx, struct event *event) + case UCLASS_BLK: + desc = dev_get_uclass_plat(dev); + if (desc && desc->uclass_id != UCLASS_EFI_LOADER) +- diskobj = container_of(handle, struct efi_disk_obj, +- header); ++ diskobj = (struct efi_disk_obj *)handle; + break; + case UCLASS_PARTITION: +- diskobj = container_of(handle, struct efi_disk_obj, header); ++ diskobj = (struct efi_disk_obj *)handle; ++ ++ /* TODO: closing the parent EFI_BLOCK_IO_PROTOCOL is missing. */ ++ + break; + default: + return 0; + } + ++ if (diskobj) { ++ dp = diskobj->dp; ++ volume = diskobj->volume; ++ } ++ + ret = efi_delete_handle(handle); + /* Do not delete DM device if there are still EFI drivers attached. */ + if (ret != EFI_SUCCESS) + return -1; + +- if (diskobj) +- efi_free_pool(diskobj->dp); +- ++ efi_free_pool(dp); ++ free(volume); + dev_tag_del(dev, DM_TAG_EFI); + + return 0; +-- +2.42.0 + diff --git a/debian/patches/riscv64/efi_loader-create-common-function-to-free-struct-efi.patch b/debian/patches/riscv64/efi_loader-create-common-function-to-free-struct-efi.patch new file mode 100644 index 0000000000000000000000000000000000000000..4904cde8c35abd978437fdc17908087ea63abd45 --- /dev/null +++ b/debian/patches/riscv64/efi_loader-create-common-function-to-free-struct-efi.patch @@ -0,0 +1,84 @@ +From 0351b659dd0283062d91ab0dd752887bedd53278 Mon Sep 17 00:00:00 2001 +From: Masahisa Kojima <masahisa.kojima@linaro.org> +Date: Fri, 19 Jan 2024 09:45:45 +0900 +Subject: [PATCH 2/2] efi_loader: create common function to free struct + efi_disk_obj + +Current error handling of creating raw disk/partition has +following issues. + - duplicate free for EFI handle, EFI handle is already freed + in efi_delete_handle() + - missing free for struct efi_device_path and + struct efi_simple_file_system_protocol in some error paths + +To address those issues, this commit creates the common function +to free the struct efi_disk_obj resources and calls it in case +of error. + +Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org> +Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> +--- + lib/efi_loader/efi_disk.c | 26 +++++++++++++++++++------- + 1 file changed, 19 insertions(+), 7 deletions(-) + +diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c +index 105f080125..e2edc69fcf 100644 +--- a/lib/efi_loader/efi_disk.c ++++ b/lib/efi_loader/efi_disk.c +@@ -371,6 +371,20 @@ static int efi_fs_exists(struct blk_desc *desc, int part) + return 1; + } + ++static void efi_disk_free_diskobj(struct efi_disk_obj *diskobj) ++{ ++ struct efi_device_path *dp = diskobj->dp; ++ struct efi_simple_file_system_protocol *volume = diskobj->volume; ++ ++ /* ++ * ignore error of efi_delete_handle() since this function ++ * is expected to be called in error path. ++ */ ++ efi_delete_handle(&diskobj->header); ++ efi_free_pool(dp); ++ free(volume); ++} ++ + /** + * efi_disk_add_dev() - create a handle for a partition or disk + * +@@ -528,9 +542,7 @@ static efi_status_t efi_disk_add_dev( + } + return EFI_SUCCESS; + error: +- efi_delete_handle(&diskobj->header); +- free(diskobj->volume); +- free(diskobj); ++ efi_disk_free_diskobj(diskobj); + return ret; + } + +@@ -569,8 +581,7 @@ static int efi_disk_create_raw(struct udevice *dev, efi_handle_t agent_handle) + return ret; + } + if (efi_link_dev(&disk->header, dev)) { +- efi_free_pool(disk->dp); +- efi_delete_handle(&disk->header); ++ efi_disk_free_diskobj(disk); + + return -EINVAL; + } +@@ -624,8 +635,9 @@ static int efi_disk_create_part(struct udevice *dev, efi_handle_t agent_handle) + return -1; + } + if (efi_link_dev(&disk->header, dev)) { +- efi_free_pool(disk->dp); +- efi_delete_handle(&disk->header); ++ efi_disk_free_diskobj(disk); ++ ++ /* TODO: closing the parent EFI_BLOCK_IO_PROTOCOL is missing. */ + + return -1; + } +-- +2.42.0 + diff --git a/debian/patches/riscv64/riscv-sifive-fu740-reduce-DDR-speed-from-1866MT-s-to-1600MT-s.patch b/debian/patches/riscv64/riscv-sifive-fu740-reduce-DDR-speed-from-1866MT-s-to-1600MT-s.patch new file mode 100644 index 0000000000000000000000000000000000000000..f6be4c4bfc5f2fc3deba10c2ab5b68b2d289c22a --- /dev/null +++ b/debian/patches/riscv64/riscv-sifive-fu740-reduce-DDR-speed-from-1866MT-s-to-1600MT-s.patch @@ -0,0 +1,46 @@ +From: thomas.perrot@bootlin.com +To: u-boot@lists.denx.de +Cc: Thomas Perrot <thomas.perrot@bootlin.com> +Subject: [PATCH] riscv: sifive: fu740: reduce DDR speed from 1866MT/s to + 1600MT/s +Date: Thu, 22 Feb 2024 15:52:03 +0100 +Message-ID: <20240222145203.2659671-1-thomas.perrot@bootlin.com> +Origin: https://patchwork.ozlabs.org/project/uboot/patch/20240222145203.2659671-1-thomas.perrot@bootlin.com/ + +From: Thomas Perrot <thomas.perrot@bootlin.com> + +It appears that there is some timing marginality either in the +board layout or the SoC that results in occasional data corruption +on some boards. +We observed this issue on some of the new HiFive Unmatched RevB +boards during volume production as well as some of the original +HiFive Unmatched boards from 2021 in our possession. This means +that there are other boards out there that might have the issue +too. + +We have done some limited testing with DDR4 at 1600MT/s and +faulty boards (failing at 1866MT/s) passed. +We plan further testing after we procure a temperature chamber. + +Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com> +--- + arch/riscv/dts/fu740-c000-u-boot.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/riscv/dts/fu740-c000-u-boot.dtsi b/arch/riscv/dts/fu740-c000-u-boot.dtsi +index 706224b384d2..956237c3218e 100644 +--- a/arch/riscv/dts/fu740-c000-u-boot.dtsi ++++ b/arch/riscv/dts/fu740-c000-u-boot.dtsi +@@ -77,7 +77,7 @@ + 0x0 0x100b2000 0x0 0x2000 + 0x0 0x100b8000 0x0 0x1000>; + clocks = <&prci FU740_PRCI_CLK_DDRPLL>; +- clock-frequency = <933333324>; ++ clock-frequency = <800000004>; + bootph-pre-ram; + }; + }; +-- +2.43.2 + + diff --git a/debian/patches/riscv64/serial-move-sbi_dbcn_available-to-.data-section.patch b/debian/patches/riscv64/serial-move-sbi_dbcn_available-to-.data-section.patch new file mode 100644 index 0000000000000000000000000000000000000000..a98f490b0eb0e47f14a592448134d0086851d806 --- /dev/null +++ b/debian/patches/riscv64/serial-move-sbi_dbcn_available-to-.data-section.patch @@ -0,0 +1,43 @@ +From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> +To: Tom Rini <trini@konsulko.com> +Cc: Rick Chen <rick@andestech.com>, Leo Yu-Chi Liang <ycliang@andestech.com>, + u-boot@lists.denx.de, + Heinrich Schuchardt <heinrich.schuchardt@canonical.com> +Subject: [PATCH 1/1] serial: move sbi_dbcn_available to .data section +Date: Mon, 26 Feb 2024 17:32:26 +0100 +Message-ID: <20240226163226.126288-1-heinrich.schuchardt@canonical.com> +Origin: https://patchwork.ozlabs.org/project/uboot/patch/20240226163226.126288-1-heinrich.schuchardt@canonical.com/ +Bug-Debian: https://bugs.debian.org/1060682 + +U-Boot SPL loads the device-tree directly behind main U-Boot overlapping +the .bss section. reserve_fdt() is called in board_init_f() to relocate the +device-tree to a safe location. + +Debug UARTs are enabled before board_init_f(). With sbi_dbcn_available in +the .bss section the device-tree is corrupted when _debug_uart_init() is +called in the SBI serial driver. Move the variable to the .data section. + +Link: https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/2054091 +Fixes: dfe08374943c ("risc-v: implement DBCN based debug console") +Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> +--- + drivers/serial/serial_sbi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c +index a51a96c1ef0..f3ecfccab43 100644 +--- a/drivers/serial/serial_sbi.c ++++ b/drivers/serial/serial_sbi.c +@@ -17,7 +17,7 @@ static inline void _debug_uart_putc(int c) + + #else + +-static int sbi_dbcn_available; ++static int sbi_dbcn_available __section(".data"); + + static inline void _debug_uart_init(void) + { +-- +2.43.0 + + diff --git a/debian/patches/series b/debian/patches/series index fd03069a2e2f860341c10fc4c9275642ced572e0..dce9c43215ede9fd42e404d962e18733f6a1aa05 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,5 @@ +allwinner/0001-arm-sunxi-Reduce-inrush-current-on-Olimex-A20-OLinuX.patch + arndale/board-spl-rule.diff test-imagetools-test-fixes @@ -11,3 +13,12 @@ rockchip/rockchip-inno-usb.patch qemu/efi-secure-boot.patch Makefile-Use-relative-paths-for-debugging-symbols.patch + +riscv64/efi_loader-avoid-pointer-access-after-calling-efi_de.patch +riscv64/efi_loader-create-common-function-to-free-struct-efi.patch +riscv64/board-starfive-handle-compatible-property-in-dynamic.patch +riscv64/configs-visionfive2-Disable-ENV_IS_NOWHERE.patch +riscv64/serial-move-sbi_dbcn_available-to-.data-section.patch +riscv64/riscv-sifive-fu740-reduce-DDR-speed-from-1866MT-s-to-1600MT-s.patch + +am62x/0008-arm-dts-k3-am625-Don-t-try-to-build-the-final-firmwa.patch diff --git a/debian/targets.mk b/debian/targets.mk index 12eb78b9b89d5c652875a77941a25f5b2f8deced..4a6cf1f0fdfe9205494ea2b8572dc3e16ece4fc5 100644 --- a/debian/targets.mk +++ b/debian/targets.mk @@ -6,26 +6,26 @@ ifeq (${DEB_HOST_ARCH},arm64) # u-boot-amlogic # Neil Armstrong <narmstrong@baylibre.com> - u-boot-amlogic_platforms += khadas-vim + u-boot-amlogic-binaries_platforms += khadas-vim khadas-vim_targets := u-boot.bin uboot.elf # Neil Armstrong <narmstrong@baylibre.com> - u-boot-amlogic_platforms += khadas-vim2 + u-boot-amlogic-binaries_platforms += khadas-vim2 khadas-vim2_targets := u-boot.bin uboot.elf # Frederic Danis <frederic.danis@collabora.com> - u-boot-amlogic_platforms += libretech-cc + u-boot-amlogic-binaries_platforms += libretech-cc libretech-cc_targets := u-boot.bin uboot.elf # Neil Armstrong <narmstrong@baylibre.com> - u-boot-amlogic_platforms += nanopi-k2 + u-boot-amlogic-binaries_platforms += nanopi-k2 nanopi-k2_targets := u-boot.bin uboot.elf # Vagrant Cascadian <vagrant@debian.org> - u-boot-amlogic_platforms += odroid-c2 + u-boot-amlogic-binaries_platforms += odroid-c2 odroid-c2_targets := u-boot.bin uboot.elf - u-boot-amlogic_platforms += odroid-n2 + u-boot-amlogic-binaries_platforms += odroid-n2 odroid-n2_targets := u-boot.bin uboot.elf # u-boot-asahi @@ -140,6 +140,18 @@ ifeq (${DEB_HOST_ARCH},arm64) u-boot-rpi_platforms += rpi_arm64 rpi_arm64_targets := u-boot.bin uboot.elf +# u-boot-sitara + + # Martyn Welch <martyn.welch@collabora.com> + u-boot-sitara-binaries_platforms += am62x_evm_r5 + # Cross-compile initial SPL which boots on 32-bit Cortex-R5 ARM coprocessor + am62x_evm_r5_CROSS_COMPILE := arm-linux-gnueabihf- + am62x_evm_r5_targets := spl/u-boot-spl.bin + + # Martyn Welch <martyn.welch@collabora.com> + u-boot-sitara-binaries_platforms += am62x_evm_a53 + am62x_evm_a53_targets := spl/u-boot-spl-nodtb.bin arch/arm/dts/k3-am625-sk.dtb u-boot.img + # u-boot-sunxi u-boot-sunxi_assigns = \ @@ -284,11 +296,11 @@ else ifeq (${DEB_HOST_ARCH},armhf) arndale_targets := spl/arndale-spl.bin u-boot.bin uboot.elf # Joost van Zwieten <joostvanzwieten@gmail.com>, Odroid-U3 - u-boot-exynos_platforms += odroid + u-boot-exynos-binaries_platforms += odroid odroid_targets := u-boot.bin uboot.elf # Vagrant Cascadian <vagrant@debian.org>, Odroid-XU4 - u-boot-exynos_platforms += odroid-xu3 + u-boot-exynos-binaries_platforms += odroid-xu3 odroid-xu3_targets := u-boot.bin uboot.elf # u-boot-imx @@ -527,6 +539,10 @@ else ifeq (${DEB_HOST_ARCH},armhf) u-boot-sunxi_platforms += nanopi_neo_air nanopi_neo_air_targets := u-boot-sunxi-with-spl.bin uboot.elf + # Andrey Loukhnov <loukhnov@lotes-tm.ru> + u-boot-sunxi_platforms += orangepi_pc_plus + orangepi_pc_plus_targets := u-boot-sunxi-with-spl.bin uboot.elf + # Vagrant Cascadian <vagrant@debian.org>, Orange PI Plus2 u-boot-sunxi_platforms += orangepi_plus orangepi_plus_targets := u-boot-sunxi-with-spl.bin uboot.elf diff --git a/debian/u-boot-amlogic.docs b/debian/u-boot-amlogic-binaries.docs similarity index 100% rename from debian/u-boot-amlogic.docs rename to debian/u-boot-amlogic-binaries.docs diff --git a/debian/u-boot-amlogic-binaries.lintian-overrides b/debian/u-boot-amlogic-binaries.lintian-overrides new file mode 100644 index 0000000000000000000000000000000000000000..2f351c4e2d0336c16748ede8a190db569852fa89 --- /dev/null +++ b/debian/u-boot-amlogic-binaries.lintian-overrides @@ -0,0 +1,15 @@ + +# There are no file conflicts across architectures for u-boot, as each +# target is only installed on a single architecture. In theory, some +# targets could be built on multiple architectures, but could instead install +# the package for the architecture needed. +u-boot-amlogic-binaries binary: arch-dependent-file-not-in-arch-specific-directory *usr/lib/u-boot/*/uboot.elf* + +# These bootloaders need to be statically linked. +u-boot-amlogic-binaries binary: statically-linked-binary *usr/lib/u-boot/*/uboot.elf* + +# These are bootloader binaries, and have no external dependency information +u-boot-amlogic-binaries binary: shared-library-lacks-prerequisites *usr/lib/u-boot/*/uboot.elf* + +u-boot-amlogic-binaries: description-synopsis-starts-with-article + diff --git a/debian/u-boot-exynos.docs b/debian/u-boot-exynos-binaries.docs similarity index 100% rename from debian/u-boot-exynos.docs rename to debian/u-boot-exynos-binaries.docs diff --git a/debian/u-boot-amlogic.lintian-overrides b/debian/u-boot-exynos-binaries.lintian-overrides similarity index 52% rename from debian/u-boot-amlogic.lintian-overrides rename to debian/u-boot-exynos-binaries.lintian-overrides index 33e9d55fb23544c8df25002210e412c764ea284b..f4126e727a90578417ae93c97e8b339ca2058bd1 100644 --- a/debian/u-boot-amlogic.lintian-overrides +++ b/debian/u-boot-exynos-binaries.lintian-overrides @@ -3,13 +3,13 @@ # target is only installed on a single architecture. In theory, some # targets could be built on multiple architectures, but could instead install # the package for the architecture needed. -u-boot-amlogic binary: arch-dependent-file-not-in-arch-specific-directory *usr/lib/u-boot/*/uboot.elf* +u-boot-exynos-binaries binary: arch-dependent-file-not-in-arch-specific-directory *usr/lib/u-boot/*/uboot.elf* # These bootloaders need to be statically linked. -u-boot-amlogic binary: statically-linked-binary *usr/lib/u-boot/*/uboot.elf* +u-boot-exynos-binaries binary: statically-linked-binary *usr/lib/u-boot/*/uboot.elf* # These are bootloader binaries, and have no external dependency information -u-boot-amlogic binary: shared-library-lacks-prerequisites *usr/lib/u-boot/*/uboot.elf* +u-boot-exynos-binaries binary: shared-library-lacks-prerequisites *usr/lib/u-boot/*/uboot.elf* -u-boot-amlogic: description-synopsis-starts-with-article +u-boot-exynos-binaries: description-synopsis-starts-with-article