forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "Revert "scsi: megaraid_sas: Added support for shared host tag…
…set for cpuhotplug"" This reverts commit 1a0e194. Commit b3c6a59 ("block: Fix a lockdep complaint triggered by request queue flushing") has been reverted and commit fb01a29 has been introduced in its place. Consequently, it is now safe to reinstate the megaraid_sas tagset changes that led to boot problems in 5.10. Signed-off-by: Martin K. Petersen <[email protected]>
- Loading branch information
1 parent
ac7ac46
commit 81e7eb5
Showing
2 changed files
with
55 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ | |
#include <linux/poll.h> | ||
#include <linux/vmalloc.h> | ||
#include <linux/irq_poll.h> | ||
#include <linux/blk-mq-pci.h> | ||
|
||
#include <scsi/scsi.h> | ||
#include <scsi/scsi_cmnd.h> | ||
|
@@ -113,6 +114,10 @@ unsigned int enable_sdev_max_qd; | |
module_param(enable_sdev_max_qd, int, 0444); | ||
MODULE_PARM_DESC(enable_sdev_max_qd, "Enable sdev max qd as can_queue. Default: 0"); | ||
|
||
int host_tagset_enable = 1; | ||
module_param(host_tagset_enable, int, 0444); | ||
MODULE_PARM_DESC(host_tagset_enable, "Shared host tagset enable/disable Default: enable(1)"); | ||
|
||
MODULE_LICENSE("GPL"); | ||
MODULE_VERSION(MEGASAS_VERSION); | ||
MODULE_AUTHOR("[email protected]"); | ||
|
@@ -3119,6 +3124,19 @@ megasas_bios_param(struct scsi_device *sdev, struct block_device *bdev, | |
return 0; | ||
} | ||
|
||
static int megasas_map_queues(struct Scsi_Host *shost) | ||
{ | ||
struct megasas_instance *instance; | ||
|
||
instance = (struct megasas_instance *)shost->hostdata; | ||
|
||
if (shost->nr_hw_queues == 1) | ||
return 0; | ||
|
||
return blk_mq_pci_map_queues(&shost->tag_set.map[HCTX_TYPE_DEFAULT], | ||
instance->pdev, instance->low_latency_index_start); | ||
} | ||
|
||
static void megasas_aen_polling(struct work_struct *work); | ||
|
||
/** | ||
|
@@ -3427,6 +3445,7 @@ static struct scsi_host_template megasas_template = { | |
.eh_timed_out = megasas_reset_timer, | ||
.shost_attrs = megaraid_host_attrs, | ||
.bios_param = megasas_bios_param, | ||
.map_queues = megasas_map_queues, | ||
.change_queue_depth = scsi_change_queue_depth, | ||
.max_segment_size = 0xffffffff, | ||
}; | ||
|
@@ -6808,6 +6827,26 @@ static int megasas_io_attach(struct megasas_instance *instance) | |
host->max_lun = MEGASAS_MAX_LUN; | ||
host->max_cmd_len = 16; | ||
|
||
/* Use shared host tagset only for fusion adaptors | ||
* if there are managed interrupts (smp affinity enabled case). | ||
* Single msix_vectors in kdump, so shared host tag is also disabled. | ||
*/ | ||
|
||
host->host_tagset = 0; | ||
host->nr_hw_queues = 1; | ||
|
||
if ((instance->adapter_type != MFI_SERIES) && | ||
(instance->msix_vectors > instance->low_latency_index_start) && | ||
host_tagset_enable && | ||
instance->smp_affinity_enable) { | ||
host->host_tagset = 1; | ||
host->nr_hw_queues = instance->msix_vectors - | ||
instance->low_latency_index_start; | ||
} | ||
|
||
dev_info(&instance->pdev->dev, | ||
"Max firmware commands: %d shared with nr_hw_queues = %d\n", | ||
instance->max_fw_cmds, host->nr_hw_queues); | ||
/* | ||
* Notify the mid-layer about the new controller | ||
*/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters