• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Simplify handling of VCPUs that need a VPA update · d911f0be
    Paul Mackerras authored
    Previously, if kvmppc_run_core() was running a VCPU that needed a VPA
    update (i.e. one of its 3 virtual processor areas needed to be pinned
    in memory so the host real mode code can update it on guest entry and
    exit), we would drop the vcore lock and do the update there and then.
    Future changes will make it inconvenient to drop the lock, so instead
    we now remove it from the list of runnable VCPUs and wake up its
    VCPU task.  This will have the effect that the VCPU task will exit
    kvmppc_run_vcpu(), go around the do loop in kvmppc_vcpu_run_hv(), and
    re-enter kvmppc_run_vcpu(), whereupon it will do the necessary call
    to kvmppc_update_vpas() and then rejoin the vcore.
    
    The one complication is that the runner VCPU (whose VCPU task is the
    current task) might be one of the ones that gets removed from the
    runnable list.  In that case we just return from kvmppc_run_core()
    and let the code in kvmppc_run_vcpu() wake up another VCPU task to be
    the runner if necessary.
    
    This all means that the VCORE_STARTING state is no longer used, so we
    remove it.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    d911f0be
kvm_host.h 16.8 KB