Re: Interrupts disabled for too long in printk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/8/06, linux-os (Dick Johnson) <[email protected]> wrote:

On Wed, 7 Jun 2006, Jon Smirl wrote:

> On 6/7/06, Mathieu Desnoyers <[email protected]> wrote:
>> * Jon Smirl ([email protected]) 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
[email protected]
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux