• James Hogan's avatar
    KVM: MIPS/TLB: Add VZ TLB management · 372582a6
    James Hogan authored
    Add functions for MIPS VZ TLB management to tlb.c.
    
    kvm_vz_host_tlb_inv() will be used for invalidating root TLB entries
    after GPA page tables have been modified due to a KVM page fault. It
    arranges for a root GPA mapping to be flushed from the TLB, using the
    gpa_mm ASID or the current GuestID to do the probe.
    
    kvm_vz_local_flush_roottlb_all_guests() and
    kvm_vz_local_flush_guesttlb_all() flush all TLB entries in the
    corresponding TLB for guest mappings (GPA->RPA for root TLB with
    GuestID, and all entries for guest TLB). They will be used when starting
    a new GuestID cycle, when VZ hardware is enabled/disabled, and also when
    switching to a guest when the guest TLB contents may be stale or belong
    to a different VM.
    
    kvm_vz_guest_tlb_lookup() converts a guest virtual address to a guest
    physical address using the guest TLB. This will be used to decode guest
    virtual addresses which are sometimes provided by VZ hardware in
    CP0_BadVAddr for certain exceptions when the guest physical address is
    unavailable.
    
    kvm_vz_save_guesttlb() and kvm_vz_load_guesttlb() will be used to
    preserve wired guest VTLB entries while a guest isn't running.
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Acked-by: default avatarRalf Baechle <ralf@linux-mips.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    372582a6
tlb.c 15.4 KB