Re: [sched/core] 8a8c69c327: WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3548 lock_release

From: Wanpeng Li
Date: Fri Mar 17 2017 - 09:30:35 EST


2017-03-17 21:02 GMT+08:00 Wanpeng Li <kernellwp@xxxxxxxxx>:
> 2017-03-17 4:02 GMT+08:00 kernel test robot <fengguang.wu@xxxxxxxxx>:
>> Greetings,
>>
>> 0day kernel testing robot got the below dmesg and the first bad commit is
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
>>
>> commit 8a8c69c32778865affcedc2111bb5d938b50516f
>> Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>> AuthorDate: Tue Oct 4 16:04:35 2016 +0200
>> Commit: Ingo Molnar <mingo@xxxxxxxxxx>
>> CommitDate: Thu Mar 16 09:46:22 2017 +0100
>>
>> sched/core: Add rq->lock wrappers
>>
>> The missing update_rq_clock() check can work with partial rq->lock
>> wrappery, since a missing wrapper can cause the warning to not be
>> emitted when it should have, but cannot cause the warning to trigger
>> when it should not have.
>>
>> The duplicate update_rq_clock() check however can cause false warnings
>> to trigger. Therefore add more comprehensive rq->lock wrappery.
>>
>> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
>> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>> Cc: Mike Galbraith <efault@xxxxxx>
>> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
>
> Please refer to: https://lkml.org/lkml/2017/3/16/1131

I have another version of patch which utilizes raw_spin_lock_irqsave()
instead of rq_lock_irqsave() in __balance_callback() as before, which
one do you like, Peterz?

Regards,
Wanpeng Li

>
> Regards,
> Wanpeng Li
>
>>
>> 26ae58d23b sched/core: Add WARNING for multiple update_rq_clock() calls
>> 8a8c69c327 sched/core: Add rq->lock wrappers
>> 15ff991e80 sched/core: Avoid double update_rq_clock() in move_queued_task()
>> 69f0dcef5b Merge branch 'timers/urgent'
>> +------------------------------------------------------+------------+------------+------------+------------+
>> | | 26ae58d23b | 8a8c69c327 | 15ff991e80 | 69f0dcef5b |
>> +------------------------------------------------------+------------+------------+------------+------------+
>> | boot_successes | 39 | 6 | 7 | 5 |
>> | boot_failures | 0 | 10 | 9 | 9 |
>> | WARNING:at_kernel/locking/lockdep.c:#lock_release | 0 | 10 | 9 | 9 |
>> | WARNING:at_kernel/locking/lockdep.c:#lock_unpin_lock | 0 | 10 | 9 | 9 |
>> +------------------------------------------------------+------------+------------+------------+------------+
>>
>> [main] Setsockopt(1 28 68b000 4) on fd 376 [16:3:0]
>> [main] Setsockopt(1 b 68b000 fc) on fd 377 [1:2:1]
>> [main] Setsockopt(1 e 68b000 f2) on fd 381 [1:2:1]
>> [main] 375 sockets created based on info from socket cachefile.
>> [ 17.557099] ------------[ cut here ]------------
>> [ 17.557589] WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3548 lock_release+0x302/0x550
>> [ 17.558684] releasing a pinned lock
>> [ 17.559073] Modules linked in:
>> [ 17.559412] CPU: 0 PID: 8 Comm: rcu_sched Not tainted 4.11.0-rc2-00217-g8a8c69c #5
>> [ 17.560228] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014
>> [ 17.561316] Call Trace:
>> [ 17.561590] dump_stack+0x86/0xc1
>> [ 17.561946] __warn+0xbb/0xe0
>> [ 17.562259] ? push_rt_task+0xec/0x2b0
>> [ 17.562649] warn_slowpath_fmt+0x4a/0x50
>> [ 17.563062] ? sched_clock+0x9/0x10
>> [ 17.563426] lock_release+0x302/0x550
>> [ 17.563807] _raw_spin_unlock+0x1a/0x40
>> [ 17.564213] push_rt_task+0xec/0x2b0
>> [ 17.564585] push_rt_tasks+0x10/0x20
>> [ 17.564969] __balance_callback+0x7e/0x90
>> [ 17.565403] __schedule+0x55d/0x660
>> [ 17.565784] schedule+0x23/0x40
>> [ 17.566136] rcu_gp_kthread+0xae/0xa50
>> [ 17.566544] kthread+0x125/0x130
>> [ 17.566904] ? force_qs_rnp+0x1f0/0x1f0
>> [ 17.567320] ? __kthread_bind_mask+0x70/0x70
>> [ 17.567780] ret_from_fork+0x31/0x40
>> [ 17.568190] ---[ end trace a3dc39f9b76a0708 ]---
>> [ 17.568764] ------------[ cut here ]------------
>> [ 17.568764] ------------[ cut here ]------------
>> [ 17.569251] WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3670 lock_unpin_lock+0xcd/0x140
>> [ 17.570311] unpinning an unpinned lock
>> [ 17.570696] Modules linked in:
>> [ 17.571022] CPU: 0 PID: 8 Comm: rcu_sched Tainted: G W 4.11.0-rc2-00217-g8a8c69c #5
>> [ 17.571933] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014
>> [ 17.573011] Call Trace:
>> [ 17.573284] dump_stack+0x86/0xc1
>> [ 17.573644] __warn+0xbb/0xe0
>> [ 17.573975] warn_slowpath_fmt+0x4a/0x50
>> [ 17.574398] lock_unpin_lock+0xcd/0x140
>> [ 17.574811] __balance_callback+0x55/0x90
>> [ 17.575241] __schedule+0x55d/0x660
>> [ 17.575604] schedule+0x23/0x40
>> [ 17.575939] rcu_gp_kthread+0xae/0xa50
>> [ 17.576327] kthread+0x125/0x130
>> [ 17.576663] ? force_qs_rnp+0x1f0/0x1f0
>> [ 17.577064] ? __kthread_bind_mask+0x70/0x70
>> [ 17.577503] ret_from_fork+0x31/0x40
>> [ 17.577885] ---[ end trace a3dc39f9b76a0709 ]---
>> [main] Generating file descriptors
>>
>> # HH:MM RESULT GOOD BAD GOOD_BUT_DIRTY DIRTY_NOT_BAD
>> git bisect start 6b636a485c6caff6e9b24011298eafba3ca2a8ee 4495c08e84729385774601b5146d51d9e5849f81 --
>> git bisect bad 55bc6d7f980cff4f3c64a8bb68dbcc8f21bf6c6d # 01:11 B 0 12 23 0 Merge 'input/master' into devel-spot-201703162058
>> git bisect bad b5a68e900a6fef3d4bfba66492870fc8a9716b29 # 01:31 B 0 1 12 0 Merge 'usb/usb-testing' into devel-spot-201703162058
>> git bisect bad fc33633bf286c6dd7034b68da01d29734b597494 # 01:41 B 3 8 0 2 Merge 'pza/imx-drm/next' into devel-spot-201703162058
>> git bisect bad 90e002d71f66656e07086db304de3cc47db8f648 # 02:00 B 3 9 0 0 Merge 'tip/sched/core' into devel-spot-201703162058
>> git bisect good 656fda9ce4b5c22bc3dc0d5f02d49413aa8b6d13 # 02:10 G 12 0 0 0 Merge 'tip/locking/urgent' into devel-spot-201703162058
>> git bisect good 501434c37e631976e649a83a7c931e0f326ce580 # 02:20 G 12 0 0 0 Merge 'tip/x86/mm' into devel-spot-201703162058
>> git bisect good a911686589f1804905e99a290e7505e2b77b57d5 # 02:34 G 12 0 0 0 Merge 'tip/sched/urgent' into devel-spot-201703162058
>> git bisect bad 7134b3e941613dcb959b4b178cc4a35e45cbbc0d # 02:46 B 3 9 0 0 sched/core: Add ENQUEUE_NOCLOCK to ENQUEUE_RESTORE
>> git bisect good 26ae58d23b94a075ae724fd18783a3773131cfbc # 02:57 G 12 0 0 0 sched/core: Add WARNING for multiple update_rq_clock() calls
>> git bisect bad 0a67d1ee30ef1efe6a412b3590e08734902aed43 # 03:09 B 0 8 19 0 sched/core: Add {EN,DE}QUEUE_NOCLOCK flags
>> git bisect bad 8a8c69c32778865affcedc2111bb5d938b50516f # 03:18 B 3 4 0 1 sched/core: Add rq->lock wrappers
>> # first bad commit: [8a8c69c32778865affcedc2111bb5d938b50516f] sched/core: Add rq->lock wrappers
>> git bisect good 26ae58d23b94a075ae724fd18783a3773131cfbc # 03:26 G 33 0 0 0 sched/core: Add WARNING for multiple update_rq_clock() calls
>> # extra tests with CONFIG_DEBUG_INFO_REDUCED
>> git bisect bad 8a8c69c32778865affcedc2111bb5d938b50516f # 03:38 B 2 7 0 0 sched/core: Add rq->lock wrappers
>> # extra tests on HEAD of linux-devel/devel-spot-201703162058
>> git bisect bad 6b636a485c6caff6e9b24011298eafba3ca2a8ee # 03:38 B 2 13 0 2 0day head guard for 'devel-spot-201703162058'
>> # extra tests on tree/branch tip/sched/core
>> git bisect bad 15ff991e8047561bb4a4e800ec60f60939be5fd4 # 03:50 B 5 7 0 1 sched/core: Avoid double update_rq_clock() in move_queued_task()
>> # extra tests on tree/branch tip/master
>> git bisect bad 69f0dcef5b048e05c7dd0818dd746cc2a6840aa1 # 04:02 B 5 9 0 0 Merge branch 'timers/urgent'
>>
>> ---
>> 0-DAY kernel test infrastructure Open Source Technology Center
>> https://lists.01.org/pipermail/lkp Intel Corporation