• Suraj Jitindar Singh's avatar
    KVM: PPC: Book3S HV: Save/restore vrsave register in kvmhv_p9_guest_entry() · 44b198ae
    Suraj Jitindar Singh authored
    On POWER9 and later processors where the host can schedule vcpus on a
    per thread basis, there is a streamlined entry path used when the guest
    is radix. This entry path saves/restores the fp and vr state in
    kvmhv_p9_guest_entry() by calling store_[fp/vr]_state() and
    load_[fp/vr]_state(). This is the same as the old entry path however the
    old entry path also saved/restored the VRSAVE register, which isn't done
    in the new entry path.
    
    This means that the vrsave register is now volatile across guest exit,
    which is an incorrect change in behaviour.
    
    Fix this by saving/restoring the vrsave register in kvmhv_p9_guest_entry().
    This restores the old, correct, behaviour.
    
    Fixes: 95a6432c ("KVM: PPC: Book3S HV: Streamlined guest entry/exit path on P9 for radix guests")
    Signed-off-by: default avatarSuraj Jitindar Singh <sjitindarsingh@gmail.com>
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    44b198ae
book3s_hv.c 143 KB