To enable kvm_irqchip_in_kernel option on LoongArch virt machine
platform, property irqchip-in-kernel is added on irqchips including
ExtIOI, IPI, PCH_PCI and PCH_MSI irqchip.

If property irqchip-in-kernel is set, there is special operations with
irqchips in such fields:
  1. During irqchip object realization, kvm_create_device() is used here
     to create irqchip in KVM kernel.
  2. Add pre_save and post_load function, where register states can be
     get and set from KVM kernel.
  3. Interrupt injection to kernel, IRQ line intterupt is injected with
     API kvm_set_irq() and MSI intterrupt is injected with API
     kvm_irqchip_send_msi().
     
Bibo Mao (15):
  hw/intc/loongarch_extioi: Add irqchip-in-kernel property
  hw/intc/loongarch_extioi: Add irqchip-in-kernel realize function
  hw/intc/loongarch_extioi: Add irqchip-in-kernel save/restore function
  hw/intc/loongarch_ipi: Add irqchip-in-kernel property
  hw/intc/loongarch_ipi: Add irqchip-in-kernel realize function
  hw/intc/loongson_ipi: Add load and save interface with ipi_common
    class
  hw/intc/loongarch_ipi: Add irqchip-in-kernel save/restore function
  hw/intc/loongarch_pch_msi: Add irqchip-in-kernel property
  hw/intc/loongarch_pch_msi: Inject MSI interrupt to kernel
  hw/intc/loongarch_pch: Add irqchip-in-kernel property
  hw/intc/loongarch_pch: Add irqchip-in-kernel realize function
  hw/intc/loongarch_pch: Add irqchip-in-kernel save/restore function
  hw/intc/loongarch_pch: Inject irq line interrupt to kernel
  target/loongarch: Report error with split kernel_irqchip option
  hw/loongarch/virt: Add kvm_irqchip_in_kernel support

 hw/intc/loongarch_extioi.c             |  35 ++++++
 hw/intc/loongarch_extioi_kvm.c         | 146 +++++++++++++++++++++++++
 hw/intc/loongarch_ipi.c                |  41 +++++++
 hw/intc/loongarch_ipi_kvm.c            |  83 ++++++++++++++
 hw/intc/loongarch_pch_msi.c            |  17 +++
 hw/intc/loongarch_pch_pic.c            |  50 +++++++++
 hw/intc/loongarch_pic_kvm.c            |  96 ++++++++++++++++
 hw/intc/loongson_ipi_common.c          |  28 +++++
 hw/intc/meson.build                    |   6 +
 hw/loongarch/virt.c                    |  15 +++
 include/hw/intc/loongarch_extioi.h     |   6 +
 include/hw/intc/loongarch_ipi.h        |   6 +
 include/hw/intc/loongarch_pch_msi.h    |   1 +
 include/hw/intc/loongarch_pch_pic.h    |   6 +
 include/hw/intc/loongarch_pic_common.h |   1 +
 include/hw/intc/loongson_ipi_common.h  |   2 +
 target/loongarch/cpu.h                 |   1 +
 target/loongarch/kvm/kvm.c             |  23 +++-
 18 files changed, 562 insertions(+), 1 deletion(-)
 create mode 100644 hw/intc/loongarch_extioi_kvm.c
 create mode 100644 hw/intc/loongarch_ipi_kvm.c
 create mode 100644 hw/intc/loongarch_pic_kvm.c

-- 
2.39.3


Reply via email to