Re: [PATCH RFC v7 12/12] hpsa: enable host_tagset and switch to MQ

Hannes Reinecke
2020-07-14T10:43:19Z

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@suse.de +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer