[GIT PULL] KVM/arm64 updates for 6.14

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

 



Paolo,

Here's the initial set of KVM/arm64 changes for 6.14. The bulk of the
changes are around debug and protect mode, both of which are being
radically cleaned up. On the feature side, we gain support for
non-protected guests in protected mode, EL2 timer support, and some
better CoreSight support.

The rest is the usual mix of cleanups and bug fixes. Note that this
drags two other branches:

- arm64's for-next/cpufeature to resolve conflicts that were not
  trivial to resolve

- kvmarm-fixes-6.13-3 which was only merged in 6.13-rc7, while this
  branch is firmly based on -rc3, and we had some dependencies with
  it.

As usual, gory details in the tag below.

Please pull,

	M.

The following changes since commit 78d4f34e2115b517bcbfe7ec0d018bbbb6f9b0b8:

  Linux 6.13-rc3 (2024-12-15 15:58:23 -0800)

are available in the Git repository at:

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

for you to fetch changes up to 01009b06a6b52d8439c55b530633a971c13b6cb2:

  arm64/sysreg: Get rid of TRFCR_ELx SysregFields (2025-01-17 11:07:55 +0000)

----------------------------------------------------------------
KVM/arm64 updates for 6.14

* New features:

  - Support for non-protected guest in protected mode, achieving near
    feature parity with the non-protected mode

  - Support for the EL2 timers as part of the ongoing NV support

  - Allow control of hardware tracing for nVHE/hVHE

* Improvements, fixes and cleanups:

  - Massive cleanup of the debug infrastructure, making it a bit less
    awkward and definitely easier to maintain. This should pave the
    way for further optimisations

  - Complete rewrite of pKVM's fixed-feature infrastructure, aligning
    it with the rest of KVM and making the code easier to follow

  - Large simplification of pKVM's memory protection infrastructure

  - Better handling of RES0/RES1 fields for memory-backed system
    registers

  - Add a workaround for Qualcomm's Snapdragon X CPUs, which suffer
    from a pretty nasty timer bug

  - Small collection of cleanups and low-impact fixes

* Dependencies

  - Merge arm64/for-next/cpufeature to resolve conflicts

  - Merge kvmarm-fixes-6.13-3 on which the non-protected memory
    management depends

----------------------------------------------------------------
Fuad Tabba (16):
      KVM: arm64: Group setting traps for protected VMs by control register
      KVM: arm64: Move checking protected vcpu features to a separate function
      KVM: arm64: Remove KVM_ARM_VCPU_POWER_OFF from protected VMs allowed features in pKVM
      KVM: arm64: Use KVM extension checks for allowed protected VM capabilities
      KVM: arm64: Initialize feature id registers for protected VMs
      KVM: arm64: Fix RAS trapping in pKVM for protected VMs
      KVM: arm64: Set protected VM traps based on its view of feature registers
      KVM: arm64: Rework specifying restricted features for protected VMs
      KVM: arm64: Remove fixed_config.h header
      KVM: arm64: Remove redundant setting of HCR_EL2 trap bit
      KVM: arm64: Calculate cptr_el2 traps on activating traps
      KVM: arm64: Refactor kvm_reset_cptr_el2()
      KVM: arm64: Fix the value of the CPTR_EL2 RES1 bitmask for nVHE
      KVM: arm64: Remove PtrAuth guest vcpu flag
      KVM: arm64: Convert the SVE guest vcpu flag to a vm flag
      KVM: arm64: Use kvm_vcpu_has_feature() directly for struct kvm

Hardevsinh Palaniya (1):
      arm64/cpufeature: Refactor conditional logic in init_cpu_ftr_reg()

James Clark (6):
      tools: arm64: Update sysreg.h header files
      arm64/sysreg/tools: Move TRFCR definitions to sysreg
      coresight: trbe: Remove redundant disable call
      KVM: arm64: coresight: Give TRBE enabled state to KVM
      KVM: arm64: Support trace filtering for guests
      coresight: Pass guest TRFCR value to KVM

Kalesh Singh (1):
      arm64: kvm: Introduce nvhe stack size constants

Marc Zyngier (35):
      arm64/sysreg: Allow a 'Mapping' descriptor for system registers
      arm64/sysreg: Get rid of the TCR2_EL1x SysregFields
      arm64/sysreg: Convert *_EL12 accessors to Mapping
      arm64/sysreg: Get rid of CPACR_ELx SysregFields
      KVM: arm64: Manage software step state at load/put
      KVM: arm64: Introduce __pkvm_vcpu_{load,put}()
      KVM: arm64: Consolidate allowed and restricted VM feature checks
      KVM: arm64: nv: Advertise the lack of AArch32 EL0 support
      KVM: arm64: nv: Add handling of EL2-specific timer registers
      KVM: arm64: nv: Sync nested timer state with FEAT_NV2
      KVM: arm64: nv: Publish emulated timer interrupt state in the in-memory state
      KVM: arm64: nv: Use FEAT_ECV to trap access to EL0 timers
      KVM: arm64: nv: Accelerate EL0 timer read accesses when FEAT_ECV in use
      KVM: arm64: nv: Accelerate EL0 counter accesses from hypervisor context
      KVM: arm64: Handle counter access early in non-HYP context
      KVM: arm64: nv: Add trap routing for CNTHCTL_EL2.EL1{NVPCT,NVVCT,TVT,TVCT}
      KVM: arm64: nv: Propagate CNTHCTL_EL2.EL1NV{P,V}CT bits
      KVM: arm64: nv: Sanitise CNTHCTL_EL2
      KVM: arm64: Work around x1e's CNTVOFF_EL2 bogosity
      KVM: arm64: nv: Document EL2 timer API
      Merge remote-tracking branch 'arm64/for-next/cpufeature' into kvm-arm64/pkvm-fixed-features-6.14
      Merge branch kvm-arm64/debug-6.14 into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-np-guest into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-fixed-features-6.14 into kvmarm-master/next
      Merge branch 'kvmarm-fixes-6.13-3'
      KVM: arm64: Fix selftests after sysreg field name update
      KVM: arm64: nv: Always evaluate HCR_EL2 using sanitising accessors
      KVM: arm64: nv: Apply RESx settings to sysreg reset values
      KVM: arm64: nv: Fix doc header layout for timers
      Merge branch kvm-arm64/nv-timers into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-memshare-declutter into kvmarm-master/next
      Merge branch kvm-arm64/coresight-6.14 into kvmarm-master/next
      Merge branch kvm-arm64/nv-resx-fixes-6.14 into kvmarm-master/next
      Merge branch kvm-arm64/misc-6.14 into kvmarm-master/next
      arm64/sysreg: Get rid of TRFCR_ELx SysregFields

Mark Brown (1):
      KVM: arm64: Fix set_id_regs selftest for ASIDBITS becoming unwritable

Mark Rutland (2):
      arm64: cpufeature: Add HAFT to cpucap_is_possible()
      KVM: arm64: Explicitly handle BRBE traps as UNDEFINED

Mostafa Saleh (1):
      Documentation: Update the behaviour of "kvm-arm.mode"

Oliver Upton (22):
      KVM: arm64: Add unified helper for reprogramming counters by mask
      KVM: arm64: Use KVM_REQ_RELOAD_PMU to handle PMCR_EL0.E change
      KVM: arm64: nv: Reload PMU events upon MDCR_EL2.HPME change
      KVM: arm64: Only apply PMCR_EL0.P to the guest range of counters
      KVM: arm64: Drop MDSCR_EL1_DEBUG_MASK
      KVM: arm64: Get rid of __kvm_get_mdcr_el2() and related warts
      KVM: arm64: Track presence of SPE/TRBE in kvm_host_data instead of vCPU
      KVM: arm64: Move host SME/SVE tracking flags to host data
      KVM: arm64: Write MDCR_EL2 directly from kvm_arm_setup_mdcr_el2()
      KVM: arm64: Evaluate debug owner at vcpu_load()
      KVM: arm64: Clean up KVM_SET_GUEST_DEBUG handler
      KVM: arm64: Select debug state to save/restore based on debug owner
      KVM: arm64: Remove debug tracepoints
      KVM: arm64: Remove vestiges of debug_ptr
      KVM: arm64: Use debug_owner to track if debug regs need save/restore
      KVM: arm64: Reload vCPU for accesses to OSLAR_EL1
      KVM: arm64: Compute MDCR_EL2 at vcpu_load()
      KVM: arm64: Don't hijack guest context MDSCR_EL1
      KVM: arm64: nv: Honor MDCR_EL2.TDE routing for debug exceptions
      KVM: arm64: Avoid reading ID_AA64DFR0_EL1 for debug save/restore
      KVM: arm64: Fold DBGxVR/DBGxCR accessors into common set
      KVM: arm64: Promote guest ownership for DBGxVR/DBGxCR reads

Quentin Perret (21):
      KVM: arm64: Always check the state from hyp_ack_unshare()
      KVM: arm64: Change the layout of enum pkvm_page_state
      KVM: arm64: Move enum pkvm_page_state to memory.h
      KVM: arm64: Make hyp_page::order a u8
      KVM: arm64: Move host page ownership tracking to the hyp vmemmap
      KVM: arm64: Pass walk flags to kvm_pgtable_stage2_mkyoung
      KVM: arm64: Pass walk flags to kvm_pgtable_stage2_relax_perms
      KVM: arm64: Make kvm_pgtable_stage2_init() a static inline function
      KVM: arm64: Add {get,put}_pkvm_hyp_vm() helpers
      KVM: arm64: Introduce __pkvm_host_share_guest()
      KVM: arm64: Introduce __pkvm_host_unshare_guest()
      KVM: arm64: Introduce __pkvm_host_relax_guest_perms()
      KVM: arm64: Introduce __pkvm_host_wrprotect_guest()
      KVM: arm64: Introduce __pkvm_host_test_clear_young_guest()
      KVM: arm64: Introduce __pkvm_host_mkyoung_guest()
      KVM: arm64: Introduce __pkvm_tlb_flush_vmid()
      KVM: arm64: Introduce the EL1 pKVM MMU
      KVM: arm64: Plumb the pKVM MMU in KVM
      KVM: arm64: Drop pkvm_mem_transition for FF-A
      KVM: arm64: Drop pkvm_mem_transition for host/hyp sharing
      KVM: arm64: Drop pkvm_mem_transition for host/hyp donations

Thorsten Blum (1):
      KVM: arm64: vgic: Use str_enabled_disabled() in vgic_v3_probe()

Vincent Donnefort (1):
      KVM: arm64: Fix nVHE stacktrace VA bits mask

Vladimir Murzin (1):
      KVM: arm64: Fix FEAT_MTE in pKVM

 Documentation/admin-guide/kernel-parameters.txt    |  16 +-
 Documentation/virt/kvm/devices/vcpu.rst            |  14 +-
 arch/arm64/include/asm/cpucaps.h                   |   2 +
 arch/arm64/include/asm/cpufeature.h                |   3 +-
 arch/arm64/include/asm/cputype.h                   |   2 +
 arch/arm64/include/asm/el2_setup.h                 |   6 +-
 arch/arm64/include/asm/kvm_arm.h                   |   4 +-
 arch/arm64/include/asm/kvm_asm.h                   |  14 +-
 arch/arm64/include/asm/kvm_emulate.h               | 105 ++-
 arch/arm64/include/asm/kvm_host.h                  | 136 ++--
 arch/arm64/include/asm/kvm_mmu.h                   |  18 +
 arch/arm64/include/asm/kvm_nested.h                |  11 +-
 arch/arm64/include/asm/kvm_pgtable.h               |  38 +-
 arch/arm64/include/asm/kvm_pkvm.h                  |  51 ++
 arch/arm64/include/asm/memory.h                    |   5 +-
 arch/arm64/include/asm/stacktrace/nvhe.h           |   2 +-
 arch/arm64/include/asm/sysreg.h                    |  16 +-
 arch/arm64/kernel/cpu_errata.c                     |   8 +
 arch/arm64/kernel/cpufeature.c                     |  17 +-
 arch/arm64/kernel/image-vars.h                     |   3 +
 arch/arm64/kvm/arch_timer.c                        | 179 ++++-
 arch/arm64/kvm/arm.c                               |  86 +-
 arch/arm64/kvm/at.c                                |   6 +-
 arch/arm64/kvm/debug.c                             | 416 ++++------
 arch/arm64/kvm/emulate-nested.c                    |  83 +-
 arch/arm64/kvm/fpsimd.c                            |  14 +-
 arch/arm64/kvm/guest.c                             |  31 +-
 arch/arm64/kvm/handle_exit.c                       |   5 +-
 arch/arm64/kvm/hyp/include/hyp/debug-sr.h          |  42 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |  43 +-
 arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h         |  43 +-
 arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     | 223 ------
 arch/arm64/kvm/hyp/include/nvhe/gfp.h              |   6 +-
 arch/arm64/kvm/hyp/include/nvhe/mem_protect.h      |  39 +-
 arch/arm64/kvm/hyp/include/nvhe/memory.h           |  50 +-
 arch/arm64/kvm/hyp/include/nvhe/pkvm.h             |  23 +
 arch/arm64/kvm/hyp/nvhe/debug-sr.c                 |  72 +-
 arch/arm64/kvm/hyp/nvhe/host.S                     |   4 +-
 arch/arm64/kvm/hyp/nvhe/hyp-main.c                 | 213 ++++-
 arch/arm64/kvm/hyp/nvhe/mem_protect.c              | 887 ++++++++-------------
 arch/arm64/kvm/hyp/nvhe/mm.c                       |  12 +-
 arch/arm64/kvm/hyp/nvhe/page_alloc.c               |  14 +-
 arch/arm64/kvm/hyp/nvhe/pkvm.c                     | 410 +++++-----
 arch/arm64/kvm/hyp/nvhe/setup.c                    |   8 +-
 arch/arm64/kvm/hyp/nvhe/stacktrace.c               |   4 +-
 arch/arm64/kvm/hyp/nvhe/switch.c                   |  54 +-
 arch/arm64/kvm/hyp/nvhe/sys_regs.c                 | 404 ++++++----
 arch/arm64/kvm/hyp/nvhe/timer-sr.c                 |  16 +-
 arch/arm64/kvm/hyp/pgtable.c                       |  13 +-
 arch/arm64/kvm/hyp/vhe/debug-sr.c                  |   5 -
 arch/arm64/kvm/hyp/vhe/switch.c                    | 123 ++-
 arch/arm64/kvm/hyp/vhe/sysreg-sr.c                 |   4 +-
 arch/arm64/kvm/mmu.c                               | 108 ++-
 arch/arm64/kvm/nested.c                            |  38 +-
 arch/arm64/kvm/pkvm.c                              | 201 +++++
 arch/arm64/kvm/pmu-emul.c                          |  89 +--
 arch/arm64/kvm/reset.c                             |   6 +-
 arch/arm64/kvm/stacktrace.c                        |   9 +-
 arch/arm64/kvm/sys_regs.c                          | 443 +++++-----
 arch/arm64/kvm/trace_handle_exit.h                 |  75 --
 arch/arm64/kvm/vgic/vgic-v3.c                      |  11 +-
 arch/arm64/mm/proc.S                               |   5 +-
 arch/arm64/tools/cpucaps                           |   1 +
 arch/arm64/tools/gen-sysreg.awk                    |   2 +-
 arch/arm64/tools/sysreg                            |  76 +-
 drivers/hwtracing/coresight/coresight-etm4x-core.c |  55 +-
 .../hwtracing/coresight/coresight-etm4x-sysfs.c    |  10 +-
 drivers/hwtracing/coresight/coresight-etm4x.h      |   2 +-
 drivers/hwtracing/coresight/coresight-priv.h       |   3 +
 .../coresight/coresight-self-hosted-trace.h        |   9 -
 drivers/hwtracing/coresight/coresight-trbe.c       |  15 +-
 include/clocksource/arm_arch_timer.h               |   6 +
 include/kvm/arm_arch_timer.h                       |  23 +
 include/kvm/arm_pmu.h                              |   6 +-
 tools/arch/arm64/include/asm/sysreg.h              | 410 +++++++++-
 tools/include/linux/kasan-tags.h                   |  15 +
 .../selftests/kvm/aarch64/aarch32_id_regs.c        |   2 +-
 tools/testing/selftests/kvm/aarch64/set_id_regs.c  |   3 +-
 78 files changed, 3256 insertions(+), 2370 deletions(-)
 delete mode 100644 arch/arm64/kvm/hyp/include/nvhe/fixed_config.h
 create mode 100644 tools/include/linux/kasan-tags.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