[lkml]   [2020]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: MSI irqchip configured as IRQCHIP_ONESHOT_SAFE causes spurious IRQs
On Tue, Jan 14, 2020 at 2:15 PM Thomas Gleixner <> wrote:
> Ramon Fried <> writes:
> > While debugging the root cause of spurious IRQ's on my PCIe MSI line it appears
> > that because of the line:
> > info->chip->flags |= IRQCHIP_ONESHOT_SAFE;
> > in pci_msi_create_irq_domain()
> >
> > The IRQF_ONESHOT is ignored, especially when requesting IRQ through
> > pci_request_threaded_irq() where handler is NULL.
> Which is perfectly fine.
> > The problem is that the MSI masking now only surrounds the HW handler,
> > and all additional MSI that occur before the threaded handler is
> > complete are considered by the note_interrupt() as spurious.
> Which is not a problem as long as the thread finishes before 100k MSIs
> arrived on that line. If that happens then there is something really
> wrong. Either the device fires MSIs like crazy or the threaded handler
> is stuck somewhere.
> > Besides the side effect of that, I don't really understand the logic
> > of not masking the MSI until the threaded handler is complete,
> > especially when there's no HW handler and only threaded handler.
> What's wrong with having another interrupt firing while the threaded
> handler is running? Nothing, really. It actually can be desired because
> the threaded handler is allowed to sleep.
What do you mean, isn't it the purpose IRQ masking ?
Interrupt coalescing is done to mitigate these IRQ's, these HW
interrupts just consume
CPU cycles and don't do anything useful (scheduling an already
scheduled thread).
> Thanks,
> tglx

 \ /
  Last update: 2020-01-14 22:39    [W:0.047 / U:3.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site