Skip to content

Commit

Permalink
PCI MSI: Add example request loop to MSI-HOWTO.txt
Browse files Browse the repository at this point in the history
Encourage driver writers to think about supporting a variable number
of MSI-X interrupts, and give an example of how to do such a
request.

Acked-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
  • Loading branch information
Michael Ellerman authored and Jesse Barnes committed Mar 20, 2009
1 parent 5546d6f commit fafad5b
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion Documentation/PCI/MSI-HOWTO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ request_irq() for each 'vector' that it decides to use.
If this function returns a negative number, it indicates an error and
the driver should not attempt to allocate any more MSI-X interrupts for
this device. If it returns a positive number, it indicates the maximum
number of interrupt vectors that could have been allocated.
number of interrupt vectors that could have been allocated. See example
below.

This function, in contrast with pci_enable_msi(), does not adjust
dev->irq. The device will not generate interrupts for this interrupt
Expand All @@ -187,6 +188,26 @@ free them again later.
Device drivers should normally call this function once per device
during the initialization phase.

It is ideal if drivers can cope with a variable number of MSI-X interrupts,
there are many reasons why the platform may not be able to provide the
exact number a driver asks for.

A request loop to achieve that might look like:

static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
{
while (nvec >= FOO_DRIVER_MINIMUM_NVEC) {
rc = pci_enable_msix(adapter->pdev,
adapter->msix_entries, nvec);
if (rc > 0)
nvec = rc;
else
return rc;
}

return -ENOSPC;
}

4.3.2 pci_disable_msix

void pci_disable_msix(struct pci_dev *dev)
Expand Down

0 comments on commit fafad5b

Please sign in to comment.