Message ID | 20250521135136.166390-1-mikko.rapeli@linaro.org |
---|---|
State | New |
Headers | show |
Series | u-boot: disable CONFIG_BLOBLIST on aarch64 | expand |
Hi Mikko, On 5/21/25 3:51 PM, Mikko Rapeli via lists.openembedded.org wrote: > Booting on qemu with kvm is currently hanging on aarch64. > Root cause is in u-boot and CONFIG_BLOBLIST can be disabled > as a workaround. > > To reproduce, build on kvm enabled host where "kvm-ok" > succeeds. For example genericarm64 machine and core-image-base > should then boot with: > > $ runqemu slirp nographic novga snapshot kvm > > Without this config workaround, the boot hangs without > any messages in qemu output but ctrl-a-c to qemu console > can shutdown the emulated machine. > > This seems to have regressed after u-boot 2025.04 update. > KVM boot can be detected from speed, for example genericarm64 > boots in 550 ms with KVM and without in over 5 seconds. > > Fixes: [YOCTO #15872] > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > --- > meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | 1 + > meta/recipes-bsp/u-boot/u-boot-common.inc | 3 +++ > 2 files changed, 4 insertions(+) > create mode 100644 meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > new file mode 100644 > index 0000000000..d01d3d12d8 > --- /dev/null > +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > @@ -0,0 +1 @@ > +# CONFIG_BLOBLIST is not set > diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc > index fd1eab5cdd..d8c70da782 100644 > --- a/meta/recipes-bsp/u-boot/u-boot-common.inc > +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc > @@ -16,6 +16,9 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" > > SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" > > +# workaround for aarch64 kvm qemu boot regression > +SRC_URI:append:aarch64 = " file://disable-CONFIG_BLOBLIST.cfg" > + Can you make this qemu specific? I don't think we want every aarch64 board to have bloblist disabled? Cheers, Quentin
Hi, On Wed, May 21, 2025 at 04:14:04PM +0200, Quentin Schulz wrote: > Hi Mikko, > > On 5/21/25 3:51 PM, Mikko Rapeli via lists.openembedded.org wrote: > > Booting on qemu with kvm is currently hanging on aarch64. > > Root cause is in u-boot and CONFIG_BLOBLIST can be disabled > > as a workaround. > > > > To reproduce, build on kvm enabled host where "kvm-ok" > > succeeds. For example genericarm64 machine and core-image-base > > should then boot with: > > > > $ runqemu slirp nographic novga snapshot kvm > > > > Without this config workaround, the boot hangs without > > any messages in qemu output but ctrl-a-c to qemu console > > can shutdown the emulated machine. > > > > This seems to have regressed after u-boot 2025.04 update. > > KVM boot can be detected from speed, for example genericarm64 > > boots in 550 ms with KVM and without in over 5 seconds. > > > > Fixes: [YOCTO #15872] > > > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> > > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > > --- > > meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | 1 + > > meta/recipes-bsp/u-boot/u-boot-common.inc | 3 +++ > > 2 files changed, 4 insertions(+) > > create mode 100644 meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > > > diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > new file mode 100644 > > index 0000000000..d01d3d12d8 > > --- /dev/null > > +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > @@ -0,0 +1 @@ > > +# CONFIG_BLOBLIST is not set > > diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc > > index fd1eab5cdd..d8c70da782 100644 > > --- a/meta/recipes-bsp/u-boot/u-boot-common.inc > > +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc > > @@ -16,6 +16,9 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" > > SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" > > +# workaround for aarch64 kvm qemu boot regression > > +SRC_URI:append:aarch64 = " file://disable-CONFIG_BLOBLIST.cfg" > > + > > Can you make this qemu specific? I don't think we want every aarch64 board > to have bloblist disabled? True, at least qemu and genericarm64 need this. Or should this be tied to some machine/distro feature or something else? I guess KVM support is not a machine feature atm. Cheers, -Mikko
Hi Mikko, On 5/21/25 4:52 PM, Mikko Rapeli wrote: > Hi, > > On Wed, May 21, 2025 at 04:14:04PM +0200, Quentin Schulz wrote: >> Hi Mikko, >> >> On 5/21/25 3:51 PM, Mikko Rapeli via lists.openembedded.org wrote: >>> Booting on qemu with kvm is currently hanging on aarch64. >>> Root cause is in u-boot and CONFIG_BLOBLIST can be disabled >>> as a workaround. >>> >>> To reproduce, build on kvm enabled host where "kvm-ok" >>> succeeds. For example genericarm64 machine and core-image-base >>> should then boot with: >>> >>> $ runqemu slirp nographic novga snapshot kvm >>> >>> Without this config workaround, the boot hangs without >>> any messages in qemu output but ctrl-a-c to qemu console >>> can shutdown the emulated machine. >>> >>> This seems to have regressed after u-boot 2025.04 update. >>> KVM boot can be detected from speed, for example genericarm64 >>> boots in 550 ms with KVM and without in over 5 seconds. >>> >>> Fixes: [YOCTO #15872] >>> >>> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> >>> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> >>> --- >>> meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | 1 + >>> meta/recipes-bsp/u-boot/u-boot-common.inc | 3 +++ >>> 2 files changed, 4 insertions(+) >>> create mode 100644 meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg >>> >>> diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg >>> new file mode 100644 >>> index 0000000000..d01d3d12d8 >>> --- /dev/null >>> +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg >>> @@ -0,0 +1 @@ >>> +# CONFIG_BLOBLIST is not set >>> diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc >>> index fd1eab5cdd..d8c70da782 100644 >>> --- a/meta/recipes-bsp/u-boot/u-boot-common.inc >>> +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc >>> @@ -16,6 +16,9 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" >>> SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" >>> +# workaround for aarch64 kvm qemu boot regression >>> +SRC_URI:append:aarch64 = " file://disable-CONFIG_BLOBLIST.cfg" >>> + >> >> Can you make this qemu specific? I don't think we want every aarch64 board >> to have bloblist disabled? > > True, at least qemu and genericarm64 need this. Or should this be tied > to some machine/distro feature or something else? > > I guess KVM support is not a machine feature atm. > I assume this is about running U-Boot from within KVM? Not sure there are many machines operating within that scenario? Also, I assume this is going to be a short-lived work-around with a proper fix in U-Boot? I'm not sure we need to go through the hassle of adding a machine feature (and documenting it and all) if it's unused "soon". But I also understand that short-lived work-arounds also sometimes stay for a very long time :) Cheers, Quentin
Hi, On Wed, May 21, 2025 at 04:58:16PM +0200, Quentin Schulz wrote: > On 5/21/25 4:52 PM, Mikko Rapeli wrote: > > On Wed, May 21, 2025 at 04:14:04PM +0200, Quentin Schulz wrote: > > > On 5/21/25 3:51 PM, Mikko Rapeli via lists.openembedded.org wrote: > > > > Booting on qemu with kvm is currently hanging on aarch64. > > > > Root cause is in u-boot and CONFIG_BLOBLIST can be disabled > > > > as a workaround. > > > > > > > > To reproduce, build on kvm enabled host where "kvm-ok" > > > > succeeds. For example genericarm64 machine and core-image-base > > > > should then boot with: > > > > > > > > $ runqemu slirp nographic novga snapshot kvm > > > > > > > > Without this config workaround, the boot hangs without > > > > any messages in qemu output but ctrl-a-c to qemu console > > > > can shutdown the emulated machine. > > > > > > > > This seems to have regressed after u-boot 2025.04 update. > > > > KVM boot can be detected from speed, for example genericarm64 > > > > boots in 550 ms with KVM and without in over 5 seconds. > > > > > > > > Fixes: [YOCTO #15872] > > > > > > > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> > > > > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > > > > --- > > > > meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | 1 + > > > > meta/recipes-bsp/u-boot/u-boot-common.inc | 3 +++ > > > > 2 files changed, 4 insertions(+) > > > > create mode 100644 meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > > > > > > > diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > > > new file mode 100644 > > > > index 0000000000..d01d3d12d8 > > > > --- /dev/null > > > > +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg > > > > @@ -0,0 +1 @@ > > > > +# CONFIG_BLOBLIST is not set > > > > diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc > > > > index fd1eab5cdd..d8c70da782 100644 > > > > --- a/meta/recipes-bsp/u-boot/u-boot-common.inc > > > > +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc > > > > @@ -16,6 +16,9 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" > > > > SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" > > > > +# workaround for aarch64 kvm qemu boot regression > > > > +SRC_URI:append:aarch64 = " file://disable-CONFIG_BLOBLIST.cfg" > > > > + > > > > > > Can you make this qemu specific? I don't think we want every aarch64 board > > > to have bloblist disabled? > > > > True, at least qemu and genericarm64 need this. Or should this be tied > > to some machine/distro feature or something else? > > > > I guess KVM support is not a machine feature atm. > > > > I assume this is about running U-Boot from within KVM? Not sure there are > many machines operating within that scenario? Yes, for testing several aspects of target machine, booting under qemu is used and then the 10x performance boost on aarch64 host machines with KVM support is quite important. But overall a minor thing, I guess. > Also, I assume this is going to be a short-lived work-around with a proper > fix in U-Boot? I'm not sure we need to go through the hassle of adding a > machine feature (and documenting it and all) if it's unused "soon". But I > also understand that short-lived work-arounds also sometimes stay for a very > long time :) Yes, exactly :) The use case is such simple one. Hope we can figure out how to add a test for this. And run many of the selftests on native aarch64 hosts with kvm enabled to get the perf boost. Cheers, -Mikko
diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg new file mode 100644 index 0000000000..d01d3d12d8 --- /dev/null +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg @@ -0,0 +1 @@ +# CONFIG_BLOBLIST is not set diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc index fd1eab5cdd..d8c70da782 100644 --- a/meta/recipes-bsp/u-boot/u-boot-common.inc +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc @@ -16,6 +16,9 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" +# workaround for aarch64 kvm qemu boot regression +SRC_URI:append:aarch64 = " file://disable-CONFIG_BLOBLIST.cfg" + S = "${WORKDIR}/git" B = "${WORKDIR}/build"
Booting on qemu with kvm is currently hanging on aarch64. Root cause is in u-boot and CONFIG_BLOBLIST can be disabled as a workaround. To reproduce, build on kvm enabled host where "kvm-ok" succeeds. For example genericarm64 machine and core-image-base should then boot with: $ runqemu slirp nographic novga snapshot kvm Without this config workaround, the boot hangs without any messages in qemu output but ctrl-a-c to qemu console can shutdown the emulated machine. This seems to have regressed after u-boot 2025.04 update. KVM boot can be detected from speed, for example genericarm64 boots in 550 ms with KVM and without in over 5 seconds. Fixes: [YOCTO #15872] Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> --- meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | 1 + meta/recipes-bsp/u-boot/u-boot-common.inc | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg