Hi Abel, 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: https://github.com/ARM-software/arm-trusted-firmware/blob/master/contributin...
Currently the project is in github but we expect to migrate to trustedfirmware.org in April.
Best Regards Soby Mathew
-----Original Message----- From: TF-A tf-a-bounces@lists.trustedfirmware.org On Behalf Of Abel Vesa via TF-A Sent: 27 March 2019 12:16 To: tf-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: 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(+)
-- 2.7.4
-- TF-A mailing list TF-A@lists.trustedfirmware.org https://lists.trustedfirmware.org/mailman/listinfo/tf-a
On 19-03-27 13:45:21, Soby Mathew wrote:
Hi Abel, 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.
I know this might be a pain. That's why I'm just asking for as many opinions on this as possible.
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.
That errata is specifically for IPIs. If all the cores are in suspend, any interrupt will be able to wake one of the cores. That's why the workaround suggested in that document works. But that workaround is waking up all the cores, that's why I added this poking mechanism which is per-core.
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: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com...
Currently the project is in github but we expect to migrate to trustedfirmware.org in April.
Hmm, ok. Good to know.
Best Regards Soby Mathew
-----Original Message----- From: TF-A tf-a-bounces@lists.trustedfirmware.org On Behalf Of Abel Vesa via TF-A Sent: 27 March 2019 12:16 To: tf-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: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.nxp.co...
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(+)
-- 2.7.4
-- TF-A mailing list TF-A@lists.trustedfirmware.org https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.trus...
tf-a@lists.trustedfirmware.org