Re: [PATCH 1/1] tty, serial, 8250: to avoid recv fifo overrun, read rx fifo during xmit

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

 



> I hate functions that have "bool" variables like this, it's a mess and
> can cause them to do different things so you always have to look up the
> details.

Agreed, but it was a magic flag in a structure before I made
it explicit like that, so I think it's a big improvement.

I think I improved the original maintenance nightmare of a patch,
but I'd be delighted fo have someone with a broader understanding
of the code clean it up even more.

> Why isn't this a problem with other uarts and slow baud rates?  Why
> hasn't this problem ever been reported in the past for other uarts?  Is
> this really the best/only way to solve this?

The root cause is the emergency console output feature which uses
the UART with interrupts disabled.  UARTs which don't support
that don't have the issue.

Console output can be long, and the input FIFO can overflow in the
meantime.  The designers of the feature assumed the UART would
me dedicated as a console, so would not be receiving much input.

However, here we have a use case that does have significant input.

The change is to poll for input while polling for output.

However, this leads to a potential deadlock.  Most output can simply
be blocked for the diration of the emergency print.  However, a SysRq
also uses the same emergency console output feature, so there's
a re-entrancy problem.

This code takes the simple approach of halting input polling if
SysRq is received (before the following action character is received
and must be acted on).
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux