Re: [PATCH 0/2] scsi: mpi3mr: Stop IRQ polling when no reply is ready
From: Usama Arif
Date: Thu Oct 01 2026 - 06:54:59 EST
On Wed, 30 Sep 2026 07:55:47 -0700 Usama Arif <usama.arif@xxxxxxxxx> wrote:
> Once a reply queue has more than 8 I/Os pending, mpi3mr's IRQ thread
> polls it every ~20us until nothing is pending or it has processed
> max_host_ios replies. On busy HDDs that means about 45 seconds of
> polling at a time, with nearly every wakeup finding nothing. On Meta's
> HDD storage hosts, these threads used about 15% of the non-idle CPU
> on polling.
>
> Patch 2 goes back to interrupts once a poll finds the queue empty while
> owning it. It relies on patch 1: an interrupt that finds the queue owned
> by another context now hands it to the thread, instead of leaving a
> reply until the next interrupt or a command timeout.
>
> On a machine configured like those hosts (36 SATA HDDs behind a SAS40xx
> HBA), HDD random reads now wake the threads twice per I/O instead of 236
> times, and a co-located CPU-bound task loses 0.6% instead of 30%.
> Drive-cache reads still reach 270K IOPS, and a single reply queue whose
> CPU is saturated loses about 5%. With a kthread injected to hold a reply
> queue, replies waited up to 50ms, and timed out under light load,
> without patch 1, and at most 233us with it.
I believe all of the sashiko reviews are pre-existing conditions and not
introduced by these patches. I have replied in [1] and [2]
[1] https://lore.kernel.org/all/bdf2781e-fbcb-4356-b1eb-ccdbfb39c1b9@xxxxxxxxx/
[2] https://lore.kernel.org/all/0b1bb7ce-4720-4d12-96ff-ab04cd1b85bc@xxxxxxxxx/
>
> Based on mkp/scsi 7.4/scsi-staging (f09d2c7485b32).
>
> Usama Arif (2):
> scsi: mpi3mr: Poll a reply queue that an interrupt found busy
> scsi: mpi3mr: Stop IRQ polling when no reply is ready
>
> drivers/scsi/mpi3mr/mpi3mr.h | 2 +-
> drivers/scsi/mpi3mr/mpi3mr_fw.c | 65 ++++++++++++++++++++++++---------
> drivers/scsi/mpi3mr/mpi3mr_os.c | 2 +-
> 3 files changed, 50 insertions(+), 19 deletions(-)
>
>
> base-commit: f09d2c7485b32adb82336d0d748935c8237a649e
> --
> 2.53.0-Meta
>
>