Hi Steven, This patch applies to 23-rt11 to fix that bug you found in the git-HEAD merge. I will fold this patch into my 24 series so it is fixed there. Feel free to fold this into patch "#8" instead of maintaining it seperately, if you prefer. -------------------------- RT: Fix a bug for properly setting the priority on rt-dequeue We need to update the priority on task-dequeue whenever it changes, not just if more RT tasks are pending. Signed-off-by: Gregory Haskins <ghaskins@xxxxxxxxxx> --- kernel/sched_rt.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index f05912a..864d18a 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c @@ -85,6 +85,8 @@ static inline void inc_rt_tasks(struct task_struct *p, struct rq *rq) static inline void dec_rt_tasks(struct task_struct *p, struct rq *rq) { + int highest_prio = rq->rt.highest_prio; + WARN_ON(!rt_task(p)); WARN_ON(!rq->rt.rt_nr_running); rq->rt.rt_nr_running--; @@ -98,13 +100,15 @@ static inline void dec_rt_tasks(struct task_struct *p, struct rq *rq) array = &rq->rt.active; rq->rt.highest_prio = sched_find_first_bit(array->bitmap); - cpupri_set(rq->cpu, rq->rt.highest_prio); } /* otherwise leave rq->highest prio alone */ } else rq->rt.highest_prio = MAX_RT_PRIO; if (p->nr_cpus_allowed > 1) rq->rt.rt_nr_migratory--; + if (rq->rt.highest_prio != highest_prio) + cpupri_set(rq->cpu, rq->rt.highest_prio); + update_rt_migration(p, rq); #endif /* CONFIG_SMP */ } - To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html