Re: Serial 8250: clear the lsr_break_flag at open

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

 



Russell King wrote:
On Mon, Apr 30, 2007 at 05:08:59PM -0500, Corey Minyard wrote:
I'm having a hard time understanding why the lsr_break_flag
is necessary.

Merely reading the LSR clears status bits.  We read the LSR repeatedly
so that we can monitor the transmit FIFO when outputting serial console
messages.

This means that if you have a busy serial console, and you want to send
it a sysrq request, there's a chance that the break flag in the LSR will
be cleared by the transmit FIFO status polling code thereby being lost.

So, we need to remember that status, and we do this via the lsr_break_flag.
I should have said a little more.  I couldn't find anywhere in any docs
for this that said it was a destructive read.  I've done some experiments
and that seems to be the case, though.

So two things:

There are other bits in this register that also appear to be destroyed on
read: framing, parity, and overrun.  Should those be saved, too?

There are several places where the LSR is read and nothing is done
for this, in serial8250_start_tx, serial8250_backup_timeout, and
serial8250_tx_empty.  It seems like these would need to be handled,
too.

If this is really a problem, I'd be glad to generate another patch.

-corey
-
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