Currently, debugging IOMMU issues is done via manual instrumentation of the code or via low-level techniques like using a JTAG debugger. Introduce a set of library functions and debugfs files to facilitate interactive debugging and testing. This patch introduces the basic infrastructure as well an initial debugfs for: - viewing IOMMU attachments (domain->dev mappings created by iommu_attach_device) and resulting attributes (like the base address of the page tables) - basic performance profiling Example usage: # cd /sys/kernel/debug/iommu/attachments # cat b40000.qcom,kgsl-iommu:iommu_kgsl_cb2 Domain: 0xffffffc0cb983f00 PT_BASE_ADDR: virt=0xffffffc057eca000 phys=0x00000000d7eca000 # cd /sys/kernel/debug/iommu/tests # cat soc:qcom,cam_smmu:msm_cam_smmu_cb1/profiling size iommu_map iommu_unmap 4K 47 us 909 us 64K 97 us 594 us 2M 1536 us 605 us 12M 8737 us 1193 us 20M 26517 us 1121 us size iommu_map_sg iommu_unmap 64K 31 us 656 us 2M 885 us 600 us 12M 2674 us 687 us 20M 4352 us 1096 us Change-Id: I1c301eec6e64688831cad80ffd0380743f7f0df6 Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
29 lines
1.3 KiB
Makefile
29 lines
1.3 KiB
Makefile
obj-$(CONFIG_IOMMU_API) += iommu.o
|
|
obj-$(CONFIG_IOMMU_API) += iommu-traces.o
|
|
obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
|
|
obj-$(CONFIG_IOMMU_DMA) += dma-iommu.o
|
|
obj-$(CONFIG_IOMMU_API) += msm_dma_iommu_mapping.o
|
|
obj-$(CONFIG_IOMMU_IO_PGTABLE) += io-pgtable.o
|
|
obj-$(CONFIG_IOMMU_IO_PGTABLE_LPAE) += io-pgtable-arm.o
|
|
obj-$(CONFIG_IOMMU_IOVA) += iova.o
|
|
obj-$(CONFIG_OF_IOMMU) += of_iommu.o
|
|
obj-$(CONFIG_IOMMU_DEBUG) += iommu-debug.o
|
|
obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o
|
|
obj-$(CONFIG_AMD_IOMMU_V2) += amd_iommu_v2.o
|
|
obj-$(CONFIG_ARM_SMMU) += arm-smmu.o
|
|
obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
|
|
obj-$(CONFIG_DMAR_TABLE) += dmar.o
|
|
obj-$(CONFIG_INTEL_IOMMU) += intel-iommu.o
|
|
obj-$(CONFIG_INTEL_IOMMU_SVM) += intel-svm.o
|
|
obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
|
|
obj-$(CONFIG_IRQ_REMAP) += intel_irq_remapping.o irq_remapping.o
|
|
obj-$(CONFIG_OMAP_IOMMU) += omap-iommu.o
|
|
obj-$(CONFIG_OMAP_IOMMU_DEBUG) += omap-iommu-debug.o
|
|
obj-$(CONFIG_ROCKCHIP_IOMMU) += rockchip-iommu.o
|
|
obj-$(CONFIG_TEGRA_IOMMU_GART) += tegra-gart.o
|
|
obj-$(CONFIG_TEGRA_IOMMU_SMMU) += tegra-smmu.o
|
|
obj-$(CONFIG_EXYNOS_IOMMU) += exynos-iommu.o
|
|
obj-$(CONFIG_SHMOBILE_IOMMU) += shmobile-iommu.o
|
|
obj-$(CONFIG_SHMOBILE_IPMMU) += shmobile-ipmmu.o
|
|
obj-$(CONFIG_FSL_PAMU) += fsl_pamu.o fsl_pamu_domain.o
|
|
obj-$(CONFIG_S390_IOMMU) += s390-iommu.o
|