On 18/12/22 14:38, Philippe Mathieu-Daudé wrote:
On 18/12/22 01:06, Paolo Bonzini wrote:
-machine kernel-irqchip=off is broken for many guest OSes; kernel-irqchip=split is the replacement that works, so remove the deprecated support for the former.

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
  docs/about/deprecated.rst       |  7 -------
  docs/about/removed-features.rst |  7 +++++++
  hw/i386/amd_iommu.c             |  2 +-
  hw/i386/intel_iommu.c           |  4 ++--
  include/hw/i386/apic_internal.h |  2 +-
  target/i386/cpu-sysemu.c        | 15 +++++++++++----
  6 files changed, 22 insertions(+), 15 deletions(-)


diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index 725f69095b9e..bcd016f5c5a5 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -1368,7 +1368,7 @@ static MemTxResult amdvi_mem_ir_write(void *opaque, hwaddr addr,
          return MEMTX_ERROR;
      }
-    apic_get_class()->send_msi(&to);
+    apic_get_class(NULL)->send_msi(&to);

&error_fatal?

Eh, &error_abort instead.

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index a08ee85edf2a..98a5c304a7d7 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -396,7 +396,7 @@ static void vtd_generate_interrupt(IntelIOMMUState *s, hwaddr mesg_addr_reg,
      trace_vtd_irq_generate(msi.address, msi.data);
-    apic_get_class()->send_msi(&msi);
+    apic_get_class(NULL)->send_msi(&msi);
  }
  /* Generate a fault event to software via MSI if conditions are met.
@@ -3529,7 +3529,7 @@ static MemTxResult vtd_mem_ir_write(void *opaque, hwaddr addr,
          return MEMTX_ERROR;
      }
-    apic_get_class()->send_msi(&to);
+    apic_get_class(NULL)->send_msi(&to);
      return MEMTX_OK;
  }

  #endif /* QEMU_APIC_INTERNAL_H */
diff --git a/target/i386/cpu-sysemu.c b/target/i386/cpu-sysemu.c
index fc97213a73cf..28115edf44f7 100644
--- a/target/i386/cpu-sysemu.c
+++ b/target/i386/cpu-sysemu.c
@@ -247,12 +247,16 @@ void x86_cpu_machine_reset_cb(void *opaque)
      cpu_reset(CPU(cpu));
  }
-APICCommonClass *apic_get_class(void)
+APICCommonClass *apic_get_class(Error **errp)
  {
      const char *apic_type = "apic";
      /* TODO: in-kernel irqchip for hvf */
-    if (kvm_apic_in_kernel()) {
+    if (kvm_enabled()) {
+        if (!kvm_apic_in_kernel()) {
+            error_setg(errp, "KVM does not support userspace APIC");
+            return NULL;
+        }



Reply via email to