[PATCH 1/3] Implement arch disable/enable irq hooks.
Paul Mackerras
paulus at samba.org
Wed Sep 12 07:16:28 EST 2007
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.
More information about the Linuxppc-dev
mailing list