Skip to content

Commit

Permalink
OvmfPkg/PlatformCI VS2019: Enable temporary workaround for cpuhp bugfix
Browse files Browse the repository at this point in the history
QEMU for x86 has a nasty CPU hotplug bug of which the ramifications are
difficult to oversee, even though KVM acceleration seems to be
unaffected. This has been addressed in QEMU mainline, and will percolate
through the ecosystem at its usual pace. In the mean time, due to the
potential impact on production workloads, we will be updating OVMF to
abort the boot when it detects a QEMU build that is affected.

Tiancore's platform CI uses QEMU in TCG mode, and is therefore impacted
by this mitigation, unless its QEMU builds are updated. This has been
done for Ubuntu-GCC5, but Windows-VS2019 still uses a QEMU build that is
affected.

Aborting the boot upon detecting the QEMU issue will render all boot
tests carried out on Windows-VS2019 broken unless we implement the
'escape hatch' that enables proceed-at-your-own-risk mode, and permits
the boot to proceed even if the QEMU issue is detected.

So let's enable this for Windows-VS2019, and remove it again once it is
no longer needed.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Michael Brown <mcb30@ipxe.org>
Cc: Oliver Steffen <osteffen@redhat.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>

Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=4250
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Message-Id: <20230119134302.1524569-1-ardb@kernel.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
Acked-by: Jiewen Yao <Jiewen.yao@Intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
  • Loading branch information
ardbiesheuvel authored and mergify[bot] committed Jan 20, 2023
1 parent 5141143 commit 3beb8c9
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion OvmfPkg/PlatformCI/.azurepipelines/Windows-VS2019.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
package: 'OvmfPkg'
vm_image: 'windows-2019'
should_run: true
run_flags: "MAKE_STARTUP_NSH=TRUE QEMU_HEADLESS=TRUE"
run_flags: "MAKE_STARTUP_NSH=TRUE QEMU_HEADLESS=TRUE QEMU_CPUHP_QUIRK=TRUE"

#Use matrix to speed up the build process
strategy:
Expand Down
12 changes: 12 additions & 0 deletions OvmfPkg/PlatformCI/PlatformBuildLib.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ def SetPlatformEnv(self):
self.env.SetValue("PRODUCT_NAME", "OVMF", "Platform Hardcoded")
self.env.SetValue("MAKE_STARTUP_NSH", "FALSE", "Default to false")
self.env.SetValue("QEMU_HEADLESS", "FALSE", "Default to false")
self.env.SetValue("QEMU_CPUHP_QUIRK", "FALSE", "Default to false")
return 0

def PlatformPreBuild(self):
Expand Down Expand Up @@ -211,6 +212,17 @@ def FlashRomImage(self):
args += " -pflash " + os.path.join(OutputPath_FV, "OVMF.fd") # path to firmware


###
### NOTE This is a temporary workaround to allow platform CI to cope with
### a QEMU bug in the CPU hotplug code. Once the CI environment has
### been updated to carry a fixed version of QEMU, this can be
### removed again
###
### Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=4250
###
if (self.env.GetValue("QEMU_CPUHP_QUIRK").upper() == "TRUE"):
args += " -fw_cfg name=opt/org.tianocore/X-Cpuhp-Bugcheck-Override,string=yes"

if (self.env.GetValue("MAKE_STARTUP_NSH").upper() == "TRUE"):
f = open(os.path.join(VirtualDrive, "startup.nsh"), "w")
f.write("BOOT SUCCESS !!! \n")
Expand Down

0 comments on commit 3beb8c9

Please sign in to comment.