mbox series

[0/8] riscv: AIA userspace irqchip_split support

Message ID 20241010190337.376987-1-dbarboza@ventanamicro.com (mailing list archive)
Headers show
Series riscv: AIA userspace irqchip_split support | expand

Message

Daniel Henrique Barboza Oct. 10, 2024, 7:03 p.m. UTC
Hi,

This series adds AIA irqchip_split support, effective when using AIA
with aia=aplic-imsic and -accel kvm,kernel-irqchip=split. 

The main difference between what we currently have and irqchip_split()
mode is that, when using split mode, QEMU will emulate the APLIC
controller instead of using the in-kernel APLIC controller provided by
KVM.

After this series this is the matrix of which interrupt controllers
we're emulating based on 'virt' machine configuration and accelerator
properties:

Accel Accel props   AIA type    APLIC-m IMSIC-m APLIC-s   IMSIC-s
tcg      ----       aplic       emul    n/a     emul      n/a
tcg      ----       aplic-imsic emul    emul    emul      emul
kvm      ----       aplic       n/a     n/a     emul      n/a
kvm      none       aplic-imsic n/a     n/a     in-kernel in-kernel
kvm   irqchip=split aplic-imsic n/a     n/a     emul      in-kernel


Patches based on alistair/riscv-to-apply.next.

Daniel Henrique Barboza (8):
  hw/intc/riscv_aplic: rename is_kvm_aia()
  hw/riscv/virt.c: reduce virt_use_kvm_aia() usage
  hw/riscv/virt.c: rename helper to virt_use_kvm_aia_aplic_imsic()
  target/riscv/kvm: consider irqchip_split() in aia_create()
  hw/riscv/virt.c, riscv_aplic.c: add 'emulated_aplic' helpers
  hw/intc/riscv_aplic: add kvm_msicfgaddr for split mode aplic-imsic
  target/riscv/kvm: remove irqchip_split() restriction
  docs: update riscv/virt.rst with kernel-irqchip=split support

 docs/specs/index.rst          |  1 +
 docs/specs/riscv-aia.rst      | 83 +++++++++++++++++++++++++++++++++++
 docs/system/riscv/virt.rst    |  7 +++
 hw/intc/riscv_aplic.c         | 68 ++++++++++++++++++++++------
 hw/riscv/virt.c               | 38 +++++++++++-----
 include/hw/intc/riscv_aplic.h |  8 ++++
 target/riscv/kvm/kvm-cpu.c    | 41 +++++++++--------
 7 files changed, 202 insertions(+), 44 deletions(-)
 create mode 100644 docs/specs/riscv-aia.rst