KVM: PPC: Book3S HV: Correct tlbie usage
authorPaul Mackerras <paulus@samba.org>
Mon, 8 Jul 2013 10:08:25 +0000 (20:08 +1000)
committerAlexander Graf <agraf@suse.de>
Wed, 10 Jul 2013 11:14:09 +0000 (13:14 +0200)
commit5448050124d9d289bc2f5177318c68c0484ca413
tree17312ecb5e3a072edde8068b9c202ba6b3f01acb
parent990978e99359e1f3a843563b9f96f9dc7bb7c05a
KVM: PPC: Book3S HV: Correct tlbie usage

This corrects the usage of the tlbie (TLB invalidate entry) instruction
in HV KVM.  The tlbie instruction changed between PPC970 and POWER7.
On the PPC970, the bit to select large vs. small page is in the instruction,
not in the RB register value.  This changes the code to use the correct
form on PPC970.

On POWER7 we were calculating the AVAL (Abbreviated Virtual Address, Lower)
field of the RB value incorrectly for 64k pages.  This fixes it.

Since we now have several cases to handle for the tlbie instruction, this
factors out the code to do a sequence of tlbies into a new function,
do_tlbies(), and calls that from the various places where the code was
doing tlbie instructions inline.  It also makes kvmppc_h_bulk_remove()
use the same global_invalidates() function for determining whether to do
local or global TLB invalidations as is used in other places, for
consistency, and also to make sure that kvm->arch.need_tlb_flush gets
updated properly.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/include/asm/kvm_book3s_64.h
arch/powerpc/kvm/book3s_hv_rm_mmu.c