remoteproc: pru: Make sysfs entries read-only for PRU client driven boots
authorSuman Anna <s-anna@ti.com>
Fri, 6 Jan 2023 12:10:44 +0000 (17:40 +0530)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Fri, 6 Jan 2023 16:15:19 +0000 (09:15 -0700)
The PRU remoteproc driver is not configured for 'auto-boot' by default,
and allows to be booted either by in-kernel PRU client drivers or by
userspace using the generic remoteproc sysfs interfaces. The sysfs
interfaces should not be permitted to change the remoteproc firmwares
or states when a PRU is being managed by an in-kernel client driver.
Use the newly introduced remoteproc generic 'sysfs_read_only' flag to
provide these restrictions by setting and clearing it appropriately
during the PRU acquire and release steps.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Link: https://lore.kernel.org/r/20230106121046.886863-5-danishanwar@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/pru_rproc.c

index 1036bfd..c16242e 100644 (file)
@@ -223,6 +223,7 @@ struct rproc *pru_rproc_get(struct device_node *np, int index,
        }
 
        pru->client_np = np;
+       rproc->sysfs_read_only = true;
 
        mutex_unlock(&pru->lock);
 
@@ -261,6 +262,7 @@ void pru_rproc_put(struct rproc *rproc)
        }
 
        pru->client_np = NULL;
+       rproc->sysfs_read_only = false;
        mutex_unlock(&pru->lock);
 
        rproc_put(rproc);