Re: [PATCH 3/3] remoteproc: Force shutdown during device removal

From: Mukesh Ojha

Date: Thu Jul 23 2026 - 12:22:47 EST


On Thu, Jul 23, 2026 at 12:54:58PM +0200, Konrad Dybcio wrote:
> On 7/23/26 5:52 AM, Bjorn Andersson wrote:
> > rproc_del() is subjected to the reference counted shutdown path, as such
> > a remoteproc with more than one reference will be left running as its
> > resources are released underneath it.
> >
> > Refactor the shutdown path such that the reference count value is
> > ignored when called from rproc_del().
> >
> > Assisted-by: OpenCode:GPT-5.5
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxxxxxxxx>
> > ---
>
> [...]
>
> > +static int __rproc_shutdown(struct rproc *rproc, bool force)
> > {
> > struct device *dev = &rproc->dev;
> > bool crashed;
> > @@ -2029,9 +2008,10 @@ int rproc_shutdown(struct rproc *rproc)
> > }
> > crashed = rproc->state == RPROC_CRASHED;
> >
> > - /* if the remote proc is still needed, bail out */
> > - if (!atomic_dec_and_test(&rproc->power))
> > + if (!atomic_dec_and_test(&rproc->power) && !force) {
> > + /* The remote processor is still needed by another user. */
> > goto out;
> > + }
>
> GPT makes some unclear suggestions, effectively saying that rproc_shutdown(),
> unlike other paths, seems not to first check whether the rproc is deleting
> if the shutdown isn't forced. I think it's a valid concern.

Is it not indirectly the same thing: `rproc_del()` -> `__rproc_shutdown()`,
meaning `->deleting` is already set?

Or are you saying it is better to call `__rproc_shutdown(rproc,
rproc->deleting)`?
--
-Mukesh Ojha