From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 25/29] ARM: KVM: fix fault_ipa computing
Date: Tue, 5 Mar 2013 02:43:19 +0000 [thread overview]
Message-ID: <1362451403-23460-26-git-send-email-marc.zyngier@arm.com> (raw)
In-Reply-To: <1362451403-23460-1-git-send-email-marc.zyngier@arm.com>
The ARM ARM says that HPFAR reports bits [39:12] of the faulting
IPA, and we need to complement it with the bottom 12 bits of the
faulting VA.
This is always 12 bits, irrespective of the page size. Makes it
clearer in the code.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/kvm/mmu.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index 71d15bc..f601e6f 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -614,8 +614,13 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run)
goto out_unlock;
}
- /* Adjust page offset */
- fault_ipa |= kvm_vcpu_get_hfar(vcpu) & ~PAGE_MASK;
+ /*
+ * The IPA is reported as [MAX:12], so we need to
+ * complement it with the bottom 12 bits from the
+ * faulting VA. This is always 12 bits, irrespective
+ * of the page size.
+ */
+ fault_ipa |= kvm_vcpu_get_hfar(vcpu) & ((1 << 12) - 1);
ret = io_mem_abort(vcpu, run, fault_ipa);
goto out_unlock;
}
--
1.7.12.4
next prev parent reply other threads:[~2013-03-05 2:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-05 2:42 [PATCH 00/29] ARM: KVM: pre-arm64 KVM/arm rework Marc Zyngier
2013-03-05 2:42 ` [PATCH 01/29] ARM: KVM: convert GP registers from u32 to unsigned long Marc Zyngier
2013-03-05 2:42 ` [PATCH 02/29] ARM: KVM: abstract fault register accesses Marc Zyngier
2013-03-05 2:42 ` [PATCH 03/29] ARM: KVM: abstract HSR_ISV away Marc Zyngier
2013-03-05 2:42 ` [PATCH 04/29] ARM: KVM: abstract HSR_WNR away Marc Zyngier
2013-03-05 2:42 ` [PATCH 05/29] ARM: KVM: abstract HSR_SSE away Marc Zyngier
2013-03-05 2:43 ` [PATCH 06/29] ARM: KVM: abstract HSR_SRT_{MASK,SHIFT} away Marc Zyngier
2013-03-05 2:43 ` [PATCH 07/29] ARM: KVM: abstract external abort detection away Marc Zyngier
2013-03-05 2:43 ` [PATCH 08/29] ARM: KVM: abstract S1TW " Marc Zyngier
2013-03-05 2:43 ` [PATCH 09/29] ARM: KVM: abstract SAS decoding away Marc Zyngier
2013-03-05 2:43 ` [PATCH 10/29] ARM: KVM: abstract IL " Marc Zyngier
2013-03-05 2:43 ` [PATCH 11/29] ARM: KVM: abstract exception class " Marc Zyngier
2013-03-05 2:43 ` [PATCH 12/29] ARM: KVM: abstract fault " Marc Zyngier
2013-03-05 2:43 ` [PATCH 13/29] ARM: KVM: abstract HSR_EC_IABT away Marc Zyngier
2013-03-05 2:43 ` [PATCH 14/29] ARM: KVM: move kvm_condition_valid to emulate.c Marc Zyngier
2013-03-05 2:43 ` [PATCH 15/29] ARM: KVM: move exit handler selection to a separate file Marc Zyngier
2013-03-05 2:43 ` [PATCH 16/29] ARM: KVM: move kvm_handle_wfi to handle_exit.c Marc Zyngier
2013-03-05 2:43 ` [PATCH 17/29] ARM: KVM: abstract most MMU operations Marc Zyngier
2013-03-05 2:43 ` [PATCH 18/29] ARM: KVM: remove superfluous include from kvm_vgic.h Marc Zyngier
2013-03-05 2:43 ` [PATCH 19/29] ARM: KVM: move hyp init to kvm_host.h Marc Zyngier
2013-03-05 2:43 ` [PATCH 20/29] ARM: KVM: use kvm_kernel_vfp_t as an abstract type for VFP containers Marc Zyngier
2013-03-05 2:43 ` [PATCH 21/29] ARM: KVM: allow HYP mappings to be at an offset from kernel mappings Marc Zyngier
2013-03-05 2:43 ` [PATCH 22/29] ARM: KVM: fix address validation for HYP mappings Marc Zyngier
2013-03-05 2:43 ` [PATCH 23/29] ARM: KVM: sanitize freeing of HYP page tables Marc Zyngier
2013-03-05 2:43 ` [PATCH 24/29] ARM: KVM: move kvm_target_cpu to guest.c Marc Zyngier
2013-03-05 2:43 ` Marc Zyngier [this message]
2013-03-05 2:43 ` [PATCH 26/29] ARM: KVM: vgic: decouple alignment restriction from page size Marc Zyngier
2013-03-05 2:43 ` [PATCH 27/29] ARM: KVM: move include of asm/idmap.h to kvm_mmu.h Marc Zyngier
2013-03-05 2:43 ` [PATCH 28/29] ARM: KVM: change kvm_tlb_flush_vmid to kvm_tlb_flush_vmid_ipa Marc Zyngier
2013-03-05 2:43 ` [PATCH 29/29] ARM: KVM: Fix length of mmio access Marc Zyngier
2013-03-07 0:11 ` [kvmarm] [PATCH 00/29] ARM: KVM: pre-arm64 KVM/arm rework Christoffer Dall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1362451403-23460-26-git-send-email-marc.zyngier@arm.com \
--to=marc.zyngier@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).