Accepting request 1120462 from hardware:boot

OBS-URL: https://build.opensuse.org/request/show/1120462
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/u-boot?expand=0&rev=177
This commit is contained in:
Ana Guerrero 2023-10-27 20:27:12 +00:00 committed by Git OBS Bridge
commit bf89ad24b6
23 changed files with 418 additions and 32 deletions

View File

@ -12,7 +12,7 @@ Subject: [PATCH] XXX openSUSE XXX: Prepend partition 3 (and 4 for chromebook
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index 2a136b96a6..f2d2c76161 100644
index 2a136b96a6d..f2d2c761616 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -166,7 +166,7 @@

View File

@ -9,7 +9,7 @@ This reverts commit 7fa75d0ac5502db813d109c1df7bd0da34688685.
1 file changed, 2 deletions(-)
diff --git a/arch/arm/mach-omap2/boot-common.c b/arch/arm/mach-omap2/boot-common.c
index a2dd5f6df0..d2c8e7f5ef 100644
index a2dd5f6df01..d2c8e7f5ef3 100644
--- a/arch/arm/mach-omap2/boot-common.c
+++ b/arch/arm/mach-omap2/boot-common.c
@@ -126,8 +126,6 @@ void save_omap_boot_params(void)

View File

@ -28,7 +28,7 @@ Signed-off-by: Guillaume Gardet <guillaume.gardet@free.fr>
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig
index ab6e6bcf29..a141bc4438 100644
index ab6e6bcf29e..a141bc44380 100644
--- a/configs/rpi_0_w_defconfig
+++ b/configs/rpi_0_w_defconfig
@@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y
@ -41,7 +41,7 @@ index ab6e6bcf29..a141bc4438 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig
index 0dea092f24..46bdbfb532 100644
index 0dea092f240..46bdbfb5328 100644
--- a/configs/rpi_2_defconfig
+++ b/configs/rpi_2_defconfig
@@ -25,7 +25,7 @@ CONFIG_CMD_GPIO=y
@ -54,7 +54,7 @@ index 0dea092f24..46bdbfb532 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
index 0ccc93d572..4c912b28f6 100644
index 0ccc93d572b..4c912b28f64 100644
--- a/configs/rpi_3_32b_defconfig
+++ b/configs/rpi_3_32b_defconfig
@@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y
@ -67,7 +67,7 @@ index 0ccc93d572..4c912b28f6 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig
index 84b61f862a..210ec94974 100644
index 84b61f862a5..210ec949748 100644
--- a/configs/rpi_3_defconfig
+++ b/configs/rpi_3_defconfig
@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y
@ -80,7 +80,7 @@ index 84b61f862a..210ec94974 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
index d049d0fb5c..adf46bec3d 100644
index d049d0fb5c6..adf46bec3d0 100644
--- a/configs/rpi_defconfig
+++ b/configs/rpi_defconfig
@@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y

View File

@ -9,7 +9,7 @@ Subject: [PATCH] Temp workaround for Chromebook snow to avoid the 'unable to
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
index 5085a3b491..6c098475be 100644
index 5085a3b491d..6c098475bea 100644
--- a/drivers/mmc/dw_mmc.c
+++ b/drivers/mmc/dw_mmc.c
@@ -609,7 +609,8 @@ void dwmci_setup_cfg(struct mmc_config *cfg, struct dwmci_host *host,

View File

@ -34,7 +34,7 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
1 file changed, 15 insertions(+)
diff --git a/tools/zynqmpbif.c b/tools/zynqmpbif.c
index 82ce0ac1a5..b4302fa67e 100644
index 82ce0ac1a52..b4302fa67ee 100644
--- a/tools/zynqmpbif.c
+++ b/tools/zynqmpbif.c
@@ -42,6 +42,7 @@ enum bif_flag {

View File

@ -13,7 +13,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
1 file changed, 1 insertion(+)
diff --git a/boot/Kconfig b/boot/Kconfig
index 86c2787dc5..fc01c8932f 100644
index 86c2787dc53..fc01c8932f1 100644
--- a/boot/Kconfig
+++ b/boot/Kconfig
@@ -885,6 +885,7 @@ config DISTRO_DEFAULTS

View File

@ -18,7 +18,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
5 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index 138a99b37f..82c85f4e77 100644
index 138a99b37fe..82c85f4e77c 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -88,7 +88,6 @@ CONFIG_CMD_REGULATOR=y
@ -30,7 +30,7 @@ index 138a99b37f..82c85f4e77 100644
CONFIG_CMD_CRAMFS=y
CONFIG_CMD_EXT4_WRITE=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 62bc182ca1..841e0c07ff 100644
index 62bc182ca16..841e0c07ff0 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -122,7 +122,6 @@ CONFIG_CMD_REGULATOR=y
@ -42,7 +42,7 @@ index 62bc182ca1..841e0c07ff 100644
CONFIG_CMD_CRAMFS=y
CONFIG_CMD_EROFS=y
diff --git a/configs/socfpga_arria10_defconfig b/configs/socfpga_arria10_defconfig
index 82b16418a6..73e89da98e 100644
index 82b16418a6f..73e89da98ef 100644
--- a/configs/socfpga_arria10_defconfig
+++ b/configs/socfpga_arria10_defconfig
@@ -69,3 +69,5 @@ CONFIG_DESIGNWARE_APB_TIMER=y
@ -52,7 +52,7 @@ index 82b16418a6..73e89da98e 100644
+# CONFIG_CMD_BTRFS is not set
+# CONFIG_FS_BTRFS is not set
diff --git a/configs/turris_mox_defconfig b/configs/turris_mox_defconfig
index 234f1e721a..e5197a8fb5 100644
index 234f1e721aa..e5197a8fb5f 100644
--- a/configs/turris_mox_defconfig
+++ b/configs/turris_mox_defconfig
@@ -50,7 +50,6 @@ CONFIG_CMD_CACHE=y
@ -64,7 +64,7 @@ index 234f1e721a..e5197a8fb5 100644
CONFIG_MAC_PARTITION=y
CONFIG_ENV_OVERWRITE=y
diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
index 22aaee2638..6ca655f49c 100644
index 22aaee26384..6ca655f49ce 100644
--- a/configs/turris_omnia_defconfig
+++ b/configs/turris_omnia_defconfig
@@ -73,7 +73,6 @@ CONFIG_CMD_CACHE=y

View File

@ -15,7 +15,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
create mode 100644 arch/arm/dts/sunxi-spi-u-boot.dtsi
diff --git a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
index 3706216ffb..c3660f72d9 100644
index 3706216ffb4..c3660f72d9e 100644
--- a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
+++ b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
@@ -46,6 +46,7 @@
@ -28,7 +28,7 @@ index 3706216ffb..c3660f72d9 100644
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/dts/sunxi-spi-u-boot.dtsi b/arch/arm/dts/sunxi-spi-u-boot.dtsi
new file mode 100644
index 0000000000..df89d02ff2
index 00000000000..df89d02ff2f
--- /dev/null
+++ b/arch/arm/dts/sunxi-spi-u-boot.dtsi
@@ -0,0 +1,8 @@

View File

@ -13,7 +13,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
index c3660f72d9..80c1e66b38 100644
index c3660f72d9e..80c1e66b38c 100644
--- a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
+++ b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts
@@ -164,8 +164,8 @@

View File

@ -9,7 +9,7 @@ Subject: [PATCH] Disable CONFIG_CMD_BTRFS in xilinx_zynqmp_virt_defconfig to
1 file changed, 1 insertion(+)
diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig
index acab38fefe..59889a1c0b 100644
index acab38fefee..59889a1c0b7 100644
--- a/configs/xilinx_zynqmp_virt_defconfig
+++ b/configs/xilinx_zynqmp_virt_defconfig
@@ -96,6 +96,7 @@ CONFIG_CMD_REGULATOR=y

View File

@ -19,7 +19,7 @@ Series-cc: u-boot@lists.denx.de
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/smbios.c b/lib/smbios.c
index d7f4999e8b..2cdfef7a2c 100644
index d7f4999e8b2..2cdfef7a2c9 100644
--- a/lib/smbios.c
+++ b/lib/smbios.c
@@ -172,7 +172,7 @@ static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop)

View File

@ -9,7 +9,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boot/Kconfig b/boot/Kconfig
index fc01c8932f..f8c1e170e9 100644
index fc01c8932f1..f8c1e170e9a 100644
--- a/boot/Kconfig
+++ b/boot/Kconfig
@@ -885,7 +885,7 @@ config DISTRO_DEFAULTS

View File

@ -25,7 +25,7 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index f0d76113b0..314af7e202 100644
index f0d76113b00..314af7e2022 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -19,6 +19,7 @@

View File

@ -10,7 +10,7 @@ Subject: [PATCH] Enable EFI and ISO partitions support on socfpga_de0_nano_soc
1 file changed, 2 deletions(-)
diff --git a/configs/socfpga_de0_nano_soc_defconfig b/configs/socfpga_de0_nano_soc_defconfig
index 364ae912ca..f41e8fa0b8 100644
index 364ae912ca5..f41e8fa0b89 100644
--- a/configs/socfpga_de0_nano_soc_defconfig
+++ b/configs/socfpga_de0_nano_soc_defconfig
@@ -45,8 +45,6 @@ CONFIG_CMD_EXT4_WRITE=y

View File

@ -12,7 +12,7 @@ Signed-off-by: Michal Suchanek <msuchanek@suse.de>
2 files changed, 21 insertions(+)
diff --git a/arch/arm/include/asm/arch-rockchip/boot_mode.h b/arch/arm/include/asm/arch-rockchip/boot_mode.h
index 6b2a610cf4..bcdf4420cf 100644
index 6b2a610cf4c..bcdf4420cfc 100644
--- a/arch/arm/include/asm/arch-rockchip/boot_mode.h
+++ b/arch/arm/include/asm/arch-rockchip/boot_mode.h
@@ -19,6 +19,7 @@
@ -24,7 +24,7 @@ index 6b2a610cf4..bcdf4420cf 100644
#endif
diff --git a/cmd/boot.c b/cmd/boot.c
index 14839c1ced..d7c7db449c 100644
index 14839c1cedc..d7c7db449c5 100644
--- a/cmd/boot.c
+++ b/cmd/boot.c
@@ -44,16 +44,36 @@ static int do_go(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])

View File

@ -16,7 +16,7 @@ Signed-off-by: Michal Suchanek <msuchanek@suse.de>
4 files changed, 67 insertions(+), 1 deletion(-)
diff --git a/arch/arm/include/asm/arch-sunxi/cpu.h b/arch/arm/include/asm/arch-sunxi/cpu.h
index b08f202374..36e7697b1c 100644
index b08f2023748..36e7697b1c4 100644
--- a/arch/arm/include/asm/arch-sunxi/cpu.h
+++ b/arch/arm/include/asm/arch-sunxi/cpu.h
@@ -20,4 +20,15 @@
@ -36,7 +36,7 @@ index b08f202374..36e7697b1c 100644
+
#endif /* _SUNXI_CPU_H */
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index e20c3a3ee9..43a4575049 100644
index e20c3a3ee92..43a4575049a 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -1073,6 +1073,22 @@ source "board/sunxi/Kconfig"
@ -63,7 +63,7 @@ index e20c3a3ee9..43a4575049 100644
bool "Enable DIPs detection for CHIP board"
select SUPPORT_EXTENSION_SCAN
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 78597ad932..71844952d8 100644
index 78597ad932c..71844952d87 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -300,7 +300,30 @@ uint32_t sunxi_get_boot_device(void)
@ -106,7 +106,7 @@ index 78597ad932..71844952d8 100644
#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I_H3
diff --git a/cmd/boot.c b/cmd/boot.c
index d7c7db449c..111c9d9409 100644
index d7c7db449c5..111c9d94090 100644
--- a/cmd/boot.c
+++ b/cmd/boot.c
@@ -47,6 +47,7 @@ static int do_go(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])

View File

@ -34,7 +34,7 @@ Reported-by: Vincent Stehlé <vincent.stehle@arm.com>
3 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index fa52bc3a9c..5a60cf223c 100644
index fa52bc3a9c4..5a60cf223c7 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -460,10 +460,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp,
@ -51,7 +51,7 @@ index fa52bc3a9c..5a60cf223c 100644
}
log_debug("- no device in %s\n", media->name);
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 81b5829d5b..74abf3e17d 100644
index 81b5829d5b3..74abf3e17d7 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -260,8 +260,25 @@ static int iter_incr(struct bootflow_iter *iter)
@ -83,7 +83,7 @@ index 81b5829d5b..74abf3e17d 100644
ret = bootdev_next_prio(iter, &dev);
method_flags = 0;
diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
index 6b29213416..c5f14a7a13 100644
index 6b29213416d..c5f14a7a132 100644
--- a/test/boot/bootdev.c
+++ b/test/boot/bootdev.c
@@ -221,6 +221,16 @@ static int bootdev_test_order(struct unit_test_state *uts)

View File

@ -0,0 +1,90 @@
From 922a2954f8bd2f980bf5e6f2be8c334129f27f85 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Mon, 23 Oct 2023 00:02:10 -0700
Subject: [PATCH] Revert "bootstd: Scan all bootdevs in a boot_targets entry"
This commit was intended to allow all bootdevs in each boot_targets
entry to be scanned. However it causes bad ordering with bootdevs, e.g.
scanning Ethernet bootdevs when it should be keeping to mmc.
Revert it so we can try another approach.
This reverts commit e824d0d0c219bc6da767f13f90c5b00eefe929f0.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
boot/bootdev-uclass.c | 3 +--
boot/bootflow.c | 21 ++-------------------
test/boot/bootdev.c | 10 ----------
3 files changed, 3 insertions(+), 31 deletions(-)
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 5a60cf223c7..fa52bc3a9c4 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -460,11 +460,10 @@ int bootdev_find_by_label(const char *label, struct udevice **devp,
* if no sequence number was provided, we must scan all
* bootdevs for this media uclass
*/
- if (seq == -1)
+ if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1)
method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS;
if (method_flagsp)
*method_flagsp = method_flags;
- log_debug("method flags %x\n", method_flags);
return 0;
}
log_debug("- no device in %s\n", media->name);
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 74abf3e17d7..81b5829d5b3 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -260,25 +260,8 @@ static int iter_incr(struct bootflow_iter *iter)
} else {
log_debug("labels %p\n", iter->labels);
if (iter->labels) {
- /*
- * when the label is "mmc" we want to scan all
- * mmc bootdevs, not just the first. See
- * bootdev_find_by_label() where this flag is
- * set up
- */
- if (iter->method_flags & BOOTFLOW_METHF_SINGLE_UCLASS) {
- uclass_next_device(&dev);
- log_debug("looking for next device %s: %s\n",
- iter->dev->name,
- dev ? dev->name : "<none>");
- } else {
- dev = NULL;
- }
- if (!dev) {
- log_debug("looking at next label\n");
- ret = bootdev_next_label(iter, &dev,
- &method_flags);
- }
+ ret = bootdev_next_label(iter, &dev,
+ &method_flags);
} else {
ret = bootdev_next_prio(iter, &dev);
method_flags = 0;
diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
index c5f14a7a132..6b29213416d 100644
--- a/test/boot/bootdev.c
+++ b/test/boot/bootdev.c
@@ -221,16 +221,6 @@ static int bootdev_test_order(struct unit_test_state *uts)
ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name);
bootflow_iter_uninit(&iter);
- /* Make sure it scans a bootdevs in each target */
- ut_assertok(env_set("boot_targets", "mmc spi"));
- ut_asserteq(0, bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
- ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
- ut_asserteq(3, iter.num_devs);
- ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name);
- ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name);
- ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name);
- bootflow_iter_uninit(&iter);
-
return 0;
}
BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT);

View File

@ -0,0 +1,59 @@
From 7d7d42a872edc05d43089d0e4e8540fd4948d515 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Mon, 23 Oct 2023 00:02:11 -0700
Subject: [PATCH] bootstd: Expand boot-ordering test to include USB
Scan the USB bus as well, so we can check that different uclasses work
correctly in boot_targets
update the function comment with more detail.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
test/boot/bootdev.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
index 6b29213416d..7228f545e9e 100644
--- a/test/boot/bootdev.c
+++ b/test/boot/bootdev.c
@@ -190,12 +190,21 @@ static int bootdev_test_any(struct unit_test_state *uts)
BOOTSTD_TEST(bootdev_test_any, UT_TESTF_DM | UT_TESTF_SCAN_FDT |
UT_TESTF_ETH_BOOTDEV);
-/* Check bootdev ordering with the bootdev-order property */
+/*
+ * Check bootdev ordering with the bootdev-order property and boot_targets
+ * environment variable
+ */
static int bootdev_test_order(struct unit_test_state *uts)
{
struct bootflow_iter iter;
struct bootflow bflow;
+ test_set_skip_delays(true);
+
+ /* Start up USB which gives us three additional bootdevs */
+ usb_started = false;
+ ut_assertok(run_command("usb start", 0));
+
/*
* First try the order set by the bootdev-order property
* Like all sandbox unit tests this relies on the devicetree setting up
@@ -213,12 +222,14 @@ static int bootdev_test_order(struct unit_test_state *uts)
bootflow_iter_uninit(&iter);
/* Use the environment variable to override it */
- ut_assertok(env_set("boot_targets", "mmc1 mmc2"));
+ ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb"));
ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
- ut_asserteq(2, iter.num_devs);
+ ut_asserteq(3, iter.num_devs);
ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name);
ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name);
+ ut_asserteq_str("usb_mass_storage.lun0.bootdev",
+ iter.dev_used[2]->name);
bootflow_iter_uninit(&iter);
return 0;

View File

@ -0,0 +1,81 @@
From c46f69b087a37ac68e43042ff84e8962eaeba19d Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Mon, 23 Oct 2023 00:02:12 -0700
Subject: [PATCH] bootstd: Correct logic for single uclass
The current logic for "bootflow mmc" is flawed since it checks the
uclass of the bootdev instead of its parent, the media device. Correct
this and add a test that covers this scenario.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
boot/bootflow.c | 24 ++++++++++++++++++++++--
test/boot/bootdev.c | 13 +++++++++++++
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 81b5829d5b3..7a9033b3b39 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -155,6 +155,27 @@ static void bootflow_iter_set_dev(struct bootflow_iter *iter,
}
}
+/**
+ * scan_next_in_uclass() - Scan for the next bootdev in the same media uclass
+ *
+ * Move through the following bootdevs until we find another in this media
+ * uclass, or run out
+ *
+ * @devp: On entry, the device to check, on exit the new device, or NULL if
+ * there is none
+ */
+static void scan_next_in_uclass(struct udevice **devp)
+{
+ struct udevice *dev = *devp;
+ enum uclass_id cur_id = device_get_uclass_id(dev->parent);
+
+ do {
+ uclass_find_next_device(&dev);
+ } while (dev && cur_id != device_get_uclass_id(dev->parent));
+
+ *devp = dev;
+}
+
/**
* iter_incr() - Move to the next item (method, part, bootdev)
*
@@ -230,8 +251,7 @@ static int iter_incr(struct bootflow_iter *iter)
&method_flags);
} else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) &&
(iter->flags & BOOTFLOWIF_SINGLE_UCLASS)) {
- /* Move to the next bootdev in this uclass */
- uclass_find_next_device(&dev);
+ scan_next_in_uclass(&dev);
if (!dev) {
log_debug("finished uclass %s\n",
dev_get_uclass_name(dev));
diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
index 7228f545e9e..63786174805 100644
--- a/test/boot/bootdev.c
+++ b/test/boot/bootdev.c
@@ -232,6 +232,19 @@ static int bootdev_test_order(struct unit_test_state *uts)
iter.dev_used[2]->name);
bootflow_iter_uninit(&iter);
+ /* Try a single uclass */
+ ut_assertok(env_set("boot_targets", NULL));
+ ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow));
+ ut_asserteq(2, iter.num_devs);
+
+ /* Now scan pass mmc1 and make sure that only mmc0 shows up */
+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
+ ut_asserteq(3, iter.num_devs);
+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name);
+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name);
+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name);
+ bootflow_iter_uninit(&iter);
+
return 0;
}
BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT);

View File

@ -0,0 +1,141 @@
From e2de6a2b955ea225631bfd84a3401386a02585c1 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Mon, 23 Oct 2023 00:02:13 -0700
Subject: [PATCH] bootstd: Scan all bootdevs in a boot_targets entry (take 2)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When the boot_targets environment variable is used with the distro-boot
scripts, each device is included individually. For example, if there
are three mmc devices, then we will have something like:
boot_targets="mmc0 mmc1 mmc2"
In contrast, standard boot supports specifying just the uclass, i.e.:
boot_targets="mmc"
The intention is that this should scan all MMC devices, but in fact it
currently only scans the first.
Update the logic to handle this case, without required BOOTSTD_FULL to
be enabled.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Date Huang <tjjh89017@hotmail.com>
Reported-by: Vincent Stehlé <vincent.stehle@arm.com>
Reported-by: Ivan Ivanov <ivan.ivanov@suse.com>
---
boot/bootdev-uclass.c | 3 ++-
boot/bootflow.c | 22 ++++++++++++++++++++--
test/boot/bootdev.c | 32 ++++++++++++++++++++++++++++++--
3 files changed, 52 insertions(+), 5 deletions(-)
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index fa52bc3a9c4..5a60cf223c7 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -460,10 +460,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp,
* if no sequence number was provided, we must scan all
* bootdevs for this media uclass
*/
- if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1)
+ if (seq == -1)
method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS;
if (method_flagsp)
*method_flagsp = method_flags;
+ log_debug("method flags %x\n", method_flags);
return 0;
}
log_debug("- no device in %s\n", media->name);
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 7a9033b3b39..0f09e638f28 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -280,8 +280,26 @@ static int iter_incr(struct bootflow_iter *iter)
} else {
log_debug("labels %p\n", iter->labels);
if (iter->labels) {
- ret = bootdev_next_label(iter, &dev,
- &method_flags);
+ /*
+ * when the label is "mmc" we want to scan all
+ * mmc bootdevs, not just the first. See
+ * bootdev_find_by_label() where this flag is
+ * set up
+ */
+ if (iter->method_flags &
+ BOOTFLOW_METHF_SINGLE_UCLASS) {
+ scan_next_in_uclass(&dev);
+ log_debug("looking for next device %s: %s\n",
+ iter->dev->name,
+ dev ? dev->name : "<none>");
+ } else {
+ dev = NULL;
+ }
+ if (!dev) {
+ log_debug("looking at next label\n");
+ ret = bootdev_next_label(iter, &dev,
+ &method_flags);
+ }
} else {
ret = bootdev_next_prio(iter, &dev);
method_flags = 0;
diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
index 63786174805..0702fccdae6 100644
--- a/test/boot/bootdev.c
+++ b/test/boot/bootdev.c
@@ -225,7 +225,7 @@ static int bootdev_test_order(struct unit_test_state *uts)
ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb"));
ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
- ut_asserteq(3, iter.num_devs);
+ ut_asserteq(5, iter.num_devs);
ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name);
ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name);
ut_asserteq_str("usb_mass_storage.lun0.bootdev",
@@ -237,7 +237,20 @@ static int bootdev_test_order(struct unit_test_state *uts)
ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow));
ut_asserteq(2, iter.num_devs);
- /* Now scan pass mmc1 and make sure that only mmc0 shows up */
+ /* Now scan past mmc1 and make sure that only mmc0 shows up */
+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
+ ut_asserteq(3, iter.num_devs);
+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name);
+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name);
+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name);
+ bootflow_iter_uninit(&iter);
+
+ /* Try a single uclass with boot_targets */
+ ut_assertok(env_set("boot_targets", "mmc"));
+ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
+ ut_asserteq(2, iter.num_devs);
+
+ /* Now scan past mmc1 and make sure that only mmc0 shows up */
ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
ut_asserteq(3, iter.num_devs);
ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name);
@@ -245,6 +258,21 @@ static int bootdev_test_order(struct unit_test_state *uts)
ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name);
bootflow_iter_uninit(&iter);
+ /* Try a single uclass with boot_targets */
+ ut_assertok(env_set("boot_targets", "mmc usb"));
+ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
+ ut_asserteq(2, iter.num_devs);
+
+ /* Now scan past mmc1 and make sure that the 3 USB devices show up */
+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
+ ut_asserteq(6, iter.num_devs);
+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name);
+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name);
+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name);
+ ut_asserteq_str("usb_mass_storage.lun0.bootdev",
+ iter.dev_used[3]->name);
+ bootflow_iter_uninit(&iter);
+
return 0;
}
BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT);

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Tue Oct 24 13:41:26 UTC 2023 - Matthias Brugger <mbrugger@suse.com>
Fix boo#1216036. Tested on RPi4. Boot from USB and uSD fine.
For details see: https://lore.kernel.org/u-boot/20231023070216.394709-1-sjg@chromium.org/#t
* Patches added:
0018-Revert-bootstd-Scan-all-bootdevs-in.patch
0019-bootstd-Expand-boot-ordering-test-t.patch
0020-bootstd-Correct-logic-for-single-uc.patch
0021-bootstd-Scan-all-bootdevs-in-a-boot.patch
-------------------------------------------------------------------
Fri Oct 13 08:21:12 UTC 2023 - Guillaume Gardet <guillaume.gardet@arm.com>

View File

@ -240,6 +240,10 @@ Patch0014: 0014-Enable-EFI-and-ISO-partitions-suppo.patch
Patch0015: 0015-cmd-boot-add-brom-cmd-to-reboot-to-.patch
Patch0016: 0016-cmd-boot-add-brom-cmd-to-reboot-to-.patch
Patch0017: 0017-bootstd-Scan-all-bootdevs-in-a-boot.patch
Patch0018: 0018-Revert-bootstd-Scan-all-bootdevs-in.patch
Patch0019: 0019-bootstd-Expand-boot-ordering-test-t.patch
Patch0020: 0020-bootstd-Correct-logic-for-single-uc.patch
Patch0021: 0021-bootstd-Scan-all-bootdevs-in-a-boot.patch
# Patches: end
BuildRequires: bc
BuildRequires: bison