diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-09-30 18:26:21 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-09-30 18:26:21 -0400 |
commit | 696ff3d97e631739c21daf15d2f3484ee9b7cb02 (patch) | |
tree | 4baf76afa81806855751228cba54fac109d9397f /kernel | |
parent | e9fc09f4bd2bae682cea6e7155aad1fe3f58e77b (diff) | |
parent | fb90f3b6a8a604a9aed7249045bfed77ce42de5b (diff) |
Fixed sched_color run issues.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 4f76f883f831..2739b3339ffb 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -3163,16 +3163,26 @@ static inline void post_schedule(struct rq *rq) | |||
3163 | asmlinkage void schedule_tail(struct task_struct *prev) | 3163 | asmlinkage void schedule_tail(struct task_struct *prev) |
3164 | __releases(rq->lock) | 3164 | __releases(rq->lock) |
3165 | { | 3165 | { |
3166 | struct rq *rq = this_rq(); | 3166 | struct rq *rq; |
3167 | 3167 | ||
3168 | preempt_disable(); | ||
3169 | |||
3170 | rq = this_rq(); | ||
3168 | finish_task_switch(rq, prev); | 3171 | finish_task_switch(rq, prev); |
3169 | 3172 | ||
3173 | sched_trace_task_switch_to(current); | ||
3174 | |||
3170 | /* | 3175 | /* |
3171 | * FIXME: do we need to worry about rq being invalidated by the | 3176 | * FIXME: do we need to worry about rq being invalidated by the |
3172 | * task_switch? | 3177 | * task_switch? |
3173 | */ | 3178 | */ |
3174 | post_schedule(rq); | 3179 | post_schedule(rq); |
3175 | 3180 | ||
3181 | if (sched_state_validate_switch()) | ||
3182 | litmus_reschedule_local(); | ||
3183 | |||
3184 | preempt_enable(); | ||
3185 | |||
3176 | #ifdef __ARCH_WANT_UNLOCKED_CTXSW | 3186 | #ifdef __ARCH_WANT_UNLOCKED_CTXSW |
3177 | /* In this case, finish_task_switch does not reenable preemption */ | 3187 | /* In this case, finish_task_switch does not reenable preemption */ |
3178 | preempt_enable(); | 3188 | preempt_enable(); |