#include <linux/dma-map-ops.h>
#include <linux/dma-direct.h>
#include <linux/iommu.h>
#include <linux/dmar.h>
#include <linux/export.h>
#include <linux/memblock.h>
#include <linux/gfp.h>
#include <linux/pci.h>
#include <linux/amd-iommu.h>
#include <asm/proto.h>
#include <asm/dma.h>
#include <asm/iommu.h>
#include <asm/gart.h>
#include <asm/x86_init.h>
#include <xen/xen.h>
#include <xen/swiotlb-xen.h>
static bool disable_dac_quirk __read_mostly;
const struct dma_map_ops *dma_ops;
EXPORT_SYMBOL(…);
#ifdef CONFIG_IOMMU_DEBUG
int panic_on_overflow __read_mostly = …;
int force_iommu __read_mostly = …;
#else
int panic_on_overflow __read_mostly = 0;
int force_iommu __read_mostly = 0;
#endif
int iommu_merge __read_mostly = …;
int no_iommu __read_mostly;
int iommu_detected __read_mostly = …;
#ifdef CONFIG_SWIOTLB
bool x86_swiotlb_enable;
static unsigned int x86_swiotlb_flags;
static void __init pci_swiotlb_detect(void)
{ … }
#else
static inline void __init pci_swiotlb_detect(void)
{
}
#define x86_swiotlb_flags …
#endif
#ifdef CONFIG_SWIOTLB_XEN
static bool xen_swiotlb_enabled(void)
{ … }
static void __init pci_xen_swiotlb_init(void)
{ … }
#else
static inline void __init pci_xen_swiotlb_init(void)
{
}
#endif
void __init pci_iommu_alloc(void)
{ … }
static __init int iommu_setup(char *p)
{ … }
early_param(…);
static int __init pci_iommu_init(void)
{ … }
rootfs_initcall(pci_iommu_init);
#ifdef CONFIG_PCI
static int via_no_dac_cb(struct pci_dev *pdev, void *data)
{ … }
static void via_no_dac(struct pci_dev *dev)
{ … }
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_VIA, PCI_ANY_ID,
PCI_CLASS_BRIDGE_PCI, 8, via_no_dac);
#endif