Re: crypto/cavium MSI-X fixups

From: David Daney
Date: Wed Feb 22 2017 - 12:45:27 EST

On 02/21/2017 11:27 PM, Christoph Hellwig wrote:
On Tue, Feb 21, 2017 at 09:36:04AM -0800, David Daney wrote:
With respect to pci_enable_msix(), what do you recommend as a replacement?

pci_alloc_irq_vectors. In fact I have a tree ready for after -rc1
that removes pci_enable_msix() entirely.

I would like to see something that handles the case of this driver that I am attempting to get merged:

For the crypto/cavium driver, you recommend pci_alloc_irq_vectors(), which
works well if the required MSI-X indexes are contiguous starting at zero.
What would be used for a device that has 184 MSI-X, but only a sparse
subset (fewer than half) of these are required for the driver operation.
It would waste system resources to use an API that forces us to allocate
184 when only 80 are required.

Currently we don't have a good API for that. I've not been through all
users of pci_enable_msix_{range,exact} yet, but so far I've only found
one user not using all vectors from 0 to some limit. Depending how many
such users we have and how they'll look I will have to look into an API
to support that use case.

See the patch above for the case that doesn't use 0..UPPER_LIMIT

David Daney