forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
iommu: Enable debugfs exposure of IOMMU driver internals
Provide base enablement for using debugfs to expose internal data of an IOMMU driver. When called, create the /sys/kernel/debug/iommu directory. Emit a strong warning at boot time to indicate that this feature is enabled. This function is called from iommu_init, and creates the initial DebugFS directory. Drivers may then call iommu_debugfs_new_driver_dir() to instantiate a device-specific directory to expose internal data. It will return a pointer to the new dentry structure created in /sys/kernel/debug/iommu, or NULL in the event of a failure. Since the IOMMU driver can not be removed from the running system, there is no need for an "off" function. Signed-off-by: Gary R Hook <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
- Loading branch information
1 parent
021c917
commit bad614b
Showing
5 changed files
with
86 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* IOMMU debugfs core infrastructure | ||
* | ||
* Copyright (C) 2018 Advanced Micro Devices, Inc. | ||
* | ||
* Author: Gary R Hook <[email protected]> | ||
*/ | ||
|
||
#include <linux/pci.h> | ||
#include <linux/iommu.h> | ||
#include <linux/debugfs.h> | ||
|
||
struct dentry *iommu_debugfs_dir; | ||
|
||
/** | ||
* iommu_debugfs_setup - create the top-level iommu directory in debugfs | ||
* | ||
* Provide base enablement for using debugfs to expose internal data of an | ||
* IOMMU driver. When called, this function creates the | ||
* /sys/kernel/debug/iommu directory. | ||
* | ||
* Emit a strong warning at boot time to indicate that this feature is | ||
* enabled. | ||
* | ||
* This function is called from iommu_init; drivers may then call | ||
* iommu_debugfs_new_driver_dir() to instantiate a vendor-specific | ||
* directory to be used to expose internal data. | ||
*/ | ||
void iommu_debugfs_setup(void) | ||
{ | ||
if (!iommu_debugfs_dir) { | ||
iommu_debugfs_dir = debugfs_create_dir("iommu", NULL); | ||
pr_warn("\n"); | ||
pr_warn("*************************************************************\n"); | ||
pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); | ||
pr_warn("** **\n"); | ||
pr_warn("** IOMMU DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL **\n"); | ||
pr_warn("** **\n"); | ||
pr_warn("** This means that this kernel is built to expose internal **\n"); | ||
pr_warn("** IOMMU data structures, which may compromise security on **\n"); | ||
pr_warn("** your system. **\n"); | ||
pr_warn("** **\n"); | ||
pr_warn("** If you see this message and you are not debugging the **\n"); | ||
pr_warn("** kernel, report this immediately to your vendor! **\n"); | ||
pr_warn("** **\n"); | ||
pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); | ||
pr_warn("*************************************************************\n"); | ||
} | ||
} | ||
|
||
/** | ||
* iommu_debugfs_new_driver_dir - create a vendor directory under debugfs/iommu | ||
* @vendor: name of the vendor-specific subdirectory to create | ||
* | ||
* This function is called by an IOMMU driver to create the top-level debugfs | ||
* directory for that driver. | ||
* | ||
* Return: upon success, a pointer to the dentry for the new directory. | ||
* NULL in case of failure. | ||
*/ | ||
struct dentry *iommu_debugfs_new_driver_dir(const char *vendor) | ||
{ | ||
return debugfs_create_dir(vendor, iommu_debugfs_dir); | ||
} | ||
EXPORT_SYMBOL_GPL(iommu_debugfs_new_driver_dir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters