linux/arch/x86/include/asm/xen/pci.h
<<
>>
Prefs
   1#ifndef _ASM_X86_XEN_PCI_H
   2#define _ASM_X86_XEN_PCI_H
   3
   4#if defined(CONFIG_PCI_XEN)
   5extern int __init pci_xen_init(void);
   6extern int __init pci_xen_hvm_init(void);
   7#define pci_xen 1
   8#else
   9#define pci_xen 0
  10#define pci_xen_init (0)
  11static inline int pci_xen_hvm_init(void)
  12{
  13        return -1;
  14}
  15#endif
  16#if defined(CONFIG_XEN_DOM0)
  17int __init pci_xen_initial_domain(void);
  18int xen_find_device_domain_owner(struct pci_dev *dev);
  19int xen_register_device_domain_owner(struct pci_dev *dev, uint16_t domain);
  20int xen_unregister_device_domain_owner(struct pci_dev *dev);
  21#else
  22static inline int __init pci_xen_initial_domain(void)
  23{
  24        return -1;
  25}
  26static inline int xen_find_device_domain_owner(struct pci_dev *dev)
  27{
  28        return -1;
  29}
  30static inline int xen_register_device_domain_owner(struct pci_dev *dev,
  31                                                   uint16_t domain)
  32{
  33        return -1;
  34}
  35static inline int xen_unregister_device_domain_owner(struct pci_dev *dev)
  36{
  37        return -1;
  38}
  39#endif
  40
  41#if defined(CONFIG_PCI_MSI)
  42#if defined(CONFIG_PCI_XEN)
  43/* The drivers/pci/xen-pcifront.c sets this structure to
  44 * its own functions.
  45 */
  46struct xen_pci_frontend_ops {
  47        int (*enable_msi)(struct pci_dev *dev, int vectors[]);
  48        void (*disable_msi)(struct pci_dev *dev);
  49        int (*enable_msix)(struct pci_dev *dev, int vectors[], int nvec);
  50        void (*disable_msix)(struct pci_dev *dev);
  51};
  52
  53extern struct xen_pci_frontend_ops *xen_pci_frontend;
  54
  55static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
  56                                              int vectors[])
  57{
  58        if (xen_pci_frontend && xen_pci_frontend->enable_msi)
  59                return xen_pci_frontend->enable_msi(dev, vectors);
  60        return -ENODEV;
  61}
  62static inline void xen_pci_frontend_disable_msi(struct pci_dev *dev)
  63{
  64        if (xen_pci_frontend && xen_pci_frontend->disable_msi)
  65                        xen_pci_frontend->disable_msi(dev);
  66}
  67static inline int xen_pci_frontend_enable_msix(struct pci_dev *dev,
  68                                               int vectors[], int nvec)
  69{
  70        if (xen_pci_frontend && xen_pci_frontend->enable_msix)
  71                return xen_pci_frontend->enable_msix(dev, vectors, nvec);
  72        return -ENODEV;
  73}
  74static inline void xen_pci_frontend_disable_msix(struct pci_dev *dev)
  75{
  76        if (xen_pci_frontend && xen_pci_frontend->disable_msix)
  77                        xen_pci_frontend->disable_msix(dev);
  78}
  79#endif /* CONFIG_PCI_XEN */
  80#endif /* CONFIG_PCI_MSI */
  81
  82#endif  /* _ASM_X86_XEN_PCI_H */
  83