On Tue, Nov 18, 2025 at 11:58:13AM +0900, Kazuhiro Abe wrote:
Although QEMU allows ACPI with UEFI firmware via the '-bios' option on aarch64, libvirt rejected such configurations through its validation.
Therefore, the conditional statement was changed to allow the following settings:
<os> <type arch='aarch64' machine='virt-4.0'>hvm</type> <loader type="rom">/usr/share/qemu-efi-aarch64/QEMU_EFI.fd</loader> </os> <features> <acpi/> </features>
Specifying <os firmware='bios'> still results in error, as before.
Signed-off-by: Kazuhiro Abe <fj1078ii@aa.jp.fujitsu.com> --- src/qemu/qemu_validate.c | 2 +- ...auto-bios-acpi-aarch64.aarch64-latest.err} | 0 .../firmware-auto-bios-acpi-aarch64.xml | 17 ++++++++++ ...ual-noefi-acpi-aarch64.aarch64-latest.args | 31 +++++++++++++++++++ ...nual-noefi-acpi-aarch64.aarch64-latest.xml | 29 +++++++++++++++++ tests/qemuxmlconftest.c | 3 +- 6 files changed, 80 insertions(+), 2 deletions(-) rename tests/qemuxmlconfdata/{firmware-manual-noefi-acpi-aarch64.aarch64-latest.err => firmware-auto-bios-acpi-aarch64.aarch64-latest.err} (100%) create mode 100644 tests/qemuxmlconfdata/firmware-auto-bios-acpi-aarch64.xml create mode 100644 tests/qemuxmlconfdata/firmware-manual-noefi-acpi-aarch64.aarch64-latest.args create mode 100644 tests/qemuxmlconfdata/firmware-manual-noefi-acpi-aarch64.aarch64-latest.xml
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 3b0f2b50a5..263aaa25a2 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1341,7 +1341,7 @@ qemuValidateDomainDef(const virDomainDef *def, /* On aarch64, ACPI requires UEFI */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON && def->os.arch == VIR_ARCH_AARCH64 && - (def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_EFI && + (def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS && !virDomainDefHasOldStyleUEFI(def))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("ACPI requires UEFI on this architecture"));
This makes the specific scenario you're interested in work but doesn't address the underlying cause, that is, libvirt failing to recognize the firmware being loaded as a UEFI implementation. As mentioned in the other thread, I will soon post a patch that takes care of that, thus making this change unnecessary. NACK -- Andrea Bolognani / Red Hat / Virtualization