Message ID | 20190210231212.20470-1-stuart.menefy@mathembedded.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | ARM: MCPM: Add provision for platform specific wfi alternative | expand |
Folks On Sun, 10 Feb 2019 at 23:12, Stuart Menefy <stuart.menefy@mathembedded.com> wrote: > > On some platforms (in particular the Exynos5260) the wfi is not > executed directly by the operating system but by trapping into the > secure monitor. This allows us to replicate the behaviour of the > vendor supplied kernel using the MCPM framework. > > Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com> I forgot to add, this is a part of a series of patches which updates the Exynos 5260 support, allowing use of the kernel on secure parts and adding suspend functionality, Version 1 of the patches has been posted to the samsung-soc mailing list: https://www.spinics.net/lists/linux-samsung-soc/#65035 and I'm just about to post version 2. However as this is the only patch which touches generic ARM files I though I'd better check the approach is acceptable to a wider audience. Stuart
On Mon, Feb 11, 2019 at 01:53:14PM +0000, Stuart Menefy wrote: > Folks > > On Sun, 10 Feb 2019 at 23:12, Stuart Menefy > <stuart.menefy@mathembedded.com> wrote: > > > > On some platforms (in particular the Exynos5260) the wfi is not > > executed directly by the operating system but by trapping into the > > secure monitor. This allows us to replicate the behaviour of the > > vendor supplied kernel using the MCPM framework. > > > > Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com> > > I forgot to add, this is a part of a series of patches which updates > the Exynos 5260 > support, allowing use of the kernel on secure parts and adding suspend > functionality, > Version 1 of the patches has been posted to the samsung-soc mailing list: > https://www.spinics.net/lists/linux-samsung-soc/#65035 > and I'm just about to post version 2. However as this is the only patch which > touches generic ARM files I though I'd better check the approach is acceptable > to a wider audience. Please don't limit patches to just the SoC specific mailing list - copy linux-arm-kernel and linux-kernel as well. Thanks.
On Mon, 11 Feb 2019, Stuart Menefy wrote: > Folks > > On Sun, 10 Feb 2019 at 23:12, Stuart Menefy > <stuart.menefy@mathembedded.com> wrote: > > > > On some platforms (in particular the Exynos5260) the wfi is not > > executed directly by the operating system but by trapping into the > > secure monitor. This allows us to replicate the behaviour of the > > vendor supplied kernel using the MCPM framework. > > > > Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com> > > I forgot to add, this is a part of a series of patches which updates > the Exynos 5260 > support, allowing use of the kernel on secure parts and adding suspend > functionality, > Version 1 of the patches has been posted to the samsung-soc mailing list: > https://www.spinics.net/lists/linux-samsung-soc/#65035 > and I'm just about to post version 2. However as this is the only patch which > touches generic ARM files I though I'd better check the approach is acceptable > to a wider audience. I was about to ask that you also post those patches making use of this change. It is not possible to evaluate if the approach makes sense without seeing how it is used. Nicolas
diff --git a/arch/arm/common/mcpm_entry.c b/arch/arm/common/mcpm_entry.c index ad574d20415c..524be627c87e 100644 --- a/arch/arm/common/mcpm_entry.c +++ b/arch/arm/common/mcpm_entry.c @@ -289,8 +289,12 @@ void mcpm_cpu_power_down(void) __mcpm_cpu_down(cpu, cluster); /* Now we are prepared for power-down, do it: */ - if (cpu_going_down) - wfi(); + if (cpu_going_down) { + if (platform_ops->wfi_alternative) + platform_ops->wfi_alternative(last_man); + else + wfi(); + } /* * It is possible for a power_up request to happen concurrently diff --git a/arch/arm/include/asm/mcpm.h b/arch/arm/include/asm/mcpm.h index acd4983d9b1f..96fdb41ac626 100644 --- a/arch/arm/include/asm/mcpm.h +++ b/arch/arm/include/asm/mcpm.h @@ -223,6 +223,7 @@ struct mcpm_platform_ops { int (*cluster_powerup)(unsigned int cluster); void (*cpu_suspend_prepare)(unsigned int cpu, unsigned int cluster); void (*cpu_powerdown_prepare)(unsigned int cpu, unsigned int cluster); + void (*wfi_alternative)(bool last_man); void (*cluster_powerdown_prepare)(unsigned int cluster); void (*cpu_cache_disable)(void); void (*cluster_cache_disable)(void);
On some platforms (in particular the Exynos5260) the wfi is not executed directly by the operating system but by trapping into the secure monitor. This allows us to replicate the behaviour of the vendor supplied kernel using the MCPM framework. Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com> --- arch/arm/common/mcpm_entry.c | 8 ++++++-- arch/arm/include/asm/mcpm.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-)