From: Steven Rostedt <rostedt@goodmis.org>
To: Esben Nielsen <nielsen.esben@googlemail.com>
Cc: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
"Duetsch, Thomas LDE1" <thomas.duetsch@siemens.com>
Subject: Re: [RT] rt priority losing
Date: Mon, 24 Jul 2006 12:37:22 -0400 [thread overview]
Message-ID: <1153759042.11295.10.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.64.0607241758420.10471@localhost.localdomain>
On Mon, 2006-07-24 at 18:00 +0100, Esben Nielsen wrote:
> On Mon, 24 Jul 2006, Steven Rostedt wrote:
>
> > Ingo or Tglx,
> >
> > It has come to my attention that the dynamic hrtimer softirq can lose a
> > boosted priority. That is, if a softirq is running while a timeout
> > happens, and the call back is of lower priority than the currently
> > running hrtimer softirq, the timer interrupt will still lower the
> > hrtimer softirq.
> >
> > Here's the problem code:
> >
> > static void wakeup_softirqd_prio(int softirq, int prio)
> > {
> > /* Interrupts are disabled: no need to stop preemption */
> > struct task_struct *tsk = __get_cpu_var(ksoftirqd[softirq].tsk);
> >
> > if (tsk) {
> > if (tsk->normal_prio != prio) {
> > struct sched_param param;
> >
> > param.sched_priority = MAX_RT_PRIO-1 - prio;
> > setscheduler(tsk, -1, SCHED_FIFO, ¶m);
> > }
> > if(tsk->state != TASK_RUNNING)
> > wake_up_process(tsk);
> > }
> > }
> >
> >
> > So, tsk could be softirqd-hrmono and we lower the priority. (only
> > normal_prio is checked versus prio).
> >
> > So this can be a problem, if the softirq function holds a lock of a high
> > priority task, and is running boosted. If another timer goes off with a
> > lower priority, we can lower the priority of the softirqd and lose the
> > inherited priority that it was running at.
>
> There is a check for that inside setscheduler():
> p->prio = rt_mutex_getprio(p);
OK, you are right about this. The PI chain should not be affected. But
this could still be a problem if the softirq was running at a high prio
for a task when a lower prio callback needs to be made. It looks like
timer is removed from the base before the function runs. So when the
interrupt looks at the base to determine the priority to set it at, it
might actually lower the priority of a running hrtimer thread.
-- Steve
next prev parent reply other threads:[~2006-07-24 16:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-24 15:41 Steven Rostedt
2006-07-24 17:00 ` Esben Nielsen
2006-07-24 16:37 ` Steven Rostedt [this message]
2006-07-24 16:44 ` Thomas Gleixner
2006-07-24 17:54 ` Esben Nielsen
2006-07-24 17:15 ` [PATCH -rt] Don't let raise_softirq_prio lower the prio (was: [RT] rt priority losing) Steven Rostedt
2006-07-26 8:10 ` 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=1153759042.11295.10.camel@localhost.localdomain \
--to=rostedt@goodmis.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nielsen.esben@googlemail.com \
--cc=tglx@linutronix.de \
--cc=thomas.duetsch@siemens.com \
/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