[PATCH V2 3/6] scsi: add flag of .use_managed_irq to 'struct Scsi_Host'
Ming Lei
ming.lei at redhat.com
Fri Jul 2 08:05:52 PDT 2021
blk-mq needs this information of using managed irq for improving
deactivating hctx, so add such flag to 'struct Scsi_Host', then
drivers can pass such flag to blk-mq via scsi_mq_setup_tags().
The rule is that driver has to tell blk-mq if managed irq is used.
Signed-off-by: Ming Lei <ming.lei at redhat.com>
---
drivers/scsi/scsi_lib.c | 12 +++++++-----
include/scsi/scsi_host.h | 3 +++
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 532304d42f00..743df8e824b9 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1915,6 +1915,8 @@ int scsi_mq_setup_tags(struct Scsi_Host *shost)
{
unsigned int cmd_size, sgl_size;
struct blk_mq_tag_set *tag_set = &shost->tag_set;
+ unsigned long flags = BLK_MQ_F_SHOULD_MERGE |
+ BLK_ALLOC_POLICY_TO_MQ_FLAG(shost->hostt->tag_alloc_policy);
sgl_size = max_t(unsigned int, sizeof(struct scatterlist),
scsi_mq_inline_sgl_size(shost));
@@ -1933,12 +1935,12 @@ int scsi_mq_setup_tags(struct Scsi_Host *shost)
tag_set->queue_depth = shost->can_queue;
tag_set->cmd_size = cmd_size;
tag_set->numa_node = NUMA_NO_NODE;
- tag_set->flags = BLK_MQ_F_SHOULD_MERGE;
- tag_set->flags |=
- BLK_ALLOC_POLICY_TO_MQ_FLAG(shost->hostt->tag_alloc_policy);
- tag_set->driver_data = shost;
if (shost->host_tagset)
- tag_set->flags |= BLK_MQ_F_TAG_HCTX_SHARED;
+ flags |= BLK_MQ_F_TAG_HCTX_SHARED;
+ if (shost->use_managed_irq)
+ flags |= BLK_MQ_F_MANAGED_IRQ;
+ tag_set->flags = flags;
+ tag_set->driver_data = shost;
return blk_mq_alloc_tag_set(tag_set);
}
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index d0bf88d77f02..3ac589ae9592 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -657,6 +657,9 @@ struct Scsi_Host {
/* True if the host uses host-wide tagspace */
unsigned host_tagset:1;
+ /* True if the host uses managed irq */
+ unsigned use_managed_irq:1;
+
/* Host responded with short (<36 bytes) INQUIRY result */
unsigned short_inquiry:1;
--
2.31.1
More information about the Linux-nvme
mailing list