aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2014-02-14 16:38:00 -0500
committerBjorn Helgaas <bhelgaas@google.com>2014-02-14 16:38:00 -0500
commitc128856b48b1a7132166c6b37a53b086d549fbde (patch)
treec4c1bb2baa1e25a436f09efb17a8304364bf7901 /include/linux/pci.h
parentc80ef97ae4848c4592f0fac9c06d7f436862a28d (diff)
parent94cccde648d32abe61e2d0d1b18178f3027f1a78 (diff)
Merge branch 'pci/msi' into next
* pci/msi: vfio: Use pci_enable_msi_range() and pci_enable_msix_range() ahci: Use pci_enable_msi_range() instead of pci_enable_msi_block() ahci: Fix broken fallback to single MSI mode PCI/MSI: Add pci_enable_msi_exact() and pci_enable_msix_exact() PCI/MSI: Fix cut-and-paste errors in documentation PCI/MSI: Add pci_enable_msi() documentation back PCI/MSI: Fix pci_msix_vec_count() htmldocs failure PCI/MSI: Fix leak of msi_attrs PCI/MSI: Check kmalloc() return value, fix leak of name
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 60ab8d782f8c..1e26fc602adc 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1171,8 +1171,23 @@ void msi_remove_pci_irq_vectors(struct pci_dev *dev);
1171void pci_restore_msi_state(struct pci_dev *dev); 1171void pci_restore_msi_state(struct pci_dev *dev);
1172int pci_msi_enabled(void); 1172int pci_msi_enabled(void);
1173int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec); 1173int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec);
1174static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec)
1175{
1176 int rc = pci_enable_msi_range(dev, nvec, nvec);
1177 if (rc < 0)
1178 return rc;
1179 return 0;
1180}
1174int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, 1181int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
1175 int minvec, int maxvec); 1182 int minvec, int maxvec);
1183static inline int pci_enable_msix_exact(struct pci_dev *dev,
1184 struct msix_entry *entries, int nvec)
1185{
1186 int rc = pci_enable_msix_range(dev, entries, nvec, nvec);
1187 if (rc < 0)
1188 return rc;
1189 return 0;
1190}
1176#else 1191#else
1177static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; } 1192static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; }
1178static inline int pci_enable_msi_block(struct pci_dev *dev, int nvec) 1193static inline int pci_enable_msi_block(struct pci_dev *dev, int nvec)
@@ -1191,9 +1206,14 @@ static inline int pci_msi_enabled(void) { return 0; }
1191static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec, 1206static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec,
1192 int maxvec) 1207 int maxvec)
1193{ return -ENOSYS; } 1208{ return -ENOSYS; }
1209static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec)
1210{ return -ENOSYS; }
1194static inline int pci_enable_msix_range(struct pci_dev *dev, 1211static inline int pci_enable_msix_range(struct pci_dev *dev,
1195 struct msix_entry *entries, int minvec, int maxvec) 1212 struct msix_entry *entries, int minvec, int maxvec)
1196{ return -ENOSYS; } 1213{ return -ENOSYS; }
1214static inline int pci_enable_msix_exact(struct pci_dev *dev,
1215 struct msix_entry *entries, int nvec)
1216{ return -ENOSYS; }
1197#endif 1217#endif
1198 1218
1199#ifdef CONFIG_PCIEPORTBUS 1219#ifdef CONFIG_PCIEPORTBUS