mbox series

[v2,0/4] KVM: arm64: Fixes to early stage-2 fault handling

Message ID 20200729102821.23392-1-will@kernel.org (mailing list archive)
Headers show
Series KVM: arm64: Fixes to early stage-2 fault handling | expand

Message

Will Deacon July 29, 2020, 10:28 a.m. UTC
Hi all,

This is version two of the patches I posted last week:

  https://lore.kernel.org/r/20200724143506.17772-1-will@kernel.org

I got my brain in a twist with exactly what is reported in HPFAR for
a stage-2 abort on a stage-1 table walk, so I don't think any of these
are serious any more.

With these changes, the early stage-2 fault handling follows:

S2 instruction abort:
  * Not in memslot, or S2 fault on S1 walk for tables in R/O memslot:
	=> inject external iabt to guest

S2 data abort:
  * Not in memslot:
    - S2 fault on S1 walk:      inject external dabt to guest
    - Cache maintenance:        skip instr
    - Syndrome valid            EXIT_MMIO
    - Syndrome invalid          EXIT_NISV
  * Write fault in R/O memslot:
    - S2 fault on S1 walk:      inject external dabt to guest
    - Access is write:
      - Syndrome valid          EXIT_MMIO
      - Syndrome invalid        EXIT_NISV (includes cache maintenance)

Everything else gets handled by handle_access_fault()/user_mem_abort().

Will

Cc: James Morse <james.morse@arm.com>
Cc: Suzuki Poulose <suzuki.poulose@arm.com>
Cc: kernel-team@android.com

--->8

Will Deacon (4):
  KVM: arm64: Rename kvm_vcpu_dabt_isextabt()
  KVM: arm64: Handle data and instruction external aborts the same way
  KVM: arm64: Don't skip cache maintenance for read-only memslots
  KVM: arm64: Move S1PTW S2 fault logic out of io_mem_abort()

 arch/arm64/include/asm/kvm_emulate.h |  2 +-
 arch/arm64/kvm/hyp/switch.c          |  2 +-
 arch/arm64/kvm/mmio.c                |  6 ------
 arch/arm64/kvm/mmu.c                 | 26 +++++++++++++++++---------
 4 files changed, 19 insertions(+), 17 deletions(-)

Comments

Marc Zyngier July 30, 2020, 3:06 p.m. UTC | #1
On Wed, 29 Jul 2020 11:28:17 +0100, Will Deacon wrote:
> This is version two of the patches I posted last week:
> 
>   https://lore.kernel.org/r/20200724143506.17772-1-will@kernel.org
> 
> I got my brain in a twist with exactly what is reported in HPFAR for
> a stage-2 abort on a stage-1 table walk, so I don't think any of these
> are serious any more.
> 
> [...]

Applied to kvm-arm64/misc-5.9, thanks!

[1/4] KVM: arm64: Rename kvm_vcpu_dabt_isextabt()
      commit: c9a636f29b5f236441ff059cef0b2fe734c05afd
[2/4] KVM: arm64: Handle data and instruction external aborts the same way
      commit: 84b951a803a5464b0bff2fb1366e96f07f75b066
[3/4] KVM: arm64: Don't skip cache maintenance for read-only memslots
      commit: 54dc0d2404dd7aa0dd4e4f388a65622b68c6eaff
[4/4] KVM: arm64: Move S1PTW S2 fault logic out of io_mem_abort()
      commit: 022c8328dc8021248047b373b9f67790641b8f2d

Cheers,

	M.