Re: [RFC PATCH 2/7] arm64: kernel: Add a WFI hook.

From: Arnd Bergmann
Date: Thu Jan 21 2021 - 05:56:17 EST


On Wed, Jan 20, 2021 at 2:27 PM Mohamed Mediouni
<mohamed.mediouni@xxxxxxxxxxxx> wrote:
> --- a/arch/arm64/kernel/cpu_ops.c
> +++ b/arch/arm64/kernel/cpu_ops.c

> #if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_STACKPROTECTOR_PER_TASK)
> #include <linux/stackprotector.h>
> @@ -74,8 +75,14 @@ void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
>
> static void noinstr __cpu_do_idle(void)
> {
> - dsb(sy);
> - wfi();
> + const struct cpu_operations *ops = get_cpu_ops(task_cpu(current));
> +
> + if (ops->cpu_wfi) {
> + ops->cpu_wfi();
> + } else {
> + dsb(sy);
> + wfi();
> + }
> }

I think the correct place to put this would be a platform specific driver
in drivers/cpuidle/ instead of an added low-level callback in the
default idle function and a custom cpu_operations structure.

Arnd