* [GIT PULL] KVM/arm64 changes for 6.13
@ 2024-11-14 7:38 Oliver Upton
2024-11-14 23:52 ` Paolo Bonzini
0 siblings, 1 reply; 2+ messages in thread
From: Oliver Upton @ 2024-11-14 7:38 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu,
James Morse, David Woodhouse, Fuad Tabba, Kunkun Jiang,
Will Deacon, James Clark, Jing Zhang, Raghavendra Rao Ananta,
Sean Christopherson, Shameer Kolothum, kvm, kvmarm
Hi Paolo,
Here's the main pile of changes for 6.13. The march towards implementing
nested continues on, this time with the PMU and MMU getting attention.
Note I've taken David's patch to use SYSTEM_OFF2 in the PSCI driver to
hibernate, which was part of his combined series. There is also an
extremely trivial conflict between this and the arm64 tree, both adding
the same field enumeration to the sysreg table.
Details found in the tag, please pull.
--
Thanks,
Oliver
The following changes since commit 81983758430957d9a5cb3333fe324fd70cf63e7e:
Linux 6.12-rc5 (2024-10-27 12:52:02 -1000)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/ tags/kvmarm-6.13
for you to fetch changes up to 60ad25e14ab5a4e56c8bf7f7d6846eacb9cd53df:
KVM: arm64: Pass on SVE mapping failures (2024-11-12 11:04:39 -0800)
----------------------------------------------------------------
KVM/arm64 changes for 6.13, part #1
- Support for stage-1 permission indirection (FEAT_S1PIE) and
permission overlays (FEAT_S1POE), including nested virt + the
emulated page table walker
- Introduce PSCI SYSTEM_OFF2 support to KVM + client driver. This call
was introduced in PSCIv1.3 as a mechanism to request hibernation,
similar to the S4 state in ACPI
- Explicitly trap + hide FEAT_MPAM (QoS controls) from KVM guests. As
part of it, introduce trivial initialization of the host's MPAM
context so KVM can use the corresponding traps
- PMU support under nested virtualization, honoring the guest
hypervisor's trap configuration and event filtering when running a
nested guest
- Fixes to vgic ITS serialization where stale device/interrupt table
entries are not zeroed when the mapping is invalidated by the VM
- Avoid emulated MMIO completion if userspace has requested synchronous
external abort injection
- Various fixes and cleanups affecting pKVM, vCPU initialization, and
selftests
----------------------------------------------------------------
David Woodhouse (6):
firmware/psci: Add definitions for PSCI v1.3 specification
KVM: arm64: Add PSCI v1.3 SYSTEM_OFF2 function for hibernation
KVM: arm64: Add support for PSCI v1.2 and v1.3
KVM: selftests: Add test for PSCI SYSTEM_OFF2
KVM: arm64: nvhe: Pass through PSCI v1.3 SYSTEM_OFF2 call
arm64: Use SYSTEM_OFF2 PSCI call to power off for hibernate
Fuad Tabba (4):
KVM: arm64: Move pkvm_vcpu_init_traps() to init_pkvm_hyp_vcpu()
KVM: arm64: Refactor kvm_vcpu_enable_ptrauth() for hyp use
KVM: arm64: Initialize the hypervisor's VM state at EL2
KVM: arm64: Initialize trap register values in hyp in pKVM
James Clark (1):
KVM: arm64: Pass on SVE mapping failures
James Morse (7):
arm64/sysreg: Convert existing MPAM sysregs and add the remaining entries
arm64: head.S: Initialise MPAM EL2 registers and disable traps
arm64: cpufeature: discover CPU support for MPAM
KVM: arm64: Fix missing traps of guest accesses to the MPAM registers
KVM: arm64: Add a macro for creating filtered sys_reg_descs entries
KVM: arm64: Disable MPAM visibility by default and ignore VMM writes
KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely ignored
Jing Zhang (1):
KVM: arm64: vgic-its: Add a data length check in vgic_its_save_*
Kunkun Jiang (2):
KVM: arm64: vgic-its: Clear DTE when MAPD unmaps a device
KVM: arm64: vgic-its: Clear ITE when DISCARD frees an ITE
Marc Zyngier (33):
arm64: Drop SKL0/SKL1 from TCR2_EL2
arm64: Remove VNCR definition for PIRE0_EL2
arm64: Add encoding for PIRE0_EL2
KVM: arm64: Drop useless struct s2_mmu in __kvm_at_s1e2()
KVM: arm64: nv: Add missing EL2->EL1 mappings in get_el2_to_el1_mapping()
KVM: arm64: nv: Handle CNTHCTL_EL2 specially
arm64: Define ID_AA64MMFR1_EL1.HAFDBS advertising FEAT_HAFT
KVM: arm64: Add TCR2_EL2 to the sysreg arrays
KVM: arm64: nv: Save/Restore vEL2 sysregs
KVM: arm64: Sanitise TCR2_EL2
KVM: arm64: Correctly access TCR2_EL1, PIR_EL1, PIRE0_EL1 with VHE
KVM: arm64: Add save/restore for TCR2_EL2
KVM: arm64: Extend masking facility to arbitrary registers
KVM: arm64: Add PIR{,E0}_EL2 to the sysreg arrays
KVM: arm64: Add save/restore for PIR{,E0}_EL2
KVM: arm64: Handle PIR{,E0}_EL2 traps
KVM: arm64: Add AT fast-path support for S1PIE
KVM: arm64: Split S1 permission evaluation into direct and hierarchical parts
KVM: arm64: Disable hierarchical permissions when S1PIE is enabled
KVM: arm64: Implement AT S1PIE support
KVM: arm64: Add a composite EL2 visibility helper
KVM: arm64: Rely on visibility to let PIR*_ELx/TCR2_ELx UNDEF
arm64: Add encoding for POR_EL2
KVM: arm64: Drop bogus CPTR_EL2.E0POE trap routing
KVM: arm64: Subject S1PIE/S1POE registers to HCR_EL2.{TVM,TRVM}
KVM: arm64: Add kvm_has_s1poe() helper
KVM: arm64: Add basic support for POR_EL2
KVM: arm64: Add save/restore support for POR_EL2
KVM: arm64: Add POE save/restore for AT emulation fast-path
KVM: arm64: Disable hierarchical permissions when POE is enabled
KVM: arm64: Make PAN conditions part of the S1 walk context
KVM: arm64: Handle stage-1 permission overlays
KVM: arm64: Handle WXN attribute
Mark Brown (3):
KVM: arm64: Define helper for EL2 registers with custom visibility
KVM: arm64: Hide TCR2_EL1 from userspace when disabled for guests
KVM: arm64: Hide S1PIE registers from userspace when disabled for guests
Oliver Upton (28):
KVM: arm64: Don't retire aborted MMIO instruction
tools: arm64: Grab a copy of esr.h from kernel
KVM: arm64: selftests: Convert to kernel's ESR terminology
KVM: arm64: selftests: Add tests for MMIO external abort injection
arm64: sysreg: Describe ID_AA64DFR2_EL1 fields
arm64: sysreg: Migrate MDCR_EL2 definition to table
arm64: sysreg: Add new definitions for ID_AA64DFR0_EL1
KVM: arm64: Describe RES0/RES1 bits of MDCR_EL2
KVM: arm64: nv: Allow coarse-grained trap combos to use complex traps
KVM: arm64: nv: Rename BEHAVE_FORWARD_ANY
KVM: arm64: nv: Reinject traps that take effect in Host EL0
KVM: arm64: nv: Honor MDCR_EL2.{TPM, TPMCR} in Host EL0
KVM: arm64: nv: Describe trap behaviour of MDCR_EL2.HPMN
KVM: arm64: nv: Advertise support for FEAT_HPMN0
KVM: arm64: Rename kvm_pmu_valid_counter_mask()
KVM: arm64: nv: Adjust range of accessible PMCs according to HPMN
KVM: arm64: Add helpers to determine if PMC counts at a given EL
KVM: arm64: nv: Honor MDCR_EL2.HPME
KVM: arm64: nv: Honor MDCR_EL2.HLP
KVM: arm64: nv: Apply EL2 event filtering when in hyp context
KVM: arm64: nv: Reprogram PMU events affected by nested transition
Merge branch kvm-arm64/nv-s1pie-s1poe into kvmarm/next
Merge branch kvm-arm64/psci-1.3 into kvmarm/next
Merge branch kvm-arm64/mpam-ni into kvmarm/next
Merge branch kvm-arm64/misc into kvmarm/next
Merge branch kvm-arm64/mmio-sea into kvmarm/next
Merge branch kvm-arm64/nv-pmu into kvmarm/next
Merge branch kvm-arm64/vgic-its-fixes into kvmarm/next
Raghavendra Rao Ananta (1):
KVM: arm64: Get rid of userspace_irqchip_in_use
Sean Christopherson (1):
KVM: selftests: Don't bother deleting memslots in KVM when freeing VMs
Shameer Kolothum (1):
KVM: arm64: Make L1Ip feature in CTR_EL0 writable from userspace
Will Deacon (2):
KVM: arm64: Just advertise SEIS as 0 when emulating ICC_CTLR_EL1
KVM: arm64: Don't map 'kvm_vgic_global_state' at EL2 with pKVM
Documentation/arch/arm64/cpu-feature-registers.rst | 2 +
Documentation/virt/kvm/api.rst | 10 +
arch/arm64/include/asm/cpu.h | 1 +
arch/arm64/include/asm/cpucaps.h | 5 +
arch/arm64/include/asm/cpufeature.h | 17 +
arch/arm64/include/asm/el2_setup.h | 14 +
arch/arm64/include/asm/kvm_arm.h | 30 +-
arch/arm64/include/asm/kvm_asm.h | 1 -
arch/arm64/include/asm/kvm_emulate.h | 9 +
arch/arm64/include/asm/kvm_host.h | 44 +-
arch/arm64/include/asm/sysreg.h | 12 -
arch/arm64/include/asm/vncr_mapping.h | 1 -
arch/arm64/include/uapi/asm/kvm.h | 6 +
arch/arm64/kernel/cpufeature.c | 96 +++++
arch/arm64/kernel/cpuinfo.c | 3 +
arch/arm64/kvm/arch_timer.c | 3 +-
arch/arm64/kvm/arm.c | 26 +-
arch/arm64/kvm/at.c | 470 ++++++++++++++++++---
arch/arm64/kvm/emulate-nested.c | 301 +++++++------
arch/arm64/kvm/hyp/include/hyp/switch.h | 31 ++
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 11 +-
arch/arm64/kvm/hyp/include/nvhe/trap_handler.h | 2 -
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 12 +-
arch/arm64/kvm/hyp/nvhe/pkvm.c | 116 ++++-
arch/arm64/kvm/hyp/nvhe/psci-relay.c | 2 +
arch/arm64/kvm/hyp/nvhe/setup.c | 20 +-
arch/arm64/kvm/hyp/nvhe/sysreg-sr.c | 2 +-
arch/arm64/kvm/hyp/vgic-v3-sr.c | 3 -
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 160 ++++++-
arch/arm64/kvm/hypercalls.c | 2 +
arch/arm64/kvm/mmio.c | 32 +-
arch/arm64/kvm/nested.c | 82 +++-
arch/arm64/kvm/pmu-emul.c | 143 ++++++-
arch/arm64/kvm/psci.c | 44 +-
arch/arm64/kvm/reset.c | 5 -
arch/arm64/kvm/sys_regs.c | 309 +++++++++++---
arch/arm64/kvm/vgic/vgic-its.c | 32 +-
arch/arm64/kvm/vgic/vgic.h | 23 +
arch/arm64/tools/cpucaps | 2 +
arch/arm64/tools/sysreg | 249 ++++++++++-
drivers/firmware/psci/psci.c | 45 ++
include/kvm/arm_arch_timer.h | 3 +
include/kvm/arm_pmu.h | 18 +-
include/kvm/arm_psci.h | 4 +-
include/uapi/linux/psci.h | 5 +
kernel/power/hibernate.c | 5 +-
tools/arch/arm64/include/asm/brk-imm.h | 42 ++
tools/arch/arm64/include/asm/esr.h | 455 ++++++++++++++++++++
tools/testing/selftests/kvm/Makefile | 1 +
.../selftests/kvm/aarch64/debug-exceptions.c | 10 +-
tools/testing/selftests/kvm/aarch64/mmio_abort.c | 159 +++++++
tools/testing/selftests/kvm/aarch64/no-vgic-v3.c | 2 +-
.../selftests/kvm/aarch64/page_fault_test.c | 4 +-
tools/testing/selftests/kvm/aarch64/psci_test.c | 92 ++++
tools/testing/selftests/kvm/aarch64/set_id_regs.c | 99 ++++-
.../selftests/kvm/aarch64/vpmu_counter_access.c | 12 +-
.../selftests/kvm/include/aarch64/processor.h | 15 +-
.../testing/selftests/kvm/lib/aarch64/processor.c | 6 +-
tools/testing/selftests/kvm/lib/kvm_util.c | 10 +-
59 files changed, 2859 insertions(+), 461 deletions(-)
create mode 100644 tools/arch/arm64/include/asm/brk-imm.h
create mode 100644 tools/arch/arm64/include/asm/esr.h
create mode 100644 tools/testing/selftests/kvm/aarch64/mmio_abort.c
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [GIT PULL] KVM/arm64 changes for 6.13
2024-11-14 7:38 [GIT PULL] KVM/arm64 changes for 6.13 Oliver Upton
@ 2024-11-14 23:52 ` Paolo Bonzini
0 siblings, 0 replies; 2+ messages in thread
From: Paolo Bonzini @ 2024-11-14 23:52 UTC (permalink / raw)
To: Oliver Upton
Cc: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu,
James Morse, David Woodhouse, Fuad Tabba, Kunkun Jiang,
Will Deacon, James Clark, Jing Zhang, Raghavendra Rao Ananta,
Sean Christopherson, Shameer Kolothum, kvm, kvmarm
On Thu, Nov 14, 2024 at 8:38 AM Oliver Upton <oliver.upton@linux.dev> wrote:
>
> Hi Paolo,
>
> Here's the main pile of changes for 6.13. The march towards implementing
> nested continues on, this time with the PMU and MMU getting attention.
>
> Note I've taken David's patch to use SYSTEM_OFF2 in the PSCI driver to
> hibernate, which was part of his combined series. There is also an
> extremely trivial conflict between this and the arm64 tree, both adding
> the same field enumeration to the sysreg table.
>
> Details found in the tag, please pull.
Pulled, thanks.
Paolo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-11-14 23:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-14 7:38 [GIT PULL] KVM/arm64 changes for 6.13 Oliver Upton
2024-11-14 23:52 ` Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox