Scott Wood writes:

> These hooks ensure that a decrementer interrupt is not pending when
> suspending; otherwise, problems may occur.  For example, with deep sleep
> on the 831x, a pending decrementer will cause a system freeze because the
> SoC thinks the decrementer interrupt would have woken the system, but the
> core must have interrupts disabled due to the setup required for deep
> sleep.

> +     set_dec(0x7fffffff);
> +     local_irq_disable();
> +     set_dec(0x7fffffff);

It might be better to use hard_irq_disable rather than
local_irq_disable here, since I think we will need that on 64-bit (and
on 32-bit if we ever do lazy irq disabling there).

> +/* Overrides the weak version in kernel/power/main.c */
> +void arch_suspend_disable_irqs(void)
> +{
> +     if (ppc_md.suspend_disable_irqs)
> +             ppc_md.suspend_disable_irqs();
> +     else
> +             generic_suspend_disable_irqs();

Any particular reason why we need a ppc_md hook here?  Do we expect
some platform to need to do something different?

Paul.
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to