mirror of https://github.com/xemu-project/xemu.git
x86_iommu: move the kernel-irqchip check in common code
Interrupt remapping needs kernel-irqchip={off|split} on both Intel and AMD platforms. Move the check in common place. Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Peter Xu <peterx@redhat.com> Cc: Peter Xu <peterx@redhat.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com> Cc: Tom Lendacky <Thomas.Lendacky@amd.com> Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
110b9463d5
commit
50662ce16d
|
@ -3262,13 +3262,6 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
|
||||||
{
|
{
|
||||||
X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s);
|
X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s);
|
||||||
|
|
||||||
/* Currently Intel IOMMU IR only support "kernel-irqchip={off|split}" */
|
|
||||||
if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() &&
|
|
||||||
!kvm_irqchip_is_split()) {
|
|
||||||
error_setg(errp, "Intel Interrupt Remapping cannot work with "
|
|
||||||
"kernel-irqchip=on, please use 'split|off'.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (s->intr_eim == ON_OFF_AUTO_ON && !x86_iommu->intr_supported) {
|
if (s->intr_eim == ON_OFF_AUTO_ON && !x86_iommu->intr_supported) {
|
||||||
error_setg(errp, "eim=on cannot be selected without intremap=on");
|
error_setg(errp, "eim=on cannot be selected without intremap=on");
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
#include "sysemu/kvm.h"
|
||||||
|
|
||||||
void x86_iommu_iec_register_notifier(X86IOMMUState *iommu,
|
void x86_iommu_iec_register_notifier(X86IOMMUState *iommu,
|
||||||
iec_notify_fn fn, void *data)
|
iec_notify_fn fn, void *data)
|
||||||
|
@ -94,6 +95,14 @@ static void x86_iommu_realize(DeviceState *dev, Error **errp)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Both Intel and AMD IOMMU IR only support "kernel-irqchip={off|split}" */
|
||||||
|
if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() &&
|
||||||
|
!kvm_irqchip_is_split()) {
|
||||||
|
error_setg(errp, "Interrupt Remapping cannot work with "
|
||||||
|
"kernel-irqchip=on, please use 'split|off'.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (x86_class->realize) {
|
if (x86_class->realize) {
|
||||||
x86_class->realize(dev, errp);
|
x86_class->realize(dev, errp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue