From: Mark Gross <mgross@linux.intel.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: queue_work from interrupt Real time preemption2.6.11-rc2-RT-V0.7.37-03
Date: Tue, 15 Feb 2005 10:06:44 -0800 [thread overview]
Message-ID: <200502151006.44809.mgross@linux.intel.com> (raw)
In-Reply-To: <20050215104153.GB19866@elte.hu>
On Tuesday 15 February 2005 02:41, Ingo Molnar wrote:
> * Mark Gross <mgross@linux.intel.com> wrote:
> > On Monday 14 February 2005 13:24, Steven Rostedt wrote:
> > > On Mon, 2005-02-14 at 12:40 -0800, Mark Gross wrote:
> > > > I'm working on a tweak to the preepmtive soft IRQ implementation
> > > > using work queues and I'm having problems with a BUG assert when
> > > > trying to queue_work.
> > > >
> > > > Souldn't I be able to call queue_work form ISR context?
> > >
> > > Yes, but not with interrupts disabled.
> >
> > Hmm. It seems to me that one should be able to call queue_work from
> > wherever you can call raise_softirq. This constraint adds a bit of
> > asymetry in the deffered processing API's
>
> one solution is to use the local_irq_*_nort() API variants - but it all
> depends on why you had to disable interrupts.
I'm attempting to change the softIRQ preemption implementation to use work
queues (one per softIRQ), that allow for runtime priority changes on a
per-soft IRQ bases. To do this I was trying to have raise_softirq call
queu_work directly. queue_work, doesn't use the *_nort() api's.
My alternitive is to put the call to queue_work into do_softIRQ. Which seems
to work, but feels like a bit too much indirection to queue up the soft IRQ
bottom half processing.
>
> Almost always irq-disabling done in conjunction with spinlocks, and the
> spin_lock_irq*() variants do not disable interrupts on PREEMPT_RT. I
> kept the assymetry of the local_irq*() APIs because in most cases they
> are used directly interrupts need to be disabled.
>
> it is also the more conservative approach, since we'll get messages like
> the ones you got when it's unsafe to do it - while if local_irq_*() APIs
> didnt disable interrupts we'd never know about the cases when they
> _must_ be disabled.)
>
> but yes, there's some API assymetry - which mostly comes from the fact
> alone that 99.999% of the kernel is now preemptible. There's just so
> much we can do to pretend that this is good'old Linux kernel semantics
>
> :-)
>
> Ingo
next prev parent reply other threads:[~2005-02-15 18:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-14 20:40 queue_work from interrupt Real time preemption2.6.11-rc2-RT-V0.7.37-03 Mark Gross
2005-02-14 21:24 ` Steven Rostedt
2005-02-14 22:29 ` Mark Gross
2005-02-15 10:41 ` Ingo Molnar
2005-02-15 18:06 ` Mark Gross [this message]
2005-02-16 5:16 ` Ingo Molnar
2005-02-16 16:11 ` David S. Miller
2005-02-16 17:59 ` George Anzinger
2005-02-16 22:55 ` Mark Gross
2005-02-16 18:02 ` Steven Rostedt
2005-02-17 7:57 ` Ingo Molnar
2005-02-17 15:13 ` Steven Rostedt
2005-02-17 7:52 ` Ingo Molnar
2005-02-17 14:57 ` Steven Rostedt
2005-02-17 16:14 ` Mark Gross
2005-03-29 8:57 ` Ingo Molnar
2005-03-31 18:41 ` Mark Gross
2005-04-01 5:55 ` 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=200502151006.44809.mgross@linux.intel.com \
--to=mgross@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.