]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - Documentation/PCI/MSI-HOWTO.txt
iommu-common: rename iommu_pool_hash to iommu_hash_common
[karo-tx-linux.git] / Documentation / PCI / MSI-HOWTO.txt
index 0d920d54536df88b07f5b46637cfa32b5970100e..1179850f453c66849c1808f83b0955a63cd33ad1 100644 (file)
@@ -353,7 +353,7 @@ retry:
        rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
                                   maxvec, maxvec);
        /*
-        * -ENOSPC is the only error code allowed to be analized
+        * -ENOSPC is the only error code allowed to be analyzed
         */
        if (rc == -ENOSPC) {
                if (maxvec == 1)
@@ -370,7 +370,7 @@ retry:
        return rc;
 }
 
-Note how pci_enable_msix_range() return value is analized for a fallback -
+Note how pci_enable_msix_range() return value is analyzed for a fallback -
 any error code other than -ENOSPC indicates a fatal error and should not
 be retried.
 
@@ -486,7 +486,7 @@ during development.
 If your device supports both MSI-X and MSI capabilities, you should use
 the MSI-X facilities in preference to the MSI facilities.  As mentioned
 above, MSI-X supports any number of interrupts between 1 and 2048.
-In constrast, MSI is restricted to a maximum of 32 interrupts (and
+In contrast, MSI is restricted to a maximum of 32 interrupts (and
 must be a power of two).  In addition, the MSI interrupt vectors must
 be allocated consecutively, so the system might not be able to allocate
 as many vectors for MSI as it could for MSI-X.  On some platforms, MSI
@@ -501,18 +501,9 @@ necessary to disable interrupts (Linux guarantees the same interrupt will
 not be re-entered).  If a device uses multiple interrupts, the driver
 must disable interrupts while the lock is held.  If the device sends
 a different interrupt, the driver will deadlock trying to recursively
-acquire the spinlock.
-
-There are two solutions.  The first is to take the lock with
-spin_lock_irqsave() or spin_lock_irq() (see
-Documentation/DocBook/kernel-locking).  The second is to specify
-IRQF_DISABLED to request_irq() so that the kernel runs the entire
-interrupt routine with interrupts disabled.
-
-If your MSI interrupt routine does not hold the lock for the whole time
-it is running, the first solution may be best.  The second solution is
-normally preferred as it avoids making two transitions from interrupt
-disabled to enabled and back again.
+acquire the spinlock.  Such deadlocks can be avoided by using
+spin_lock_irqsave() or spin_lock_irq() which disable local interrupts
+and acquire the lock (see Documentation/DocBook/kernel-locking).
 
 4.6 How to tell whether MSI/MSI-X is enabled on a device