Skip to content

Commit 3b5091f

Browse files
Ranjan Kumarmartinkpetersen
authored andcommitted
scsi: mpi3mr: Reset the pending interrupt flag
If an admin interrupt is missed, admin_pend_isr may stay set and trigger admin reply processing even when no admin I/Os are pending. Clearing/Resetting it in the admin completion path prevents this. Fixes: ca41929 ("scsi: mpi3mr: Check admin reply queue from Watchdog") Cc: stable@vger.kernel.org Co-developed-by: Sathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com> Link: https://lore.kernel.org/r/20250411111419.135485-3-ranjan.kumar@broadcom.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent cdd4452 commit 3b5091f

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/scsi/mpi3mr/mpi3mr_fw.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ int mpi3mr_process_admin_reply_q(struct mpi3mr_ioc *mrioc)
451451
return 0;
452452
}
453453

454+
atomic_set(&mrioc->admin_pend_isr, 0);
454455
reply_desc = (struct mpi3_default_reply_descriptor *)mrioc->admin_reply_base +
455456
admin_reply_ci;
456457

@@ -2925,6 +2926,7 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_ioc *mrioc)
29252926
mrioc->admin_reply_ci = 0;
29262927
mrioc->admin_reply_ephase = 1;
29272928
atomic_set(&mrioc->admin_reply_q_in_use, 0);
2929+
atomic_set(&mrioc->admin_pend_isr, 0);
29282930

29292931
if (!mrioc->admin_req_base) {
29302932
mrioc->admin_req_base = dma_alloc_coherent(&mrioc->pdev->dev,
@@ -4653,6 +4655,7 @@ void mpi3mr_memset_buffers(struct mpi3mr_ioc *mrioc)
46534655
if (mrioc->admin_reply_base)
46544656
memset(mrioc->admin_reply_base, 0, mrioc->admin_reply_q_sz);
46554657
atomic_set(&mrioc->admin_reply_q_in_use, 0);
4658+
atomic_set(&mrioc->admin_pend_isr, 0);
46564659

46574660
if (mrioc->init_cmds.reply) {
46584661
memset(mrioc->init_cmds.reply, 0, sizeof(*mrioc->init_cmds.reply));

0 commit comments

Comments
 (0)