From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>, "Daniel K." <dk@uw.no>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [PATCH 04/10] sched: rt-group: fix RR buglet
Date: Thu, 19 Jun 2008 14:22:22 +0200 [thread overview]
Message-ID: <20080619123313.980647602@chello.nl> (raw)
In-Reply-To: <20080619122218.971447669@chello.nl>
[-- Attachment #1: sched-rt-rr-throttle-fix.patch --]
[-- Type: text/plain, Size: 1064 bytes --]
In tick_task_rt() we first call update_curr_rt() which can dequeue a runqueue
due to it running out of runtime, and then we try to requeue it, of it also
having exhausted its RR quota. Obviously requeueing something that is no longer
on the runqueue will not have the expected result.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Tested-by: Daniel K. <dk@uw.no>
---
kernel/sched_rt.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: linux-2.6/kernel/sched_rt.c
===================================================================
--- linux-2.6.orig/kernel/sched_rt.c
+++ linux-2.6/kernel/sched_rt.c
@@ -549,8 +549,10 @@ static
void requeue_rt_entity(struct rt_rq *rt_rq, struct sched_rt_entity *rt_se)
{
struct rt_prio_array *array = &rt_rq->active;
+ struct list_head *queue = array->queue + rt_se_prio(rt_se);
- list_move_tail(&rt_se->run_list, array->queue + rt_se_prio(rt_se));
+ if (on_rt_rq(rt_se))
+ list_move_tail(&rt_se->run_list, queue);
}
static void requeue_task_rt(struct rq *rq, struct task_struct *p)
--
next prev parent reply other threads:[~2008-06-19 12:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-19 12:22 [PATCH 00/10] sched: rt bandwidth/group fixes Peter Zijlstra
2008-06-19 12:22 ` [PATCH 01/10] sched: NULL pointer dereference while setting sched_rt_period_us Peter Zijlstra
2008-06-19 12:22 ` [PATCH 02/10] sched: rt-group: fix hierarchy Peter Zijlstra
2008-06-19 12:22 ` [PATCH 03/10] sched: rt-group: heirarchy aware throttle Peter Zijlstra
2008-06-19 12:22 ` Peter Zijlstra [this message]
2008-06-19 12:22 ` [PATCH 05/10] sched: rt-bandwidth: fix cpu-hotplug interaction Peter Zijlstra
2008-06-19 12:22 ` [PATCH 06/10] sched: debug: add some rt debug output Peter Zijlstra
2008-06-19 12:22 ` [PATCH 07/10] sched: rt: fix SMP bandwidth balancing for throttled groups Peter Zijlstra
2008-06-19 12:22 ` [PATCH 08/10] sched: rt: move some code around Peter Zijlstra
2008-06-19 12:22 ` [PATCH 09/10] sched: rt: fix the bandwidth contraint computations Peter Zijlstra
2008-06-19 12:22 ` [PATCH 10/10] sched: rt: dont stop the period timer when there are tasks wanting to run Peter Zijlstra
2008-06-19 20:10 ` Daniel K.
2008-06-19 20:16 ` Peter Zijlstra
2008-06-20 9:06 ` Ingo Molnar
2008-06-20 8:47 ` [PATCH 00/10] sched: rt bandwidth/group fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080619123313.980647602@chello.nl \
--to=a.p.zijlstra@chello.nl \
--cc=dk@uw.no \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome