• James Hogan's avatar
    MIPS: KVM: Emulate MSA bits in COP0 interface · 2b6009d6
    James Hogan authored
    Emulate MSA related parts of COP0 interface so that the guest will be
    able to enable/disable MSA (Config5.MSAEn) once the MSA capability has
    been wired up.
    
    As with the FPU (Status.CU1) setting Config5.MSAEn has no immediate
    effect if the MSA state isn't live, as MSA state is restored lazily on
    first use. Changes after the MSA state has been restored take immediate
    effect, so that the guest can start getting MSA disabled exceptions
    right away for guest MSA operations. The MSA state is saved lazily too,
    as MSA may get re-enabled in the near future anyway.
    
    A special case is also added for when Status.CU1 is set while FR=0 and
    the MSA state is live. In this case we are at risk of getting reserved
    instruction exceptions if we try and save the MSA state, so we lose the
    MSA state sooner while MSA is still usable.
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    2b6009d6
emulate.c 67.2 KB