#include <linux/pci.h>
#include <linux/msi.h>
#define msix_table_size(flags) …
int pci_msi_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
void pci_msi_teardown_msi_irqs(struct pci_dev *dev);
void pci_msi_update_mask(struct msi_desc *desc, u32 clear, u32 set);
static inline void pci_msi_mask(struct msi_desc *desc, u32 mask)
{ … }
static inline void pci_msi_unmask(struct msi_desc *desc, u32 mask)
{ … }
static inline void __iomem *pci_msix_desc_addr(struct msi_desc *desc)
{ … }
static inline void pci_msix_write_vector_ctrl(struct msi_desc *desc, u32 ctrl)
{ … }
static inline void pci_msix_mask(struct msi_desc *desc)
{ … }
static inline void pci_msix_unmask(struct msi_desc *desc)
{ … }
static inline void __pci_msi_mask_desc(struct msi_desc *desc, u32 mask)
{ … }
static inline void __pci_msi_unmask_desc(struct msi_desc *desc, u32 mask)
{ … }
static inline __attribute_const__ u32 msi_multi_mask(struct msi_desc *desc)
{ … }
void msix_prepare_msi_desc(struct pci_dev *dev, struct msi_desc *desc);
extern int pci_msi_enable;
void pci_msi_shutdown(struct pci_dev *dev);
void pci_msix_shutdown(struct pci_dev *dev);
void pci_free_msi_irqs(struct pci_dev *dev);
int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, struct irq_affinity *affd);
int __pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, int minvec,
int maxvec, struct irq_affinity *affd, int flags);
void __pci_restore_msi_state(struct pci_dev *dev);
void __pci_restore_msix_state(struct pci_dev *dev);
enum support_mode { … };
bool pci_msi_domain_supports(struct pci_dev *dev, unsigned int feature_mask, enum support_mode mode);
bool pci_setup_msi_device_domain(struct pci_dev *pdev);
bool pci_setup_msix_device_domain(struct pci_dev *pdev, unsigned int hwsize);
#ifdef CONFIG_PCI_MSI_ARCH_FALLBACKS
int pci_msi_legacy_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
void pci_msi_legacy_teardown_msi_irqs(struct pci_dev *dev);
#else
static inline int pci_msi_legacy_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
{ … }
static inline void pci_msi_legacy_teardown_msi_irqs(struct pci_dev *dev)
{ … }
#endif