Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity"

This reverts commit 9dc704dcc0.

Several reports have been made indicating that this commit caused
hangs. Numerous attempts at root causing and fixing the issue have
been unsuccessful so let's revert for now.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=217599
Cc: <stable@vger.kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Martin K. Petersen 2023-12-08 12:09:38 -05:00
parent 235f2b548d
commit c5becf57dd
4 changed files with 3 additions and 43 deletions

View File

@ -1678,7 +1678,6 @@ struct aac_dev
u32 handle_pci_error; u32 handle_pci_error;
bool init_reset; bool init_reset;
u8 soft_reset_support; u8 soft_reset_support;
u8 use_map_queue;
}; };
#define aac_adapter_interrupt(dev) \ #define aac_adapter_interrupt(dev) \

View File

@ -223,12 +223,8 @@ int aac_fib_setup(struct aac_dev * dev)
struct fib *aac_fib_alloc_tag(struct aac_dev *dev, struct scsi_cmnd *scmd) struct fib *aac_fib_alloc_tag(struct aac_dev *dev, struct scsi_cmnd *scmd)
{ {
struct fib *fibptr; struct fib *fibptr;
u32 blk_tag;
int i;
blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd)); fibptr = &dev->fibs[scsi_cmd_to_rq(scmd)->tag];
i = blk_mq_unique_tag_to_tag(blk_tag);
fibptr = &dev->fibs[i];
/* /*
* Null out fields that depend on being zero at the start of * Null out fields that depend on being zero at the start of
* each I/O * each I/O

View File

@ -19,7 +19,6 @@
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/blk-mq-pci.h>
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
@ -505,15 +504,6 @@ common_config:
return 0; return 0;
} }
static void aac_map_queues(struct Scsi_Host *shost)
{
struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
blk_mq_pci_map_queues(&shost->tag_set.map[HCTX_TYPE_DEFAULT],
aac->pdev, 0);
aac->use_map_queue = true;
}
/** /**
* aac_change_queue_depth - alter queue depths * aac_change_queue_depth - alter queue depths
* @sdev: SCSI device we are considering * @sdev: SCSI device we are considering
@ -1498,7 +1488,6 @@ static const struct scsi_host_template aac_driver_template = {
.bios_param = aac_biosparm, .bios_param = aac_biosparm,
.shost_groups = aac_host_groups, .shost_groups = aac_host_groups,
.slave_configure = aac_slave_configure, .slave_configure = aac_slave_configure,
.map_queues = aac_map_queues,
.change_queue_depth = aac_change_queue_depth, .change_queue_depth = aac_change_queue_depth,
.sdev_groups = aac_dev_groups, .sdev_groups = aac_dev_groups,
.eh_abort_handler = aac_eh_abort, .eh_abort_handler = aac_eh_abort,
@ -1786,8 +1775,6 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
shost->max_lun = AAC_MAX_LUN; shost->max_lun = AAC_MAX_LUN;
pci_set_drvdata(pdev, shost); pci_set_drvdata(pdev, shost);
shost->nr_hw_queues = aac->max_msix;
shost->host_tagset = 1;
error = scsi_add_host(shost, &pdev->dev); error = scsi_add_host(shost, &pdev->dev);
if (error) if (error)
@ -1919,7 +1906,6 @@ static void aac_remove_one(struct pci_dev *pdev)
struct aac_dev *aac = (struct aac_dev *)shost->hostdata; struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
aac_cancel_rescan_worker(aac); aac_cancel_rescan_worker(aac);
aac->use_map_queue = false;
scsi_remove_host(shost); scsi_remove_host(shost);
__aac_shutdown(aac); __aac_shutdown(aac);

View File

@ -493,10 +493,6 @@ static int aac_src_deliver_message(struct fib *fib)
#endif #endif
u16 vector_no; u16 vector_no;
struct scsi_cmnd *scmd;
u32 blk_tag;
struct Scsi_Host *shost = dev->scsi_host_ptr;
struct blk_mq_queue_map *qmap;
atomic_inc(&q->numpending); atomic_inc(&q->numpending);
@ -509,25 +505,8 @@ static int aac_src_deliver_message(struct fib *fib)
if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE3) if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE3)
&& dev->sa_firmware) && dev->sa_firmware)
vector_no = aac_get_vector(dev); vector_no = aac_get_vector(dev);
else { else
if (!fib->vector_no || !fib->callback_data) { vector_no = fib->vector_no;
if (shost && dev->use_map_queue) {
qmap = &shost->tag_set.map[HCTX_TYPE_DEFAULT];
vector_no = qmap->mq_map[raw_smp_processor_id()];
}
/*
* We hardcode the vector_no for
* reserved commands as a valid shost is
* absent during the init
*/
else
vector_no = 0;
} else {
scmd = (struct scsi_cmnd *)fib->callback_data;
blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
vector_no = blk_mq_unique_tag_to_hwq(blk_tag);
}
}
if (native_hba) { if (native_hba) {
if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) { if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {