ANDROID: KVM: arm64: Fix host MMIO DABT handler IPA

The data abort fault IPA obtained from HFAR_EL2 has the bottom 12 bits
zeroed out. This broke the host MMIO DABT handler because the offsets
of accessed MMIO registers were rounded down to the nearest page.

Include FAR_EL2 in the address to fix the issue.

Bug: 220194478
Signed-off-by: David Brazdil <dbrazdil@google.com>
Change-Id: I2ee7352dba69c673e5d5bddca7e1df9db1b4ce1f
This commit is contained in:
David Brazdil
2022-02-24 14:46:16 +00:00
committed by Will Deacon
parent 3162b2f66c
commit 9eab20c98f

View File

@@ -629,6 +629,7 @@ void handle_host_mem_abort(struct kvm_cpu_context *host_ctxt)
BUG_ON(!__get_fault_info(esr, &fault));
addr = (fault.hpfar_el2 & HPFAR_MASK) << 8;
addr |= fault.far_el2 & FAR_MASK;
/* See if any subsystem can handle this abort. */
if (is_dabt(esr) && !addr_is_memory(addr))