]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
KVM: PPC: Add check if pte was mapped secondary
authorAlexander Graf <agraf@suse.de>
Wed, 24 Mar 2010 20:48:34 +0000 (21:48 +0100)
committerAvi Kivity <avi@redhat.com>
Mon, 17 May 2010 09:17:17 +0000 (12:17 +0300)
Some HTAB providers (namely the PS3) ignore the SECONDARY flag. They
just put an entry in the htab as secondary when they see fit.

So we need to check the return value of htab_insert to remember the
correct slot id so we can actually invalidate the entry again.

Fixes KVM on the PS3.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/powerpc/kvm/book3s_64_mmu_host.c

index 25bd4ede722c72d3256eb5cce9a5cbc6eb3de058..a01e9c5a3fc7661db5c9212019170e7a647912ec 100644 (file)
@@ -270,6 +270,13 @@ map_again:
                            (rflags & HPTE_R_N) ? '-' : 'x',
                            orig_pte->eaddr, hpteg, va, orig_pte->vpage, hpaddr);
 
+               /* The ppc_md code may give us a secondary entry even though we
+                  asked for a primary. Fix up. */
+               if ((ret & _PTEIDX_SECONDARY) && !(vflags & HPTE_V_SECONDARY)) {
+                       hash = ~hash;
+                       hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP);
+               }
+
                pte->slot = hpteg + (ret & 7);
                pte->host_va = va;
                pte->pte = *orig_pte;