aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/PCI/pci.txt
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2017-02-15 11:56:10 -0600
committerBjorn Helgaas <bhelgaas@google.com>2017-02-15 11:56:10 -0600
commit3ec2574e31b5aebeeed52ea784bb6d7960788202 (patch)
treed24b479916711f1b8e112f5775839bbe9ff41be1 /Documentation/PCI/pci.txt
parent906c142634def5dd3dda533d5d20bd3c1c19d1fb (diff)
parente4e7d59704d485f272061cea9057798dda3cfd99 (diff)
downloadkernel_replicant_linux-3ec2574e31b5aebeeed52ea784bb6d7960788202.tar.gz
kernel_replicant_linux-3ec2574e31b5aebeeed52ea784bb6d7960788202.tar.bz2
kernel_replicant_linux-3ec2574e31b5aebeeed52ea784bb6d7960788202.zip
Merge branch 'pci/msi' into next
* pci/msi: PCI/MSI: Update MSI/MSI-X bits in PCIEBUS-HOWTO PCI/MSI: Document pci_alloc_irq_vectors(), deprecate pci_enable_msi() PCI/MSI: Return -ENOSPC if pci_enable_msi_range() can't get enough vectors PCI/portdrv: Use pci_irq_alloc_vectors() PCI/MSI: Check that we have a legacy interrupt line before using it PCI/MSI: Remove pci_msi_domain_{alloc,free}_irqs() PCI/MSI: Remove unused pci_msi_create_default_irq_domain() PCI/MSI: Return failure when msix_setup_entries() fails PCI/MSI: Remove pci_enable_msi_{exact,range}() amd-xgbe: Update PCI support to use new IRQ functions [media] cobalt: use pci_irq_allocate_vectors() PCI/MSI: Fix msi_capability_init() kernel-doc warnings
Diffstat (limited to 'Documentation/PCI/pci.txt')
-rw-r--r--Documentation/PCI/pci.txt24
1 files changed, 12 insertions, 12 deletions
diff --git a/Documentation/PCI/pci.txt b/Documentation/PCI/pci.txt
index 77f49dc5be23..611a75e4366e 100644
--- a/Documentation/PCI/pci.txt
+++ b/Documentation/PCI/pci.txt
@@ -382,18 +382,18 @@ The fundamental difference between MSI and MSI-X is how multiple
"vectors" get allocated. MSI requires contiguous blocks of vectors
while MSI-X can allocate several individual ones.
-MSI capability can be enabled by calling pci_enable_msi() or
-pci_enable_msix() before calling request_irq(). This causes
-the PCI support to program CPU vector data into the PCI device
-capability registers.
-
-If your PCI device supports both, try to enable MSI-X first.
-Only one can be enabled at a time. Many architectures, chip-sets,
-or BIOSes do NOT support MSI or MSI-X and the call to pci_enable_msi/msix
-will fail. This is important to note since many drivers have
-two (or more) interrupt handlers: one for MSI/MSI-X and another for IRQs.
-They choose which handler to register with request_irq() based on the
-return value from pci_enable_msi/msix().
+MSI capability can be enabled by calling pci_alloc_irq_vectors() with the
+PCI_IRQ_MSI and/or PCI_IRQ_MSIX flags before calling request_irq(). This
+causes the PCI support to program CPU vector data into the PCI device
+capability registers. Many architectures, chip-sets, or BIOSes do NOT
+support MSI or MSI-X and a call to pci_alloc_irq_vectors with just
+the PCI_IRQ_MSI and PCI_IRQ_MSIX flags will fail, so try to always
+specify PCI_IRQ_LEGACY as well.
+
+Drivers that have different interrupt handlers for MSI/MSI-X and
+legacy INTx should chose the right one based on the msi_enabled
+and msix_enabled flags in the pci_dev structure after calling
+pci_alloc_irq_vectors.
There are (at least) two really good reasons for using MSI:
1) MSI is an exclusive interrupt vector by definition.