162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Dynamic DMA mapping support.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/types.h>
762306a36Sopenharmony_ci#include <linux/mm.h>
862306a36Sopenharmony_ci#include <linux/string.h>
962306a36Sopenharmony_ci#include <linux/pci.h>
1062306a36Sopenharmony_ci#include <linux/module.h>
1162306a36Sopenharmony_ci#include <linux/dmar.h>
1262306a36Sopenharmony_ci#include <asm/iommu.h>
1362306a36Sopenharmony_ci#include <linux/dma-mapping.h>
1462306a36Sopenharmony_ci#include <linux/kernel.h>
1562306a36Sopenharmony_ci#include <asm/page.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciint no_iommu __read_mostly;
1862306a36Sopenharmony_ci#ifdef CONFIG_IOMMU_DEBUG
1962306a36Sopenharmony_ciint force_iommu __read_mostly = 1;
2062306a36Sopenharmony_ci#else
2162306a36Sopenharmony_ciint force_iommu __read_mostly;
2262306a36Sopenharmony_ci#endif
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistatic int __init pci_iommu_init(void)
2562306a36Sopenharmony_ci{
2662306a36Sopenharmony_ci	if (iommu_detected)
2762306a36Sopenharmony_ci		intel_iommu_init();
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	return 0;
3062306a36Sopenharmony_ci}
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci/* Must execute after PCI subsystem */
3362306a36Sopenharmony_cifs_initcall(pci_iommu_init);
34