Re: Generic idle causes boot hang on T1000

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jan Engelhardt <jengelh@xxxxxxx>
Date: Mon, 24 Mar 2014 11:33:30 +0100 (CET)

> 
> On Monday 2014-03-24 01:38, David Miller wrote:
>>> Trying to update beyond 3.9 gives me a boot hang on SPARC T1000.
>>> The following commit is the result of the bisect:
>>> 
>>> commit 87fa05aeb3a5e8e21b1a5510eef6983650eff092
>>> Author: Sam Ravnborg <sam@xxxxxxxxxxxx>
>>> Date:   Thu Apr 11 21:38:50 2013 +0200
>>> 
>>>     sparc: Use generic idle loop
>>
>>Interesting.
>>
>>> mptbase: ioc0: Initiating bringup
>>> <hangs>
>>> 
>>> after ~1 minute:
>>> 
>>> INFO: rcu_sched self-detected stall on CPU { 0}  (t=30061 jiffies
>>> g=18446744073709551319 c=18446744073709551318 q=414)
>>> INFO: rcu_sched detected stalls on CPUs/tasks:* CPU[  0]:
>>> TSTATE[0000000080001603] TPC[000000000042b9b4] TNPC[000000000042b9b8]
>>> TASK[swapper/0:0]
>>>              TPC[arch_cpu_idle+0x74/0xa0] O7[arch_cpu_idle+0x5c/0xa0]
>>>  I7[cpu_startup_entry+0x114/0x1a0] RPC[start_kernel+0x384/0x394]
>>
>>I suspect the cpu yield hypervisor call requires local cpu interrupts
>>to be enabled in order to function properly.  Prior to this commit
>>above, they did.
>>
>>Please try this:
>>
>>commit 87fa05aeb3a5e8e21b1a5510eef6983650eff092
> 
> This is the same commit as before (both in ID, as well as patch content).
> Did you intend to paste another patch?

My bad, I intended to post this:

diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 32a280e..d7b4967 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -58,9 +58,12 @@ void arch_cpu_idle(void)
 {
 	if (tlb_type != hypervisor) {
 		touch_nmi_watchdog();
+		local_irq_enable();
 	} else {
 		unsigned long pstate;
 
+		local_irq_enable();
+
                 /* The sun4v sleeping code requires that we have PSTATE.IE cleared over
                  * the cpu sleep hypervisor call.
                  */
@@ -82,7 +85,6 @@ void arch_cpu_idle(void)
 			: "=&r" (pstate)
 			: "i" (PSTATE_IE));
 	}
-	local_irq_enable();
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux