Extended Destination ID is an alternative to interrupt remapping in
IOMMU enabled in QEMU by default when kernel-irqchip=split is used.

Signed-off-by: Anton Gerasimov <[email protected]>
---
 src/qemu/qemu_validate.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index e946f55351..c8af25828b 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -954,10 +954,12 @@ qemuValidateDomainVCpuTopology(const virDomainDef *def, 
virQEMUCaps *qemuCaps)
                            QEMU_MAX_VCPUS_WITHOUT_X2APIC);
             return -1;
         }
-        if (!def->iommus || (def->iommus[0]->eim != VIR_TRISTATE_SWITCH_ON &&
-            def->iommus[0]->xtsup != VIR_TRISTATE_SWITCH_ON)) {
+        if ((def->features[VIR_DOMAIN_FEATURE_IOAPIC] != 
VIR_DOMAIN_IOAPIC_QEMU) &&
+            (!def->iommus ||
+             (def->iommus[0]->eim != VIR_TRISTATE_SWITCH_ON &&
+              def->iommus[0]->xtsup != VIR_TRISTATE_SWITCH_ON))) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("more than %1$d vCPUs require EIM or XTSup mode 
enabled on the iommu device"),
+                           _("more than %1$d vCPUs require either IOAPIC in 
QEMU or an iommu device with EIM or XTSup mode enabled"),
                            QEMU_MAX_VCPUS_WITHOUT_X2APIC);
             return -1;
         }
-- 
2.43.0

Reply via email to