Thread (4 messages) flat view 4 messages, 2 authors, 2019-08-21

Re: [PATCH] platform/powernv: Avoid re-registration of imc debugfs directory

From: "Oliver O'Halloran" <oohall@gmail.com>
Date: 2019-08-21 04:48:54

On Wed, Aug 21, 2019 at 2:10 PM Anju T Sudhakar [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 <redacted>
Tested-by: Nageswara R Sastry <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help