Thread (15 messages) 15 messages, 5 authors, 2016-07-28

Re: [PATCH] 8250: option 'force_polling' for buggy IRQs

From: Greg KH <gregkh@linuxfoundation.org>
Date: 2016-07-26 15:08:45
Also in: lkml

On Tue, Jul 26, 2016 at 01:42:13PM +0200, Max Staudt wrote:
On 07/25/2016 07:47 PM, Greg KH wrote:
quoted
On Mon, Jul 25, 2016 at 07:36:15PM +0200, Max Staudt wrote:
quoted
Some serial ports may not emit IRQs properly, or there may be a defect
in their routing on the motherboard.

This patch allows these ports to be used anyway (or until a better
workaround is known for a specific platform), though with no guarantees.

If you have such a buggy UART, boot Linux with 8250.force_polling=1 .
Ick, don't add new module parameters if at all possible.
I agree, I'd rather not add a parameter either, but...

- It's a hardware issue
- It needs to be handled at boot time
Why?
- It can't be auto-detected (AFAIK)
Why not?  Can't you have a quirk for this specific, broken, device?
The idea is that this parameter allows for a workaround until someone comes
up with a workaround or autodetection (if ever). And it can be used to
debug future buggy hardware.
module paramters are horrid, they don't scale (which uart is this for?),
and no one ever changes them.
quoted
quoted
It is essentially the kernel level version of:

  setserial /dev/ttySn irq 0
Why can't you just do this instead?
Because it's too late by the time we reach userspace.

In case of "console=ttyS0" the decision to use polling needs to happen before
ttyS0 is opened from userspace, as the system will otherwise hang for up to
30 seconds at a time. Input is mostly dropped, thus I can't even use BREAK+B
to force reboot it.

As it stands now, I can't even boot the system with "rdinit=/bin/bash".
The force_polling option makes the system somewhat usable, albeit the serial
output is very slow.

Curiously, the kernel's printk() is as fast as it should be. It's just
userspace that is slow. Any idea why that is the case?
Ah, then something else might be wrong here, I suggest you track this
down please.

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help