Lines Matching +full:can +full:- +full:disable
14 to change your driver to use MSI or MSI-X and some basic diagnostics to
24 in PCI 3.0 to allow each interrupt to be masked individually. The MSI-X
28 Devices may support both MSI and MSI-X, but only one can be enabled at
34 There are three reasons why using MSIs can give an advantage over
35 traditional pin-based interrupts.
37 Pin-based PCI interrupts are often shared amongst several devices.
42 When a device writes data to memory, then raises a pin-based interrupt,
44 arrived in memory (this becomes more likely with devices behind PCI-PCI
49 Using MSIs avoids this problem as the interrupt-generating write cannot
53 PCI devices can only support a single pin-based interrupt per function.
56 MSIs, a device can support more interrupts, allowing each interrupt
66 PCI devices are initialised to use pin-based interrupts. The device
67 driver has to set up the device to use MSI or MSI-X. Not all machines
69 will simply fail and the device will continue to use pin-based interrupts.
73 To support MSI or MSI-X, the kernel must be built with the CONFIG_PCI_MSI
85 To automatically use MSI or MSI-X interrupt vectors, use the following
93 has a requirements for a minimum number of vectors the driver can pass a
94 min_vecs argument set to this limit, and the PCI core will return -ENOSPC
95 if it can't meet the minimum number of vectors.
97 The flags argument is used to specify which type of interrupt can be used
99 A convenient short-hand (PCI_IRQ_ALL_TYPES) is also available to ask for
113 If a device supports both MSI-X and MSI capabilities, this API will use the
114 MSI-X facilities in preference to the MSI facilities. MSI-X supports any
118 not be able to allocate as many vectors for MSI as it could for MSI-X. On
120 whereas MSI-X interrupts can all be targeted at different CPUs.
122 If a device supports neither MSI-X or MSI it will fall back to a single
125 The typical usage of MSI or MSI-X interrupts is to allocate as many vectors
136 interrupts it can request a particular number of interrupts by passing that
153 the driver can specify that only MSI or MSI-X is acceptable:
161 The following old APIs to enable and disable MSI or MSI-X interrupts should
170 Additionally there are APIs to provide the number of supported MSI or MSI-X
175 pci_nr_irq_vectors() helper that handles MSI and MSI-X transparently.
181 Most device drivers have a per-device spinlock which is taken in the
182 interrupt handler. With pin-based interrupts or a single MSI, it is not
183 necessary to disable interrupts (Linux guarantees the same interrupt will
184 not be re-entered). If a device uses multiple interrupts, the driver
185 must disable interrupts while the lock is held. If the device sends
187 acquire the spinlock. Such deadlocks can be avoided by using
188 spin_lock_irqsave() or spin_lock_irq() which disable local interrupts
189 and acquire the lock (see Documentation/kernel-hacking/locking.rst).
191 4.5 How to tell whether MSI/MSI-X is enabled on a device
193 Using 'lspci -v' (as root) may show some devices with "MSI", "Message
194 Signalled Interrupts" or "MSI-X" capabilities. Each of these capabilities
196 or "-" (disabled).
202 The PCI stack provides three ways to disable MSIs:
217 If you have a board which has problems with MSIs, you can pass pci=nomsi
218 on the kernel command line to disable MSIs on all devices. It would be
219 in your best interests to report the problem to linux-pci@vger.kernel.org
220 including a full 'lspci -v' so we can add the quirks to the kernel.
230 Linux mostly knows about them and automatically enables MSIs if it can.
231 If you have a bridge unknown to Linux, you can enable
240 To disable MSIs, echo 0 instead of 1. Changing this value should be
244 Again, please notify linux-pci@vger.kernel.org of any bridges that need
251 to handle this with a quirk. Some drivers have an option to disable use
257 From the above three sections, you can see that there are many reasons
263 Then, 'lspci -t' gives the list of bridges above a device. Reading