1 From 1c43cd17d5722c7b6946e1a57710049f3de4b51a Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Tue, 5 Mar 2024 12:04:54 -0800
4 Subject: scsi: lpfc: Remove IRQF_ONESHOT flag from threaded IRQ handling
6 From: Justin Tee <justin.tee@broadcom.com>
8 [ Upstream commit 4623713e7ade46bfc63a3eade836f566ccbcd771 ]
10 IRQF_ONESHOT is found to mask HBA generated interrupts when thread_fn is
11 running. As a result, some EQEs/CQEs miss timely processing resulting in
12 SCSI layer attempts to abort commands due to io_timeout. Abort CQEs are
13 also not processed leading to the observations of hangs and spam of "0748
14 abort handler timed out waiting for aborting I/O" log messages.
16 Remove the IRQF_ONESHOT flag. The cmpxchg and xchg atomic operations on
17 lpfc_queue->queue_claimed already protect potential parallel access to an
18 EQ/CQ should the thread_fn get interrupted by the primary irq handler.
20 Signed-off-by: Justin Tee <justin.tee@broadcom.com>
21 Link: https://lore.kernel.org/r/20240305200503.57317-4-justintee8345@gmail.com
22 Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
23 Signed-off-by: Sasha Levin <sashal@kernel.org>
25 drivers/scsi/lpfc/lpfc_init.c | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
28 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
29 index 2c336953e56ca..76c883cc66ed6 100644
30 --- a/drivers/scsi/lpfc/lpfc_init.c
31 +++ b/drivers/scsi/lpfc/lpfc_init.c
32 @@ -13051,7 +13051,7 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba)
33 rc = request_threaded_irq(eqhdl->irq,
34 &lpfc_sli4_hba_intr_handler,
35 &lpfc_sli4_hba_intr_handler_th,
36 - IRQF_ONESHOT, name, eqhdl);
39 lpfc_printf_log(phba, KERN_WARNING, LOG_INIT,
40 "0486 MSI-X fast-path (%d) "