Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _ASM_X86_XEN_PCI_H
0003 #define _ASM_X86_XEN_PCI_H
0004 
0005 #if defined(CONFIG_PCI_XEN)
0006 extern int __init pci_xen_init(void);
0007 extern int __init pci_xen_hvm_init(void);
0008 #define pci_xen 1
0009 #else
0010 #define pci_xen 0
0011 #define pci_xen_init (0)
0012 static inline int pci_xen_hvm_init(void)
0013 {
0014     return -1;
0015 }
0016 #endif
0017 #ifdef CONFIG_XEN_PV_DOM0
0018 int __init pci_xen_initial_domain(void);
0019 #else
0020 static inline int __init pci_xen_initial_domain(void)
0021 {
0022     return -1;
0023 }
0024 #endif
0025 
0026 #if defined(CONFIG_PCI_MSI)
0027 #if defined(CONFIG_PCI_XEN)
0028 /* The drivers/pci/xen-pcifront.c sets this structure to
0029  * its own functions.
0030  */
0031 struct xen_pci_frontend_ops {
0032     int (*enable_msi)(struct pci_dev *dev, int vectors[]);
0033     void (*disable_msi)(struct pci_dev *dev);
0034     int (*enable_msix)(struct pci_dev *dev, int vectors[], int nvec);
0035     void (*disable_msix)(struct pci_dev *dev);
0036 };
0037 
0038 extern struct xen_pci_frontend_ops *xen_pci_frontend;
0039 
0040 static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
0041                           int vectors[])
0042 {
0043     if (xen_pci_frontend && xen_pci_frontend->enable_msi)
0044         return xen_pci_frontend->enable_msi(dev, vectors);
0045     return -ENOSYS;
0046 }
0047 static inline void xen_pci_frontend_disable_msi(struct pci_dev *dev)
0048 {
0049     if (xen_pci_frontend && xen_pci_frontend->disable_msi)
0050             xen_pci_frontend->disable_msi(dev);
0051 }
0052 static inline int xen_pci_frontend_enable_msix(struct pci_dev *dev,
0053                            int vectors[], int nvec)
0054 {
0055     if (xen_pci_frontend && xen_pci_frontend->enable_msix)
0056         return xen_pci_frontend->enable_msix(dev, vectors, nvec);
0057     return -ENOSYS;
0058 }
0059 static inline void xen_pci_frontend_disable_msix(struct pci_dev *dev)
0060 {
0061     if (xen_pci_frontend && xen_pci_frontend->disable_msix)
0062             xen_pci_frontend->disable_msix(dev);
0063 }
0064 #endif /* CONFIG_PCI_XEN */
0065 #endif /* CONFIG_PCI_MSI */
0066 
0067 #endif  /* _ASM_X86_XEN_PCI_H */