Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

scsi: efct: Use IRQF_ONESHOT and default primary handler

There is no added value in efct_intr_msix() compared to
irq_default_primary_handler().

Using a threaded interrupt without a dedicated primary handler mandates
the IRQF_ONESHOT flag to mask the interrupt source while the threaded
handler is active. Otherwise the interrupt can fire again before the
threaded handler had a chance to run.

Use the default primary interrupt handler by specifying NULL and set
IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Fixes: 4df84e8466242 ("scsi: elx: efct: Driver initialization routines")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260128095540.863589-8-bigeasy@linutronix.de

authored by

Sebastian Andrzej Siewior and committed by
Thomas Gleixner
bd81f07e 28abed65

+1 -7
+1 -7
drivers/scsi/elx/efct/efct_driver.c
··· 415 415 return IRQ_HANDLED; 416 416 } 417 417 418 - static irqreturn_t 419 - efct_intr_msix(int irq, void *handle) 420 - { 421 - return IRQ_WAKE_THREAD; 422 - } 423 - 424 418 static int 425 419 efct_setup_msix(struct efct *efct, u32 num_intrs) 426 420 { ··· 444 450 intr_ctx->index = i; 445 451 446 452 rc = request_threaded_irq(pci_irq_vector(efct->pci, i), 447 - efct_intr_msix, efct_intr_thread, 0, 453 + NULL, efct_intr_thread, IRQF_ONESHOT, 448 454 EFCT_DRIVER_NAME, intr_ctx); 449 455 if (rc) { 450 456 dev_err(&efct->pci->dev,