|
@@ -466,7 +466,7 @@ struct rq {
|
|
|
u64 nohz_stamp;
|
|
|
unsigned char nohz_balance_kick;
|
|
|
#endif
|
|
|
- unsigned int skip_clock_update;
|
|
|
+ int skip_clock_update;
|
|
|
|
|
|
/* capture load from *all* tasks on this cpu: */
|
|
|
struct load_weight load;
|
|
@@ -652,7 +652,7 @@ static void update_rq_clock(struct rq *rq)
|
|
|
{
|
|
|
s64 delta;
|
|
|
|
|
|
- if (rq->skip_clock_update)
|
|
|
+ if (rq->skip_clock_update > 0)
|
|
|
return;
|
|
|
|
|
|
delta = sched_clock_cpu(cpu_of(rq)) - rq->clock;
|
|
@@ -4127,7 +4127,7 @@ static inline void schedule_debug(struct task_struct *prev)
|
|
|
|
|
|
static void put_prev_task(struct rq *rq, struct task_struct *prev)
|
|
|
{
|
|
|
- if (prev->on_rq)
|
|
|
+ if (prev->on_rq || rq->skip_clock_update < 0)
|
|
|
update_rq_clock(rq);
|
|
|
prev->sched_class->put_prev_task(rq, prev);
|
|
|
}
|