Commit a9ba1a73 authored by Udit Kumar's avatar Udit Kumar Committed by Wen Zhiwei
Browse files

remoteproc: k3-r5: Delay notification of wakeup event

stable inclusion
from stable-v6.6.55
commit fc1ed6f791e319e91905588b3000f2a8ba009e81
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB0MX4

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=fc1ed6f791e319e91905588b3000f2a8ba009e81



--------------------------------

[ Upstream commit 8fa052c29e509f3e47d56d7fc2ca28094d78c60a ]

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")
Signed-off-by: default avatarUdit Kumar <u-kumar1@ti.com>
[ Applied wakeup event trigger only for Split-Mode booted rprocs ]
Signed-off-by: default avatarBeleswar Padhi <b-padhi@ti.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240820105004.2788327-1-b-padhi@ti.com


Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarWen Zhiwei <wenzhiwei@kylinos.cn>
parent 5206a232
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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;