[PATCH 3/5] powerpc/microwatt: Define an idle power-save function

Nicholas Piggin npiggin at gmail.com
Wed Jan 29 17:06:03 AEDT 2025


On Wed Jan 29, 2025 at 8:52 AM AEST, Paul Mackerras wrote:
> This uses the 'wait' instruction to pause instruction execution when
> idle until an interrupt occurs.
>
> Signed-off-by: Paul Mackerras <paulus at ozlabs.org>
> ---
>  arch/powerpc/platforms/microwatt/setup.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/arch/powerpc/platforms/microwatt/setup.c b/arch/powerpc/platforms/microwatt/setup.c
> index 5e1c0997170d..97828a99780d 100644
> --- a/arch/powerpc/platforms/microwatt/setup.c
> +++ b/arch/powerpc/platforms/microwatt/setup.c
> @@ -34,10 +34,19 @@ static void __init microwatt_setup_arch(void)
>  	microwatt_rng_init();
>  }
>  
> +static void microwatt_idle(void)
> +{
> +	if (!prep_irq_for_idle())
> +		return;
> +
> +	__asm__ __volatile__ ("wait");
> +}

Does wait cause MSR[EE] to be set? If not, do you need to use
prep_irq_for_idle_irqsoff() here maybe?

Thanks,
Nick

> +
>  define_machine(microwatt) {
>  	.name			= "microwatt",
>  	.compatible		= "microwatt-soc",
>  	.init_IRQ		= microwatt_init_IRQ,
>  	.setup_arch		= microwatt_setup_arch,
>  	.progress		= udbg_progress,
> +	.power_save		= microwatt_idle,
>  };



More information about the Linuxppc-dev mailing list