• James Hogan's avatar
    KVM: MIPS: Implement kvm_arch_flush_shadow_all/memslot · b6209110
    James Hogan authored
    Implement the kvm_arch_flush_shadow_all() and
    kvm_arch_flush_shadow_memslot() KVM functions for MIPS to allow guest
    physical mappings to be safely changed.
    
    The general MIPS KVM code takes care of flushing of GPA page table
    entries. kvm_arch_flush_shadow_all() flushes the whole GPA page table,
    and is always called on the cleanup path so there is no need to acquire
    the kvm->mmu_lock. kvm_arch_flush_shadow_memslot() flushes only the
    range of mappings in the GPA page table corresponding to the slot being
    flushed, and happens when memory regions are moved or deleted.
    
    MIPS KVM implementation callbacks are added for handling the
    implementation specific flushing of mappings derived from the GPA page
    tables. These are implemented for trap_emul.c using
    kvm_flush_remote_tlbs() which should now be functional, and will flush
    the per-VCPU GVA page tables and ASIDS synchronously (before next
    entering guest mode or directly accessing GVA space).
    Signed-off-by: default avatarJames 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
    b6209110
mips.c 43.8 KB