On Wed, Aug 21, 2019 at 2:10 PM Anju T Sudhakar <a...@linux.vnet.ibm.com> wrote: > > export_imc_mode_and_cmd() function which creates the debugfs interface for > imc-mode and imc-command, is invoked when each nest pmu units is > registered. > When the first nest pmu unit is registered, export_imc_mode_and_cmd() > creates 'imc' directory under `/debug/powerpc`. In the subsequent > invocations debugfs_create_dir() function returns, since the directory > already exists. > > The recent commit <c33d442328f55> (debugfs: make error message a bit more > verbose), throws a warning if we try to invoke `debugfs_create_dir()` > with an already existing directory name. > > Address this warning by lookup for an existing 'imc' directory, > and do not invoke debugfs_create_dir(), if the debugfs interface for > imc already exists. > > This patch is based on: > https://lists.ozlabs.org/pipermail/linuxppc-dev/2019-July/192979.html > > Signed-off-by: Anju T Sudhakar <a...@linux.vnet.ibm.com> > Tested-by: Nageswara R Sastry <rnsas...@linux.vnet.ibm.com> > --- > arch/powerpc/platforms/powernv/opal-imc.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/opal-imc.c > b/arch/powerpc/platforms/powernv/opal-imc.c > index e04b20625cb9..fc2f0e60a44d 100644 > --- a/arch/powerpc/platforms/powernv/opal-imc.c > +++ b/arch/powerpc/platforms/powernv/opal-imc.c > @@ -55,14 +55,19 @@ static void export_imc_mode_and_cmd(struct device_node > *node, > static u64 loc, *imc_mode_addr, *imc_cmd_addr; > char mode[16], cmd[16]; > u32 cb_offset; > + struct dentry *dir = NULL; > struct imc_mem_info *ptr = pmu_ptr->mem_info; > > +
> + /* Return, if 'imc' interface already exists */ > + dir = debugfs_lookup("imc", powerpc_debugfs_root); > + if (dir) { > + dput(dir); > + return; > + } > imc_debugfs_parent = debugfs_create_dir("imc", powerpc_debugfs_root); Is there a reason why we create the debugfs directory here and not in opal_imc_counters_probe()? There's logic to remove the debugfs directory in _probe() already so it seems like a more natural place to it. > > - /* > - * Return here, either because 'imc' directory already exists, > - * Or failed to create a new one. > - */ > + /* Return here, if failed to create the directory */ > if (!imc_debugfs_parent) > return; > > -- > 2.20.1 >