Hi, I'm debugging, please wait for some time. ------------------ Original ------------------ From: "Aurelien Jarno"<aurelien@xxxxxxxxxxx> Date: Thu, Jul 24, 2014 09:18 PM To: "³Â»ª²Å"<chenhc@xxxxxxxxxx>; Cc: "linux-mips"<linux-mips@xxxxxxxxxxxxxx>;"Andreas Barth"<aba@xxxxxxxxx>; Subject: Re: SMP IPI issues on Loongson 3A based machines On Thu, Jul 24, 2014 at 09:40:32AM +0200, Aurelien Jarno wrote: > On Thu, Jul 24, 2014 at 07:47:02AM +0800, ³Â»ª²Å wrote: > > Hi, Aurelien > > Hi, > > > Could you please attachment your config file? It seems you didn't use > > the default one. > > Please fine it attached. That said thanks for your idea about using the > default config file, I built a 3.15.6 kernel with it, and it doesn't > crash with it. I'll try to "bisect" the config file to see what is > causing the issue, and I'll keep you updated. The issue is reproducible when PREEMPT=y instead of PREEMPT_VOLUNTARY=y like in the default config. As PREEMPT=y is supposed to be more aggressive than PREEMPT_VOLUNTARY=y, I guess it allows a deadlock to be preempted and that it just workarounds the real issue. Note also that doing this change automatically changes a few other configuration variables: | --- defconfig | +++ badconfig | @@ -155,9 +155,8 @@ | CONFIG_SYS_SUPPORTS_ARBIT_HZ=y | CONFIG_HZ=256 | # CONFIG_PREEMPT_NONE is not set | -# CONFIG_PREEMPT_VOLUNTARY is not set | -CONFIG_PREEMPT=y | -CONFIG_PREEMPT_COUNT=y | +CONFIG_PREEMPT_VOLUNTARY=y | +# CONFIG_PREEMPT is not set | CONFIG_KEXEC=y | # CONFIG_CRASH_DUMP is not set | CONFIG_SECCOMP=y | @@ -234,8 +233,8 @@ | # | # RCU Subsystem | # | -CONFIG_TREE_PREEMPT_RCU=y | -CONFIG_PREEMPT_RCU=y | +CONFIG_TREE_RCU=y | +# CONFIG_PREEMPT_RCU is not set | CONFIG_RCU_STALL_COMMON=y | # CONFIG_RCU_USER_QS is not set | CONFIG_RCU_FANOUT=64 | @@ -243,7 +242,6 @@ | # CONFIG_RCU_FANOUT_EXACT is not set | # CONFIG_RCU_FAST_NO_HZ is not set | # CONFIG_TREE_RCU_TRACE is not set | -# CONFIG_RCU_BOOST is not set | # CONFIG_RCU_NOCB_CPU is not set | # CONFIG_IKCONFIG is not set | CONFIG_LOG_BUF_SHIFT=14 | @@ -404,7 +402,11 @@ | CONFIG_DEFAULT_CFQ=y | # CONFIG_DEFAULT_NOOP is not set | CONFIG_DEFAULT_IOSCHED="cfq" | -CONFIG_UNINLINE_SPIN_UNLOCK=y | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | +CONFIG_INLINE_READ_UNLOCK=y | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | +CONFIG_INLINE_WRITE_UNLOCK=y | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | CONFIG_MUTEX_SPIN_ON_OWNER=y | CONFIG_FREEZER=y | | @@ -3027,7 +3029,6 @@ | # CONFIG_SCHED_DEBUG is not set | # CONFIG_SCHEDSTATS is not set | # CONFIG_TIMER_STATS is not set | -# CONFIG_DEBUG_PREEMPT is not set | | # | # Lock Debugging (spinlocks, mutexes, etc...) | @@ -3052,12 +3053,10 @@ | # | # RCU Debugging | # | -# CONFIG_PROVE_RCU_DELAY is not set | # CONFIG_SPARSE_RCU_POINTER is not set | # CONFIG_TORTURE_TEST is not set | # CONFIG_RCU_TORTURE_TEST is not set | CONFIG_RCU_CPU_STALL_TIMEOUT=21 | -# CONFIG_RCU_CPU_STALL_VERBOSE is not set | # CONFIG_RCU_CPU_STALL_INFO is not set | # CONFIG_RCU_TRACE is not set | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set I hope that'll help to reproduce the real problem and to fix it. Thanks, Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@xxxxxxxxxxx http://www.aurel32.net