On Tue, Apr 08, 2025 at 04:13:17PM +0530, Souradeep Chowdhury wrote: > Add device awake calls in case of rproc boot and rproc shutdown path. > Currently, device awake call is only present in the recovery path > of remoteproc. If an user stops and starts rproc by using the sysfs > interface, then on pm suspension the firmware fails to load as the > request_firmware call under adsp_load relies on usermodehelper > process which gets freezed on pm suspension. Add device awake calls > to fix this. >
This is much better, but it still leaves me guessing what the actual problem is. Does the firmware call time out? Does firmware loading explicitly fail upon a freeze? Also, please rephrase the commit message to follow the order defined in https://docs.kernel.org/process/submitting-patches.html#describe-your-changes i.e. start with the description of the problem, not the word "Add". Regards, Bjorn > Signed-off-by: Souradeep Chowdhury <quic_schow...@quicinc.com> > Reviewed-by: Mukesh Ojha <mukesh.o...@oss.qualcomm.com> > --- > Changes in v5 > > *Added more details to commit description > > Changes in v4 > > *Remove stability from mailing list > *Remove the extra tab in v3 > *Change the commit description > > drivers/remoteproc/remoteproc_core.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/remoteproc/remoteproc_core.c > b/drivers/remoteproc/remoteproc_core.c > index c2cf0d277729..5d6c4e694b4c 100644 > --- a/drivers/remoteproc/remoteproc_core.c > +++ b/drivers/remoteproc/remoteproc_core.c > @@ -1917,6 +1917,7 @@ int rproc_boot(struct rproc *rproc) > return -EINVAL; > } > > + pm_stay_awake(rproc->dev.parent); > dev = &rproc->dev; > > ret = mutex_lock_interruptible(&rproc->lock); > @@ -1961,6 +1962,7 @@ int rproc_boot(struct rproc *rproc) > atomic_dec(&rproc->power); > unlock_mutex: > mutex_unlock(&rproc->lock); > + pm_relax(rproc->dev.parent); > return ret; > } > EXPORT_SYMBOL(rproc_boot); > @@ -1991,6 +1993,7 @@ int rproc_shutdown(struct rproc *rproc) > struct device *dev = &rproc->dev; > int ret = 0; > > + pm_stay_awake(rproc->dev.parent); > ret = mutex_lock_interruptible(&rproc->lock); > if (ret) { > dev_err(dev, "can't lock rproc %s: %d\n", rproc->name, ret); > @@ -2027,6 +2030,7 @@ int rproc_shutdown(struct rproc *rproc) > rproc->table_ptr = NULL; > out: > mutex_unlock(&rproc->lock); > + pm_relax(rproc->dev.parent); > return ret; > } > EXPORT_SYMBOL(rproc_shutdown); > -- > 2.34.1 >