mbox series

[GIT,PULL] KVM/arm64: First batch of fixes for 6.15

Message ID Z_RubCEp4h7sAdjz@linux.dev (mailing list archive)
State New
Headers show
Series [GIT,PULL] KVM/arm64: First batch of fixes for 6.15 | expand

Pull-request

https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/ tags/kvmarm-fixes-6.15-1

Message

Oliver Upton April 8, 2025, 12:31 a.m. UTC
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(-)

Comments

Paolo Bonzini April 8, 2025, 10:01 a.m. UTC | #1
On Tue, Apr 8, 2025 at 2:32 AM Oliver Upton <oliver.upton@linux.dev> wrote:
>
> 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

> 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(-)
>