Skip to content

Commit

Permalink
Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ affin…
Browse files Browse the repository at this point in the history
…ity"

This reverts commit 9dc704d.

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>
  • Loading branch information
Martin K. Petersen committed Dec 8, 2023
1 parent 235f2b5 commit c5becf5
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 43 deletions.
1 change: 0 additions & 1 deletion drivers/scsi/aacraid/aacraid.h
Original file line number Diff line number Diff line change
Expand Up @@ -1678,7 +1678,6 @@ struct aac_dev
u32 handle_pci_error;
bool init_reset;
u8 soft_reset_support;
u8 use_map_queue;
};

#define aac_adapter_interrupt(dev) \
Expand Down
6 changes: 1 addition & 5 deletions drivers/scsi/aacraid/commsup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *fibptr;
u32 blk_tag;
int i;

blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
i = blk_mq_unique_tag_to_tag(blk_tag);
fibptr = &dev->fibs[i];
fibptr = &dev->fibs[scsi_cmd_to_rq(scmd)->tag];
/*
* Null out fields that depend on being zero at the start of
* each I/O
Expand Down
14 changes: 0 additions & 14 deletions drivers/scsi/aacraid/linit.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

#include <linux/compat.h>
#include <linux/blkdev.h>
#include <linux/blk-mq-pci.h>
#include <linux/completion.h>
#include <linux/init.h>
#include <linux/interrupt.h>
Expand Down Expand Up @@ -505,15 +504,6 @@ static int aac_slave_configure(struct scsi_device *sdev)
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
* @sdev: SCSI device we are considering
Expand Down Expand Up @@ -1498,7 +1488,6 @@ static const struct scsi_host_template aac_driver_template = {
.bios_param = aac_biosparm,
.shost_groups = aac_host_groups,
.slave_configure = aac_slave_configure,
.map_queues = aac_map_queues,
.change_queue_depth = aac_change_queue_depth,
.sdev_groups = aac_dev_groups,
.eh_abort_handler = aac_eh_abort,
Expand Down Expand Up @@ -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;

pci_set_drvdata(pdev, shost);
shost->nr_hw_queues = aac->max_msix;
shost->host_tagset = 1;

error = scsi_add_host(shost, &pdev->dev);
if (error)
Expand Down Expand Up @@ -1919,7 +1906,6 @@ static void aac_remove_one(struct pci_dev *pdev)
struct aac_dev *aac = (struct aac_dev *)shost->hostdata;

aac_cancel_rescan_worker(aac);
aac->use_map_queue = false;
scsi_remove_host(shost);

__aac_shutdown(aac);
Expand Down
25 changes: 2 additions & 23 deletions drivers/scsi/aacraid/src.c
Original file line number Diff line number Diff line change
Expand Up @@ -493,10 +493,6 @@ static int aac_src_deliver_message(struct fib *fib)
#endif

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);

Expand All @@ -509,25 +505,8 @@ static int aac_src_deliver_message(struct fib *fib)
if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE3)
&& dev->sa_firmware)
vector_no = aac_get_vector(dev);
else {
if (!fib->vector_no || !fib->callback_data) {
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);
}
}
else
vector_no = fib->vector_no;

if (native_hba) {
if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {
Expand Down

0 comments on commit c5becf5

Please sign in to comment.