• James Hogan's avatar
    KVM: MIPS/Emulate: Use lockless GVA helpers for cache emulation · 4cf74c9c
    James Hogan authored
    Use the lockless GVA helpers to implement the reading of guest
    instructions for emulation. This will allow it to handle asynchronous
    TLB flushes when they are implemented.
    
    This is a little more complicated than the other two cases (get_inst()
    and dynamic translation) due to the need to emulate the appropriate
    guest TLB exception when the address isn't present or isn't valid in the
    guest TLB.
    
    Since there are several protected cache ops that may need to be
    performed safely, this is abstracted by kvm_mips_guest_cache_op() which
    is passed a protected cache op function pointer and takes care of the
    lockless operation and fault handling / retry if the op should fail,
    taking advantage of the new errors which the protected cache ops can now
    return. This allows the existing advance fault handling which relied on
    host TLB lookups to be removed, along with the now unused
    kvm_mips_host_tlb_lookup(),
    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
    4cf74c9c
kvm_host.h 29.2 KB