We should clear the __RTDS_depleted bit once a VCPU budget is replenished.
Because repl_timer_handler may be called after rt_schedule
but before rt_context_saved, the VCPU may be not on CPU or on queue
when the VCPU is the middle of context switch
Signed-off-by: Meng Xu <mengxu@cis.upenn.edu>
Acked-by: Dario Faggioli <dario.faggioli@citrix.com>
Release-acked-by: Wei Liu <wei.liu2@citrix.com>
if ( svc->cur_deadline > next_on_runq->cur_deadline )
runq_tickle(ops, next_on_runq);
}
- else if ( vcpu_on_q(svc) &&
- __test_and_clear_bit(__RTDS_depleted, &svc->flags) )
+ else if ( __test_and_clear_bit(__RTDS_depleted, &svc->flags) &&
+ vcpu_on_q(svc) )
runq_tickle(ops, svc);
list_del(&svc->replq_elem);