#include <linux/pci.h>
#include <linux/acpi.h>
#include <linux/pci-acpi.h>
#include <xen/pci.h>
#include <xen/xen.h>
#include <xen/interface/physdev.h>
#include <xen/interface/xen.h>
#include <asm/xen/hypervisor.h>
#include <asm/xen/hypercall.h>
#include "../pci/pci.h"
#ifdef CONFIG_PCI_MMCONFIG
#include <asm/pci_x86.h>
static int xen_mcfg_late(void);
#endif
static bool __read_mostly pci_seg_supported = …;
static int xen_add_device(struct device *dev)
{ … }
static int xen_remove_device(struct device *dev)
{ … }
static int xen_pci_notifier(struct notifier_block *nb,
unsigned long action, void *data)
{ … }
static struct notifier_block device_nb = …;
static int __init register_xen_pci_notifier(void)
{ … }
arch_initcall(register_xen_pci_notifier);
#ifdef CONFIG_PCI_MMCONFIG
static int xen_mcfg_late(void)
{ … }
#endif
#ifdef CONFIG_XEN_DOM0
struct xen_device_domain_owner { … };
static DEFINE_SPINLOCK(dev_domain_list_spinlock);
static LIST_HEAD(dev_domain_list);
static struct xen_device_domain_owner *find_device(struct pci_dev *dev)
{ … }
int xen_find_device_domain_owner(struct pci_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int xen_register_device_domain_owner(struct pci_dev *dev, uint16_t domain)
{ … }
EXPORT_SYMBOL_GPL(…);
int xen_unregister_device_domain_owner(struct pci_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif