On Wed, 7 Jun 2006, Jon Smirl wrote:
> On 6/7/06, Mathieu Desnoyers <compudj@xxxxxxxxxxxxxxxxxx> wrote:
>> * Jon Smirl (jonsmirl@xxxxxxxxx) 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.