Re: Ingo's realtime_preempt patch causes kernel oops

Esben Nielsen
2006-05-24T16:43:48Z

On Wed, 24 May 2006, Steven Rostedt wrote:

> On Wed, 2006-05-24 at 10:06 +0200, Yann.LEPROVOST@wavecom.fr wrote:
> [...]
>
> Thomas or Ingo,
>
> Maybe the handling of IRQs needs to handle the case that shared irq can
> have both a NODELAY and a thread. The irq descriptor could have a
> NODELAY set if any of the actions are NODELAY, but before calling the
> interrupt handler (in interrupt context), check if the action is NODELAY
> or not, and if not, wake up the thread if not done so already.
>
> thoughts?
>

I am working on patchset dealing with this problem. It still needs clean
up. The basic idea is to add a SA_MUSTTHREAD along with SA_NODELAY. Under
PREEMPT_RT all interrupthandlers, which doesn't have SA_NODELAY, will get
SA_MUSTTHREAD unless the driver is changed. In irq_request() it is checked
if the handler has SA_NODELAY and an old has SA_MUSTTHREAD and visa
versa.

I have also made a lock type which can be changed from rt_mutex to
raw_spin_lock runtime. And I have made a system with a call-back from the
irq-layer to the driver so they can change their spinlocks on the fly when
needed.

Esben

> -- Steve
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>