Bug 6280

Summary: [intel-corei7-64][MinnowMax] serial8250: too much work for irq4 messages
Product: [Build System, Metadata & Runtime] BSPs Reporter: Darren Hart <dvhart>
Component: bsps-meta-intelAssignee: California Sullivan <california.l.sullivan>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: Medium CC: tom.zanussi, warthog9
Version: unspecified   
Target Milestone: Future   
Hardware: MinnowBoard Max   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description Darren Hart 2014-05-07 21:42:48 UTC
Periodically, the serial console will freeze with something like the following:

root@intel-corei7-64:~# ./acpidump
[  185.458985] serial8250: too much work for irq4
[  185.465301] serial8250: too much work for irq4
[  185.471583] serial8250: too much work for irq4
[  185.477861] serial8250: too much work for irq4
[  185.484137] serial8250: too much work for irq4
[  185.490414] serial8250: too much work for irq4
[  185.496691] serial8250: too much work for irq4
[  185.502979] serial8250: too much work for irq4
[  185.509262] serial8250: too much work for irq4
[  185.515540] serial8250: too much work for irq4

Sometimes the console will recover, other times it becomes permanently unresponsive until a reboot.

Reproduces on a variety of kernels, but this one was captured using 3.14.2 (linux-yocto/standard/base) + Baytrail PCI patches.
Comment 1 Darren Hart 2014-06-12 23:33:50 UTC
I haven't seen this reproduce in a while. Leaving open, but will close if I can't reproduce after some weeks.
Comment 2 John 'Warthog9' Hawley 2014-07-18 23:59:45 UTC
:q![  985.674141] serial8250: too much work for irq4
[  985.680486] serial8250: too much work for irq4
[  985.686796] serial8250: too much work for irq4
[  985.693100] serial8250: too much work for irq4
[  985.699404] serial8250: too much work for irq4
[  985.705707] serial8250: too much work for irq4
[  985.712010] serial8250: too much work for irq4
[  985.718313] serial8250: too much work for irq4
[  985.724616] serial8250: too much work for irq4
[  985.730918] serial8250: too much work for irq4

Seen on July 18th, was editing some files before it wandered off and died.

I'm guessing it's just a driver bug, but the serial console goes dead after this.
Comment 3 California Sullivan 2016-04-27 21:41:56 UTC
The "Too much work for IRQ messages" occur because of erroneous Character Timeout interrupts.

The UART's Interrupt Identification Register is cleared on a receive buffer read. The UART would sometimes display a Character Timeout interrupt in the Interrupt Identification Register without any data being present in the FIFO, so the Data Ready bit would not be set. The kernel tries to service the interrupt, but since the Data Ready bit is not set, it does not read the Receive Buffer and so the UART's Interrupt Identification Register is never reset. This repeats until either the UART has some new data in the Receive Buffer (Data Ready) or the kernel kills the 8250 driver.

The issue can be worked around by setting the RX trigger on the FIFO to 1 byte, essentially turning off Character Timeout interrupts. This can be done through the sysfs as follows:

I hypothesize that the way we get erroneous Character Timeout
interrupts is that it sometimes fails to clear the interrupt on Receive
Buffer read, but I have not been able to confirm it.

In any case, this appears to be a hardware issue and to handle it properly we would need a new PNP ID and a special quirk.

echo 1 > /sys/class/tty/ttyS0/rx_trig_bytes
Comment 4 Stephen K Jolley 2017-06-13 21:26:01 UTC
We are no longer tracking in Yocto Project Bugzilla MinnowBoard and MinnowBoard-MAX HW and firmware bugs.