OSDN Git Service

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>
Fri, 22 Mar 2013 00:21:15 +0000 (01:21 +0100)
commit47bf379742bf1baad9624e203912b72c3fa9c80a
tree3c2e62117d2096ee8977ecafb262fe7806296c55
parent36ada4f4317e27bf52f52aef5c72f553eef08f4a
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