* [PATCH v2 0/2] Base enablement of IOMMU debugfs support
@ 2018-04-04 18:54 Gary R Hook
2018-04-04 18:54 ` [PATCH v2 1/2] iommu - Enable debugfs exposure of the IOMMU Gary R Hook
2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook
0 siblings, 2 replies; 6+ messages in thread
From: Gary R Hook @ 2018-04-04 18:54 UTC (permalink / raw)
To: iommu; +Cc: joro, linux-kernel
These patches create a top-level function to create a debugfs directory
for the IOMMU, under which drivers may create and populate-specific
directories for their device internals.
Patch 1: general IOMMU enablement
Patch 2: basic AMD enablement to demonstrate linkage with patch 1
Introduce a new Kconfig parameter IOMMU_DEBUG to globally allow or
disallow debugfs code to be built.
Changes since v1:
- Remove debug cruft
- Remove cruft produced by design change
- Change the lock to a mutex
- Coding style fixes
- Add a comment to document the framework
---
Gary R Hook (2):
iommu - Enable debugfs exposure of the IOMMU
iommu/amd: Add basic debugfs infrastructure for AMD IOMMU
drivers/iommu/Kconfig | 11 +++++++
drivers/iommu/Makefile | 2 +
drivers/iommu/amd_iommu_debugfs.c | 45 +++++++++++++++++++++++++++++
drivers/iommu/amd_iommu_init.c | 7 +++-
drivers/iommu/amd_iommu_proto.h | 8 ++++-
drivers/iommu/amd_iommu_types.h | 3 ++
drivers/iommu/iommu-debugfs.c | 58 +++++++++++++++++++++++++++++++++++++
include/linux/iommu.h | 4 +++
8 files changed, 135 insertions(+), 3 deletions(-)
create mode 100644 drivers/iommu/amd_iommu_debugfs.c
create mode 100644 drivers/iommu/iommu-debugfs.c
--
Signature
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2 1/2] iommu - Enable debugfs exposure of the IOMMU 2018-04-04 18:54 [PATCH v2 0/2] Base enablement of IOMMU debugfs support Gary R Hook @ 2018-04-04 18:54 ` Gary R Hook 2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook 1 sibling, 0 replies; 6+ messages in thread From: Gary R Hook @ 2018-04-04 18:54 UTC (permalink / raw) To: iommu; +Cc: joro, linux-kernel 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 patch adds a top-level function that will create the (above) directory, under which a driver may create a hw-specific directory for its use. The function iommu_debugfs_setup() returns a pointer to the new dentry structure created for /sys/kernel/debug/iommu, or NULL in the event of a failure. An IOMMU driver should call this function first, and then create a directory beneath it. A driver implementation might look something like: static struct dentry *my_debugfs; struct dentry *d_top; if (!my_debugfs) { d_top = iommu_debugfs_setup(); if (d_top) my_debugfs = debugfs_create_dir("vendor", d_top); } Since the IOMMU driver can not be removed from the running system, this patch only provides an "on" function. Signed-off-by: Gary R Hook <gary.hook@amd.com> --- drivers/iommu/Kconfig | 11 ++++++++ drivers/iommu/Makefile | 1 + drivers/iommu/iommu-debugfs.c | 58 +++++++++++++++++++++++++++++++++++++++++ include/linux/iommu.h | 4 +++ 4 files changed, 74 insertions(+) create mode 100644 drivers/iommu/iommu-debugfs.c diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index f3a21343e636..c1e39dabfec2 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig @@ -60,6 +60,17 @@ config IOMMU_IO_PGTABLE_ARMV7S_SELFTEST endmenu +config IOMMU_DEBUG + bool "Enable IOMMU internals in DebugFS" + depends on DEBUG_FS + default n + help + Allows exposure of IOMMU device internals. This option enables + the use of debugfs by IOMMU drivers as required. Devices can, + at initialization time, cause the IOMMU code to create a top-level + debug/iommu directory, and then populate a subdirectory with + entries as required. + config IOMMU_IOVA tristate diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile index 1fb695854809..5eb1121d54b9 100644 --- a/drivers/iommu/Makefile +++ b/drivers/iommu/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_IOMMU_API) += iommu.o obj-$(CONFIG_IOMMU_API) += iommu-traces.o obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o +obj-$(CONFIG_IOMMU_DEBUG) += iommu-debugfs.o obj-$(CONFIG_IOMMU_DMA) += dma-iommu.o obj-$(CONFIG_IOMMU_IO_PGTABLE) += io-pgtable.o obj-$(CONFIG_IOMMU_IO_PGTABLE_ARMV7S) += io-pgtable-arm-v7s.o diff --git a/drivers/iommu/iommu-debugfs.c b/drivers/iommu/iommu-debugfs.c new file mode 100644 index 000000000000..add6f95120e4 --- /dev/null +++ b/drivers/iommu/iommu-debugfs.c @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * IOMMU driver + * + * Copyright (C) 2018 Advanced Micro Devices, Inc. + * + * Author: Gary R Hook <gary.hook@amd.com> + */ + +#include <linux/pci.h> +#include <linux/iommu.h> +#include <linux/debugfs.h> + +static struct dentry *iommu_debugfs_dir; + +/* + * 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 top-level function that will create the (above) directory, under a + * driver may create a hw-specific directory for its use. The function + * + * iommu_debugfs_setup() + * + * returns a pointer to the new dentry structure created for + * /sys/kernel/debug/iommu, or NULL in the event of a failure. An IOMMU + * driver should call this function first, and then create a directory + * beneath it. A driver implementation might look something like: + * + * static struct dentry *my_debugfs; + * + * struct dentry *d_top; + * if (!my_debugfs) { + * d_top = iommu_debugfs_setup(); + * if (d_top) + * my_debugfs = debugfs_create_dir("vendor", d_top); + * } + * + * Since the IOMMU driver can not be removed from the running system, there + * is no need for an "off" function. + */ +struct dentry *iommu_debugfs_setup(void) +{ + if (!debugfs_initialized()) + return NULL; + + if (!iommu_debugfs_dir) + iommu_debugfs_dir = debugfs_create_dir("iommu", NULL); + + if (iommu_debugfs_dir) + pr_warn("WARNING: IOMMU DEBUGFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL\n"); + + return iommu_debugfs_dir; +} +EXPORT_SYMBOL_GPL(iommu_debugfs_setup); diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 41b8c5757859..3dd2e73d31c4 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -412,6 +412,10 @@ void iommu_fwspec_free(struct device *dev); int iommu_fwspec_add_ids(struct device *dev, u32 *ids, int num_ids); const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode); +#ifdef CONFIG_IOMMU_DEBUG +struct dentry *iommu_debugfs_setup(void); +#endif + #else /* CONFIG_IOMMU_API */ struct iommu_ops {}; ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU 2018-04-04 18:54 [PATCH v2 0/2] Base enablement of IOMMU debugfs support Gary R Hook 2018-04-04 18:54 ` [PATCH v2 1/2] iommu - Enable debugfs exposure of the IOMMU Gary R Hook @ 2018-04-04 18:55 ` Gary R Hook 2018-04-05 8:12 ` kbuild test robot ` (2 more replies) 1 sibling, 3 replies; 6+ messages in thread From: Gary R Hook @ 2018-04-04 18:55 UTC (permalink / raw) To: iommu; +Cc: joro, linux-kernel Implement a skeleton framework for debugfs support in the AMD IOMMU. Signed-off-by: Gary R Hook <gary.hook@amd.com> --- drivers/iommu/Makefile | 1 + drivers/iommu/amd_iommu_debugfs.c | 45 +++++++++++++++++++++++++++++++++++++ drivers/iommu/amd_iommu_init.c | 7 ++++-- drivers/iommu/amd_iommu_proto.h | 8 ++++++- drivers/iommu/amd_iommu_types.h | 3 ++ 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 drivers/iommu/amd_iommu_debugfs.c diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile index 5eb1121d54b9..0ca250f626d9 100644 --- a/drivers/iommu/Makefile +++ b/drivers/iommu/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_IOMMU_IOVA) += iova.o obj-$(CONFIG_OF_IOMMU) += of_iommu.o obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o +obj-$(CONFIG_IOMMU_DEBUG) += amd_iommu_debugfs.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 diff --git a/drivers/iommu/amd_iommu_debugfs.c b/drivers/iommu/amd_iommu_debugfs.c new file mode 100644 index 000000000000..282100a655b3 --- /dev/null +++ b/drivers/iommu/amd_iommu_debugfs.c @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * AMD IOMMU driver + * + * Copyright (C) 2018 Advanced Micro Devices, Inc. + * + * Author: Gary R Hook <gary.hook@amd.com> + */ + +#include <linux/debugfs.h> +#include <linux/iommu.h> +#include <linux/pci.h> +#include "amd_iommu_proto.h" +#include "amd_iommu_types.h" + +static struct dentry *amd_iommu_debugfs; +static DEFINE_MUTEX(amd_iommu_debugfs_lock); + +#define MAX_NAME_LEN 20 + +void amd_iommu_debugfs_setup(struct amd_iommu *iommu) +{ + char name[MAX_NAME_LEN + 1]; + struct dentry *d_top; + + if (!debugfs_initialized()) + return; + + mutex_lock(&amd_iommu_debugfs_lock); + if (!amd_iommu_debugfs) { + d_top = iommu_debugfs_setup(); + if (d_top) + amd_iommu_debugfs = debugfs_create_dir("amd", d_top); + } + mutex_unlock(&amd_iommu_debugfs_lock); + if (amd_iommu_debugfs) { + snprintf(name, MAX_NAME_LEN, "iommu%02d", iommu->index); + iommu->debugfs = debugfs_create_dir(name, + amd_iommu_debugfs); + if (!iommu->debugfs) { + debugfs_remove_recursive(amd_iommu_debugfs); + amd_iommu_debugfs = NULL; + } + } +} diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 6fe2d0346073..43856c7f4ea1 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -89,6 +89,7 @@ #define ACPI_DEVFLAG_ATSDIS 0x10000000 #define LOOP_TIMEOUT 100000 + /* * ACPI table definitions * @@ -2720,6 +2721,7 @@ int __init amd_iommu_enable_faulting(void) */ static int __init amd_iommu_init(void) { + struct amd_iommu *iommu; int ret; ret = iommu_go_to_state(IOMMU_INITIALIZED); @@ -2729,14 +2731,15 @@ static int __init amd_iommu_init(void) disable_iommus(); free_iommu_resources(); } else { - struct amd_iommu *iommu; - uninit_device_table_dma(); for_each_iommu(iommu) iommu_flush_all_caches(iommu); } } + for_each_iommu(iommu) + amd_iommu_debugfs_setup(iommu); + return ret; } diff --git a/drivers/iommu/amd_iommu_proto.h b/drivers/iommu/amd_iommu_proto.h index 640c286a0ab9..1cfaae28c2cd 100644 --- a/drivers/iommu/amd_iommu_proto.h +++ b/drivers/iommu/amd_iommu_proto.h @@ -33,6 +33,12 @@ extern void amd_iommu_uninit_devices(void); extern void amd_iommu_init_notifier(void); extern int amd_iommu_init_api(void); +#ifdef CONFIG_IOMMU_DEBUG +void amd_iommu_debugfs_setup(struct amd_iommu *iommu); +#else +static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {} +#endif + /* Needed for interrupt remapping */ extern int amd_iommu_prepare(void); extern int amd_iommu_enable(void); @@ -58,7 +64,7 @@ extern int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, int pasid); extern struct iommu_domain *amd_iommu_get_v2_domain(struct pci_dev *pdev); #ifdef CONFIG_IRQ_REMAP -extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu); +int amd_iommu_create_irq_domain(struct amd_iommu *iommu); #else static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu) { diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h index f6b24c7d8b70..43c52797810e 100644 --- a/drivers/iommu/amd_iommu_types.h +++ b/drivers/iommu/amd_iommu_types.h @@ -591,6 +591,9 @@ struct amd_iommu { u32 flags; volatile u64 __aligned(8) cmd_sem; + + /* DebugFS Info */ + struct dentry *debugfs; }; static inline struct amd_iommu *dev_to_amd_iommu(struct device *dev) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU 2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook @ 2018-04-05 8:12 ` kbuild test robot 2018-04-05 19:57 ` kbuild test robot 2018-04-05 20:00 ` Tom Lendacky 2 siblings, 0 replies; 6+ messages in thread From: kbuild test robot @ 2018-04-05 8:12 UTC (permalink / raw) To: Gary R Hook; +Cc: kbuild-all, iommu, joro, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1819 bytes --] Hi Gary, Thank you for the patch! Yet something to improve: [auto build test ERROR on iommu/next] [also build test ERROR on v4.16 next-20180404] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Gary-R-Hook/iommu-Enable-debugfs-exposure-of-the-IOMMU/20180405-151608 base: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next config: x86_64-randconfig-x002-201813 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All error/warnings (new ones prefixed by >>): drivers//iommu/amd_iommu_debugfs.c: In function 'amd_iommu_debugfs_setup': >> drivers//iommu/amd_iommu_debugfs.c:31:11: error: implicit declaration of function 'iommu_debugfs_setup'; did you mean 'amd_iommu_debugfs_setup'? [-Werror=implicit-function-declaration] d_top = iommu_debugfs_setup(); ^~~~~~~~~~~~~~~~~~~ amd_iommu_debugfs_setup >> drivers//iommu/amd_iommu_debugfs.c:31:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion] d_top = iommu_debugfs_setup(); ^ cc1: some warnings being treated as errors vim +31 drivers//iommu/amd_iommu_debugfs.c 20 21 void amd_iommu_debugfs_setup(struct amd_iommu *iommu) 22 { 23 char name[MAX_NAME_LEN + 1]; 24 struct dentry *d_top; 25 26 if (!debugfs_initialized()) 27 return; 28 29 mutex_lock(&amd_iommu_debugfs_lock); 30 if (!amd_iommu_debugfs) { > 31 d_top = iommu_debugfs_setup(); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 27655 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU 2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook 2018-04-05 8:12 ` kbuild test robot @ 2018-04-05 19:57 ` kbuild test robot 2018-04-05 20:00 ` Tom Lendacky 2 siblings, 0 replies; 6+ messages in thread From: kbuild test robot @ 2018-04-05 19:57 UTC (permalink / raw) To: Gary R Hook; +Cc: kbuild-all, iommu, joro, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1763 bytes --] Hi Gary, Thank you for the patch! Yet something to improve: [auto build test ERROR on iommu/next] [also build test ERROR on v4.16 next-20180405] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Gary-R-Hook/iommu-Enable-debugfs-exposure-of-the-IOMMU/20180405-151608 base: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next config: x86_64-randconfig-s2-04060234 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers//iommu/amd_iommu_debugfs.c: In function 'amd_iommu_debugfs_setup': >> drivers//iommu/amd_iommu_debugfs.c:31:11: error: implicit declaration of function 'iommu_debugfs_setup' [-Werror=implicit-function-declaration] d_top = iommu_debugfs_setup(); ^~~~~~~~~~~~~~~~~~~ drivers//iommu/amd_iommu_debugfs.c:31:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion] d_top = iommu_debugfs_setup(); ^ cc1: some warnings being treated as errors vim +/iommu_debugfs_setup +31 drivers//iommu/amd_iommu_debugfs.c 20 21 void amd_iommu_debugfs_setup(struct amd_iommu *iommu) 22 { 23 char name[MAX_NAME_LEN + 1]; 24 struct dentry *d_top; 25 26 if (!debugfs_initialized()) 27 return; 28 29 mutex_lock(&amd_iommu_debugfs_lock); 30 if (!amd_iommu_debugfs) { > 31 d_top = iommu_debugfs_setup(); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 28736 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU 2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook 2018-04-05 8:12 ` kbuild test robot 2018-04-05 19:57 ` kbuild test robot @ 2018-04-05 20:00 ` Tom Lendacky 2 siblings, 0 replies; 6+ messages in thread From: Tom Lendacky @ 2018-04-05 20:00 UTC (permalink / raw) To: Gary R Hook, iommu; +Cc: joro, linux-kernel On 4/4/2018 1:55 PM, Gary R Hook wrote: > Implement a skeleton framework for debugfs support in the > AMD IOMMU. > > > Signed-off-by: Gary R Hook <gary.hook@amd.com> > --- > drivers/iommu/Makefile | 1 + > drivers/iommu/amd_iommu_debugfs.c | 45 +++++++++++++++++++++++++++++++++++++ > drivers/iommu/amd_iommu_init.c | 7 ++++-- > drivers/iommu/amd_iommu_proto.h | 8 ++++++- > drivers/iommu/amd_iommu_types.h | 3 ++ > 5 files changed, 61 insertions(+), 3 deletions(-) > create mode 100644 drivers/iommu/amd_iommu_debugfs.c > > diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile > index 5eb1121d54b9..0ca250f626d9 100644 > --- a/drivers/iommu/Makefile > +++ b/drivers/iommu/Makefile > @@ -11,6 +11,7 @@ obj-$(CONFIG_IOMMU_IOVA) += iova.o > obj-$(CONFIG_OF_IOMMU) += of_iommu.o > obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o > obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o > +obj-$(CONFIG_IOMMU_DEBUG) += amd_iommu_debugfs.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 > diff --git a/drivers/iommu/amd_iommu_debugfs.c b/drivers/iommu/amd_iommu_debugfs.c > new file mode 100644 > index 000000000000..282100a655b3 > --- /dev/null > +++ b/drivers/iommu/amd_iommu_debugfs.c > @@ -0,0 +1,45 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * AMD IOMMU driver > + * > + * Copyright (C) 2018 Advanced Micro Devices, Inc. > + * > + * Author: Gary R Hook <gary.hook@amd.com> > + */ > + > +#include <linux/debugfs.h> > +#include <linux/iommu.h> > +#include <linux/pci.h> > +#include "amd_iommu_proto.h" > +#include "amd_iommu_types.h" > + > +static struct dentry *amd_iommu_debugfs; > +static DEFINE_MUTEX(amd_iommu_debugfs_lock); > + > +#define MAX_NAME_LEN 20 > + > +void amd_iommu_debugfs_setup(struct amd_iommu *iommu) > +{ > + char name[MAX_NAME_LEN + 1]; > + struct dentry *d_top; > + > + if (!debugfs_initialized()) > + return; > + > + mutex_lock(&amd_iommu_debugfs_lock); > + if (!amd_iommu_debugfs) { > + d_top = iommu_debugfs_setup(); > + if (d_top) > + amd_iommu_debugfs = debugfs_create_dir("amd", d_top); > + } > + mutex_unlock(&amd_iommu_debugfs_lock); > + if (amd_iommu_debugfs) { > + snprintf(name, MAX_NAME_LEN, "iommu%02d", iommu->index); > + iommu->debugfs = debugfs_create_dir(name, > + amd_iommu_debugfs); > + if (!iommu->debugfs) { > + debugfs_remove_recursive(amd_iommu_debugfs); > + amd_iommu_debugfs = NULL; > + } > + } > +} > diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c > index 6fe2d0346073..43856c7f4ea1 100644 > --- a/drivers/iommu/amd_iommu_init.c > +++ b/drivers/iommu/amd_iommu_init.c > @@ -89,6 +89,7 @@ > #define ACPI_DEVFLAG_ATSDIS 0x10000000 > > #define LOOP_TIMEOUT 100000 > + Spurious new line. > /* > * ACPI table definitions > * > @@ -2720,6 +2721,7 @@ int __init amd_iommu_enable_faulting(void) > */ > static int __init amd_iommu_init(void) > { > + struct amd_iommu *iommu; > int ret; > > ret = iommu_go_to_state(IOMMU_INITIALIZED); > @@ -2729,14 +2731,15 @@ static int __init amd_iommu_init(void) > disable_iommus(); > free_iommu_resources(); > } else { > - struct amd_iommu *iommu; > - > uninit_device_table_dma(); > for_each_iommu(iommu) > iommu_flush_all_caches(iommu); > } > } > > + for_each_iommu(iommu) > + amd_iommu_debugfs_setup(iommu); > + > return ret; > } > > diff --git a/drivers/iommu/amd_iommu_proto.h b/drivers/iommu/amd_iommu_proto.h > index 640c286a0ab9..1cfaae28c2cd 100644 > --- a/drivers/iommu/amd_iommu_proto.h > +++ b/drivers/iommu/amd_iommu_proto.h > @@ -33,6 +33,12 @@ extern void amd_iommu_uninit_devices(void); > extern void amd_iommu_init_notifier(void); > extern int amd_iommu_init_api(void); > > +#ifdef CONFIG_IOMMU_DEBUG > +void amd_iommu_debugfs_setup(struct amd_iommu *iommu); > +#else > +static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {} > +#endif > + > /* Needed for interrupt remapping */ > extern int amd_iommu_prepare(void); > extern int amd_iommu_enable(void); > @@ -58,7 +64,7 @@ extern int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, int pasid); > extern struct iommu_domain *amd_iommu_get_v2_domain(struct pci_dev *pdev); > > #ifdef CONFIG_IRQ_REMAP > -extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu); > +int amd_iommu_create_irq_domain(struct amd_iommu *iommu); I don't think this change is required for the debugfs support. Thanks, Tom > #else > static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu) > { > diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h > index f6b24c7d8b70..43c52797810e 100644 > --- a/drivers/iommu/amd_iommu_types.h > +++ b/drivers/iommu/amd_iommu_types.h > @@ -591,6 +591,9 @@ struct amd_iommu { > > u32 flags; > volatile u64 __aligned(8) cmd_sem; > + > + /* DebugFS Info */ > + struct dentry *debugfs; > }; > > static inline struct amd_iommu *dev_to_amd_iommu(struct device *dev) > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-04-05 20:00 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-04-04 18:54 [PATCH v2 0/2] Base enablement of IOMMU debugfs support Gary R Hook 2018-04-04 18:54 ` [PATCH v2 1/2] iommu - Enable debugfs exposure of the IOMMU Gary R Hook 2018-04-04 18:55 ` [PATCH v2 2/2] iommu/amd: Add basic debugfs infrastructure for AMD IOMMU Gary R Hook 2018-04-05 8:12 ` kbuild test robot 2018-04-05 19:57 ` kbuild test robot 2018-04-05 20:00 ` Tom Lendacky
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®