remoteproc: remoteproc debugfs file fixes
authorAlex Elder <elder@linaro.org>
Fri, 28 Feb 2020 18:33:57 +0000 (12:33 -0600)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 26 Mar 2020 05:29:43 +0000 (22:29 -0700)
Don't bother checking the remoteproc state before calling
rproc_trigger_recovery() because that function will verify the
state, and the state can only be safely checked while holding the
mutex anyway.

Make the mode for "recovery" be writable.

Signed-off-by: Alex Elder <elder@linaro.org>
Link: https://lore.kernel.org/r/20200228183359.16229-3-elder@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/remoteproc_debugfs.c

index 82dc34b819df87422d03687e598f59c1988aa4e3..b87565a13eb1e18cbe7e4f383a7186e829f48090 100644 (file)
@@ -138,16 +138,14 @@ rproc_recovery_write(struct file *filp, const char __user *user_buf,
                buf[count - 1] = '\0';
 
        if (!strncmp(buf, "enabled", count)) {
+               /* change the flag and begin the recovery process if needed */
                rproc->recovery_disabled = false;
-               /* if rproc has crashed, trigger recovery */
-               if (rproc->state == RPROC_CRASHED)
-                       rproc_trigger_recovery(rproc);
+               rproc_trigger_recovery(rproc);
        } else if (!strncmp(buf, "disabled", count)) {
                rproc->recovery_disabled = true;
        } else if (!strncmp(buf, "recover", count)) {
-               /* if rproc has crashed, trigger recovery */
-               if (rproc->state == RPROC_CRASHED)
-                       rproc_trigger_recovery(rproc);
+               /* begin the recovery process without changing the flag */
+               rproc_trigger_recovery(rproc);
        }
 
        return count;
@@ -349,7 +347,7 @@ void rproc_create_debug_dir(struct rproc *rproc)
 
        debugfs_create_file("name", 0400, rproc->dbg_dir,
                            rproc, &rproc_name_ops);
-       debugfs_create_file("recovery", 0400, rproc->dbg_dir,
+       debugfs_create_file("recovery", 0600, rproc->dbg_dir,
                            rproc, &rproc_recovery_ops);
        debugfs_create_file("crash", 0200, rproc->dbg_dir,
                            rproc, &rproc_crash_ops);