lkml.org 
[lkml]   [2006]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Interrupts disabled for too long in printk
On 6/8/06, linux-os (Dick Johnson) <linux-os@analogic.com> wrote:
>
> On Wed, 7 Jun 2006, Jon Smirl wrote:
>
> > On 6/7/06, Mathieu Desnoyers <compudj@krystal.dyndns.org> wrote:
> >> * Jon Smirl (jonsmirl@gmail.com) wrote:
> >>> You can look at this problem from the other direction too. Why is it
> >>> taking 15ms to get between the two points? If IRQs are off how is the
> >>> serial driver getting interrupts to be able to display the message? It
> >>> is probably worthwhile to take a look and see what the serial console
> >>> driver is doing.
> >>
> >> Hi John,
> >>
> >> The serial port is configured at 38000 bauds. It can therefore transmit 4800
> >> bytes per seconds, for 72 characters in 15 ms. So the console driver would be
> >> simply busy sending characters to the serial port during that interrupt
> >> disabling period.
> >
> > Why can't the serial console driver record the message in a buffer at
> > the point where it is being called with interrupts off, and then let
> > the serial port slowly print it via interupts? It sounds to me like
> > the serial port is being driven in polling mode.
> >
> >>
> >> Mathieu
> >>
> >> OpenPGP public key: http://krystal.dyndns.org:8080/key/compudj.gpg
> >> Key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
>
> Probably because there is no buffer that is big enough! If the character
> source (a call to printk()) can generate N characters per second, but
> the UART can only send out N-1, then the buffer will fill up at which
> time software will wait until the UART is ready for the next character,
> effectively becoming poll-mode with a buffer full of characters as
> backlog.

That sounds like a reasonable explanation if that is what is actually
happening. Does the serial console driver revert to a polling
behavior when interrupts are off?

What should the console do in this situation? If called to printk with
interrupts off, and the backlog buffer is full, should it suspend the
system like it is doing, or should it toss the printk and return an
error?

--
Jon Smirl
jonsmirl@gmail.com
-
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/

\
 
 \ /
  Last update: 2006-06-08 16:40    [W:0.035 / U:1.528 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site