kvm/ppc/e500: eliminate tlb_refs
authorScott Wood <scottwood@freescale.com>
Wed, 6 Mar 2013 16:02:49 +0000 (16:02 +0000)
committerAlexander Graf <agraf@suse.de>
Thu, 11 Apr 2013 13:53:43 +0000 (15:53 +0200)
commit4d2be6f7c75e814ee28b007dbf0c26dfcbbe20a1
tree59bbb188fed8951f6aa7e0ff4d326755aaaa8f1b
parent66a5fecdccd4f32a22d2d110cf4f002755b520d8
kvm/ppc/e500: eliminate tlb_refs

Commit 523f0e5421c12610527c620b983b443f329e3a32 ("KVM: PPC: E500:
Explicitly mark shadow maps invalid") began using E500_TLB_VALID
for guest TLB1 entries, and skipping invalidations if it's not set.

However, when E500_TLB_VALID was set for such entries, it was on a
fake local ref, and so the invalidations never happen.  gtlb_privs
is documented as being only for guest TLB0, though we already violate
that with E500_TLB_BITMAP.

Now that we have MMU notifiers, and thus don't need to actually
retain a reference to the mapped pages, get rid of tlb_refs, and
use gtlb_privs for E500_TLB_VALID in TLB1.

Since we can have more than one host TLB entry for a given tlbe_ref,
be careful not to clear existing flags that are relevant to other
host TLB entries when preparing a new host TLB entry.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/e500.h
arch/powerpc/kvm/e500_mmu_host.c