On 5/31/19 4:27 AM, Ming Lei wrote: > Some SCSI HBAs(such as HPSA, megaraid, mpt3sas, hisi_sas_v3 ..) support > multiple reply queues with single hostwide tags, and the reply queue > is used for delievery & complete request, and one MSI-X vector is > assigned to each reply queue. > > Now drivers have switched to use pci_alloc_irq_vectors(PCI_IRQ_AFFINITY) > for automatic affinity assignment. Given there is only single blk-mq hw > queue, these drivers have to setup private reply queue mapping for > figuring out which reply queue is selected for delivery request, and > the queue mapping is based on managed IRQ affinity, and it is generic, > should have been done inside blk-mq. > > Based on the following Hannes's patch, introduce BLK_MQ_F_HOST_TAGS for > converting reply queue into blk-mq hw queue. > > https://marc.info/?l=linux-block&m=149132580511346&w=2 > > Once driver sets BLK_MQ_F_HOST_TAGS, the hostwide tags & request pool is > shared among all blk-mq hw queues. > > The following patches will map driver's reply queue into blk-mq hw queue > by applying BLK_MQ_F_HOST_TAGS. > > Compared with the current implementation by single hw queue, performance > shouldn't be affected by this patch in theory. > > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > 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 +++-- > include/linux/blk-mq.h | 1 + > 6 files changed, 33 insertions(+), 2 deletions(-) > Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke Teamlead Storage & Networking hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 21284 (AG Nürnberg)