iommu/vt-d: Enable base Intel IOMMU debugfs support
authorSohil Mehta <sohil.mehta@intel.com>
Wed, 12 Sep 2018 00:11:38 +0000 (17:11 -0700)
committerJoerg Roedel <jroedel@suse.de>
Tue, 25 Sep 2018 12:33:43 +0000 (14:33 +0200)
Add a new config option CONFIG_INTEL_IOMMU_DEBUGFS and do the base
enabling for Intel IOMMU debugfs.

Cc: Lu Baolu <baolu.lu@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Ashok Raj <ashok.raj@intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Co-Developed-by: Gayatri Kammela <gayatri.kammela@intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Sohil Mehta <sohil.mehta@intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/Kconfig
drivers/iommu/Makefile
drivers/iommu/intel-iommu-debugfs.c [new file with mode: 0644]
drivers/iommu/intel-iommu.c
include/linux/intel-iommu.h

index c60395b..51ba19c 100644 (file)
@@ -186,6 +186,19 @@ config INTEL_IOMMU
          and include PCI device scope covered by these DMA
          remapping devices.
 
+config INTEL_IOMMU_DEBUGFS
+       bool "Export Intel IOMMU internals in Debugfs"
+       depends on INTEL_IOMMU && IOMMU_DEBUGFS
+       help
+         !!!WARNING!!!
+
+         DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
+
+         Expose Intel IOMMU internals in Debugfs.
+
+         This option is -NOT- intended for production environments, and should
+         only be enabled for debugging Intel IOMMU.
+
 config INTEL_IOMMU_SVM
        bool "Support for Shared Virtual Memory with Intel IOMMU"
        depends on INTEL_IOMMU && X86
index ab5eba6..a158a68 100644 (file)
@@ -17,6 +17,7 @@ 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 intel-pasid.o
+obj-$(CONFIG_INTEL_IOMMU_DEBUGFS) += intel-iommu-debugfs.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
diff --git a/drivers/iommu/intel-iommu-debugfs.c b/drivers/iommu/intel-iommu-debugfs.c
new file mode 100644 (file)
index 0000000..33e0a6c
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright © 2018 Intel Corporation.
+ *
+ * Authors: Gayatri Kammela <gayatri.kammela@intel.com>
+ *         Sohil Mehta <sohil.mehta@intel.com>
+ *         Jacob Pan <jacob.jun.pan@linux.intel.com>
+ */
+
+#include <linux/debugfs.h>
+#include <linux/dmar.h>
+#include <linux/intel-iommu.h>
+#include <linux/pci.h>
+
+#include <asm/irq_remapping.h>
+
+void __init intel_iommu_debugfs_init(void)
+{
+       debugfs_create_dir("intel", iommu_debugfs_dir);
+}
index b5868c7..b9cf7c8 100644 (file)
@@ -4837,6 +4837,7 @@ int __init intel_iommu_init(void)
        cpuhp_setup_state(CPUHP_IOMMU_INTEL_DEAD, "iommu/intel:dead", NULL,
                          intel_iommu_cpu_dead);
        intel_iommu_enabled = 1;
+       intel_iommu_debugfs_init();
 
        return 0;
 
index 3bdb9aa..b0ae258 100644 (file)
@@ -621,6 +621,12 @@ extern int intel_iommu_enable_pasid(struct intel_iommu *iommu, struct intel_svm_
 extern struct intel_iommu *intel_svm_device_to_iommu(struct device *dev);
 #endif
 
+#ifdef CONFIG_INTEL_IOMMU_DEBUGFS
+void intel_iommu_debugfs_init(void);
+#else
+static inline void intel_iommu_debugfs_init(void) {}
+#endif /* CONFIG_INTEL_IOMMU_DEBUGFS */
+
 extern const struct attribute_group *intel_iommu_groups[];
 bool context_present(struct context_entry *context);
 struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,