KVM/arm64: First batch of fixes for 6.15
Hi Paolo,
Here's the first set of fixes for 6.15. The biggest change here is the __get_fault_info() rework where KVM could use stale fault information when handling a stage-2 abort.
Rest of the details can be found in the tag. Please pull.
Thanks,
Oliver
The following changes since commit 369c0122682c4468a69f2454614eded71c5348f3:
Merge branch 'kvm-arm64/pmu-fixes' into kvmarm/next (2025-03-19 14:54:52 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/ tags/kvmarm-fixes-6.15-1
for you to fetch changes up to a344e258acb0a7f0e7ed10a795c52d1baf705164:
KVM: arm64: Use acquire/release to communicate FF-A version negotiation (2025-04-07 15:03:34 -0700)
----------------------------------------------------------------
KVM/arm64: First batch of fixes for 6.15
- Rework heuristics for resolving the fault IPA (HPFAR_EL2 v. re-walk stage-1 page tables) to align with the architecture. This avoids possibly taking an SEA at EL2 on the page table walk or using an architecturally UNKNOWN fault IPA.
- Use acquire/release semantics in the KVM FF-A proxy to avoid reading a stale value for the FF-A version.
- Fix KVM guest driver to match PV CPUID hypercall ABI.
- Use Inner Shareable Normal Write-Back mappings at stage-1 in KVM selftests, which is the only memory type for which atomic instructions are architecturally guaranteed to work.
----------------------------------------------------------------
Chen Ni (1):
smccc: kvm_guest: Remove unneeded semicolon
Oliver Upton (4):
smccc: kvm_guest: Align with DISCOVER_IMPL_CPUS ABI
KVM: arm64: Only read HPFAR_EL2 when value is architecturally valid
arm64: Convert HPFAR_EL2 to sysreg table
KVM: arm64: Don't translate FAR if invalid/unsafe
Raghavendra Rao Ananta (2):
KVM: arm64: selftests: Introduce and use hardware-definition macros
KVM: arm64: selftests: Explicitly set the page attrs to Inner-Shareable
Will Deacon (1):
KVM: arm64: Use acquire/release to communicate FF-A version negotiation
arch/arm64/include/asm/esr.h | 44 +++++++++++++- arch/arm64/include/asm/kvm_emulate.h | 7 ++- arch/arm64/include/asm/kvm_ras.h | 2 +- arch/arm64/kvm/hyp/include/hyp/fault.h | 70 +++++++++++++++------- arch/arm64/kvm/hyp/nvhe/ffa.c | 9 +-- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 9 ++- arch/arm64/kvm/mmu.c | 31 ++++++---- arch/arm64/tools/sysreg | 7 +++ drivers/firmware/smccc/kvm_guest.c | 4 +- .../testing/selftests/kvm/arm64/page_fault_test.c | 2 +- .../selftests/kvm/include/arm64/processor.h | 67 +++++++++++++++++++-- tools/testing/selftests/kvm/lib/arm64/processor.c | 60 +++++++++++-------- 12 files changed, 234 insertions(+), 78 deletions(-)
Paolo Bonzini
maintainerQuoted 8 lines · Oliver Upton
Hi Paolo,
Here's the first set of fixes for 6.15. The biggest change here is the
__get_fault_info()rework where KVM could use stale fault information when handling a stage-2 abort.Rest of the details can be found in the tag. Please pull.
Done, thanks.
Paolo
Quoted 63 lines
Thanks,
OliverThe following changes since commit
369c0122682c4468a69f2454614eded71c5348f3:Merge branch 'kvm-arm64/pmu-fixes' into kvmarm/next (2025-03-19 14:54:52 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/ tags/kvmarm-fixes-6.15-1
for you to fetch changes up to
a344e258acb0a7f0e7ed10a795c52d1baf705164:KVM: arm64: Use acquire/release to communicate FF-A version negotiation (2025-04-07 15:03:34 -0700)
----------------------------------------------------------------
KVM/arm64: First batch of fixes for 6.15- Rework heuristics for resolving the fault IPA (
HPFAR_EL2v. re-walk stage-1 page tables) to align with the architecture. This avoids possibly taking an SEA at EL2 on the page table walk or using an architecturally UNKNOWN fault IPA.- Use acquire/release semantics in the KVM FF-A proxy to avoid reading a stale value for the FF-A version.
- Fix KVM guest driver to match PV CPUID hypercall ABI.
- Use Inner Shareable Normal Write-Back mappings at stage-1 in KVM selftests, which is the only memory type for which atomic instructions are architecturally guaranteed to work.
----------------------------------------------------------------
Chen Ni (1):
smccc:kvm_guest: Remove unneeded semicolonOliver Upton (4):
smccc:kvm_guest: Align withDISCOVER_IMPL_CPUSABI
KVM: arm64: Only readHPFAR_EL2when value is architecturally valid
arm64: ConvertHPFAR_EL2to sysreg table
KVM: arm64: Don't translate FAR if invalid/unsafeRaghavendra Rao Ananta (2):
KVM: arm64: selftests: Introduce and use hardware-definition macros
KVM: arm64: selftests: Explicitly set the page attrs to Inner-ShareableWill Deacon (1):
KVM: arm64: Use acquire/release to communicate FF-A version negotiationarch/arm64/include/asm/esr.h | 44 +++++++++++++- arch/arm64/include/asm/kvm_emulate.h | 7 ++- arch/arm64/include/asm/kvm_ras.h | 2 +- arch/arm64/kvm/hyp/include/hyp/fault.h | 70 +++++++++++++++------- arch/arm64/kvm/hyp/nvhe/ffa.c | 9 +-- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 9 ++- arch/arm64/kvm/mmu.c | 31 ++++++---- arch/arm64/tools/sysreg | 7 +++ drivers/firmware/smccc/kvm_guest.c | 4 +- .../testing/selftests/kvm/arm64/page_fault_test.c | 2 +- .../selftests/kvm/include/arm64/processor.h | 67 +++++++++++++++++++-- tools/testing/selftests/kvm/lib/arm64/processor.c | 60 +++++++++++-------- 12 files changed, 234 insertions(+), 78 deletions(-)