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

Cédric Le Goater posted 14 patches 4 years, 11 months ago
Failed in applying to current master (apply log)
include/hw/ppc/spapr_irq.h      |   2 +
include/hw/ppc/spapr_xive.h     |  39 ++
include/hw/ppc/xics.h           |   1 +
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       |   3 +
target/ppc/kvm_ppc.h            |   6 +
hw/core/sysbus.c                |  10 +
hw/intc/spapr_xive.c            | 172 ++++++-
hw/intc/spapr_xive_kvm.c        | 827 ++++++++++++++++++++++++++++++++
hw/intc/xics.c                  |  10 +-
hw/intc/xics_kvm.c              | 113 ++++-
hw/intc/xics_spapr.c            |   7 +
hw/intc/xive.c                  |  44 +-
hw/ppc/spapr_irq.c              | 140 ++++--
target/ppc/kvm.c                |   7 +
hw/intc/Makefile.objs           |   1 +
hw/ppc/Kconfig                  |   5 +
20 files changed, 1384 insertions(+), 65 deletions(-)
create mode 100644 hw/intc/spapr_xive_kvm.c
[Qemu-devel] [PATCH v4 00/14] spapr: add KVM support to the XIVE interrupt mode
Posted by Cédric Le Goater 4 years, 11 months ago
Hello,

This is the v4 of the QEMU/KVM patchset.

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

Thanks,

C.

Changes since v3:

 - updates of the kvm headers are synced with commit 0caecf5b0019
   (kvm-ppc-next-5.2-1) in branch kvm-ppc-next. will conflict with
   kvm-arm.   
 - added usage of xive_end_qaddr() helper
 - removed KVM_DESTROY_DEVICE control. KVM device is destroyed when
   the fd is closed.
 - update in kvmppc_xive_source_reset_one()
 - introduced a 'init' boolean under ICSState
 - removed extra spapr_irq_init_device() in spapr_irq_init_xive() 
 - reworked slightly the code sequence in xics_kvm_init() creating the
   presenters and connecting them to the KVM XICS device.

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 (14):
  linux-headers: update linux headers to kvm-ppc-next-5.2-1
  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
  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: introduce a spapr_irq_init_device() helper
  spapr/irq: initialize the IRQ device only once
  ppc/xics: fix irq priority in ics_set_irq_type()
  spapr/irq: add KVM support to the 'dual' machine

 include/hw/ppc/spapr_irq.h      |   2 +
 include/hw/ppc/spapr_xive.h     |  39 ++
 include/hw/ppc/xics.h           |   1 +
 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       |   3 +
 target/ppc/kvm_ppc.h            |   6 +
 hw/core/sysbus.c                |  10 +
 hw/intc/spapr_xive.c            | 172 ++++++-
 hw/intc/spapr_xive_kvm.c        | 827 ++++++++++++++++++++++++++++++++
 hw/intc/xics.c                  |  10 +-
 hw/intc/xics_kvm.c              | 113 ++++-
 hw/intc/xics_spapr.c            |   7 +
 hw/intc/xive.c                  |  44 +-
 hw/ppc/spapr_irq.c              | 140 ++++--
 target/ppc/kvm.c                |   7 +
 hw/intc/Makefile.objs           |   1 +
 hw/ppc/Kconfig                  |   5 +
 20 files changed, 1384 insertions(+), 65 deletions(-)
 create mode 100644 hw/intc/spapr_xive_kvm.c

-- 
2.20.1


Re: [Qemu-devel] [PATCH v4 00/14] spapr: add KVM support to the XIVE interrupt mode
Posted by David Gibson 4 years, 11 months ago
On Mon, May 13, 2019 at 10:42:31AM +0200, Cédric Le Goater wrote:
> Hello,
> 
> This is the v4 of the QEMU/KVM patchset.
> 
> 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.

Ok, I've applied this to my tree, and I'm prepping for a pull request
right now.

> 
> 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
> 
> Thanks,
> 
> C.
> 
> Changes since v3:
> 
>  - updates of the kvm headers are synced with commit 0caecf5b0019
>    (kvm-ppc-next-5.2-1) in branch kvm-ppc-next. will conflict with
>    kvm-arm.   
>  - added usage of xive_end_qaddr() helper
>  - removed KVM_DESTROY_DEVICE control. KVM device is destroyed when
>    the fd is closed.
>  - update in kvmppc_xive_source_reset_one()
>  - introduced a 'init' boolean under ICSState
>  - removed extra spapr_irq_init_device() in spapr_irq_init_xive() 
>  - reworked slightly the code sequence in xics_kvm_init() creating the
>    presenters and connecting them to the KVM XICS device.
> 
> 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 (14):
>   linux-headers: update linux headers to kvm-ppc-next-5.2-1
>   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
>   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: introduce a spapr_irq_init_device() helper
>   spapr/irq: initialize the IRQ device only once
>   ppc/xics: fix irq priority in ics_set_irq_type()
>   spapr/irq: add KVM support to the 'dual' machine
> 
>  include/hw/ppc/spapr_irq.h      |   2 +
>  include/hw/ppc/spapr_xive.h     |  39 ++
>  include/hw/ppc/xics.h           |   1 +
>  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       |   3 +
>  target/ppc/kvm_ppc.h            |   6 +
>  hw/core/sysbus.c                |  10 +
>  hw/intc/spapr_xive.c            | 172 ++++++-
>  hw/intc/spapr_xive_kvm.c        | 827 ++++++++++++++++++++++++++++++++
>  hw/intc/xics.c                  |  10 +-
>  hw/intc/xics_kvm.c              | 113 ++++-
>  hw/intc/xics_spapr.c            |   7 +
>  hw/intc/xive.c                  |  44 +-
>  hw/ppc/spapr_irq.c              | 140 ++++--
>  target/ppc/kvm.c                |   7 +
>  hw/intc/Makefile.objs           |   1 +
>  hw/ppc/Kconfig                  |   5 +
>  20 files changed, 1384 insertions(+), 65 deletions(-)
>  create mode 100644 hw/intc/spapr_xive_kvm.c
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson