Subject: Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs

From: Benjamin Herrenschmidt <[email-masked]>
Date: Mon, 24 Jan 2005 12:25:35 +1100

On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:

> I know about this problem, I'm working on a proper fix. Thanks for your
> report.

Can you send me the PVR value for both of these CPUs
(cat /proc/cpuinfo) ? I can't find right now why they would lock up
unless the default idle loop is _not_ run properly, that is for some
reason, NAP or DOZE mode end up not beeing enabled. Can you send me
your .config as well ?

Finally, try that patch and tell me if it makes a difference. It makes
sure we re-enable interrupts in cpu_idle, and thus should only be a
workaround. I found _one_ actual code path where we fail to re-enable
them, and this is when neither DOZE nor NAP mode is enabled, which
should not happen on any G3 (they should all support DOZE mode), and
might happe non some G4s if the chipset doesn't support NAP or
powersave_nap is set to 0 in proc, but that shouldn't be the case of an
eMac neither...

--- linux-work.orig/arch/ppc/kernel/idle.c	2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/kernel/idle.c	2005-01-24 12:19:41.114353760 +1100
@@ -39,17 +39,15 @@
 	powersave = ppc_md.power_save;
 
 	if (!need_resched()) {
+		local_irq_enable();
 		if (powersave != NULL)
 			powersave();
 		else {
 #ifdef CONFIG_SMP
 			set_thread_flag(TIF_POLLING_NRFLAG);
-			local_irq_enable();
 			while (!need_resched())
 				barrier();
 			clear_thread_flag(TIF_POLLING_NRFLAG);
-#else
-			local_irq_enable();
 #endif
 		}
 	}
 
Ben.