[Qemu-devel] [PATCH v3 00/15] spapr: add KVM support to the XIVE interrupt mode

Cédric Le Goater posted 15 patches 5 years, 1 month ago
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test asan passed
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190321144914.19934-1-clg@kaod.org
Maintainers: "Cédric Le Goater" <clg@kaod.org>, "Michael S. Tsirkin" <mst@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, David Gibson <david@gibson.dropbear.id.au>
There is a newer version of this series
include/hw/ppc/spapr.h          |   4 +
include/hw/ppc/spapr_irq.h      |   2 +
include/hw/ppc/spapr_xive.h     |  39 ++
include/hw/ppc/xics_spapr.h     |   1 +
include/hw/ppc/xive.h           |  14 +
include/hw/sysbus.h             |   1 +
linux-headers/asm-powerpc/kvm.h |  46 ++
linux-headers/linux/kvm.h       |  11 +
target/ppc/kvm_ppc.h            |   6 +
hw/core/sysbus.c                |  10 +
hw/intc/spapr_xive.c            | 172 ++++++-
hw/intc/spapr_xive_kvm.c        | 824 ++++++++++++++++++++++++++++++++
hw/intc/xics_kvm.c              | 113 ++++-
hw/intc/xics_spapr.c            |  10 +
hw/intc/xive.c                  |  44 +-
hw/ppc/spapr_irq.c              | 181 ++++---
hw/ppc/spapr_rtas.c             |   2 +-
target/ppc/kvm.c                |   7 +
hw/intc/Makefile.objs           |   1 +
hw/ppc/Kconfig                  |   5 +
20 files changed, 1404 insertions(+), 89 deletions(-)
create mode 100644 hw/intc/spapr_xive_kvm.c
[Qemu-devel] [PATCH v3 00/15] spapr: add KVM support to the XIVE interrupt mode
Posted by Cédric Le Goater 5 years, 1 month ago
ello,

This is the v3 of the QEMU/KVM patchset taking into account the
remarks on v2 and the remarks on the Linux/KVM interface.

The first patches introduce the XIVE KVM device, state synchronization
and migration support under KVM. The second part of the patchset
modifies the XICS and XIVE interrupt models to add KVM support to the
'dual' IRQ backend.

GitHub trees available here :
 
QEMU sPAPR:

  https://github.com/legoater/qemu/commits/xive-next
  
Linux/KVM:

  https://github.com/legoater/linux/commits/xive-5.1

OPAL:

  https://github.com/legoater/skiboot/commits/xive

Thanks,

C.

Changes since v2:

 - update linux headers to 5.1-rc1
 - rebased on new naming scheme
 - rebased on new configuration system
 - replaced error_report_err() by warn_report_err()
 - added an assert() in spapr_xive_end_to_target()
 - moved xive_end_is_valid() check out of kvmppc_xive_set_queue_config()
 - dealt with MASKED EAS
 - reworked ESB memory operations
 - improved KVM_XIVE_EQ_ALWAYS_NOTIFY handling
 - removed the capture of the OS CAM line value from KVM
 - merged in the handling of pending interrupts while the VM is stopped.
 - did an update in ics_set_kvm_state_one()
 - removed spapr_ics_create() 
 - introduced a spapr_irq_init_device() helper
 - reworked test on single initialization of the emulated IRQ device

Changes since v1:

 - Reworked most of the KVM interface
 - Reworked *All* hcalls which are now handled at the QEMU level,
   possibly extended with a KVM device ioctl when required.
 - TIMA and ESB special mapping done on the KVM device fd.
 - Tested on nested
 - Implemented the device fallback mode when a kernel_irqchip is not
   available and not required. Useful on nested to use XIVE. 
 - Fix device hotplug when VM is stopped (Is this necessary ?)

Cédric Le Goater (15):
  linux-headers: update to 5.1-rc1
  spapr/xive: add KVM support
  spapr/xive: add hcall support when under KVM
  spapr/xive: add state synchronization with KVM
  spapr/xive: introduce a VM state change handler
  spapr/xive: add migration support for KVM
  spapr/xive: activate KVM support
  spapr/rtas: modify spapr_rtas_register() to remove RTAS handlers
  sysbus: add a sysbus_mmio_unmap() helper
  spapr: introduce routines to delete the KVM IRQ device
  spapr: check for the activation of the KVM IRQ device
  spapr/irq: remove spapr_ics_create()
  spapr/irq: introduce a spapr_irq_init_device()
  spapr/irq: initialize the IRQ device only once
  spapr/irq: add KVM support to the 'dual' machine

 include/hw/ppc/spapr.h          |   4 +
 include/hw/ppc/spapr_irq.h      |   2 +
 include/hw/ppc/spapr_xive.h     |  39 ++
 include/hw/ppc/xics_spapr.h     |   1 +
 include/hw/ppc/xive.h           |  14 +
 include/hw/sysbus.h             |   1 +
 linux-headers/asm-powerpc/kvm.h |  46 ++
 linux-headers/linux/kvm.h       |  11 +
 target/ppc/kvm_ppc.h            |   6 +
 hw/core/sysbus.c                |  10 +
 hw/intc/spapr_xive.c            | 172 ++++++-
 hw/intc/spapr_xive_kvm.c        | 824 ++++++++++++++++++++++++++++++++
 hw/intc/xics_kvm.c              | 113 ++++-
 hw/intc/xics_spapr.c            |  10 +
 hw/intc/xive.c                  |  44 +-
 hw/ppc/spapr_irq.c              | 181 ++++---
 hw/ppc/spapr_rtas.c             |   2 +-
 target/ppc/kvm.c                |   7 +
 hw/intc/Makefile.objs           |   1 +
 hw/ppc/Kconfig                  |   5 +
 20 files changed, 1404 insertions(+), 89 deletions(-)
 create mode 100644 hw/intc/spapr_xive_kvm.c

-- 
2.20.1