• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Move vcore preemption point up into kvmppc_run_vcpu · 25fedfca
    Paul Mackerras authored
    Rather than calling cond_resched() in kvmppc_run_core() before doing
    the post-processing for the vcpus that we have just run (that is,
    calling kvmppc_handle_exit_hv(), kvmppc_set_timer(), etc.), we now do
    that post-processing before calling cond_resched(), and that post-
    processing is moved out into its own function, post_guest_process().
    
    The reschedule point is now in kvmppc_run_vcpu() and we define a new
    vcore state, VCORE_PREEMPT, to indicate that that the vcore's runner
    task is runnable but not running.  (Doing the reschedule with the
    vcore in VCORE_INACTIVE state would be bad because there are potentially
    other vcpus waiting for the runner in kvmppc_wait_for_exec() which
    then wouldn't get woken up.)
    
    Also, we make use of the handy cond_resched_lock() function, which
    unlocks and relocks vc->lock for us around the reschedule.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    25fedfca
book3s_hv.c 68.6 KB