[PULL 00/50] KVM/ARM Changes for v4.9

Christoffer Dall christoffer.dall at linaro.org
Tue Sep 27 11:05:08 PDT 2016


Hi Paolo and Radim,

Here are the KVM/ARM Changes for v4.9. They include:

 - Various cleanups and removal of redundant code
 - Two important fixes for not using an in-kernel irqchip
 - A bit of optimizations
 - Handle SError exceptions and present them to guests if appropriate
 - Proxying of GICV access at EL2 if guest mappings are unsafe
 - GICv3 on AArch32 on ARMv8
 - Preparations for GICv3 save/restore, including ABI docs


The following changes since commit 9ac7e3e815060efdc86b6d12448200e3c3597e01:

  KVM: nVMX: expose INS/OUTS information support (2016-09-07 19:34:30 +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.9

for you to fetch changes up to 0099b7701f5296a758d9e6b945ec96f96847cc2f:

  KVM: arm/arm64: vgic: Don't flush/sync without a working vgic (2016-09-27 18:57:35 +0200)

Thanks,
-Christoffer

---

Christoffer Dall (6):
      KVM: arm/arm64: Add VGICv3 save/restore API documentation
      KVM: arm/arm64: Factor out vgic_attr_regs_access functionality
      KVM: arm/arm64: Rename vgic_attr_regs_access to vgic_attr_regs_access_v2
      KVM: arm/arm64: Get rid of exported aliases to static functions
      KVM: arm64: Require in-kernel irqchip for PMU support
      KVM: arm/arm64: vgic: Don't flush/sync without a working vgic

Marc Zyngier (28):
      KVM: arm: vgic: Drop build compatibility hack for older kernel versions
      arm64: KVM: Move kvm_vcpu_get_condition out of emulate.c
      arm64: KVM: Move the AArch32 conditional execution to common code
      arm: KVM: Use common AArch32 conditional execution code
      arm64: KVM: Make kvm_skip_instr32 available to HYP
      arm64: KVM: vgic-v2: Add the GICV emulation infrastructure
      arm64: KVM: vgic-v2: Add GICV access from HYP
      arm64: KVM: vgic-v2: Enable GICV access from HYP if access from guest is unsafe
      arm64: KVM: Rename HCR_VA to HCR_VSE
      arm64: KVM: Preserve pending vSError in world switch
      arm64: KVM: Add Virtual Abort injection helper
      arm64: KVM: Add exception code to report EL1 asynchronous aborts
      arm64: KVM: Add EL1 async abort handler
      arm64: KVM: Route asynchronous aborts
      arm64: KVM: Allow an exit code to be tagged with an SError
      arm64: KVM: Inject a Virtual SError if it was pending
      arm64: KVM: Handle async aborts delivered while at EL2
      arm: KVM: Preserve pending Virtual Abort in world switch
      arm: KVM: Add Virtual Abort injection helper
      arm: KVM: Add HYP async abort handler
      arm: KVM: Allow an exit code to be tagged with a Virtual Abort
      arm: KVM: Handle async aborts delivered while at HYP
      arm: KVM: Inject a Virtual Abort if it was pending
      arm: KVM: Drop unreachable HYP abort handlers
      arm/arm64: KVM: Inject virtual abort when guest exits on external abort
      arm/arm64: KVM: Remove external abort test from MMIO handling
      arm64: KVM: Inject a vSerror if detecting a bad GICV access at EL2
      ARM: gic-v3: Work around definition of gic_write_bpr1

Mark Rutland (2):
      arm/kvm: excise redundant cache maintenance
      arm64/kvm: remove unused stub functions

Paolo Bonzini (1):
      KVM: ARM: cleanup kvm_timer_hyp_init

Shanker Donthineni (1):
      arm64: KVM: Optimize __guest_enter/exit() to save a few instructions

Vladimir Murzin (12):
      arm64: KVM: VHE: reset PSTATE.PAN on entry to EL2
      arm64: KVM: Use static keys for selecting the GIC backend
      arm64: KVM: Move GIC accessors to arch_gicv3.h
      arm64: KVM: Move vgic-v3 save/restore to virt/kvm/arm/hyp
      KVM: arm64: vgic-its: Introduce config option to guard ITS specific code
      KVM: arm: vgic: Fix compiler warnings when built for 32-bit
      KVM: arm: vgic: Support 64-bit data manipulation on 32-bit host systems
      ARM: Introduce MPIDR_LEVEL_SHIFT macro
      ARM: Move system register accessors to asm/cp15.h
      ARM: gic-v3: Introduce 32-to-64-bit mappings for GICv3 cpu registers
      ARM: KVM: Support vgic-v3
      arm64: KVM: Remove duplicating init code for setting VMID

 Documentation/virtual/kvm/devices/arm-vgic-its.txt |  38 ++++
 Documentation/virtual/kvm/devices/arm-vgic-v3.txt  | 206 +++++++++++++++++++++
 Documentation/virtual/kvm/devices/arm-vgic.txt     |  52 ++----
 Documentation/virtual/kvm/devices/vcpu.txt         |   4 +-
 arch/arm/include/asm/arch_gicv3.h                  | 100 ++++++++--
 arch/arm/include/asm/cp15.h                        |  15 ++
 arch/arm/include/asm/cputype.h                     |   1 +
 arch/arm/include/asm/kvm_asm.h                     |   7 +
 arch/arm/include/asm/kvm_emulate.h                 |  35 +++-
 arch/arm/include/asm/kvm_host.h                    |   5 +
 arch/arm/include/asm/kvm_hyp.h                     |  18 +-
 arch/arm/include/asm/kvm_mmu.h                     |  28 +--
 arch/arm/include/uapi/asm/kvm.h                    |   7 +
 arch/arm/kvm/Makefile                              |   3 +
 arch/arm/kvm/arm.c                                 |  12 +-
 arch/arm/kvm/coproc.c                              |  35 ++++
 arch/arm/kvm/emulate.c                             | 111 ++---------
 arch/arm/kvm/handle_exit.c                         |  49 +++--
 arch/arm/kvm/hyp/Makefile                          |   1 +
 arch/arm/kvm/hyp/entry.S                           |  31 ++++
 arch/arm/kvm/hyp/hyp-entry.S                       |  16 +-
 arch/arm/kvm/hyp/switch.c                          |  25 ++-
 arch/arm/kvm/hyp/tlb.c                             |  15 +-
 arch/arm/kvm/mmio.c                                |   6 -
 arch/arm/kvm/mmu.c                                 |   7 +-
 arch/arm64/include/asm/arch_gicv3.h                |  13 ++
 arch/arm64/include/asm/kvm_arm.h                   |   4 +-
 arch/arm64/include/asm/kvm_asm.h                   |   9 +-
 arch/arm64/include/asm/kvm_emulate.h               |  11 ++
 arch/arm64/include/asm/kvm_hyp.h                   |   1 +
 arch/arm64/include/asm/kvm_mmu.h                   |   6 -
 arch/arm64/kvm/Kconfig                             |   4 +-
 arch/arm64/kvm/Makefile                            |   3 +-
 arch/arm64/kvm/handle_exit.c                       |  23 +++
 arch/arm64/kvm/hyp/Makefile                        |   2 +-
 arch/arm64/kvm/hyp/debug-sr.c                      |   4 +-
 arch/arm64/kvm/hyp/entry.S                         | 128 ++++++++-----
 arch/arm64/kvm/hyp/hyp-entry.S                     |  73 +++++---
 arch/arm64/kvm/hyp/switch.c                        |  84 +++++++--
 arch/arm64/kvm/hyp/tlb.c                           |  13 +-
 arch/arm64/kvm/inject_fault.c                      |  12 ++
 include/kvm/arm_vgic.h                             |  18 +-
 arch/arm64/kvm/emulate.c => virt/kvm/arm/aarch32.c |  25 +--
 virt/kvm/arm/arch_timer.c                          |   6 +-
 virt/kvm/arm/hyp/vgic-v2-sr.c                      |  57 ++++++
 {arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c  |  17 +-
 virt/kvm/arm/pmu.c                                 |   8 +
 virt/kvm/arm/vgic/vgic-init.c                      |   4 +
 virt/kvm/arm/vgic/vgic-irqfd.c                     |   6 -
 virt/kvm/arm/vgic/vgic-kvm-device.c                | 133 ++++++++-----
 virt/kvm/arm/vgic/vgic-mmio-v3.c                   |   8 +-
 virt/kvm/arm/vgic/vgic-mmio.c                      |   2 -
 virt/kvm/arm/vgic/vgic-mmio.h                      |   4 +-
 virt/kvm/arm/vgic/vgic-v2.c                        |  71 ++++---
 virt/kvm/arm/vgic/vgic.c                           |   8 +-
 virt/kvm/arm/vgic/vgic.h                           |  54 +-----
 56 files changed, 1076 insertions(+), 562 deletions(-)
 create mode 100644 Documentation/virtual/kvm/devices/arm-vgic-its.txt
 create mode 100644 Documentation/virtual/kvm/devices/arm-vgic-v3.txt
 rename arch/arm64/kvm/emulate.c => virt/kvm/arm/aarch32.c (90%)
 rename {arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c (94%)



More information about the linux-arm-kernel mailing list