[PULL 00/37] KVM/ARM Changes for v4.12 - Round 2

Christoffer Dall
2017-05-09T10:44:29Z

Hi Paolo and Radim,

Here is a second round of KVM/ARM Changes for v4.12. I only just put
these changes in kvmarm/next, but we've tested them pretty thoroughly.

I know it's late in the merge window, but if we can still get them into
v4.12 that would be good as the ITS save/restore impedes migration on
GICv3 ARMv8 server systems.

The changes include:
- A fix related to the 32-bit idmap stub
- A fix to the bitmask used to deode the operands of an AArch32 CP
instruction
- We have moved the files shared between arch/arm/kvm and
arch/arm64/kvm to virt/kvm/arm
- We add support for saving/restoring the virtual ITS state to
userspace

The following changes since commit 1edb632133efb6226b6bef3e7d9fa8c7134ac4e2:

ARM: KVM: Fix idmap stub entry when running Thumb-2 code (2017-04-20 20:17:57 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvm-arm-for-v4.12-round2

for you to fetch changes up to a2b19e6e2d4bb662a64799541c144fd94f8fb024:

KVM: arm/arm64: vgic-its: Cleanup after failed ITT restore (2017-05-09 12:19:46 +0200)

Thanks,
-Christoffer

Christoffer Dall (11):
KVM: arm/arm64: Move shared files to virt/kvm/arm
KVM: arm/arm64: Clarification and relaxation to ITS save/restore ABI
KVM: arm/arm64: vgic: Rename kvm_vgic_vcpu_init to
kvm_vgic_vcpu_enable
KVM: Add kvm_vcpu_get_idx to get vcpu index in kvm->vcpus
KVM: arm/arm64: Refactor vgic_register_redist_iodevs
KVM: arm/arm64: Make vgic_v3_check_base more broadly usable
KVM: arm/arm64: Slightly rework kvm_vgic_addr
KVM: arm/arm64: Register iodevs when setting redist base and creating
VCPUs
KVM: arm/arm64: Register ITS iodev when setting base address
KVM: arm/arm64: Don't call map_resources when restoring ITS tables
KVM: arm/arm64: vgic-its: Cleanup after failed ITT restore

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 (2):
arm64: KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses
KVM: arm/arm64: Get rid of its->initialized field

Documentation/virtual/kvm/devices/arm-vgic-its.txt | 121 ++
Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 6 +
arch/arm/include/uapi/asm/kvm.h | 6 +-
arch/arm/kvm/Makefile | 7 +-
arch/arm/kvm/trace.h | 247 ----
arch/arm64/include/asm/kvm_emulate.h | 6 +
arch/arm64/include/uapi/asm/kvm.h | 6 +-
arch/arm64/kvm/Makefile | 5 +-
arch/arm64/kvm/sys_regs.c | 8 +-
include/kvm/arm_vgic.h | 5 +-
include/linux/irqchip/arm-gic-v3.h | 14 +
include/linux/kvm_host.h | 11 +
{arch/arm/kvm => virt/kvm/arm}/arm.c | 2 +-
{arch/arm/kvm => virt/kvm/arm}/mmio.c | 0
{arch/arm/kvm => virt/kvm/arm}/mmu.c | 0
{arch/arm/kvm => virt/kvm/arm}/perf.c | 0
{arch/arm/kvm => virt/kvm/arm}/psci.c | 0
virt/kvm/arm/trace.h | 246 +++-
virt/kvm/arm/vgic/trace.h | 37 +
virt/kvm/arm/vgic/vgic-init.c | 25 +-
virt/kvm/arm/vgic/vgic-its.c | 1234 +++++++++++++++++---
virt/kvm/arm/vgic/vgic-kvm-device.c | 53 +-
virt/kvm/arm/vgic/vgic-mmio-v3.c | 147 ++-
virt/kvm/arm/vgic/vgic-mmio.c | 11 +-
virt/kvm/arm/vgic/vgic-mmio.h | 14 +-
virt/kvm/arm/vgic/vgic-v3.c | 128 +-
virt/kvm/arm/vgic/vgic.c | 2 +-
virt/kvm/arm/vgic/vgic.h | 33 +-
28 files changed, 1837 insertions(+), 537 deletions(-)
rename {arch/arm/kvm => virt/kvm/arm}/arm.c (99%)
rename {arch/arm/kvm => virt/kvm/arm}/mmio.c (100%)
rename {arch/arm/kvm => virt/kvm/arm}/mmu.c (100%)
rename {arch/arm/kvm => virt/kvm/arm}/perf.c (100%)
rename {arch/arm/kvm => virt/kvm/arm}/psci.c (100%)
create mode 100644 virt/kvm/arm/vgic/trace.h

--
2.9.0