From: sashiko-bot@kernel.org
To: "Nigel Kirkland" <nkirkland2304@gmail.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH v4 10/14] lpfc: Remove slowpath cqe process limiter in slow ring event handler
Date: Thu, 17 Sep 2026 22:20:59 +0000 [thread overview]
Message-ID: <20260917222100.5ABEB1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260917222015.61053-11-nkirkland2304@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] scsi: lpfc: CPU soft lockup in lpfc_sli_handle_slow_ring_event_s4()
--
commit 2c325e87e41c5052e2704f826b9f808f153d5397
Author: Nigel Kirkland <nkirkland2304@gmail.com>
lpfc: Remove slowpath cqe process limiter in slow ring event handler
This commit removes the 64 CQE limit in the slow path event handler
to ensure the slow path CQ is drained completely. It also adds logging
when the CQE count reaches a full ELS WQ wrap.
> diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
> index 10d9030a1e883..06dc01c9539ed 100644
> --- a/drivers/scsi/lpfc/lpfc_sli.c
> +++ b/drivers/scsi/lpfc/lpfc_sli.c
[ ... ]
> @@ -4562,22 +4562,39 @@ lpfc_sli_handle_slow_ring_event_s4(struct lpfc_hba *phba,
> if (irspiocbq)
> lpfc_sli_sp_handle_rspiocb(phba, pring,
> irspiocbq);
> - count++;
> break;
> case CQE_CODE_RECEIVE:
> case CQE_CODE_RECEIVE_V1:
> dmabuf = container_of(cq_event, struct hbq_dmabuf,
> cq_event);
> lpfc_sli4_handle_received_buffer(phba, dmabuf);
> - count++;
> break;
> default:
> + lpfc_printf_log(phba, KERN_INFO, LOG_ELS,
> + "7771 Unknown WCQE completion code "
> + "x%x, ignoring.\n",
> + bf_get(lpfc_wcqe_c_code,
> + &cq_event->cqe.wcqe_cmpl));
> break;
> }
>
> - /* Limit the number of events to 64 to avoid soft lockups */
> - if (count == 64)
> - break;
[Severity: High]
Could removing this limit cause a CPU soft lockup under certain failure
conditions?
When an MDS loopback or unsolicited data frame is received (CQE_CODE_RECEIVE),
and the driver's IOCBQ pool is momentarily empty,
lpfc_sli4_handle_mds_loopback() fails to allocate an iocbq via
lpfc_sli_get_iocbq() and adds the event back to the sp_queue_event list:
lpfc_sli4_handle_mds_loopback() {
...
list_add_tail(&dmabuf->cq_event.list,
&phba->sli4_hba.sp_queue_event);
...
}
Since this patch removes the 64-iteration limit, this while loop no
longer yields. It will immediately dequeue the same event and retry the
allocation in a tight spin loop. Without the loop break, the worker
thread can no longer reach wait_event_interruptible() to yield the CPU,
resulting in a 100% CPU lockup.
Is there another mechanism to prevent the loop from spinning infinitely
when events are requeued?
> + /* This loop runs until the ELS/CT CQ is empty. Post a one
> + * time message for debug support when ELS WQ ecount
> + * completions are processed - this represent 1 full ELS WQ
> + * wrap.
> + */
> + if (++count == LPFC_WQE_DEF_COUNT) {
> + lpfc_printf_log(phba, KERN_INFO, LOG_ELS,
> + "7772 %s SP CQE count %d\n",
> + __func__, count);
> + }
> + }
> +
> + /* Log a final message to note how many CQEs were processed. */
> + if (count > LPFC_WQE_DEF_COUNT) {
> + lpfc_printf_log(phba, KERN_INFO, LOG_ELS,
> + "7773 %s SP CQEs complete, count %d\n",
> + __func__, count);
> }
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260917222015.61053-1-nkirkland2304@gmail.com?part=10
next prev parent reply other threads:[~2026-09-17 22:21 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 22:20 [PATCH v4 00/14] Update lpfc to revision 15.0.0.1 Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 01/14] lpfc: Fix use-after-free in lpfc_cmpl_ct_cmd_vmid Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 02/14] lpfc: Early return out of lpfc_els_abort when HBA_SETUP flag is not set Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 03/14] lpfc: Fix kernel oops when unmapping scsi dma buffers for an aborted cmd Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 04/14] lpfc: Check fc4_xpt_flags before decrementing ndlp kref on FDISC error Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 05/14] lpfc: Add handling for when PLOGI or PRLI is dropped during link failure Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 06/14] lpfc: Fix ndlp use-after-free during repeated RSCN and rediscovery sequence Nigel Kirkland
2026-09-17 22:10 ` sashiko-bot
2026-09-17 22:20 ` [PATCH v4 07/14] lpfc: Rework I/O flush ordering when unloading driver Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 08/14] lpfc: Improve PLOGI retry handling for large SAN configurations Nigel Kirkland
2026-09-17 22:12 ` sashiko-bot
2026-09-17 22:20 ` [PATCH v4 09/14] lpfc: Send inhibited ABORT_WQE when PLOGI CQE SEQUENCE_TMO is received Nigel Kirkland
2026-09-17 22:15 ` sashiko-bot
2026-09-17 22:20 ` [PATCH v4 10/14] lpfc: Remove slowpath cqe process limiter in slow ring event handler Nigel Kirkland
2026-09-17 22:20 ` sashiko-bot [this message]
2026-09-17 22:20 ` [PATCH v4 11/14] lpfc: Put iocbq on phba->txq when ELS WQ is full or ELS SGL unavailable Nigel Kirkland
2026-09-17 22:20 ` sashiko-bot
2026-09-17 22:20 ` [PATCH v4 12/14] lpfc: Update ELS ACC logging for diagnostic troubleshooting Nigel Kirkland
2026-09-17 22:22 ` sashiko-bot
2026-09-17 22:20 ` [PATCH v4 13/14] lpfc: Refactor calls on fc_disctmo to lpfc_set_disctmo in RSCN handler Nigel Kirkland
2026-09-17 22:20 ` [PATCH v4 14/14] lpfc: Update lpfc version to 15.0.0.1 Nigel Kirkland
2026-09-19 7:45 ` [PATCH v4 00/14] Update lpfc to revision 15.0.0.1 Nigel Kirkland
2026-09-28 17:13 ` Nigel Kirkland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260917222100.5ABEB1F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=nkirkland2304@gmail.com \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox