KVM: MIPS/MMU: Invalidate GVA PTs on ASID changes
authorJames Hogan <james.hogan@imgtec.com>
Fri, 16 Dec 2016 15:57:00 +0000 (15:57 +0000)
committerJames Hogan <james.hogan@imgtec.com>
Fri, 3 Feb 2017 15:20:55 +0000 (15:20 +0000)
commita31b50d741bd85a127d5ef2c21c0788041bc41a9
treee67fc587b0eb2d038b20f3b9b67be6a5bdf868b5
parent57e3869cfaaec712f6ea1855ab7ba868f6f306ed
KVM: MIPS/MMU: Invalidate GVA PTs on ASID changes

Implement invalidation of large ranges of virtual addresses from GVA
page tables in response to a guest ASID change (immediately for guest
kernel page table, lazily for guest user page table).

We iterate through a range of page tables invalidating entries and
freeing fully invalidated tables. To minimise overhead the exact ranges
invalidated depends on the flags argument to kvm_mips_flush_gva_pt(),
which also allows it to be used in future KVM_CAP_SYNC_MMU patches in
response to GPA changes, which unlike guest TLB mapping changes affects
guest KSeg0 mappings.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
arch/mips/include/asm/kvm_host.h
arch/mips/kvm/emulate.c
arch/mips/kvm/mmu.c
arch/mips/kvm/trap_emul.c