scsi: hisi_sas: Select a suitable queue for internal I/Os
authorXiang Chen <chenxiang66@hisilicon.com>
Mon, 7 Dec 2020 13:30:55 +0000 (21:30 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Dec 2020 02:23:51 +0000 (21:23 -0500)
commit359db63378eded1ee9c8c9ad72245f9b0158ae95
treef830785e23b6a718b8d7fb95e00c73d1f1a3f1ed
parent673235f915318ced5d7ec4b2bfd8cb909e6a4a55
scsi: hisi_sas: Select a suitable queue for internal I/Os

For when managed interrupts are used (and shost->nr_hw_queues is set), a
fixed queue - set per-device - is still used for internal I/Os.

If all the CPUs mapped to that queue are offlined, then the completions for
that queue are not serviced and any internal I/Os will time out.

Fix by selecting a queue for internal I/Os from the queue mapped from the
current CPU in this scenario.

This is still not ideal as it does not deal with CPU hotplug for inflight
internal I/Os, and needs proper support from [0].

[0] https://lore.kernel.org/linux-scsi/20200703130122.111448-1-hare@suse.de/T/#m7d77d049b18f33a24ef206af69ebb66d07440556

Link: https://lore.kernel.org/r/1607347855-59091-1-git-send-email-john.garry@huawei.com
Fixes: 8d98416a55eb ("scsi: hisi_sas: Switch v3 hw to MQ")
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas_main.c
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c