From add6ba461db02f8d1c0cfa588aeefcded37d7e8a Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Wed, 12 Dec 2012 14:42:09 +0000 Subject: [PATCH] --- yaml --- r: 372095 b: refs/heads/master c: cfe3950c2a19c1e1ad85b9dd2622617e309d2845 h: refs/heads/master i: 372093: ea181b2e7a5913effcd6d3ea83c3647bfd62248d 372091: 8220869281b0d286b5cccb8166e688306cf4fbff 372087: c0b010e8bb653de0782459bd3097a9f148d3bd56 372079: f7e2b605a2a1e532f5e9aef202160fff6f89ed65 372063: 33ce3039dbb9ee02b5b402c0e8d21bc2cd351ade 372031: 6290a07c0dfdb47849a79fcf20768fafd4a20f7b 371967: f51e2ca22c0d36cffa6a40af1402c4e3962093ad v: v3 --- [refs] | 2 +- trunk/arch/arm/kvm/mmu.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9b13d962448e..9422ff022338 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 728d577d357c9caf83f75d0a38f318f343999cc2 +refs/heads/master: cfe3950c2a19c1e1ad85b9dd2622617e309d2845 diff --git a/trunk/arch/arm/kvm/mmu.c b/trunk/arch/arm/kvm/mmu.c index ec14269a791c..efded4f1a11b 100644 --- a/trunk/arch/arm/kvm/mmu.c +++ b/trunk/arch/arm/kvm/mmu.c @@ -606,8 +606,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; }