Re: [PATCH v3] scsi: aacraid: Fix reply queue mapping to CPUs based on IRQ affinity

From: John Garry
Date: Thu Jun 19 2025 - 06:47:15 EST


On 18/06/2025 20:24, John Meneghini wrote:
From: Sagar Biradar <sagar.biradar@xxxxxxxxxxxxx>

From: Sagar Biradar <sagar.biradar@xxxxxxxxxxxxx>

This patch fixes a bug in the original path that caused I/O hangs. The
I/O hangs were because of an MSIx vector not having a mapped online CPU
upon receiving completion.

This patch enables Multi-Q support in the aacriad driver. Multi-Q support
in the driver is needed to support CPU offlining.

I assume that you mean "safe" CPU offlining.

It seems to me that in all cases we use queue interrupt affinity spreading and managed interrupts for MSIX, right?

See aac_define_int_mode() -> pci_alloc_irq_vectors(..., PCI_IRQ_MSIX | PCI_IRQ_AFFINITY);

But then for this non- Multi-Q support, the queue seems to be chosen based on a round-robin approach in the driver. That round-robin comes from how fib.vector_no is assigned in aac_fib_vector_assign(). If this is the case, then why are managed interrupts being used for this non- Multi-Q support at all?

I may be wrong about this. That driver is hard to understand with so many knobs.