Re: [PATCH 1/3] Implement arch disable/enable irq hooks.
From: Paul Mackerras <hidden>
Date: 2007-09-11 21:16:28
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.