From: sashiko-bot@kernel.org
To: "Justin Tee" <justintee8345@gmail.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH v3 10/14] lpfc: Remove slowpath cqe process limiter in slow ring event handler
Date: Tue, 14 Jul 2026 00:54:20 +0000 [thread overview]
Message-ID: <20260714005420.6AF711F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260714011812.106753-11-justintee8345@gmail.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Removing the 64 CQE process limiter creates a structurally verified infinite loop when processing MDS Loopback or unsolicited data frames under resource exhaustion, leading to CPU soft lockups.
- [Medium] Mismatch between the commit message's stated log threshold (64) and the actual implemented code (256).
--
--- Patch [10]: [PATCH v3 10/14] lpfc: Remove slowpath cqe process limiter in slow ring event handler ---
commit 69f6839c38e91e160d808d1e850edd0295006605
Author: Justin Tee <justintee8345@gmail.com>
lpfc: Remove slowpath cqe process limiter in slow ring event handler
This patch removes the 64 CQE processing limit in the slow ring event
handler to prevent delayed processing penalties during large SAN
rediscoveries. It replaces the hard limit with an unbounded loop that
drains the queue and adds diagnostic logging.
> Remove the slowpath cqe process limiter in
> lpfc_sli_handle_slow_ring_event_s4 to ensure the slow path CQ is drained.
> Add log messages to notify when the 64 cqe count is reached.
[Severity: Medium]
The commit message states the log messages notify when the 64 CQE count
is reached, but the implementation uses LPFC_WQE_DEF_COUNT (which is 256).
Could the commit message be updated to match the code, or should the code
be using 64?
> diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
> --- a/drivers/scsi/lpfc/lpfc_sli.c
> +++ b/drivers/scsi/lpfc/lpfc_sli.c
> @@ -4527,7 +4527,7 @@ lpfc_sli_handle_slow_ring_event_s4(struct lpfc_hba *phba,
> struct hbq_dmabuf *dmabuf;
> struct lpfc_cq_event *cq_event;
> unsigned long iflag;
> - int count = 0;
> + u32 count = 0;
>
> clear_bit(HBA_SP_QUEUE_EVT, &phba->hba_flag);
> while (!list_empty(&phba->sli4_hba.sp_queue_event)) {
[Severity: High]
Could removing the event limit here lead to an infinite loop and a CPU soft
lockup under resource exhaustion?
If an MDS loopback frame or unsolicited data frame is received while the
driver's IOCB pool is exhausted, lpfc_sli4_handle_mds_loopback() fails
to allocate an IOCB and puts the event back on the tail of the exact queue
being drained:
lpfc_sli4_handle_mds_loopback() {
...
list_add_tail(&dmabuf->cq_event.list,
&phba->sli4_hba.sp_queue_event);
...
}
Since the loop in lpfc_sli_handle_slow_ring_event_s4() no longer breaks at 64
events and doesn't yield, it seems the requeued event will be immediately
dequeued again. Because the kthread never yields to allow IOs to complete,
does the IOCB pool remain permanently exhausted while it infinitely requeues
the same event?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260714011812.106753-1-justintee8345@gmail.com?part=10
next prev parent reply other threads:[~2026-07-14 0:54 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-14 1:17 [PATCH v3 00/14] Update lpfc to revision 15.0.0.1 Justin Tee
2026-07-14 1:17 ` [PATCH v3 01/14] lpfc: Fix use-after-free in lpfc_cmpl_ct_cmd_vmid Justin Tee
2026-07-14 0:51 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 02/14] lpfc: Early return out of lpfc_els_abort when HBA_SETUP flag is not set Justin Tee
2026-07-14 0:53 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 03/14] lpfc: Fix kernel oops when unmapping scsi dma buffers for an aborted cmd Justin Tee
2026-07-14 0:57 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 04/14] lpfc: Check fc4_xpt_flags before decrementing ndlp kref on FDISC error Justin Tee
2026-07-14 0:55 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 05/14] lpfc: Add handling for when PLOGI or PRLI is dropped during link failure Justin Tee
2026-07-14 1:02 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 06/14] lpfc: Fix ndlp use-after-free during repeated RSCN and rediscovery sequence Justin Tee
2026-07-14 0:50 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 07/14] lpfc: Rework I/O flush ordering when unloading driver Justin Tee
2026-07-14 1:00 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 08/14] lpfc: Improve PLOGI retry handling for large SAN configurations Justin Tee
2026-07-14 0:55 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 09/14] lpfc: Send inhibited ABORT_WQE when PLOGI CQE SEQUENCE_TMO is received Justin Tee
2026-07-14 1:05 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 10/14] lpfc: Remove slowpath cqe process limiter in slow ring event handler Justin Tee
2026-07-14 0:54 ` sashiko-bot [this message]
2026-07-14 1:18 ` [PATCH v3 11/14] lpfc: Put iocbq on phba->txq when ELS WQ is full or ELS SGL unavailable Justin Tee
2026-07-14 0:50 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 12/14] lpfc: Update ELS ACC logging for diagnostic troubleshooting Justin Tee
2026-07-14 1:02 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 13/14] lpfc: Refactor calls on fc_disctmo to lpfc_set_disctmo in RSCN handler Justin Tee
2026-07-14 1:00 ` sashiko-bot
2026-07-14 1:18 ` [PATCH v3 14/14] lpfc: Update lpfc version to 15.0.0.1 Justin Tee
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=20260714005420.6AF711F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=justintee8345@gmail.com \
--cc=linux-scsi@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.