[GIT PULL] KVM/arm64 updates for 6.8

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

 



Hi Paolo,

Here's the set of KVM/arm64 updates for 6.8. The highlight this time
around is the LPA2 work by Ryan, bringing 52bit IPA/PA support to 4k
and 16k page sizes. Also of note is an extensive FGT rework by Fuad
and another set of NV patches, mostly focusing on supporting NV2.

The rest is a small set of fixes, mostly addressing vgic issues.

Note that this PR contains a branch shared with the arm64 tree (sysreg
definition updates), and that the LPA2 series is also shared with
arm64 to resolve some conflicts.

Please pull,

	M.

The following changes since commit 2cc14f52aeb78ce3f29677c2de1f06c0e91471ab:

  Linux 6.7-rc3 (2023-11-26 19:59:33 -0800)

are available in the Git repository at:

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

for you to fetch changes up to 040113fa32f27096f531c377001936e0d7964597:

  KVM: arm64: Add missing memory barriers when switching to pKVM's hyp pgd (2024-01-04 19:33:00 +0000)

----------------------------------------------------------------
KVM/arm64 updates for Linux 6.8

- LPA2 support, adding 52bit IPA/PA capability for 4kB and 16kB
  base granule sizes. Branch shared with the arm64 tree.

- Large Fine-Grained Trap rework, bringing some sanity to the
  feature, although there is more to come. This comes with
  a prefix branch shared with the arm64 tree.

- Some additional Nested Virtualization groundwork, mostly
  introducing the NV2 VNCR support and retargetting the NV
  support to that version of the architecture.

- A small set of vgic fixes and associated cleanups.

----------------------------------------------------------------
Anshuman Khandual (1):
      arm64/mm: Add FEAT_LPA2 specific ID_AA64MMFR0.TGRAN[2]

Ard Biesheuvel (1):
      KVM: arm64: Use helpers to classify exception types reported via ESR

Fuad Tabba (19):
      arm64/sysreg: Update HFGITR_EL2 definiton to DDI0601 2023-09
      arm64/sysreg: Add definition for HAFGRTR_EL2
      arm64/sysreg: Add missing Pauth_LR field definitions to ID_AA64ISAR1_EL1
      arm64/sysreg: Add missing ExtTrcBuff field definition to ID_AA64DFR0_EL1
      arm64/sysreg: Add missing system register definitions for FGT
      arm64/sysreg: Add missing system instruction definitions for FGT
      KVM: arm64: Explicitly trap unsupported HFGxTR_EL2 features
      KVM: arm64: Add missing HFGxTR_EL2 FGT entries to nested virt
      KVM: arm64: Add missing HFGITR_EL2 FGT entries to nested virt
      KVM: arm64: Add bit masks for HAFGRTR_EL2
      KVM: arm64: Handle HAFGRTR_EL2 trapping in nested virt
      KVM: arm64: Update and fix FGT register masks
      KVM: arm64: Add build validation for FGT trap mask values
      KVM: arm64: Use generated FGT RES0 bits instead of specifying them
      KVM: arm64: Define FGT nMASK bits relative to other fields
      KVM: arm64: Macros for setting/clearing FGT bits
      KVM: arm64: Fix which features are marked as allowed for protected VMs
      KVM: arm64: Mark PAuth as a restricted feature for protected VMs
      KVM: arm64: Trap external trace for protected VMs

Joey Gouly (2):
      arm64/sysreg: add system register POR_EL{0,1}
      arm64/sysreg: update CPACR_EL1 register

Marc Zyngier (16):
      Merge remote-tracking branch 'arm64/for-next/sysregs' into kvm-arm64/fgt-rework
      Merge branch kvm-arm64/lpa2 into kvmarm-master/next
      Merge branch kvm-arm64/fgt-rework into kvmarm-master/next
      arm64: cpufeatures: Restrict NV support to FEAT_NV2
      KVM: arm64: nv: Hoist vcpu_has_nv() into is_hyp_ctxt()
      KVM: arm64: nv: Compute NV view of idregs as a one-off
      KVM: arm64: nv: Drop EL12 register traps that are redirected to VNCR
      KVM: arm64: nv: Add non-VHE-EL2->EL1 translation helpers
      KVM: arm64: nv: Add include containing the VNCR_EL2 offsets
      KVM: arm64: Introduce a bad_trap() primitive for unexpected trap handling
      KVM: arm64: nv: Add EL2_REG_VNCR()/EL2_REG_REDIR() sysreg helpers
      KVM: arm64: nv: Map VNCR-capable registers to a separate page
      KVM: arm64: nv: Handle virtual EL2 registers in vcpu_read/write_sys_reg()
      Merge branch kvm-arm64/nv-6.8-prefix into kvmarm-master/next
      KVM: arm64: vgic-v4: Restore pending state on host userspace write
      Merge branch kvm-arm64/vgic-6.8 into kvmarm-master/next

Mark Brown (9):
      arm64/sysreg: Add definition for ID_AA64PFR2_EL1
      arm64/sysreg: Update ID_AA64ISAR2_EL1 defintion for DDI0601 2023-09
      arm64/sysreg: Add definition for ID_AA64ISAR3_EL1
      arm64/sysreg: Add definition for ID_AA64FPFR0_EL1
      arm64/sysreg: Update ID_AA64SMFR0_EL1 definition for DDI0601 2023-09
      arm64/sysreg: Update SCTLR_EL1 for DDI0601 2023-09
      arm64/sysreg: Update HCRX_EL2 definition for DDI0601 2023-09
      arm64/sysreg: Add definition for FPMR
      arm64/sysreg: Add new system registers for GCS

Oliver Upton (4):
      KVM: arm64: vgic: Use common accessor for writes to ISPENDR
      KVM: arm64: vgic: Use common accessor for writes to ICPENDR
      KVM: arm64: vgic-v3: Reinterpret user ISPENDR writes as I{C,S}PENDR
      KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache

Ryan Roberts (11):
      arm64/mm: Modify range-based tlbi to decrement scale
      arm64/mm: Add lpa2_is_enabled() kvm_lpa2_is_enabled() stubs
      arm64/mm: Update tlb invalidation routines for FEAT_LPA2
      arm64: Add ARM64_HAS_LPA2 CPU capability
      KVM: arm64: Add new (V)TCR_EL2 field definitions for FEAT_LPA2
      KVM: arm64: Use LPA2 page-tables for stage2 and hyp stage1
      KVM: arm64: Convert translation level parameter to s8
      KVM: arm64: Support up to 5 levels of translation in kvm_pgtable
      KVM: arm64: Allow guests with >48-bit IPA size on FEAT_LPA2 systems
      KVM: selftests: arm64: Determine max ipa size per-page size
      KVM: selftests: arm64: Support P52V48 4K and 16K guest_modes

Will Deacon (1):
      KVM: arm64: Add missing memory barriers when switching to pKVM's hyp pgd

 arch/arm64/include/asm/cpufeature.h                |   5 +
 arch/arm64/include/asm/esr.h                       |  15 +
 arch/arm64/include/asm/kvm_arm.h                   |  63 ++--
 arch/arm64/include/asm/kvm_emulate.h               |  34 +--
 arch/arm64/include/asm/kvm_host.h                  | 138 ++++++---
 arch/arm64/include/asm/kvm_nested.h                |  56 +++-
 arch/arm64/include/asm/kvm_pgtable.h               |  80 ++++--
 arch/arm64/include/asm/kvm_pkvm.h                  |   5 +-
 arch/arm64/include/asm/pgtable-prot.h              |   2 +
 arch/arm64/include/asm/sysreg.h                    |  25 ++
 arch/arm64/include/asm/tlb.h                       |  15 +-
 arch/arm64/include/asm/tlbflush.h                  | 100 ++++---
 arch/arm64/include/asm/vncr_mapping.h              | 103 +++++++
 arch/arm64/kernel/cpufeature.c                     |  41 ++-
 arch/arm64/kvm/arch_timer.c                        |   3 +-
 arch/arm64/kvm/arm.c                               |  11 +
 arch/arm64/kvm/emulate-nested.c                    |  63 ++++
 arch/arm64/kvm/hyp/include/hyp/fault.h             |   2 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |  93 ++++--
 arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     |  22 +-
 arch/arm64/kvm/hyp/nvhe/hyp-init.S                 |   6 +-
 arch/arm64/kvm/hyp/nvhe/mem_protect.c              |   6 +-
 arch/arm64/kvm/hyp/nvhe/mm.c                       |   4 +-
 arch/arm64/kvm/hyp/nvhe/pkvm.c                     |   4 +
 arch/arm64/kvm/hyp/nvhe/setup.c                    |   2 +-
 arch/arm64/kvm/hyp/pgtable.c                       |  90 +++---
 arch/arm64/kvm/mmu.c                               |  49 ++--
 arch/arm64/kvm/nested.c                            |  22 +-
 arch/arm64/kvm/reset.c                             |   9 +-
 arch/arm64/kvm/sys_regs.c                          | 235 +++++++++++----
 arch/arm64/kvm/vgic/vgic-its.c                     |   5 +
 arch/arm64/kvm/vgic/vgic-mmio-v3.c                 |  28 +-
 arch/arm64/kvm/vgic/vgic-mmio.c                    | 101 +++----
 arch/arm64/tools/cpucaps                           |   1 +
 arch/arm64/tools/sysreg                            | 320 ++++++++++++++++++++-
 .../selftests/kvm/include/aarch64/processor.h      |   4 +-
 tools/testing/selftests/kvm/include/guest_modes.h  |   4 +-
 .../testing/selftests/kvm/include/kvm_util_base.h  |   1 +
 .../testing/selftests/kvm/lib/aarch64/processor.c  |  69 ++++-
 tools/testing/selftests/kvm/lib/guest_modes.c      |  50 ++--
 tools/testing/selftests/kvm/lib/kvm_util.c         |   3 +
 41 files changed, 1423 insertions(+), 466 deletions(-)
 create mode 100644 arch/arm64/include/asm/vncr_mapping.h




[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