• Simon Guo's avatar
    KVM: PPC: Book3S PR: Add guest MSR parameter for kvmppc_save_tm()/kvmppc_restore_tm() · 6f597c6b
    Simon Guo authored
    HV KVM and PR KVM need different MSR source to indicate whether
    treclaim. or trecheckpoint. is necessary.
    
    This patch add new parameter (guest MSR) for these kvmppc_save_tm/
    kvmppc_restore_tm() APIs:
    - For HV KVM, it is VCPU_MSR
    - For PR KVM, it is current host MSR or VCPU_SHADOW_SRR1
    
    This enhancement enables these 2 APIs to be reused by PR KVM later.
    And the patch keeps HV KVM logic unchanged.
    
    This patch also reworks kvmppc_save_tm()/kvmppc_restore_tm() to
    have a clean ABI: r3 for vcpu and r4 for guest_msr.
    
    During kvmppc_save_tm/kvmppc_restore_tm(), the R1 need to be saved
    or restored. Currently the R1 is saved into HSTATE_HOST_R1. In PR
    KVM, we are going to add a C function wrapper for
    kvmppc_save_tm/kvmppc_restore_tm() where the R1 will be incremented
    with added stackframe and save into HSTATE_HOST_R1. There are several
    places in HV KVM to load HSTATE_HOST_R1 as R1, and we don't want to
    bring risk or confusion by TM code.
    
    This patch will use HSTATE_SCRATCH2 to save/restore R1 in
    kvmppc_save_tm/kvmppc_restore_tm() to avoid future confusion, since
    the r1 is actually a temporary/scratch value to be saved/stored.
    
    [paulus@ozlabs.org - rebased on top of 7b0e827c ("KVM: PPC: Book3S HV:
     Factor fake-suspend handling out of kvmppc_save/restore_tm", 2018-05-30)]
    Signed-off-by: default avatarSimon Guo <wei.guo.simon@gmail.com>
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    6f597c6b
book3s_hv_rmhandlers.S 84.9 KB