On 7/14/20 12:14 PM, Ming Lei wrote: > On Tue, Jul 14, 2020 at 10:53:32AM +0100, John Garry wrote: >> On 14/07/2020 09:06, Ming Lei wrote: >>>> v7 is here: >>>> >>>> https://github.com/hisilicon/kernel-dev/commits/private-topic-blk-mq-shared-tags-rfc-v7 >>>> >>>> So that should be good to test with for now. >>>> >>>> And I was going to ask this same question about smartpqi, so can you please >>>> let me know about this one? >> >> Hi Ming, >> >>> smartpqi is real MQ HBA, do you need any change wrt. shared tags? >> >> Is it really? > > Yes, it is. > > pqi_register_scsi(): > shost->nr_hw_queues = ctrl_info->num_queue_groups; > > pqi_enable_msix_interrupts(): > num_vectors_enabled = pci_alloc_irq_vectors(ctrl_info->pci_dev, > PQI_MIN_MSIX_VECTORS, ctrl_info->num_queue_groups, > PCI_IRQ_MSIX | PCI_IRQ_AFFINITY); > >> >> As I see, today it maintains a single tagset per HBA. So Hannes' change in > > No, each hw queue has one independent tagset for smartpqi. > Has it really? The code has this: static struct pqi_io_request *pqi_alloc_io_request( struct pqi_ctrl_info *ctrl_info) { struct pqi_io_request *io_request; u16 i = ctrl_info->next_io_request_slot; /* benignly racy */ while (1) { io_request = &ctrl_info->io_request_pool[i]; if (atomic_inc_return(&io_request->refcount) == 1) break; atomic_dec(&io_request->refcount); i = (i + 1) % ctrl_info->max_io_slots; } which means that at least the driver assumes a host-wide tagset. Looking at the code the HW _should_ support per-queue tagsets (it's PQI, after all), but this doesn't seem to be carried over for the entire driver; possibly due to legacy concerns. Don should be able to shed some light here. Meanwhile we have to assume that the _driver_ uses a per-host tagset; we might be able to convert it to a per-queue tagset, but that looks like a major update of the driver itself. Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect hare@xxxxxxx +49 911 74053 688 SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg HRB 36809 (AG Nürnberg), GF: Felix Imendörffer