Re: [GIT PULL] KVM/arm64 updates for 5.19

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/19/22 11:27, Marc Zyngier wrote:
Hi Paolo,

Here's the bulk of the KVM/arm64 updates for 5.19. Major features are
guard pages for the EL2 stacks, save/restore of the guest-visible
hypercall configuration and PSCI suspend support. Further details in
the tag description.

Note that this PR contains a shared branch with the arm64 tree
containing the SME patches to resolve conflicts with the WFxT support
branch.

Pulled, thanks. I solved the conflict for KVM_EXIT_SYSTEM_EVENT values in your favor.

Paolo

Please pull,

	M.

The following changes since commit 672c0c5173427e6b3e2a9bbb7be51ceeec78093a:

   Linux 5.18-rc5 (2022-05-01 13:57:58 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 5c0ad551e9aa6188f2bda0977c1cb6768a2b74ef:

   Merge branch kvm-arm64/its-save-restore-fixes-5.19 into kvmarm-master/next (2022-05-16 17:48:36 +0100)

----------------------------------------------------------------
KVM/arm64 updates for 5.19

- Add support for the ARMv8.6 WFxT extension

- Guard pages for the EL2 stacks

- Trap and emulate AArch32 ID registers to hide unsupported features

- Ability to select and save/restore the set of hypercalls exposed
   to the guest

- Support for PSCI-initiated suspend in collaboration with userspace

- GICv3 register-based LPI invalidation support

- Move host PMU event merging into the vcpu data structure

- GICv3 ITS save/restore fixes

- The usual set of small-scale cleanups and fixes

----------------------------------------------------------------
Alexandru Elisei (3):
       KVM: arm64: Hide AArch32 PMU registers when not available
       KVM: arm64: Don't BUG_ON() if emulated register table is unsorted
       KVM: arm64: Print emulated register table name when it is unsorted

Ard Biesheuvel (1):
       KVM: arm64: Avoid unnecessary absolute addressing via literals

Fuad Tabba (4):
       KVM: arm64: Wrapper for getting pmu_events
       KVM: arm64: Repack struct kvm_pmu to reduce size
       KVM: arm64: Pass pmu events to hyp via vcpu
       KVM: arm64: Reenable pmu in Protected Mode

Kalesh Singh (6):
       KVM: arm64: Introduce hyp_alloc_private_va_range()
       KVM: arm64: Introduce pkvm_alloc_private_va_range()
       KVM: arm64: Add guard pages for KVM nVHE hypervisor stack
       KVM: arm64: Add guard pages for pKVM (protected nVHE) hypervisor stack
       KVM: arm64: Detect and handle hypervisor stack overflows
       KVM: arm64: Symbolize the nVHE HYP addresses

Marc Zyngier (30):
       arm64: Expand ESR_ELx_WFx_ISS_TI to match its ARMv8.7 definition
       arm64: Add RV and RN fields for ESR_ELx_WFx_ISS
       arm64: Add HWCAP advertising FEAT_WFXT
       arm64: Add wfet()/wfit() helpers
       arm64: Use WFxT for __delay() when possible
       KVM: arm64: Simplify kvm_cpu_has_pending_timer()
       KVM: arm64: Introduce kvm_counter_compute_delta() helper
       KVM: arm64: Handle blocking WFIT instruction
       KVM: arm64: Offer early resume for non-blocking WFxT instructions
       KVM: arm64: Expose the WFXT feature to guests
       KVM: arm64: Fix new instances of 32bit ESRs
       Merge remote-tracking branch 'arm64/for-next/sme' into kvmarm-master/next
       Merge branch kvm-arm64/wfxt into kvmarm-master/next
       Merge branch kvm-arm64/hyp-stack-guard into kvmarm-master/next
       Merge branch kvm-arm64/aarch32-idreg-trap into kvmarm-master/next
       Documentation: Fix index.rst after psci.rst renaming
       irqchip/gic-v3: Exposes bit values for GICR_CTLR.{IR, CES}
       KVM: arm64: vgic-v3: Expose GICR_CTLR.RWP when disabling LPIs
       KVM: arm64: vgic-v3: Implement MMIO-based LPI invalidation
       KVM: arm64: vgic-v3: Advertise GICR_CTLR.{IR, CES} as a new GICD_IIDR revision
       KVM: arm64: vgic-v3: List M1 Pro/Max as requiring the SEIS workaround
       KVM: arm64: Hide KVM_REG_ARM_*_BMAP_BIT_COUNT from userspace
       KVM: arm64: pmu: Restore compilation when HW_PERF_EVENTS isn't selected
       KVM: arm64: Fix hypercall bitmap writeback when vcpus have already run
       Merge branch kvm-arm64/hcall-selection into kvmarm-master/next
       Merge branch kvm-arm64/psci-suspend into kvmarm-master/next
       Merge branch kvm-arm64/vgic-invlpir into kvmarm-master/next
       Merge branch kvm-arm64/per-vcpu-host-pmu-data into kvmarm-master/next
       Merge branch kvm-arm64/misc-5.19 into kvmarm-master/next
       Merge branch kvm-arm64/its-save-restore-fixes-5.19 into kvmarm-master/next

Mark Brown (25):
       arm64/sme: Provide ABI documentation for SME
       arm64/sme: System register and exception syndrome definitions
       arm64/sme: Manually encode SME instructions
       arm64/sme: Early CPU setup for SME
       arm64/sme: Basic enumeration support
       arm64/sme: Identify supported SME vector lengths at boot
       arm64/sme: Implement sysctl to set the default vector length
       arm64/sme: Implement vector length configuration prctl()s
       arm64/sme: Implement support for TPIDR2
       arm64/sme: Implement SVCR context switching
       arm64/sme: Implement streaming SVE context switching
       arm64/sme: Implement ZA context switching
       arm64/sme: Implement traps and syscall handling for SME
       arm64/sme: Disable ZA and streaming mode when handling signals
       arm64/sme: Implement streaming SVE signal handling
       arm64/sme: Implement ZA signal handling
       arm64/sme: Implement ptrace support for streaming mode SVE registers
       arm64/sme: Add ptrace support for ZA
       arm64/sme: Disable streaming mode and ZA when flushing CPU state
       arm64/sme: Save and restore streaming mode over EFI runtime calls
       KVM: arm64: Hide SME system registers from guests
       KVM: arm64: Trap SME usage in guest
       KVM: arm64: Handle SME host state when running guests
       arm64/sme: Provide Kconfig for SME
       arm64/sme: Add ID_AA64SMFR0_EL1 to __read_sysreg_by_encoding()

Oliver Upton (21):
       KVM: arm64: Return a bool from emulate_cp()
       KVM: arm64: Don't write to Rt unless sys_reg emulation succeeds
       KVM: arm64: Wire up CP15 feature registers to their AArch64 equivalents
       KVM: arm64: Plumb cp10 ID traps through the AArch64 sysreg handler
       KVM: arm64: Start trapping ID registers for 32 bit guests
       selftests: KVM: Rename psci_cpu_on_test to psci_test
       selftests: KVM: Create helper for making SMCCC calls
       KVM: arm64: Don't depend on fallthrough to hide SYSTEM_RESET2
       KVM: arm64: Dedupe vCPU power off helpers
       KVM: arm64: Track vCPU power state using MP state values
       KVM: arm64: Rename the KVM_REQ_SLEEP handler
       KVM: arm64: Return a value from check_vcpu_requests()
       KVM: arm64: Add support for userspace to suspend a vCPU
       KVM: arm64: Implement PSCI SYSTEM_SUSPEND
       selftests: KVM: Rename psci_cpu_on_test to psci_test
       selftests: KVM: Create helper for making SMCCC calls
       selftests: KVM: Use KVM_SET_MP_STATE to power off vCPU in psci_test
       selftests: KVM: Refactor psci_test to make it amenable to new tests
       selftests: KVM: Test SYSTEM_SUSPEND PSCI call
       KVM: arm64: pkvm: Drop unnecessary FP/SIMD trap handler
       KVM: arm64: pkvm: Don't mask already zeroed FEAT_SVE

Raghavendra Rao Ananta (9):
       KVM: arm64: Factor out firmware register handling from psci.c
       KVM: arm64: Setup a framework for hypercall bitmap firmware registers
       KVM: arm64: Add standard hypervisor firmware register
       KVM: arm64: Add vendor hypervisor firmware register
       Docs: KVM: Rename psci.rst to hypercalls.rst
       Docs: KVM: Add doc for the bitmap firmware registers
       tools: Import ARM SMCCC definitions
       selftests: KVM: aarch64: Introduce hypercall ABI test
       selftests: KVM: aarch64: Add the bitmap firmware registers to get-reg-list

Randy Dunlap (1):
       KVM: arm64: nvhe: Eliminate kernel-doc warnings

Ricardo Koller (4):
       KVM: arm64: vgic: Check that new ITEs could be saved in guest memory
       KVM: arm64: vgic: Add more checks when restoring ITS tables
       KVM: arm64: vgic: Do not ignore vgic_its_restore_cte failures
       KVM: arm64: vgic: Undo work in failed ITS restores

Stephen Rothwell (1):
       Documentation: KVM: Fix title level for PSCI_SUSPEND

Wan Jiabing (1):
       arm64/sme: Fix NULL check after kzalloc

  Documentation/arm64/cpu-feature-registers.rst      |   2 +
  Documentation/arm64/elf_hwcaps.rst                 |  37 ++
  Documentation/arm64/index.rst                      |   1 +
  Documentation/arm64/sme.rst                        | 428 +++++++++++++++
  Documentation/arm64/sve.rst                        |  70 ++-
  Documentation/virt/kvm/api.rst                     |  94 +++-
  Documentation/virt/kvm/arm/hypercalls.rst          | 138 +++++
  Documentation/virt/kvm/arm/index.rst               |   2 +-
  Documentation/virt/kvm/arm/psci.rst                |  77 ---
  arch/arm64/Kconfig                                 |  11 +
  arch/arm64/include/asm/barrier.h                   |   4 +
  arch/arm64/include/asm/cpu.h                       |   4 +
  arch/arm64/include/asm/cpufeature.h                |  24 +
  arch/arm64/include/asm/cputype.h                   |   8 +
  arch/arm64/include/asm/el2_setup.h                 |  64 ++-
  arch/arm64/include/asm/esr.h                       |  21 +-
  arch/arm64/include/asm/exception.h                 |   1 +
  arch/arm64/include/asm/fpsimd.h                    | 123 ++++-
  arch/arm64/include/asm/fpsimdmacros.h              |  87 +++
  arch/arm64/include/asm/hwcap.h                     |   9 +
  arch/arm64/include/asm/kvm_arm.h                   |   4 +-
  arch/arm64/include/asm/kvm_asm.h                   |   1 +
  arch/arm64/include/asm/kvm_emulate.h               |   7 -
  arch/arm64/include/asm/kvm_host.h                  |  45 +-
  arch/arm64/include/asm/kvm_mmu.h                   |   3 +
  arch/arm64/include/asm/processor.h                 |  26 +-
  arch/arm64/include/asm/sysreg.h                    |  67 +++
  arch/arm64/include/asm/thread_info.h               |   2 +
  arch/arm64/include/uapi/asm/hwcap.h                |   9 +
  arch/arm64/include/uapi/asm/kvm.h                  |  34 ++
  arch/arm64/include/uapi/asm/ptrace.h               |  69 ++-
  arch/arm64/include/uapi/asm/sigcontext.h           |  55 +-
  arch/arm64/kernel/cpufeature.c                     | 120 +++++
  arch/arm64/kernel/cpuinfo.c                        |  14 +
  arch/arm64/kernel/entry-common.c                   |  11 +
  arch/arm64/kernel/entry-fpsimd.S                   |  36 ++
  arch/arm64/kernel/fpsimd.c                         | 585 +++++++++++++++++++--
  arch/arm64/kernel/process.c                        |  44 +-
  arch/arm64/kernel/ptrace.c                         | 358 +++++++++++--
  arch/arm64/kernel/signal.c                         | 188 ++++++-
  arch/arm64/kernel/syscall.c                        |  29 +-
  arch/arm64/kernel/traps.c                          |   1 +
  arch/arm64/kvm/Makefile                            |   4 +-
  arch/arm64/kvm/arch_timer.c                        |  47 +-
  arch/arm64/kvm/arm.c                               | 158 +++++-
  arch/arm64/kvm/fpsimd.c                            |  43 +-
  arch/arm64/kvm/guest.c                             |  10 +-
  arch/arm64/kvm/handle_exit.c                       |  49 +-
  arch/arm64/kvm/hyp/include/nvhe/mm.h               |   6 +-
  arch/arm64/kvm/hyp/nvhe/host.S                     |  32 +-
  arch/arm64/kvm/hyp/nvhe/hyp-main.c                 |  18 +-
  arch/arm64/kvm/hyp/nvhe/mm.c                       |  78 ++-
  arch/arm64/kvm/hyp/nvhe/setup.c                    |  31 +-
  arch/arm64/kvm/hyp/nvhe/switch.c                   |  87 +--
  arch/arm64/kvm/hyp/nvhe/sys_regs.c                 |   3 -
  arch/arm64/kvm/hyp/vhe/switch.c                    |  11 +-
  arch/arm64/kvm/hypercalls.c                        | 327 +++++++++++-
  arch/arm64/kvm/mmu.c                               |  68 ++-
  arch/arm64/kvm/pmu-emul.c                          |   3 +-
  arch/arm64/kvm/pmu.c                               |  40 +-
  arch/arm64/kvm/psci.c                              | 248 ++-------
  arch/arm64/kvm/sys_regs.c                          | 305 ++++++++---
  arch/arm64/kvm/sys_regs.h                          |   9 +-
  arch/arm64/kvm/vgic/vgic-init.c                    |   7 +-
  arch/arm64/kvm/vgic/vgic-its.c                     | 160 ++++--
  arch/arm64/kvm/vgic/vgic-mmio-v2.c                 |  18 +-
  arch/arm64/kvm/vgic/vgic-mmio-v3.c                 | 125 ++++-
  arch/arm64/kvm/vgic/vgic-v3.c                      |   4 +
  arch/arm64/kvm/vgic/vgic.h                         |  10 +
  arch/arm64/lib/delay.c                             |  12 +-
  arch/arm64/tools/cpucaps                           |   3 +
  include/kvm/arm_arch_timer.h                       |   2 -
  include/kvm/arm_hypercalls.h                       |   8 +
  include/kvm/arm_pmu.h                              |  34 +-
  include/kvm/arm_psci.h                             |   7 -
  include/kvm/arm_vgic.h                             |   8 +-
  include/linux/irqchip/arm-gic-v3.h                 |   2 +
  include/uapi/linux/elf.h                           |   2 +
  include/uapi/linux/kvm.h                           |   4 +
  include/uapi/linux/prctl.h                         |   9 +
  kernel/sys.c                                       |  12 +
  scripts/kallsyms.c                                 |   3 +-
  tools/include/linux/arm-smccc.h                    | 193 +++++++
  tools/testing/selftests/kvm/.gitignore             |   3 +-
  tools/testing/selftests/kvm/Makefile               |   3 +-
  tools/testing/selftests/kvm/aarch64/get-reg-list.c |   8 +
  tools/testing/selftests/kvm/aarch64/hypercalls.c   | 336 ++++++++++++
  .../selftests/kvm/aarch64/psci_cpu_on_test.c       | 121 -----
  tools/testing/selftests/kvm/aarch64/psci_test.c    | 213 ++++++++
  .../selftests/kvm/include/aarch64/processor.h      |  22 +
  .../testing/selftests/kvm/lib/aarch64/processor.c  |  25 +
  tools/testing/selftests/kvm/steal_time.c           |  13 +-
  92 files changed, 4949 insertions(+), 908 deletions(-)
  create mode 100644 Documentation/arm64/sme.rst
  create mode 100644 Documentation/virt/kvm/arm/hypercalls.rst
  delete mode 100644 Documentation/virt/kvm/arm/psci.rst
  create mode 100644 tools/include/linux/arm-smccc.h
  create mode 100644 tools/testing/selftests/kvm/aarch64/hypercalls.c
  delete mode 100644 tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c
  create mode 100644 tools/testing/selftests/kvm/aarch64/psci_test.c





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux