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