qemu: Enable I/O APIC if needed

This is a follow up of my previous commits. If the number of
vCPUs exceeds some arbitrary value (255) then QEMU requires IOMMU
with EIM and intremap enabled. But in turn, intremap IOMMU
requires split I/O APIC (per virDomainDefIOMMUValidate()). Since
after my previous commits (e.g. v10.10.0-rc1~183) IOMMU is added
automagically, the I/O APIC can be also enabled automagically.

Relates to: https://issues.redhat.com/browse/RHEL-65844
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2024-12-12 10:02:43 +01:00
parent 99474f8e50
commit 2d222ecf6e
2 changed files with 7 additions and 3 deletions

View File

@ -1547,6 +1547,13 @@ qemuDomainDefEnableDefaultFeatures(virDomainDef *def,
* capabilities, we still want to enable this */ * capabilities, we still want to enable this */
def->features[VIR_DOMAIN_FEATURE_GIC] = VIR_TRISTATE_SWITCH_ON; def->features[VIR_DOMAIN_FEATURE_GIC] = VIR_TRISTATE_SWITCH_ON;
} }
/* IOMMU with intremap requires split I/O APIC */
if (def->iommu &&
def->iommu->intremap == VIR_TRISTATE_SWITCH_ON &&
def->features[VIR_DOMAIN_FEATURE_IOAPIC] == VIR_DOMAIN_IOAPIC_NONE) {
def->features[VIR_DOMAIN_FEATURE_IOAPIC] = VIR_DOMAIN_IOAPIC_QEMU;
}
} }

View File

@ -8,9 +8,6 @@
<type arch='x86_64' machine='q35'>hvm</type> <type arch='x86_64' machine='q35'>hvm</type>
<boot dev='hd'/> <boot dev='hd'/>
</os> </os>
<features>
<ioapic driver='qemu'/>
</features>
<cpu mode='custom' match='exact' check='none'> <cpu mode='custom' match='exact' check='none'>
<model fallback='forbid'>qemu64</model> <model fallback='forbid'>qemu64</model>
</cpu> </cpu>