|
@@ -4134,7 +4134,7 @@ asmlinkage void __sched schedule(void)
|
|
|
struct task_struct *prev, *next;
|
|
|
unsigned long *switch_count;
|
|
|
struct rq *rq;
|
|
|
- int cpu;
|
|
|
+ int cpu, hrtick = sched_feat(HRTICK);
|
|
|
|
|
|
need_resched:
|
|
|
preempt_disable();
|
|
@@ -4149,7 +4149,8 @@ need_resched_nonpreemptible:
|
|
|
|
|
|
schedule_debug(prev);
|
|
|
|
|
|
- hrtick_clear(rq);
|
|
|
+ if (hrtick)
|
|
|
+ hrtick_clear(rq);
|
|
|
|
|
|
/*
|
|
|
* Do the rq-clock update outside the rq lock:
|
|
@@ -4197,7 +4198,8 @@ need_resched_nonpreemptible:
|
|
|
} else
|
|
|
spin_unlock_irq(&rq->lock);
|
|
|
|
|
|
- hrtick_set(rq);
|
|
|
+ if (hrtick)
|
|
|
+ hrtick_set(rq);
|
|
|
|
|
|
if (unlikely(reacquire_kernel_lock(current) < 0))
|
|
|
goto need_resched_nonpreemptible;
|