• Michael Ellerman's avatar
    KVM: PPC: Book3S HV: Context switch AMR on Power9 · d976f680
    Michael Ellerman authored
    kvmhv_p9_guest_entry() implements a fast-path guest entry for Power9
    when guest and host are both running with the Radix MMU.
    
    Currently in that path we don't save the host AMR (Authority Mask
    Register) value, and we always restore 0 on return to the host. That
    is OK at the moment because the AMR is not used for storage keys with
    the Radix MMU.
    
    However we plan to start using the AMR on Radix to prevent the kernel
    from reading/writing to userspace outside of copy_to/from_user(). In
    order to make that work we need to save/restore the AMR value.
    
    We only restore the value if it is different from the guest value,
    which is already in the register when we exit to the host. This should
    mean we rarely need to actually restore the value when running a
    modern Linux as a guest, because it will be using the same value as
    us.
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Tested-by: default avatarRussell Currey <ruscur@russell.cc>
    d976f680
book3s_hv.c 141 KB