• James Hogan's avatar
    KVM: MIPS/TLB: Generalise host TLB invalidate to kernel ASID · 57e3869c
    James Hogan authored
    Refactor kvm_mips_host_tlb_inv() to also be able to invalidate any
    matching TLB entry in the kernel ASID rather than assuming only the TLB
    entries in the user ASID can change. Two new bool user/kernel arguments
    allow the caller to indicate whether the mapping should affect each of
    the ASIDs for guest user/kernel mode.
    
    - kvm_mips_invalidate_guest_tlb() (used by TLBWI/TLBWR emulation) can
      now invalidate any corresponding TLB entry in both the kernel ASID
      (guest kernel may have accessed any guest mapping), and the user ASID
      if the entry being replaced is in guest USeg (where guest user may
      also have accessed it).
    
    - The tlbmod fault handler (and the KSeg0 / TLB mapped / commpage fault
      handlers in later patches) can now invalidate the corresponding TLB
      entry in whichever ASID is currently active, since only a single page
      table will have been updated anyway.
    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
    57e3869c
emulate.c 71.5 KB