On Thu, Nov 13, 2025 at 04:05:59PM +0530, Mukesh Ojha wrote: > Simplify qcom_scm_pas_init_image() by making the memory allocation, > copy and free operations done in a separate function than the actual > SMC call.
Nitpick: This feels more like "refactoring in preparation of the following patch" rather than a real simplification. > > Reviewed-by: Bryan O'Donoghue <[email protected]> > Reviewed-by: Konrad Dybcio <[email protected]> > Signed-off-by: Mukesh Ojha <[email protected]> > --- > drivers/firmware/qcom/qcom_scm.c | 58 > +++++++++++++++++++++++----------------- > 1 file changed, 33 insertions(+), 25 deletions(-) > > diff --git a/drivers/firmware/qcom/qcom_scm.c > b/drivers/firmware/qcom/qcom_scm.c > index 550707f2b46d..1d8a2c537c44 100644 > --- a/drivers/firmware/qcom/qcom_scm.c > +++ b/drivers/firmware/qcom/qcom_scm.c > @@ -590,6 +590,37 @@ void *devm_qcom_scm_pas_context_init(struct device *dev, > u32 pas_id, phys_addr_t > } > EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_init); > > +static int __qcom_scm_pas_init_image(u32 pas_id, dma_addr_t mdata_phys, void > *metadata, > + size_t size, struct qcom_scm_res *res) The metadata and size parameters do not seem to be used inside this function (also not after your follow-up patches), do we need them here? > +{ > + struct qcom_scm_desc desc = { > + .svc = QCOM_SCM_SVC_PIL, > + .cmd = QCOM_SCM_PIL_PAS_INIT_IMAGE, > + .arginfo = QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_RW), > + .args[0] = pas_id, > + .owner = ARM_SMCCC_OWNER_SIP, > + }; > + int ret; > + > + ret = qcom_scm_clk_enable(); > + if (ret) > + return ret; > + > + ret = qcom_scm_bw_enable(); > + if (ret) > + goto disable_clk; > + > + desc.args[1] = mdata_phys; > + > + ret = qcom_scm_call(__scm->dev, &desc, res); > + qcom_scm_bw_disable(); > + > +disable_clk: > + qcom_scm_clk_disable(); > + > + return ret; > +} Thanks, Stephan

