Thread (25 messages) 25 messages, 7 authors, 2016-03-14

Re: sc16is7xx: a lot of time is spend in sc16is7xx_port_irq

From: Josh Cartwright <hidden>
Date: 2016-02-24 22:35:47
Also in: linux-serial

On Wed, Feb 24, 2016 at 06:39:46PM +0100, Sean Nyekj?r wrote:
CC'ing RT
I'm assuming this is with the other patch killing off IRQF_ONESHOT?
On 2016-02-24 16:31, Sean Nyekjær wrote:
quoted
Hi

I'm using the sc16is750 on an imx6d platform with RT patches applied.

I have observed that sometimes the driver locks the whole system as is
loops inside the sc16is7xx_port_irq.
I have applied some debug and seen we are looping upto 130000 times in the
while(1) loop.
The SC16IS7XX_IIR_REG does signal the SC16IS7XX_IIR_XOFFI_SRC but the
SC16IS7XX_IER_XOFFI_BIT is not set.
Ouch.

I don't quite understand how the interrupt handling in this driver is
supposed to work.  sc16is7xx_irq() is invoked to handle the interrupt,
but it does absolutely nothing to squelch it...  how does this not cause
an interrupt storm?  The irq core is free to unmask the interrupt when
the handler return IRQ_HANDLED, and if you're dealing with
level-sensitive interrupts...

  Josh

Attachments

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