On 10/02/2013 03:29 AM, Alexander Gordeev wrote:
As result, device drivers will cease to use the overcomplicated
repeated fallbacks technique and resort to a straightforward
pattern - determine the number of MSI/MSI-X interrupts required
before calling pci_enable_msi_block() and pci_enable_msix()
interfaces:
rc = pci_msix_table_size(adapter->pdev);
if (rc < 0)
return rc;
nvec = min(nvec, rc);
if (nvec < FOO_DRIVER_MINIMUM_NVEC) {
return -ENOSPC;
for (i = 0; i < nvec; i++)
adapter->msix_entries[i].entry = i;
rc = pci_enable_msix(adapter->pdev,
adapter->msix_entries, nvec);
return rc;
Why not add a minimum number to pci_enable_msix(), i.e.:
pci_enable_msix(pdev, msix_entries, nvec, minvec)
... which means "nvec" is the number of interrupts *requested*, and
"minvec" is the minimum acceptable number (otherwise fail).
-hpa