ARM: nommu: DEBUG_LOCKS_WARN_ON(!depth)

Axel Lin axel.lin at ingics.com
Tue Dec 10 01:29:20 EST 2013


2013/11/25 Axel Lin <axel.lin at ingics.com>:
> I'm testing on a nommu platform (arm7tdmi SoC).
> Using current Linus' tree + out-of-tree patches for this SoC.
> I got below hang while executing ls (busybox) after boot.
>
> / # ls
> [   51.036191] ------------[ cut here ]------------
> [   51.042242] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:3312 lock_set_class+0x5c8/0x660()
> [   51.051426] DEBUG_LOCKS_WARN_ON(!depth)
> [   51.055842] CPU: 0 PID: 1 Comm:  Not tainted 3.13.0-rc1-00100-g4b061f7-dirty #1917
> [   51.065415] [<0000c430>] (unwind_backtrace+0x0/0xe0) from [<0000ae58>] (show_stack+0x10/0x14)
> [   51.075781] [<0000ae58>] (show_stack+0x10/0x14) from [<0000f7b0>] (warn_slowpath_common+0x58/0x78)
> [   51.086549] [<0000f7b0>] (warn_slowpath_common+0x58/0x78) from [<0000f814>] (warn_slowpath_fmt+0x2c/0x3c)
> [   51.098162] [<0000f814>] (warn_slowpath_fmt+0x2c/0x3c) from [<00036d9c>] (lock_set_class+0x5c8/0x660)
> [   50.934805] [<00036d9c>] (lock_set_class+0x5c8/0x660) from [<000367d4>] (lock_set_class+0x0/0x660)
> [   50.945255] [<000367d4>] (lock_set_class+0x0/0x660) from [<00000000>] (  (null))
> [   50.953242] ---[ end trace 7d1e4eb800000001 ]---
>

Now test on top of linux-3.13-rc3.
I found I can hit this lockdep warning only when CONFIG_PREEMPT_NONE=y

1) With CONFIG_PREEMPT_NONE=y
        executing ls (busybox) hang with above lockdep warning.
2) With CONFIG_PREEMPT_VOLUNTARY=y:
        have "[sched_delayed] sched: RT throttling activated" in boot message.
        executing ls (busybox) hang silently.
3) With CONFIG_PREEMPT=y:
        executing ls (busybox) successfully and it's ok to execute other binary.

all the test with below configs:
CONFIG_PREEMPT_COUNT=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_DEBUG_ATOMIC_SLEEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_BUGVERBOSE=y



More information about the linux-arm-kernel mailing list