Commit | Line | Data |
---|---|---|
bad614b2 GH |
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; | |
18b3af44 | 15 | EXPORT_SYMBOL_GPL(iommu_debugfs_dir); |
bad614b2 GH |
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 | * | |
18b3af44 GU |
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. | |
bad614b2 GH |
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 | } |