PCI/MSI: Update MSI/MSI-X bits in PCIEBUS-HOWTO
Update the MSI/MSI-X bits in PCIEBUS-HOWTO. Stop talking about low-level details that mention deprecated APIs and concentrate on what service drivers should do and why. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
c3cf2c61dd
commit
e4e7d59704
|
@ -161,21 +161,13 @@ Since all service drivers of a PCI-PCI Bridge Port device are
|
||||||
allowed to run simultaneously, below lists a few of possible resource
|
allowed to run simultaneously, below lists a few of possible resource
|
||||||
conflicts with proposed solutions.
|
conflicts with proposed solutions.
|
||||||
|
|
||||||
6.1 MSI Vector Resource
|
6.1 MSI and MSI-X Vector Resource
|
||||||
|
|
||||||
The MSI capability structure enables a device software driver to call
|
Once MSI or MSI-X interrupts are enabled on a device, it stays in this
|
||||||
pci_enable_msi to request MSI based interrupts. Once MSI interrupts
|
mode until they are disabled again. Since service drivers of the same
|
||||||
are enabled on a device, it stays in this mode until a device driver
|
PCI-PCI Bridge port share the same physical device, if an individual
|
||||||
calls pci_disable_msi to disable MSI interrupts and revert back to
|
service driver enables or disables MSI/MSI-X mode it may result
|
||||||
INTx emulation mode. Since service drivers of the same PCI-PCI Bridge
|
unpredictable behavior.
|
||||||
port share the same physical device, if an individual service driver
|
|
||||||
calls pci_enable_msi/pci_disable_msi it may result unpredictable
|
|
||||||
behavior. For example, two service drivers run simultaneously on the
|
|
||||||
same physical Root Port. Both service drivers call pci_enable_msi to
|
|
||||||
request MSI based interrupts. A service driver may not know whether
|
|
||||||
any other service drivers have run on this Root Port. If either one
|
|
||||||
of them calls pci_disable_msi, it puts the other service driver
|
|
||||||
in a wrong interrupt mode.
|
|
||||||
|
|
||||||
To avoid this situation all service drivers are not permitted to
|
To avoid this situation all service drivers are not permitted to
|
||||||
switch interrupt mode on its device. The PCI Express Port Bus driver
|
switch interrupt mode on its device. The PCI Express Port Bus driver
|
||||||
|
@ -187,17 +179,6 @@ driver. Service drivers should use (struct pcie_device*)dev->irq to
|
||||||
call request_irq/free_irq. In addition, the interrupt mode is stored
|
call request_irq/free_irq. In addition, the interrupt mode is stored
|
||||||
in the field interrupt_mode of struct pcie_device.
|
in the field interrupt_mode of struct pcie_device.
|
||||||
|
|
||||||
6.2 MSI-X Vector Resources
|
|
||||||
|
|
||||||
Similar to the MSI a device driver for an MSI-X capable device can
|
|
||||||
call pci_enable_msix to request MSI-X interrupts. All service drivers
|
|
||||||
are not permitted to switch interrupt mode on its device. The PCI
|
|
||||||
Express Port Bus driver is responsible for determining the interrupt
|
|
||||||
mode and this should be transparent to service drivers. Any attempt
|
|
||||||
by service driver to call pci_enable_msix/pci_disable_msix may
|
|
||||||
result unpredictable behavior. Service drivers should use
|
|
||||||
(struct pcie_device*)dev->irq and call request_irq/free_irq.
|
|
||||||
|
|
||||||
6.3 PCI Memory/IO Mapped Regions
|
6.3 PCI Memory/IO Mapped Regions
|
||||||
|
|
||||||
Service drivers for PCI Express Power Management (PME), Advanced
|
Service drivers for PCI Express Power Management (PME), Advanced
|
||||||
|
|
Loading…
Reference in New Issue