pc: Require IRQ remapping and EIM if there could be x2APIC CPUs
It would prevent starting guest with incorrect configs where interrupts couldn't be delivered to CPUs with APIC IDs > 255. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Radim Krčmář <rkrcmar@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
080ac219cc
commit
60c5e1040e
14
hw/i386/pc.c
14
hw/i386/pc.c
|
@ -68,6 +68,7 @@
|
||||||
#include "qapi-visit.h"
|
#include "qapi-visit.h"
|
||||||
#include "qom/cpu.h"
|
#include "qom/cpu.h"
|
||||||
#include "hw/nmi.h"
|
#include "hw/nmi.h"
|
||||||
|
#include "hw/i386/intel_iommu.h"
|
||||||
|
|
||||||
/* debug PC/ISA interrupts */
|
/* debug PC/ISA interrupts */
|
||||||
//#define DEBUG_IRQ
|
//#define DEBUG_IRQ
|
||||||
|
@ -1273,6 +1274,19 @@ void pc_machine_done(Notifier *notifier, void *data)
|
||||||
sizeof(pcms->boot_cpus_le));
|
sizeof(pcms->boot_cpus_le));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pcms->apic_id_limit > 255) {
|
||||||
|
IntelIOMMUState *iommu = INTEL_IOMMU_DEVICE(x86_iommu_get_default());
|
||||||
|
|
||||||
|
if (!iommu || !iommu->x86_iommu.intr_supported ||
|
||||||
|
iommu->intr_eim != ON_OFF_AUTO_ON) {
|
||||||
|
error_report("current -smp configuration requires "
|
||||||
|
"Extended Interrupt Mode enabled. "
|
||||||
|
"You can add an IOMMU using: "
|
||||||
|
"-device intel-iommu,intremap=on,eim=on");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pc_guest_info_init(PCMachineState *pcms)
|
void pc_guest_info_init(PCMachineState *pcms)
|
||||||
|
|
Loading…
Reference in New Issue