Thanks for the RFC. On the face of it, this is a new PSCI command that would need further discussion involving Architecture and Kernel teams.
Just to summarize my understanding:
Currently any interrupt targeted to a suspended core can wake it up, but it seems that this mechanism is broken on i.MX8MQ and hence you need an explicit command to wake it. This assumes that one CPU is always ON within the system ready to poke the suspended CPU back to life. This assumption is not true always as it is legal for all the CPUs to be in suspend state at the same time.
Adding the kernel team for their input.
JFYI, We do not intend to review patches via the mailing list and patches should be pushed as mentioned here:
Currently the project is in github but we expect to migrate to trustedfirmware.org in April.
> -----Original Message-----
> From: TF-A <tf-a-bounces(a)lists.trustedfirmware.org> On Behalf Of Abel Vesa
> via TF-A
> Sent: 27 March 2019 12:16
> To: tf-a(a)lists.trustedfirmware.org
> Subject: [TF-A] [RFC 0/2] psci: Add core wakeup operation
> This is more like a workaround for platforms like i.MX8MQ that have an issue
> related to the wake_request GIC signal integration.
> See E11171 here:
> The workaround mentioned in the document has the dissadvantage of waking
> up all the sleeping cores instead of just one.
> This patchset adds another psci op for core 'poking' (waking up).
> On i.MX8MQ, the plat specific implementation writes the corresponding bits in
> GPC to wake up independently each core.
> Abel Vesa (2):
> psci: Add cpu wake operation
> plat: imx8mq: Trigger SW power up per core
> include/lib/psci/psci.h | 3 +++
> lib/psci/psci_main.c | 17 +++++++++++++++++
> lib/psci/psci_setup.c | 2 ++
> plat/imx/imx8m/imx8mq/gpc.c | 7 +++++++
> plat/imx/imx8m/imx8mq/imx8mq_psci.c | 8 ++++++++
> plat/imx/imx8m/include/gpc.h | 2 ++
> 6 files changed, 39 insertions(+)
> TF-A mailing list
This is more like a workaround for platforms like i.MX8MQ that have
an issue related to the wake_request GIC signal integration.
See E11171 here: https://www.nxp.com/docs/en/errata/IMX8MDQLQ_0N14W.pdf
The workaround mentioned in the document has the dissadvantage of waking
up all the sleeping cores instead of just one.
This patchset adds another psci op for core 'poking' (waking up).
On i.MX8MQ, the plat specific implementation writes the corresponding
bits in GPC to wake up independently each core.
Abel Vesa (2):
psci: Add cpu wake operation
plat: imx8mq: Trigger SW power up per core
include/lib/psci/psci.h | 3 +++
lib/psci/psci_main.c | 17 +++++++++++++++++
lib/psci/psci_setup.c | 2 ++
plat/imx/imx8m/imx8mq/gpc.c | 7 +++++++
plat/imx/imx8m/imx8mq/imx8mq_psci.c | 8 ++++++++
plat/imx/imx8m/include/gpc.h | 2 ++
6 files changed, 39 insertions(+)