Re: SMP IPI issues on Loongson 3A based machines
From: 陈华才 <hidden>
Date: 2014-07-28 15:33:03
Hi, I'm debugging, please wait for some time. ------------------ Original ------------------ From: "Aurelien Jarno"<aurelien@aurel32.net> Date: Thu, Jul 24, 2014 09:18 PM To: "陈华才"<redacted>; Cc: "linux-mips"<redacted>;"Andreas Barth"<redacted>; 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:quoted
Hi, AurelienHi,quoted
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@aurel32.net http://www.aurel32.net