aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/book3s_64_mmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kvm/book3s_64_mmu.c')
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu.c b/arch/powerpc/kvm/book3s_64_mmu.c
index 171e5caf2b88..b93c2456253d 100644
--- a/arch/powerpc/kvm/book3s_64_mmu.c
+++ b/arch/powerpc/kvm/book3s_64_mmu.c
@@ -275,12 +275,15 @@ do_second:
275 key = 4; 275 key = 4;
276 276
277 for (i=0; i<16; i+=2) { 277 for (i=0; i<16; i+=2) {
278 u64 pte0 = be64_to_cpu(pteg[i]);
279 u64 pte1 = be64_to_cpu(pteg[i + 1]);
280
278 /* Check all relevant fields of 1st dword */ 281 /* Check all relevant fields of 1st dword */
279 if ((pteg[i] & v_mask) == v_val) { 282 if ((pte0 & v_mask) == v_val) {
280 /* If large page bit is set, check pgsize encoding */ 283 /* If large page bit is set, check pgsize encoding */
281 if (slbe->large && 284 if (slbe->large &&
282 (vcpu->arch.hflags & BOOK3S_HFLAG_MULTI_PGSIZE)) { 285 (vcpu->arch.hflags & BOOK3S_HFLAG_MULTI_PGSIZE)) {
283 pgsize = decode_pagesize(slbe, pteg[i+1]); 286 pgsize = decode_pagesize(slbe, pte1);
284 if (pgsize < 0) 287 if (pgsize < 0)
285 continue; 288 continue;
286 } 289 }
@@ -297,8 +300,8 @@ do_second:
297 goto do_second; 300 goto do_second;
298 } 301 }
299 302
300 v = pteg[i]; 303 v = be64_to_cpu(pteg[i]);
301 r = pteg[i+1]; 304 r = be64_to_cpu(pteg[i+1]);
302 pp = (r & HPTE_R_PP) | key; 305 pp = (r & HPTE_R_PP) | key;
303 if (r & HPTE_R_PP0) 306 if (r & HPTE_R_PP0)
304 pp |= 8; 307 pp |= 8;