mbox series

[GIT,PULL] KVM/arm64 updates for 5.18

Message ID 20220318143629.863625-1-maz@kernel.org
State New
Headers show
Series [GIT,PULL] KVM/arm64 updates for 5.18 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.18

Message

Marc Zyngier March 18, 2022, 2:36 p.m. UTC
Hi Paolo,

Here's the bulk of KVM/arm64 updates for 5.18. For this time, a bunch
of work has gone into the MMU side of things with a new VMID allocator
and better scalability of the MM locking when tracking dirty pages,
better debug emulation, new PSCI version, more selftests, and the
usual bunch of cleanups all over the map.

Please pull,

	M.

The following changes since commit dfd42facf1e4ada021b939b4e19c935dcdd55566:

  Linux 5.17-rc3 (2022-02-06 12:20:50 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.18

for you to fetch changes up to 21ea457842759a236eefed2cfaa8cc7e5dc967a0:

  KVM: arm64: fix typos in comments (2022-03-18 14:04:15 +0000)

----------------------------------------------------------------
KVM/arm64 updates for 5.18

- Proper emulation of the OSLock feature of the debug architecture

- Scalibility improvements for the MMU lock when dirty logging is on

- New VMID allocator, which will eventually help with SVA in VMs

- Better support for PMUs in heterogenous systems

- PSCI 1.1 support, enabling support for SYSTEM_RESET2

- Implement CONFIG_DEBUG_LIST at EL2

- Make CONFIG_ARM64_ERRATUM_2077057 default y

- Reduce the overhead of VM exit when no interrupt is pending

- Remove traces of 32bit ARM host support from the documentation

- Updated vgic selftests

- Various cleanups, doc updates and spelling fixes

----------------------------------------------------------------
Alexandru Elisei (4):
      perf: Fix wrong name in comment for struct perf_cpu_context
      KVM: arm64: Keep a list of probed PMUs
      KVM: arm64: Add KVM_ARM_VCPU_PMU_V3_SET_PMU attribute
      KVM: arm64: Refuse to run VCPU if the PMU doesn't match the physical CPU

Changcheng Deng (1):
      KVM: arm64: Remove unneeded semicolons

Jing Zhang (3):
      KVM: arm64: Use read/write spin lock for MMU protection
      KVM: arm64: Add fast path to handle permission relaxation during dirty logging
      KVM: selftests: Add vgic initialization for dirty log perf test for ARM

Julia Lawall (1):
      KVM: arm64: fix typos in comments

Julien Grall (1):
      KVM: arm64: Align the VMID allocation with the arm64 ASID

Keir Fraser (1):
      KVM: arm64: pkvm: Implement CONFIG_DEBUG_LIST at EL2

Marc Zyngier (14):
      Merge branch kvm-arm64/oslock into kvmarm-master/next
      Merge branch kvm-arm64/mmu-rwlock into kvmarm-master/next
      Merge branch kvm-arm64/fpsimd-doc into kvmarm-master/next
      Merge branch kvm-arm64/vmid-allocator into kvmarm-master/next
      Merge branch kvm-arm64/selftest/vgic-5.18 into kvmarm-master/next
      Merge branch kvm-arm64/misc-5.18 into kvmarm-master/next
      KVM: arm64: Do not change the PMU event filter after a VCPU has run
      KVM: arm64: Keep a per-VM pointer to the default PMU
      Merge branch kvm-arm64/pmu-bl into kvmarm-master/next
      Merge branch kvm-arm64/psci-1.1 into kvmarm-master/next
      KVM: arm64: Only open the interrupt window on exit due to an interrupt
      Merge branch kvm-arm64/misc-5.18 into kvmarm-master/next
      Merge branch kvm-arm64/psci-1.1 into kvmarm-master/next
      KVM: arm64: Generalise VM features into a set of flags

Mark Brown (4):
      KVM: arm64: Add comments for context flush and sync callbacks
      KVM: arm64: Add some more comments in kvm_hyp_handle_fpsimd()
      arm64/fpsimd: Clarify the purpose of using last in fpsimd_save()
      KVM: arm64: Enable Cortex-A510 erratum 2077057 by default

Oliver Upton (8):
      KVM: arm64: Correctly treat writes to OSLSR_EL1 as undefined
      KVM: arm64: Stash OSLSR_EL1 in the cpu context
      KVM: arm64: Allow guest to set the OSLK bit
      KVM: arm64: Emulate the OS Lock
      selftests: KVM: Add OSLSR_EL1 to the list of blessed regs
      selftests: KVM: Test OS lock behavior
      KVM: arm64: Drop unused param from kvm_psci_version()
      Documentation: KVM: Update documentation to indicate KVM is arm64-only

Ricardo Koller (5):
      kvm: selftests: aarch64: fix assert in gicv3_access_reg
      kvm: selftests: aarch64: pass vgic_irq guest args as a pointer
      kvm: selftests: aarch64: fix the failure check in kvm_set_gsi_routing_irqchip_check
      kvm: selftests: aarch64: fix some vgic related comments
      kvm: selftests: aarch64: use a tighter assert in vgic_poke_irq()

Shameer Kolothum (3):
      KVM: arm64: Introduce a new VMID allocator for KVM
      KVM: arm64: Make VMID bits accessible outside of allocator
      KVM: arm64: Make active_vmids invalid on vCPU schedule out

Will Deacon (4):
      KVM: arm64: Bump guest PSCI version to 1.1
      KVM: arm64: Expose PSCI SYSTEM_RESET2 call to the guest
      KVM: arm64: Indicate SYSTEM_RESET2 in kvm_run::system_event flags field
      KVM: arm64: Really propagate PSCI SYSTEM_RESET2 arguments to userspace

 Documentation/virt/kvm/api.rst                     |  92 +++++-----
 Documentation/virt/kvm/devices/vcpu.rst            |  36 +++-
 arch/arm64/Kconfig                                 |   1 +
 arch/arm64/include/asm/kvm_host.h                  |  45 ++++-
 arch/arm64/include/asm/kvm_mmu.h                   |   4 +-
 arch/arm64/include/asm/sysreg.h                    |   8 +
 arch/arm64/include/uapi/asm/kvm.h                  |  11 ++
 arch/arm64/kernel/fpsimd.c                         |   8 +-
 arch/arm64/kernel/image-vars.h                     |   3 +
 arch/arm64/kvm/Makefile                            |   2 +-
 arch/arm64/kvm/arm.c                               | 142 +++++----------
 arch/arm64/kvm/debug.c                             |  26 ++-
 arch/arm64/kvm/fpsimd.c                            |  14 +-
 arch/arm64/kvm/guest.c                             |   2 +-
 arch/arm64/kvm/handle_exit.c                       |   2 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |   4 +
 arch/arm64/kvm/hyp/nvhe/Makefile                   |   3 +-
 arch/arm64/kvm/hyp/nvhe/list_debug.c               |  54 ++++++
 arch/arm64/kvm/hyp/nvhe/mem_protect.c              |   3 +-
 arch/arm64/kvm/hyp/nvhe/page_alloc.c               |   4 +-
 arch/arm64/kvm/hyp/nvhe/stub.c                     |  22 ---
 arch/arm64/kvm/mmio.c                              |   3 +-
 arch/arm64/kvm/mmu.c                               |  52 +++---
 arch/arm64/kvm/pmu-emul.c                          | 141 +++++++++++----
 arch/arm64/kvm/psci.c                              |  66 +++++--
 arch/arm64/kvm/sys_regs.c                          |  74 ++++++--
 arch/arm64/kvm/vgic/vgic.c                         |   2 +-
 arch/arm64/kvm/vmid.c                              | 196 +++++++++++++++++++++
 include/kvm/arm_pmu.h                              |   5 +
 include/kvm/arm_psci.h                             |   9 +-
 include/linux/perf_event.h                         |   2 +-
 include/uapi/linux/psci.h                          |   4 +
 tools/arch/arm64/include/uapi/asm/kvm.h            |   1 +
 .../selftests/kvm/aarch64/debug-exceptions.c       |  58 +++++-
 tools/testing/selftests/kvm/aarch64/get-reg-list.c |   1 +
 tools/testing/selftests/kvm/aarch64/vgic_irq.c     |  45 +++--
 tools/testing/selftests/kvm/dirty_log_perf_test.c  |  10 ++
 tools/testing/selftests/kvm/lib/aarch64/gic_v3.c   |  12 +-
 tools/testing/selftests/kvm/lib/aarch64/vgic.c     |   9 +-
 39 files changed, 865 insertions(+), 311 deletions(-)
 create mode 100644 arch/arm64/kvm/hyp/nvhe/list_debug.c
 delete mode 100644 arch/arm64/kvm/hyp/nvhe/stub.c
 create mode 100644 arch/arm64/kvm/vmid.c