[PULL][SRU Zesty] ARM GICv3 ITS save/restore

dann frazier dann.frazier at canonical.com
Fri Nov 10 17:49:34 UTC 2017


BugLink: https://bugs.launchpad.net/bugs/1710019

This series is necessary to enable KVM live migration for modern arm64
servers. All patches are clean cherry picks except for one trivial
offset fix (noted in the commit). This feature landed upstream back in
4.12, but we've been waiting on a bug fix that just landed before
submitting (the last patch).

Patches are needed for zesty's QEMU as well, which are under review by
the server team (see the bug) - however, even without the zesty QEMU
update, these changes are useful for those deploying OpenStack w/ the
hwe kernel + cloud archive.

Tested on a Cavium ThunderX CRB and a Qualcomm Centriq board.

The following changes since commit fe5e5001b417612723b174cbe3d1e9d5755b204f:

  UBUNTU: Ubuntu-4.10.0-40.44 (2017-11-09 15:28:44 +0100)

are available in the Git repository at:

  git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux lp1710019-z

for you to fetch changes up to 082d90155b3d8da957741c01a7c5ea1f2398fce4:

  KVM: arm/arm64: vgic-its: Fix return value for device table restore
(2017-11-10 10:29:06 -0700)

----------------------------------------------------------------
Christoffer Dall (1):
      KVM: arm/arm64: Remove struct vgic_irq pending field

Eric Auger (24):
      KVM: arm/arm64: Add ITS save/restore API documentation
      KVM: arm/arm64: Add GICV3 pending table save API documentation
      KVM: arm/arm64: vgic-its: rename itte into ite
      arm/arm64: vgic: turn vgic_find_mmio_region into public
      KVM: arm64: vgic-its: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group
      KVM: arm/arm64: vgic: expose (un)lock_all_vcpus
      KVM: arm64: vgic-its: Implement vgic_its_has_attr_regs and
attr_regs_access
      KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_creadr
      KVM: arm64: vgic-its: Introduce migration ABI infrastructure
      KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_iidr
      KVM: arm64: vgic-its: Interpret MAPD Size field and check related errors
      KVM: arm64: vgic-its: Interpret MAPD ITT_addr field
      KVM: arm64: vgic-its: Check the device id matches TYPER DEVBITS range
      KVM: arm64: vgic-v3: vgic_v3_lpi_sync_pending_status
      KVM: arm64: vgic-its: Read config and pending bit in add_lpi()
      KVM: arm64: vgic-its: KVM_DEV_ARM_ITS_SAVE/RESTORE_TABLES
      KVM: arm64: vgic-its: vgic_its_alloc_ite/device
      KVM: arm64: vgic-its: Add infrastructure for table lookup
      KVM: arm64: vgic-its: Collection table save/restore
      KVM: arm64: vgic-its: vgic_its_check_id returns the entry's GPA
      KVM: arm64: vgic-its: Device table save/restore
      KVM: arm64: vgic-its: ITT save and restore
      KVM: arm64: vgic-its: Fix pending table sync
      KVM: arm64: vgic-v3: KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES

Marc Zyngier (1):
      KVM: arm/arm64: vgic-v3: Don't pretend to support IRQ/FIQ bypass

Vijaya Kumar K (7):
      KVM: arm/arm64: vgic: Implement support for userspace access
      KVM: arm/arm64: vgic: Add distributor and redistributor access
      KVM: arm/arm64: vgic: Introduce find_reg_by_id()
      KVM: arm/arm64: vgic: Introduce VENG0 and VENG1 fields to vmcr struct
      KVM: arm/arm64: vgic: Implement VGICv3 CPU interface access
      KVM: arm/arm64: vgic: Implement KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO ioctl
      KVM: arm/arm64: Documentation: Update arm-vgic-v3.txt

wanghaibin (1):
      KVM: arm/arm64: vgic-its: Fix return value for device table restore

 Documentation/virtual/kvm/devices/arm-vgic-its.txt |  120 ++
 Documentation/virtual/kvm/devices/arm-vgic-v3.txt  |   17 +-
 arch/arm/include/uapi/asm/kvm.h                    |   19 +-
 arch/arm/kvm/Makefile                              |    4 +-
 arch/arm/kvm/vgic-v3-coproc.c                      |   35 +
 arch/arm64/include/uapi/asm/kvm.h                  |   19 +-
 arch/arm64/kvm/Makefile                            |    3 +-
 arch/arm64/kvm/sys_regs.c                          |   27 +-
 arch/arm64/kvm/sys_regs.h                          |    4 +
 arch/arm64/kvm/vgic-sys-reg-v3.c                   |  346 ++++++
 include/kvm/arm_vgic.h                             |   16 +-
 include/linux/irqchip/arm-gic-v3.h                 |   18 +-
 virt/kvm/arm/vgic/vgic-its.c                       | 1176 +++++++++++++++++---
 virt/kvm/arm/vgic/vgic-kvm-device.c                |  255 ++++-
 virt/kvm/arm/vgic/vgic-mmio-v2.c                   |   87 +-
 virt/kvm/arm/vgic/vgic-mmio-v3.c                   |  203 +++-
 virt/kvm/arm/vgic/vgic-mmio.c                      |  178 ++-
 virt/kvm/arm/vgic/vgic-mmio.h                      |   34 +
 virt/kvm/arm/vgic/vgic-v2.c                        |   12 +-
 virt/kvm/arm/vgic/vgic-v3.c                        |  140 ++-
 virt/kvm/arm/vgic/vgic.c                           |   16 +-
 virt/kvm/arm/vgic/vgic.h                           |  108 +-
 22 files changed, 2531 insertions(+), 306 deletions(-)
 create mode 100644 arch/arm/kvm/vgic-v3-coproc.c
 create mode 100644 arch/arm64/kvm/vgic-sys-reg-v3.c




More information about the kernel-team mailing list