1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * IOMMU debugfs core infrastructure 4 * 5 * Copyright (C) 2018 Advanced Micro Devices, Inc. 6 * 7 * Author: Gary R Hook <gary.hook@amd.com> 8 */ 9 10 #include <linux/pci.h> 11 #include <linux/iommu.h> 12 #include <linux/debugfs.h> 13 14 struct dentry *iommu_debugfs_dir; 15 EXPORT_SYMBOL_GPL(iommu_debugfs_dir); 16 17 /** 18 * iommu_debugfs_setup - create the top-level iommu directory in debugfs 19 * 20 * Provide base enablement for using debugfs to expose internal data of an 21 * IOMMU driver. When called, this function creates the 22 * /sys/kernel/debug/iommu directory. 23 * 24 * Emit a strong warning at boot time to indicate that this feature is 25 * enabled. 26 * 27 * This function is called from iommu_init; drivers may then use 28 * iommu_debugfs_dir to instantiate a vendor-specific directory to be used 29 * to expose internal data. 30 */ 31 void iommu_debugfs_setup(void) 32 { 33 if (!iommu_debugfs_dir) { 34 iommu_debugfs_dir = debugfs_create_dir("iommu", NULL); 35 pr_warn("\n"); 36 pr_warn("*************************************************************\n"); 37 pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); 38 pr_warn("** **\n"); 39 pr_warn("** IOMMU DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL **\n"); 40 pr_warn("** **\n"); 41 pr_warn("** This means that this kernel is built to expose internal **\n"); 42 pr_warn("** IOMMU data structures, which may compromise security on **\n"); 43 pr_warn("** your system. **\n"); 44 pr_warn("** **\n"); 45 pr_warn("** If you see this message and you are not debugging the **\n"); 46 pr_warn("** kernel, report this immediately to your vendor! **\n"); 47 pr_warn("** **\n"); 48 pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); 49 pr_warn("*************************************************************\n"); 50 } 51 } 52