Message ID | 20250718090123.420399-1-mikko.rapeli@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v3] u-boot: upgrade 2025.04 -> 2025.07 | expand |
On Fri, 2025-07-18 at 12:01 +0300, Mikko Rapeli via lists.openembedded.org wrote: > From: Fabio Estevam <festevam@gmail.com> > > Upgrade to U-Boot 2025.07. Added patches for build race conditions. > Removed qemu KVM USB workaround since issue is fixed upstream. > > Signed-off-by: Fabio Estevam <festevam@gmail.com> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > --- > .../u-boot/files/disable_CONFIG_USB.cfg | 1 - > ...pts-Makefile.lib-fix-_efi.so-depende.patch | 136 ++++++++++++++++++ > ...kefile-change-apps-from-always-to-ta.patch | 57 ++++++++ > meta/recipes-bsp/u-boot/u-boot-common.inc | 8 +- > ...ols_2025.04.bb => u-boot-tools_2025.07.bb} | 0 > .../{u-boot_2025.04.bb => u-boot_2025.07.bb} | 4 +- > 6 files changed, 201 insertions(+), 5 deletions(-) > delete mode 100644 meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > create mode 100644 meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch > create mode 100644 meta/recipes-bsp/u-boot/files/v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch > rename meta/recipes-bsp/u-boot/{u-boot-tools_2025.04.bb => u-boot-tools_2025.07.bb} (100%) > rename meta/recipes-bsp/u-boot/{u-boot_2025.04.bb => u-boot_2025.07.bb} (64%) > > v3: Did not manage to reproduce AB build failures but added delays to more > linker calls which exposed similar issues. Fixed failures with patches > which are also submitted upstream. > > v2: added upstreamed patch to fix build race conditon, removed qemu kvm workaround > fixed upstream. Would be nice to check if builds now pass. > https://lists.openembedded.org/g/openembedded-core/message/220436 > > v1: https://lists.openembedded.org/g/openembedded-core/message/220004 > > diff --git a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > deleted file mode 100644 > index 1d2509982be1..000000000000 > --- a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > +++ /dev/null > @@ -1 +0,0 @@ > -# CONFIG_USB is not set > diff --git a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch > new file mode 100644 > index 000000000000..e8253a67b211 > --- /dev/null > +++ b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch > @@ -0,0 +1,136 @@ > +From 2e7c1321bb44cc6af4ee4b1026a52e1a0aa7e336 Mon Sep 17 00:00:00 2001 > +From: Mikko Rapeli <mikko.rapeli@linaro.org> > +Date: Thu, 10 Jul 2025 14:24:07 +0000 > +Subject: [PATCH v3 1/2] Makefile scripts/Makefile.lib: fix *_efi.so dependency > + to PLATFORM_LIBGCC > + > +When PLATFORM_LIBGCC was added to linker command it was not > +added to the dependency of the .so and other rules. Thus a build can > +try to link *_efi.so files before lib.a from PLATFORM_LIBGCC is available. > +This was seen in yocto autobuilder builds with u-boot 2025.07 > +update, see https://lists.openembedded.org/g/openembedded-core/message/220004 > + > +https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline > + > +| rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o lib/efi_loader/efi_bootbin.o lib/efi_loader/efi_boottime.o lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o lib/efi_loader/efi_device_path.o lib/efi_loader/efi_device_path_to_text.o lib/efi_loader/efi_device_path_utilities.o lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o lib/efi_loader/efi_hii_config.o lib/efi_loader/efi_image_loader.o lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o lib/efi_loader/efi_setup.o lib/efi_loader/efi_string.o lib/efi_loader/efi_unicode_collation.o lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_file.o lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_conformance.o > +| arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st-3119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so > +| arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory > +| make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 > + > +The issue is hard to reproduce but this change can artificially trigger it: > + > + a/scripts/Makefile.build > + b/scripts/Makefile.build > +@@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE > + # > + ifdef lib-target > + quiet_cmd_link_l_target = AR $@ > +-cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) > ++cmd_link_l_target = rm -f $@ && echo "HACK, delaying build!" && sleep 60 && $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) > + This is not how you solve build races and I've very reluctant to take patches that look like that, whether submitted to upstream or otherwise. Cheers, Richard
Hi Richard, On 7/18/25 12:28 PM, Richard Purdie via lists.openembedded.org wrote: > On Fri, 2025-07-18 at 12:01 +0300, Mikko Rapeli via lists.openembedded.org wrote: >> From: Fabio Estevam <festevam@gmail.com> >> >> Upgrade to U-Boot 2025.07. Added patches for build race conditions. >> Removed qemu KVM USB workaround since issue is fixed upstream. >> >> Signed-off-by: Fabio Estevam <festevam@gmail.com> >> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> >> --- >> .../u-boot/files/disable_CONFIG_USB.cfg | 1 - >> ...pts-Makefile.lib-fix-_efi.so-depende.patch | 136 ++++++++++++++++++ >> ...kefile-change-apps-from-always-to-ta.patch | 57 ++++++++ >> meta/recipes-bsp/u-boot/u-boot-common.inc | 8 +- >> ...ols_2025.04.bb => u-boot-tools_2025.07.bb} | 0 >> .../{u-boot_2025.04.bb => u-boot_2025.07.bb} | 4 +- >> 6 files changed, 201 insertions(+), 5 deletions(-) >> delete mode 100644 meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg >> create mode 100644 meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch >> create mode 100644 meta/recipes-bsp/u-boot/files/v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch >> rename meta/recipes-bsp/u-boot/{u-boot-tools_2025.04.bb => u-boot-tools_2025.07.bb} (100%) >> rename meta/recipes-bsp/u-boot/{u-boot_2025.04.bb => u-boot_2025.07.bb} (64%) >> >> v3: Did not manage to reproduce AB build failures but added delays to more >> linker calls which exposed similar issues. Fixed failures with patches >> which are also submitted upstream. >> >> v2: added upstreamed patch to fix build race conditon, removed qemu kvm workaround >> fixed upstream. Would be nice to check if builds now pass. >> https://lists.openembedded.org/g/openembedded-core/message/220436 >> >> v1: https://lists.openembedded.org/g/openembedded-core/message/220004 >> >> diff --git a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg >> deleted file mode 100644 >> index 1d2509982be1..000000000000 >> --- a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg >> +++ /dev/null >> @@ -1 +0,0 @@ >> -# CONFIG_USB is not set >> diff --git a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch >> new file mode 100644 >> index 000000000000..e8253a67b211 >> --- /dev/null >> +++ b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch >> @@ -0,0 +1,136 @@ >> +From 2e7c1321bb44cc6af4ee4b1026a52e1a0aa7e336 Mon Sep 17 00:00:00 2001 >> +From: Mikko Rapeli <mikko.rapeli@linaro.org> >> +Date: Thu, 10 Jul 2025 14:24:07 +0000 >> +Subject: [PATCH v3 1/2] Makefile scripts/Makefile.lib: fix *_efi.so dependency >> + to PLATFORM_LIBGCC >> + >> +When PLATFORM_LIBGCC was added to linker command it was not >> +added to the dependency of the .so and other rules. Thus a build can >> +try to link *_efi.so files before lib.a from PLATFORM_LIBGCC is available. >> +This was seen in yocto autobuilder builds with u-boot 2025.07 >> +update, see https://lists.openembedded.org/g/openembedded-core/message/220004 >> + >> +https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline >> + >> +| rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o lib/efi_loader/efi_bootbin.o lib/efi_loader/efi_boottime.o lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o lib/efi_loader/efi_device_path.o lib/efi_loader/efi_device_path_to_text.o lib/efi_loader/efi_device_path_utilities.o lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o lib/efi_loader/efi_hii_config.o lib/efi_loader/efi_image_loader.o lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o lib/efi_loader/efi_setup.o lib/efi_loader/efi_string.o lib/efi_loader/efi_unicode_collation.o lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_file.o lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_conformance.o >> +| arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st-3119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so >> +| arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory >> +| make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 >> + >> +The issue is hard to reproduce but this change can artificially trigger it: >> + >> + a/scripts/Makefile.build >> + b/scripts/Makefile.build >> +@@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE >> + # >> + ifdef lib-target >> + quiet_cmd_link_l_target = AR $@ >> +-cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) >> ++cmd_link_l_target = rm -f $@ && echo "HACK, delaying build!" && sleep 60 && $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) >> + > > This is not how you solve build races and I've very reluctant to take > patches that look like that, whether submitted to upstream or > otherwise. > If I'm not mistaken, this is not the actual patch (code) content but rather how to reproduce the race issue reliably in a patch format contained in the commit log but the actual code doesn't add sleep as far as I could tell? But it's hard to distinguish a patch in a patch in a patch's commit log from a patch in a patch :) Cheers, Quentin
On Fri, 2025-07-18 at 12:34 +0200, Quentin Schulz wrote: > Hi Richard, > > On 7/18/25 12:28 PM, Richard Purdie via lists.openembedded.org wrote: > > On Fri, 2025-07-18 at 12:01 +0300, Mikko Rapeli via > > lists.openembedded.org wrote: > > > From: Fabio Estevam <festevam@gmail.com> > > > > > > Upgrade to U-Boot 2025.07. Added patches for build race > > > conditions. > > > Removed qemu KVM USB workaround since issue is fixed upstream. > > > > > > Signed-off-by: Fabio Estevam <festevam@gmail.com> > > > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > > > --- > > > .../u-boot/files/disable_CONFIG_USB.cfg | 1 - > > > ...pts-Makefile.lib-fix-_efi.so-depende.patch | 136 > > > ++++++++++++++++++ > > > ...kefile-change-apps-from-always-to-ta.patch | 57 ++++++++ > > > meta/recipes-bsp/u-boot/u-boot-common.inc | 8 +- > > > ...ols_2025.04.bb => u-boot-tools_2025.07.bb} | 0 > > > .../{u-boot_2025.04.bb => u-boot_2025.07.bb} | 4 +- > > > 6 files changed, 201 insertions(+), 5 deletions(-) > > > delete mode 100644 meta/recipes-bsp/u- > > > boot/files/disable_CONFIG_USB.cfg > > > create mode 100644 meta/recipes-bsp/u-boot/files/v3-0001- > > > Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch > > > create mode 100644 meta/recipes-bsp/u-boot/files/v3-0002- > > > efi_loader-Makefile-change-apps-from-always-to-ta.patch > > > rename meta/recipes-bsp/u-boot/{u-boot-tools_2025.04.bb => u- > > > boot-tools_2025.07.bb} (100%) > > > rename meta/recipes-bsp/u-boot/{u-boot_2025.04.bb => u- > > > boot_2025.07.bb} (64%) > > > > > > v3: Did not manage to reproduce AB build failures but added > > > delays to more > > > linker calls which exposed similar issues. Fixed failures > > > with patches > > > which are also submitted upstream. > > > > > > v2: added upstreamed patch to fix build race conditon, removed > > > qemu kvm workaround > > > fixed upstream. Would be nice to check if builds now pass. > > > > > > https://lists.openembedded.org/g/openembedded-core/message/220436 > > > > > > v1: > > > https://lists.openembedded.org/g/openembedded-core/message/220004 > > > > > > diff --git a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > > > b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > > > deleted file mode 100644 > > > index 1d2509982be1..000000000000 > > > --- a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg > > > +++ /dev/null > > > @@ -1 +0,0 @@ > > > -# CONFIG_USB is not set > > > diff --git a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile- > > > scripts-Makefile.lib-fix-_efi.so-depende.patch b/meta/recipes- > > > bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix- > > > _efi.so-depende.patch > > > new file mode 100644 > > > index 000000000000..e8253a67b211 > > > --- /dev/null > > > +++ b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts- > > > Makefile.lib-fix-_efi.so-depende.patch > > > @@ -0,0 +1,136 @@ > > > +From 2e7c1321bb44cc6af4ee4b1026a52e1a0aa7e336 Mon Sep 17 > > > 00:00:00 2001 > > > +From: Mikko Rapeli <mikko.rapeli@linaro.org> > > > +Date: Thu, 10 Jul 2025 14:24:07 +0000 > > > +Subject: [PATCH v3 1/2] Makefile scripts/Makefile.lib: fix > > > *_efi.so dependency > > > + to PLATFORM_LIBGCC > > > + > > > +When PLATFORM_LIBGCC was added to linker command it was not > > > +added to the dependency of the .so and other rules. Thus a build > > > can > > > +try to link *_efi.so files before lib.a from PLATFORM_LIBGCC is > > > available. > > > +This was seen in yocto autobuilder builds with u-boot 2025.07 > > > +update, see > > > https://lists.openembedded.org/g/openembedded-core/message/220004 > > > + > > > + > > > https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/ > > > raw_inline > > > + > > > +| rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar > > > cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o > > > lib/efi_loader/efi_bootbin.o lib/efi_loader/efi_boottime.o > > > lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o > > > lib/efi_loader/efi_device_path.o > > > lib/efi_loader/efi_device_path_to_text.o > > > lib/efi_loader/efi_device_path_utilities.o > > > lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o > > > lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o > > > lib/efi_loader/efi_hii_config.o lib/efi_loader/efi_image_loader.o > > > lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o > > > lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o > > > lib/efi_loader/efi_setup.o lib/efi_loader/efi_string.o > > > lib/efi_loader/efi_unicode_collation.o > > > lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o > > > lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_file.o > > > lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o > > > lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o > > > lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_conformance.o > > > +| arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack - > > > znocombreloc -znorelro --no-warn-rwx-segments -L > > > /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st- > > > 3119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u- > > > boot/2025.07/sources/u-boot-2025.07 -T > > > arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s > > > lib/efi_loader/helloworld.o lib/efi_loader/efi_crt0.o > > > lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o > > > arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so > > > +| arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: > > > No such file or directory > > > +| make[3]: *** [scripts/Makefile.lib:512: > > > lib/efi_loader/helloworld_efi.so] Error 1 > > > + > > > +The issue is hard to reproduce but this change can artificially > > > trigger it: > > > + > > > + a/scripts/Makefile.build > > > + b/scripts/Makefile.build > > > +@@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE > > > + # > > > + ifdef lib-target > > > + quiet_cmd_link_l_target = AR $@ > > > +-cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ > > > $(lib-y) > > > ++cmd_link_l_target = rm -f $@ && echo "HACK, delaying build!" && > > > sleep 60 && $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) > > > + > > > > This is not how you solve build races and I've very reluctant to > > take > > patches that look like that, whether submitted to upstream or > > otherwise. > > > > If I'm not mistaken, this is not the actual patch (code) content but > rather how to reproduce the race issue reliably in a patch format > contained in the commit log but the actual code doesn't add sleep as far > as I could tell? But it's hard to distinguish a patch in a patch in a > patch's commit log from a patch in a patch :) That makes much more sense, thanks. I was thinking it was a very unusual upstream submission! Cheers, Richard
On Fri Jul 18, 2025 at 11:01 AM CEST, Mikko Rapeli via lists.openembedded.org wrote: > From: Fabio Estevam <festevam@gmail.com> > > Upgrade to U-Boot 2025.07. Added patches for build race conditions. > Removed qemu KVM USB workaround since issue is fixed upstream. > > Signed-off-by: Fabio Estevam <festevam@gmail.com> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > --- Hi Mikko, Much better, but we have another test failure now, specifically on ARM host: QEMU 10.0.2 monitor - type 'help' for more information ... Loading Environment from Flash... *** Warning - bad CRC, using default environment In: serial,usbkbd Out: serial,vidconsole Err: serial,vidconsole Register 8001040 NbrPorts 8 Starting the controller "Synchronous Abort" handler, esr 0x96000010, far 0x10088040 elr: 000000000005a360 lr : 000000000005a344 (reloc) elr: 000000004f6fc360 lr : 000000004f6fc344 x0 : 0000000010088040 x1 : 0000000000000001 x2 : 0000000000000000 x3 : 0000000000003e80 x4 : 0000000000000038 x5 : 000000004e6708e2 x6 : 0000000000000000 x7 : 0000000000000000 x8 : 0000000000000000 x9 : 000000000001869f x10: 000000000000000d x11: 0000000000000006 x12: 000000004e561af8 x13: 000000004e561dd0 x14: 0000000000000002 x15: 0000000000000000 x16: 000000004f6ee774 x17: 0000000000000000 x18: 000000004e661dd0 x19: 000000004e670e40 x20: 0000000000000000 x21: 0000000010088040 x22: 0000000010088000 x23: 0000000000000000 x24: 0000000000000000 x25: 0000000000000000 x26: 0000000000000000 x27: 0000000000000000 x28: 00000000 ... 2025-07-18 23:17:34,434 - oe-selftest - INFO - ERROR: uboot.UBootTest.test_boot_uboot_kvm_to_full_target (subunit.RemotedTestCase) https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/2140 Can you look into that error?
diff --git a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg deleted file mode 100644 index 1d2509982be1..000000000000 --- a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_USB is not set diff --git a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch new file mode 100644 index 000000000000..e8253a67b211 --- /dev/null +++ b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch @@ -0,0 +1,136 @@ +From 2e7c1321bb44cc6af4ee4b1026a52e1a0aa7e336 Mon Sep 17 00:00:00 2001 +From: Mikko Rapeli <mikko.rapeli@linaro.org> +Date: Thu, 10 Jul 2025 14:24:07 +0000 +Subject: [PATCH v3 1/2] Makefile scripts/Makefile.lib: fix *_efi.so dependency + to PLATFORM_LIBGCC + +When PLATFORM_LIBGCC was added to linker command it was not +added to the dependency of the .so and other rules. Thus a build can +try to link *_efi.so files before lib.a from PLATFORM_LIBGCC is available. +This was seen in yocto autobuilder builds with u-boot 2025.07 +update, see https://lists.openembedded.org/g/openembedded-core/message/220004 + +https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline + +| rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o lib/efi_loader/efi_bootbin.o lib/efi_loader/efi_boottime.o lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o lib/efi_loader/efi_device_path.o lib/efi_loader/efi_device_path_to_text.o lib/efi_loader/efi_device_path_utilities.o lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o lib/efi_loader/efi_hii_config.o lib/efi_loader/efi_image_loader.o lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o lib/efi_loader/efi_setup.o lib/efi_loader/efi_string.o lib/efi_loader/efi_unicode_collation.o lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_file.o lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_conformance.o +| arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st-3119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so +| arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory +| make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 + +The issue is hard to reproduce but this change can artificially trigger it: + + a/scripts/Makefile.build + b/scripts/Makefile.build +@@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE + # + ifdef lib-target + quiet_cmd_link_l_target = AR $@ +-cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) ++cmd_link_l_target = rm -f $@ && echo "HACK, delaying build!" && sleep 60 && $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) + + $(lib-target): $(lib-y) FORCE + $(call if_changed,link_l_target) + +Then run a rebuild with: + +$ rm -f $( find build/ -name lib.a -or -name helloworld_efi.so ) && \ + make +... + arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /home/mcfrisk/src/base/repo/poky/build_bea +glebone/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so +arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory +make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 + +Fix by introducing PLATFORM_LIBGCC_LIBA variable with only lib.a +filename which is then used to add the dependency in rules which use +PLATFORM_LIBGCC. This should not impact builds which don't set +PLATFORM_LIBGCC_LIBA and PLATFORM_LIBGCC usage stays as is. + +Fixes: 43d43241d1c9 ("scripts/Makefile.lib: add PLATFORM_LIBGCC to efi linking") + +Cc: Adriano Cordova <adrianox@gmail.com> +Cc: Fabio Estevam <festevam@gmail.com> +Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> +--- + Makefile | 4 +++- + examples/standalone/Makefile | 2 +- + scripts/Makefile.lib | 2 +- + scripts/Makefile.xpl | 3 ++- + 4 files changed, 7 insertions(+), 4 deletions(-) + +Upstream-Status: Submitted [https://lists.denx.de/pipermail/u-boot/2025-July/594581.html] + +v3: added "export PLATFORM_LIBGCC_LIBA" like PLATFORM_LIBGCC, not sure + how testing worked without this before + +v2: introduced PLATFORM_LIBGCC_LIBA variable with just lib.a filename, + PLATFORM_LIBGCC can have other flags too + https://lists.denx.de/pipermail/u-boot/2025-July/594034.html + +v1: https://lists.denx.de/pipermail/u-boot/2025-July/593982.html + +diff --git a/Makefile b/Makefile +index 1a5c77d7caf0..a0797f36f7f6 100644 +--- a/Makefile ++++ b/Makefile +@@ -911,7 +911,8 @@ u-boot-main := $(libs-y) + + # Add GCC lib + ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) +-PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a ++PLATFORM_LIBGCC_LIBA = arch/$(ARCH)/lib/lib.a ++PLATFORM_LIBGCC = $(PLATFORM_LIBGCC_LIBA) + else + ifndef CONFIG_CC_IS_CLANG + PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc +@@ -926,6 +927,7 @@ endif + + export PLATFORM_LIBS + export PLATFORM_LIBGCC ++export PLATFORM_LIBGCC_LIBA + + # Special flags for CPP when processing the linker script. + # Pass the version down so we can handle backwards compatibility +diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile +index 9b57f1c0c66c..aa9e3121cf9a 100644 +--- a/examples/standalone/Makefile ++++ b/examples/standalone/Makefile +@@ -64,7 +64,7 @@ quiet_cmd_link_elf = LD $@ + cmd_link_elf = $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_STANDALONE) -g \ + -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) $(PLATFORM_LIBGCC) + +-$(ELF): $(obj)/%: $(obj)/%.o $(LIB) FORCE ++$(ELF): $(obj)/%: $(obj)/%.o $(LIB) $(PLATFORM_LIBGCC_LIBA) FORCE + $(call if_changed,link_elf) + + $(obj)/%.srec: OBJCOPYFLAGS += -O srec +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib +index e89a4a51b74d..cef3863dfdc4 100644 +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -508,7 +508,7 @@ $(obj)/efi_reloc.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_RELOC:.o=.c) $(recordmcoun + $(call cmd,force_checksrc) + $(call if_changed_rule,cc_o_c) + +-$(obj)/%_efi.so: $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o ++$(obj)/%_efi.so: $(PLATFORM_LIBGCC_LIBA) $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o + $(call cmd,efi_ld) + + targets += $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o +diff --git a/scripts/Makefile.xpl b/scripts/Makefile.xpl +index 43f27874f9fe..68c88293f0d9 100644 +--- a/scripts/Makefile.xpl ++++ b/scripts/Makefile.xpl +@@ -139,7 +139,8 @@ libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) + + # Add GCC lib + ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) +-PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a ++PLATFORM_LIBGCC_LIBA = arch/$(ARCH)/lib/lib.a ++PLATFORM_LIBGCC = $(PLATFORM_LIBGCC_LIBA) + PLATFORM_LIBS := $(filter-out %/lib.a, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC) + endif + +-- +2.43.0 + diff --git a/meta/recipes-bsp/u-boot/files/v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch b/meta/recipes-bsp/u-boot/files/v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch new file mode 100644 index 000000000000..6b68f7472410 --- /dev/null +++ b/meta/recipes-bsp/u-boot/files/v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch @@ -0,0 +1,57 @@ +From d207ec22429adc94f9e173971e30c675d2ab3de4 Mon Sep 17 00:00:00 2001 +From: Mikko Rapeli <mikko.rapeli@linaro.org> +Date: Fri, 18 Jul 2025 08:15:25 +0000 +Subject: [PATCH v3 2/2] efi_loader Makefile: change apps from "always" to + "targets" + +Adding delay to link commands in scripts/Makefile.build + +@@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE + # + ifdef lib-target + quiet_cmd_link_l_target = AR $@ +-cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) ++cmd_link_l_target = rm -f $@; echo "HACK delaying lib-target"; sleep 10; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) + + $(lib-target): $(lib-y) FORCE + $(call if_changed,link_l_target) +(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? n +@@ -362,7 +362,7 @@ targets += $(lib-target) + endif + + quiet_cmd_link_multi-y = AR $@ +-cmd_link_multi-y = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(filter %.o,$^) ++cmd_link_multi-y = rm -f $@; echo "HACK delaying cmd_link_multi-y"; sleep 10; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(filter %.o,$^) + + quiet_cmd_link_multi-m = AR [M] $@ + cmd_link_multi-m = $(cmd_link_multi-y) + +exposes a build failure: + +make[3]: *** No rule to make target 'lib/efi_loader/helloworld.efi', needed by '__build'. Stop. +make[3]: *** Waiting for unfinished jobs.... + +This if fixed by using normal targets for .efi apps. The rules +in scripts/Makefile.lib handle the dependencies correctly. + +Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> +--- + lib/efi_loader/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Upstream-Status: Submitted [https://lists.denx.de/pipermail/u-boot/2025-July/594583.html] + +diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile +index cf050e5385dd..e929c23b1cb1 100644 +--- a/lib/efi_loader/Makefile ++++ b/lib/efi_loader/Makefile +@@ -96,5 +96,5 @@ $(foreach f,$(apps-y),\ + $(eval CFLAGS_$(f).o := $(CFLAGS_EFI) -Os -ffreestanding)\ + $(eval CFLAGS_REMOVE_$(f).o := $(CFLAGS_NON_EFI))) + +-always += $(foreach f,$(apps-y),$(f).efi) ++targets += $(foreach f,$(apps-y),$(f).efi) + targets += $(foreach f,$(apps-y),$(f).o) +-- +2.43.0 + diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc index 8600d4bab6ed..c1395e473c53 100644 --- a/meta/recipes-bsp/u-boot/u-boot-common.inc +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc @@ -12,9 +12,13 @@ PE = "1" # We use the revision in order to avoid having to fetch it from the # repo during parse -SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" +SRCREV = "e37de002fac3895e8d0b60ae2015e17bb33e2b5b" -SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" +SRC_URI = "\ + git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV} \ + file://v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch \ + file://v3-0002-efi_loader-Makefile-change-apps-from-always-to-ta.patch \ +" SRC_URI_RISCV = "\ file://u-boot-riscv-isa_clear.cfg \ diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2025.04.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2025.07.bb similarity index 100% rename from meta/recipes-bsp/u-boot/u-boot-tools_2025.04.bb rename to meta/recipes-bsp/u-boot/u-boot-tools_2025.07.bb diff --git a/meta/recipes-bsp/u-boot/u-boot_2025.04.bb b/meta/recipes-bsp/u-boot/u-boot_2025.07.bb similarity index 64% rename from meta/recipes-bsp/u-boot/u-boot_2025.04.bb rename to meta/recipes-bsp/u-boot/u-boot_2025.07.bb index 89e964f627e5..25f264c961eb 100644 --- a/meta/recipes-bsp/u-boot/u-boot_2025.04.bb +++ b/meta/recipes-bsp/u-boot/u-boot_2025.07.bb @@ -4,5 +4,5 @@ require u-boot.inc DEPENDS += "bc-native dtc-native gnutls-native python3-pyelftools-native" # workarounds for aarch64 kvm qemu boot regressions -SRC_URI:append:qemuarm64 = " file://disable-CONFIG_BLOBLIST.cfg file://disable_CONFIG_USB.cfg" -SRC_URI:append:genericarm64 = " file://disable-CONFIG_BLOBLIST.cfg file://disable_CONFIG_USB.cfg" +SRC_URI:append:qemuarm64 = " file://disable-CONFIG_BLOBLIST.cfg" +SRC_URI:append:genericarm64 = " file://disable-CONFIG_BLOBLIST.cfg"