Hi, The 1st patch introduces support hostwide tags for multiple hw queues via the simplest approach to share single 'struct blk_mq_tags' instance among all hw queues. In theory, this way won't cause any performance drop. Even small IOPS improvement can be observed on random IO on null_blk/scsi_debug. By applying the hostwide tags for MQ, we can convert some SCSI driver's private reply queue into generic blk-mq hw queue, then at least two improvement can be obtained: 1) the private reply queue maping can be removed from drivers, since the mapping has been implemented as generic API in blk-mq core 2) it helps to solve the generic managed IRQ race[1] during CPU hotplug in generic way, otherwise we have to re-invent new way to address the same issue for these drivers using private reply queue. [1] https://lore.kernel.org/linux-block/20190527150207.11372-1-ming.lei@xxxxxxxxxx/T/#m6d95e2218bdd712ffda8f6451a0bb73eb2a651af Any comment and test feedback are appreciated. Thanks, Ming Hannes Reinecke (1): scsi: Add template flag 'host_tagset' Ming Lei (8): blk-mq: allow hw queues to share hostwide tags block: null_blk: introduce module parameter of 'g_host_tags' scsi_debug: support host tagset scsi: introduce scsi_cmnd_hctx_index() scsi: hpsa: convert private reply queue to blk-mq hw queue scsi: hisi_sas_v3: convert private reply queue to blk-mq hw queue scsi: megaraid: convert private reply queue to blk-mq hw queue scsi: mp3sas: convert private reply queue to blk-mq hw queue block/blk-mq-debugfs.c | 1 + block/blk-mq-sched.c | 8 +++ block/blk-mq-tag.c | 6 ++ block/blk-mq.c | 14 ++++ block/elevator.c | 5 +- drivers/block/null_blk_main.c | 6 ++ drivers/scsi/hisi_sas/hisi_sas.h | 2 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 36 +++++----- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 46 +++++-------- drivers/scsi/hpsa.c | 49 ++++++-------- drivers/scsi/megaraid/megaraid_sas_base.c | 50 +++++--------- drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 +- drivers/scsi/mpt3sas/mpt3sas_base.c | 74 ++++----------------- drivers/scsi/mpt3sas/mpt3sas_base.h | 3 +- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 17 +++++ drivers/scsi/scsi_debug.c | 3 + drivers/scsi/scsi_lib.c | 2 + include/linux/blk-mq.h | 1 + include/scsi/scsi_cmnd.h | 15 +++++ include/scsi/scsi_host.h | 3 + 20 files changed, 168 insertions(+), 177 deletions(-) -- 2.20.1