Messages in this thread Patch in this message | | | Date | Thu, 13 Jan 2005 17:26:45 -0500 | From | Brian Waite <> | Subject | [PATCH] ppc: fix powersave with interrupts disabled |
| |
On Thu, 13 Jan 2005 15:58:34 -0500, Brian Waite <linwoes@gmail.com> wrote: > On Wed, 12 Jan 2005 01:41:19 +0000, Linux Kernel Mailing List > <linux-kernel@vger.kernel.org> wrote: > > ChangeSet 1.2369, 2005/01/11 17:41:19-08:00, tglx@linutronix.de > > > > [PATCH] ppc: fix idle with interrupts disabled > > > > The idle-thread-preemption-fix.patch in mm1/2 leads to a stalled box on PPC > > machines which do not provide a powersave function and therefor poll the > > idle loop with interrupts disabled. The patch reenables interrupts. > There is still a stall with PPC boxes that have powersave enabled. I > use a 74xx based board and unless I disable powersave > (ppc_md.power_save=NULL), I get a stall at: > NET: Registered protocol family 2 > It looks like the problem has to do with entering the powersave routine with irqs disabled. Here is a patch that will only enter powersave if irqs are enabled:
Entering powersave on PPC while irqs are disabled causes a hang. Only enter powersave if irqs are disabled.
Signed-off-by: Brian Waite <waite@skycomputers.com> ===== arch/ppc/kernel/idle.c 1.22 vs edited ===== --- 1.22/arch/ppc/kernel/idle.c Tue Jan 11 19:42:36 2005 +++ edited/arch/ppc/kernel/idle.c Thu Jan 13 17:22:25 2005 @@ -39,8 +39,9 @@ powersave = ppc_md.power_save;
if (!need_resched()) { - if (powersave != NULL) - powersave(); + if ((powersave != NULL) && !irqs_disabled()) + powersave(); + else { #ifdef CONFIG_SMP set_thread_flag(TIF_POLLING_NRFLAG); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |