On Fri, Jan 27, 2023 at 05:22:46PM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@xxxxxxx> > > i.MX93 M33 has ROM, it needs the ".interrupts" section address to start > M33 firmware. In current design, the Arm Trusted Firmware(ATF) use TCML > start address when the 2nd arg is 0 when SMC call. So When the M33 firmware > is built with TCML address, it works well. > > However when M33 firmware is built to run in DDR, we need pass the > ".interrupts" address as 2nd arg to ATF to start M33 firmwrae. > > Signed-off-by: Peng Fan <peng.fan@xxxxxxx> > --- > drivers/remoteproc/imx_rproc.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index f5ee0c9bb09d..59cca5ac3045 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -374,7 +374,8 @@ static int imx_rproc_start(struct rproc *rproc) > dcfg->src_start); > break; > case IMX_RPROC_SMC: > - arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, 0, 0, 0, 0, 0, 0, &res); > + arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, rproc->bootaddr, > + 0, 0, 0, 0, 0, &res); > ret = res.a0; > break; > case IMX_RPROC_SCU_API: > @@ -664,6 +665,13 @@ static u64 imx_rproc_get_boot_addr(struct rproc *rproc, const struct firmware *f > */ > writel(*(u32 *)(elf_data + offset), va); > writel(*(u32 *)(elf_data + offset + 4), va + 4); > + } else if (priv->dcfg->devtype == IMX_RPROC_IMX93) { > + /* i.MX93 Cortex-M33 has ROM, it only needs the section address */ > + shdr = rproc_elf_find_shdr(rproc, fw, ".interrupts"); > + if (!shdr) > + return bootaddr; This contradicts what you wrote in the cover letter of the patchset about an ".interrupts" section always being present. There is enough in this patchset to make me look for a second opinion. As such I am CC'ing Iuliana and Daniel. Please respin this, adding both of them to the recipient list. I will do another revision only when they have provided an RB tag. Thanks, Mathieu > + > + return elf_shdr_get_sh_addr(class, shdr); > } > > return bootaddr; > -- > 2.37.1 >