From: Romain Naour <romain.naour@gmail.com>
To: buildroot@buildroot.org
Cc: Romain Naour <romain.naour@gmail.com>, Julien Olivain <ju.o@free.fr>
Subject: [Buildroot] [PATCH] support/testing: Override the EDK2 CPU hotplug bug check
Date: Sat, 29 Jul 2023 00:53:54 +0200 [thread overview]
Message-ID: <20230728225354.269776-1-romain.naour@gmail.com> (raw)
In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves.
EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402
(requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them)
The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround
can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0.
https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3
http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186190 (TestGrubX8664EFI)
https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186198 (TestGrubi386EFI)
https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186306 (TestIso9660Grub2EFI)
https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186317 (TestIso9660Grub2Hybrid)
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Julien Olivain <ju.o@free.fr>
---
Adding Debian bullseye backport repository in the Docker image used by the Buildroot Gitlab-ci
is not enough, since the bug is really fixed in Qemu 8.0.0 and only Qemu 7.2.0 is provided.
---
support/testing/tests/boot/test_grub.py | 20 ++++++++++++++++++--
support/testing/tests/fs/test_iso9660.py | 11 ++++++++++-
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/support/testing/tests/boot/test_grub.py b/support/testing/tests/boot/test_grub.py
index 2c393f730e..9f3a6a8495 100644
--- a/support/testing/tests/boot/test_grub.py
+++ b/support/testing/tests/boot/test_grub.py
@@ -61,7 +61,15 @@ class TestGrubi386EFI(infra.basetest.BRTest):
def test_run(self):
hda = os.path.join(self.builddir, "images", "disk.img")
bios = os.path.join(self.builddir, "images", "OVMF.fd")
- self.emulator.boot(arch="i386", options=["-bios", bios, "-hda", hda])
+ # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves.
+ # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402
+ # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them)
+ # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround
+ # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0.
+ # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3
+ # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html
+ qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes"
+ self.emulator.boot(arch="i386", options=["-bios", bios, "-hda", hda, "-fw_cfg", qemu_fw_cfg])
self.emulator.login()
cmd = "modprobe efivarfs"
@@ -104,7 +112,15 @@ class TestGrubX8664EFI(infra.basetest.BRTest):
def test_run(self):
hda = os.path.join(self.builddir, "images", "disk.img")
bios = os.path.join(self.builddir, "images", "OVMF.fd")
- self.emulator.boot(arch="x86_64", options=["-bios", bios, "-hda", hda])
+ # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves.
+ # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402
+ # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them)
+ # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround
+ # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0.
+ # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3
+ # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html
+ qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes"
+ self.emulator.boot(arch="x86_64", options=["-bios", bios, "-hda", hda, "-fw_cfg", qemu_fw_cfg])
self.emulator.login()
cmd = "modprobe efivarfs"
diff --git a/support/testing/tests/fs/test_iso9660.py b/support/testing/tests/fs/test_iso9660.py
index 692291267e..3d08f2e895 100644
--- a/support/testing/tests/fs/test_iso9660.py
+++ b/support/testing/tests/fs/test_iso9660.py
@@ -29,7 +29,16 @@ def test_mount_internal_external(emulator, builddir, internal=True, efi=False):
img = os.path.join(builddir, "images", "rootfs.iso9660")
if efi:
efi_img = os.path.join(builddir, "images", "OVMF.fd")
- emulator.boot(arch="i386", options=["-cdrom", img, "-bios", efi_img])
+ # In QEMU v5.1.0 up to v7.2.0, the CPU hotplug register block misbehaves.
+ # EDK2 hang if the bug is detected in Qemu after printing errors to IO port 0x402
+ # (requires BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL to see them)
+ # The Docker image used by the Buildroot gitlab-ci uses Qemu 5.2.0, the workaround
+ # can be removed as soon as the Docker image is updated to provided Qemu >= 8.0.0.
+ # This workaround is needed only when efi=True since it imply EDK2 is used.
+ # https://github.com/tianocore/edk2/commit/bf5678b5802685e07583e3c7ec56d883cbdd5da3
+ # http://lists.busybox.net/pipermail/buildroot/2023-July/670825.html
+ qemu_fw_cfg = "name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes"
+ emulator.boot(arch="i386", options=["-cdrom", img, "-bios", efi_img, "-fw_cfg", qemu_fw_cfg])
else:
emulator.boot(arch="i386", options=["-cdrom", img])
emulator.login()
--
2.41.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next reply other threads:[~2023-07-28 22:54 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-28 22:53 Romain Naour [this message]
2023-07-29 9:02 ` [Buildroot] [PATCH] support/testing: Override the EDK2 CPU hotplug bug check Thomas Petazzoni via buildroot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230728225354.269776-1-romain.naour@gmail.com \
--to=romain.naour@gmail.com \
--cc=buildroot@buildroot.org \
--cc=ju.o@free.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox