Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-08 Thread Gregory Haskins
On Mon, 2007-10-08 at 10:41 -0400, Steven Rostedt wrote:
> --
> On Mon, 8 Oct 2007, Gregory Haskins wrote:
> >
> > Hi Steve,
> >   What you describe is exactly what I did.  The IRQF_NODELAY handler
> > just minimally checks to see if the character is a sysrq related one (or
> > KDB, if you have the KDB patches applied).  If it is not, it puts the
> > character into a ring-buffer and wakes a (kthread-based) tasklet to do
> > the normal serial/tty rx path by processing the ring.
> 
> Ah, that was in the second patch (I didn't look at that. My fault). I
> didn't see this description in the comments.

Well, the lack of a proper description is my fault.  I can fix this if
there is interest in actually including it.

>  But you are right, it is very
> close to what I did too. But before we add this to -rt, it will need to
> probably need to be tested quite a bit more.

Totally agree.  Note that it already is configurably inert, and defaults
to disabled so that might make it work for the general user just fine.
FWIW, our "debug" kernels have been running with the feature on for
quite a few weeks without problems.  But I would fully expect someone
external to want to quantify that claim on their own before it would be
considered.  So give it a whirl if you get a chance.

Regards,
-Greg

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


Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-08 Thread Steven Rostedt

--
On Mon, 8 Oct 2007, Gregory Haskins wrote:
>
> Hi Steve,
>   What you describe is exactly what I did.  The IRQF_NODELAY handler
> just minimally checks to see if the character is a sysrq related one (or
> KDB, if you have the KDB patches applied).  If it is not, it puts the
> character into a ring-buffer and wakes a (kthread-based) tasklet to do
> the normal serial/tty rx path by processing the ring.

Ah, that was in the second patch (I didn't look at that. My fault). I
didn't see this description in the comments. But you are right, it is very
close to what I did too. But before we add this to -rt, it will need to
probably need to be tested quite a bit more. Especially since this is more
to help us developers than to help end users.

I would like to see something like this eventually make it into RT.  Just
because there has been too many times that this would be useful. For now I
just use the NMI watchdog and soft lockup detect. But those are very
limiting.

>
> Hope that helps to clarify.

Yes, thanks!

-- Steve

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


Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-08 Thread Gregory Haskins
On Mon, 2007-10-08 at 10:10 -0400, Steven Rostedt wrote:

> This issue has hit me enough times where I've played with a few other
> ideas. I just haven't had the time to finish them. The main problem is if
> the system locks up somewhere we have a lock held that keeps us from
> scheduling. Once that happens in -rt, we are as good as dead. Since you
> can't get much info out without a JTAG or some other mechanism.
> 
> One thought I had was to create a small handler that could read the serial
> and place data into a buffer. This handler would be a IRQ_NODELAY, and it
> would wake up a serial thread to handle the data just like it would for
> normal serial output. But the serial thread would just read from the
> buffer instead of the serial itself.  In the case of a sysrq key coming
> in, the IRQ_NODELAY handler would handle it.
> 

Hi Steve,
  What you describe is exactly what I did.  The IRQF_NODELAY handler
just minimally checks to see if the character is a sysrq related one (or
KDB, if you have the KDB patches applied).  If it is not, it puts the
character into a ring-buffer and wakes a (kthread-based) tasklet to do
the normal serial/tty rx path by processing the ring.

Hope that helps to clarify.

Regards,
-Greg



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


Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-08 Thread Steven Rostedt

--
On Fri, 5 Oct 2007, Thomas Gleixner wrote:

> On Fri, 5 Oct 2007, Gregory Haskins wrote:
> > This series may help debugging certain circumstances where the serial
> > console is unreponsive (e.g. RT51+ spinner, or scheduler problem).  It 
> > changes
> > the serial8250 driver to use IRQF_NODELAY so that interrupts execute in irq
> > context instead of a kthread.
> >
> > It works pretty well on this end, though it is admitted not fully baked.  
> > For
> > instance, a few paths in sysrq can still call into non-raw spinlocks
> > (sched_debug_show, for instance) which will cause subsequent errors.  Also,
> > if you use KDB, be sure to convert the kdb_printf_lock to raw as well.  I 
> > may
> > send a KDB related patch seperately.
> >
> > I am sending this out now in case it is helpful to someone.
>
> The simple non-patch solution is to up the priority of the serial
> console irq to maximum. That's usually sufficient to catch runnaway tasks
> etc. It does not interfere with the system in normal operation as long as
> you do not hit keys in your minicom.
>
> I doubt that your patch has a chance to survive lockdep and anything which
> is not a sysrq.

This issue has hit me enough times where I've played with a few other
ideas. I just haven't had the time to finish them. The main problem is if
the system locks up somewhere we have a lock held that keeps us from
scheduling. Once that happens in -rt, we are as good as dead. Since you
can't get much info out without a JTAG or some other mechanism.

One thought I had was to create a small handler that could read the serial
and place data into a buffer. This handler would be a IRQ_NODELAY, and it
would wake up a serial thread to handle the data just like it would for
normal serial output. But the serial thread would just read from the
buffer instead of the serial itself.  In the case of a sysrq key coming
in, the IRQ_NODELAY handler would handle it.

Just a thought. Maybe someday I can get time to play more with this idea,
or someone else can come up with one.  But to convert the entire handler
into nodelay is a bit extreme.

-- Steve

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


Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-05 Thread Gregory Haskins
On Fri, 2007-10-05 at 18:41 +0200, Thomas Gleixner wrote:
> On Fri, 5 Oct 2007, Gregory Haskins wrote:
> > This series may help debugging certain circumstances where the serial
> > console is unreponsive (e.g. RT51+ spinner, or scheduler problem).  It 
> > changes
> > the serial8250 driver to use IRQF_NODELAY so that interrupts execute in irq
> > context instead of a kthread.
> > 
> > It works pretty well on this end, though it is admitted not fully baked  For
> > instance, a few paths in sysrq can still call into non-raw spinlocks
> > (sched_debug_show, for instance) which will cause subsequent errors.  Also,
> > if you use KDB, be sure to convert the kdb_printf_lock to raw as well.  I 
> > may
> > send a KDB related patch seperately.
> > 
> > I am sending this out now in case it is helpful to someone.
> 
> The simple non-patch solution is to up the priority of the serial 
> console irq to maximum. That's usually sufficient to catch runnaway tasks 
> etc. It does not interfere with the system in normal operation as long as 
> you do not hit keys in your minicom.
> 
> I doubt that your patch has a chance to survive lockdep and anything which 
> is not a sysrq.

Your point is valid, and I thought of this too.  The one problem with it
is that it is not immune to problems in the scheduler itself (which at
the time, I thought I was chasing..turned out to be lockdep), but that
is probably a rarity.  In any case, we have been using it on a number of
debug systems here for a few weeks and the console continues to work
well in all functions besides sysrq, believe it or not (*).  But I don't
see this as being anything used for real.  Just thought I would throw it
out there in case it was useful or inspired someone to give it some
love.

Regards,
-Greg

(*) The trick is that once it figures out its not for sysrq, it
schedules a (kthread based) tasklet to do the actual tty() callbacks.


signature.asc
Description: This is a digitally signed message part


Re: [PATCH 0/2] [RFC] RT: Optionally allow IRQF_NODELAY on serial console

2007-10-05 Thread Thomas Gleixner
On Fri, 5 Oct 2007, Gregory Haskins wrote:
> This series may help debugging certain circumstances where the serial
> console is unreponsive (e.g. RT51+ spinner, or scheduler problem).  It changes
> the serial8250 driver to use IRQF_NODELAY so that interrupts execute in irq
> context instead of a kthread.
> 
> It works pretty well on this end, though it is admitted not fully baked.  For
> instance, a few paths in sysrq can still call into non-raw spinlocks
> (sched_debug_show, for instance) which will cause subsequent errors.  Also,
> if you use KDB, be sure to convert the kdb_printf_lock to raw as well.  I may
> send a KDB related patch seperately.
> 
> I am sending this out now in case it is helpful to someone.

The simple non-patch solution is to up the priority of the serial 
console irq to maximum. That's usually sufficient to catch runnaway tasks 
etc. It does not interfere with the system in normal operation as long as 
you do not hit keys in your minicom.

I doubt that your patch has a chance to survive lockdep and anything which 
is not a sysrq.

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