On Tue, 3 Sept 2024 at 04:15, Beleswar Prasad Padhi <b-padhi@xxxxxx> wrote: > > Hi Mathieu, > > On 20-08-2024 16:20, Beleswar Padhi wrote: > > From: Udit Kumar <u-kumar1@xxxxxx> > > > > Few times, core1 was scheduled to boot first before core0, which leads > > to error: > > > > 'k3_r5_rproc_start: can not start core 1 before core 0'. > > > > This was happening due to some scheduling between prepare and start > > callback. The probe function waits for event, which is getting > > triggered by prepare callback. To avoid above condition move event > > trigger to start instead of prepare callback. > > > > Fixes: 61f6f68447ab ("remoteproc: k3-r5: Wait for core0 power-up before powering up core1") > > > Please put this patch on hold. I have some additional changelog that > should go in v3. > I applied this patch a couple of weeks ago - are those changes to the code? If so please send another patch on top of rproc-next. > Thanks, > Beleswar > > > Signed-off-by: Udit Kumar <u-kumar1@xxxxxx> > > [ Applied wakeup event trigger only for Split-Mode booted rprocs ] > > Signed-off-by: Beleswar Padhi <b-padhi@xxxxxx> > > --- > > v2: Changelog: > > * Mathieu > > 1) Rebased changes on top of -next-20240820 tag. > > > > Link to v1: > > https://lore.kernel.org/all/20240809060132.308642-1-b-padhi@xxxxxx/ > > > > drivers/remoteproc/ti_k3_r5_remoteproc.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c > > index 8a63a9360c0f..e61e53381abc 100644 > > --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c > > +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c > > @@ -469,8 +469,6 @@ static int k3_r5_rproc_prepare(struct rproc *rproc) > > ret); > > return ret; > > } > > - core->released_from_reset = true; > > - wake_up_interruptible(&cluster->core_transition); > > > > /* > > * Newer IP revisions like on J7200 SoCs support h/w auto-initialization > > @@ -587,6 +585,9 @@ static int k3_r5_rproc_start(struct rproc *rproc) > > ret = k3_r5_core_run(core); > > if (ret) > > return ret; > > + > > + core->released_from_reset = true; > > + wake_up_interruptible(&cluster->core_transition); > > } > > > > return 0;