On Wed, Mar 11, 2026 at 04:28:12AM +0200, Dmitry Baryshkov wrote:
> On Tue, Mar 10, 2026 at 07:22:04PM +0530, Mukesh Ojha wrote:
> > DTB PAS context creation should be done only for subsystems that support
> > a DTB firmware binary; otherwise, memory is wasted. Move the context
> > creation to the appropriate location and, while at it, fix the place
> > where the DTB PAS context was being released unconditionally.
> 
> I think here you have too much for this description. Judging by the
> text, I'd have assumed only the if(pas->dtb_pas_id) around the DTB
> context creation.

Yes, you are right!

> 
> > 
> > Fixes: b13d8baf5601 ("remoteproc: pas: Replace metadata context with PAS 
> > context structure")
> > Signed-off-by: Mukesh Ojha <[email protected]>
> > ---
> >  drivers/remoteproc/qcom_q6v5_pas.c | 36 +++++++++++++++---------------
> >  1 file changed, 18 insertions(+), 18 deletions(-)
> > 
> > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c 
> > b/drivers/remoteproc/qcom_q6v5_pas.c
> > index 46204da046fa..3bde37ac510c 100644
> > --- a/drivers/remoteproc/qcom_q6v5_pas.c
> > +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> > @@ -250,7 +250,9 @@ static int qcom_pas_load(struct rproc *rproc, const 
> > struct firmware *fw)
> >     return 0;
> >  
> >  release_dtb_metadata:
> > -   qcom_scm_pas_metadata_release(pas->dtb_pas_ctx);
> > +   if (pas->dtb_pas_id)
> > +           qcom_scm_pas_metadata_release(pas->dtb_pas_ctx);
> 
> Unrelated question, but why is this not handled by devres action?

dtb_pas_ctx is still managed by devres but here, we are releasing memory
hold by ctx->ptr.

-Mukesh
> 
> > +
> >     release_firmware(pas->dtb_firmware);
> >  
> >     return ret;
> > @@ -623,6 +625,7 @@ static void qcom_pas_pds_detach(struct qcom_pas *pas, 
> > struct device **pds, size_
> >  
> >  static int qcom_pas_alloc_memory_region(struct qcom_pas *pas)
> >  {
> > +   struct rproc *rproc = pas->rproc;
> >     struct resource res;
> >     int ret;
> >  
> > @@ -640,6 +643,12 @@ static int qcom_pas_alloc_memory_region(struct 
> > qcom_pas *pas)
> >             return PTR_ERR(pas->mem_region);
> >     }
> >  
> > +   pas->pas_ctx = devm_qcom_scm_pas_context_alloc(pas->dev, pas->pas_id,
> > +                                                  pas->mem_phys, 
> > pas->mem_size);
> > +   if (IS_ERR(pas->pas_ctx))
> > +           return PTR_ERR(pas->pas_ctx);
> > +
> > +   pas->pas_ctx->use_tzmem = rproc->has_iommu;
> >     if (!pas->dtb_pas_id)
> >             return 0;
> >  
> > @@ -657,6 +666,14 @@ static int qcom_pas_alloc_memory_region(struct 
> > qcom_pas *pas)
> >             return PTR_ERR(pas->dtb_mem_region);
> >     }
> >  
> > +   pas->dtb_pas_ctx = devm_qcom_scm_pas_context_alloc(pas->dev, 
> > pas->dtb_pas_id,
> > +                                                      pas->dtb_mem_phys,
> > +                                                      pas->dtb_mem_size);
> > +   if (IS_ERR(pas->dtb_pas_ctx))
> > +           return PTR_ERR(pas->dtb_pas_ctx);
> > +
> > +   pas->dtb_pas_ctx->use_tzmem = rproc->has_iommu;
> > +
> >     return 0;
> >  }
> >  
> > @@ -838,23 +855,6 @@ static int qcom_pas_probe(struct platform_device *pdev)
> >  
> >     qcom_add_ssr_subdev(rproc, &pas->ssr_subdev, desc->ssr_name);
> >  
> > -   pas->pas_ctx = devm_qcom_scm_pas_context_alloc(pas->dev, pas->pas_id,
> > -                                                  pas->mem_phys, 
> > pas->mem_size);
> > -   if (IS_ERR(pas->pas_ctx)) {
> > -           ret = PTR_ERR(pas->pas_ctx);
> > -           goto remove_ssr_sysmon;
> > -   }
> > -
> > -   pas->dtb_pas_ctx = devm_qcom_scm_pas_context_alloc(pas->dev, 
> > pas->dtb_pas_id,
> > -                                                      pas->dtb_mem_phys,
> > -                                                      pas->dtb_mem_size);
> > -   if (IS_ERR(pas->dtb_pas_ctx)) {
> > -           ret = PTR_ERR(pas->dtb_pas_ctx);
> > -           goto remove_ssr_sysmon;
> > -   }
> > -
> > -   pas->pas_ctx->use_tzmem = rproc->has_iommu;
> > -   pas->dtb_pas_ctx->use_tzmem = rproc->has_iommu;
> >     ret = rproc_add(rproc);
> >     if (ret)
> >             goto remove_ssr_sysmon;
> > -- 
> > 2.50.1
> > 
> 
> -- 
> With best wishes
> Dmitry

-- 
-Mukesh Ojha

Reply via email to