lkml.org 
[lkml]   [2017]   [Aug]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: WARNING: possible circular locking dependency detected
On 2017-08-25 12:03:04 [+0200], Borislav Petkov wrote:
> ======================================================
> WARNING: possible circular locking dependency detected
> 4.13.0-rc6+ #1 Not tainted
> ------------------------------------------------------

While looking at this, I stumbled upon another one also enabled by
"completion annotation" in the TIP:

| ======================================================
| WARNING: possible circular locking dependency detected
| 4.13.0-rc6-00758-gd80d4177391f-dirty #112 Not tainted
| ------------------------------------------------------
| cpu-off.sh/426 is trying to acquire lock:
| ((complete)&st->done){+.+.}, at: [<ffffffff810cb344>] takedown_cpu+0x84/0xf0
|
| but task is already holding lock:
| (sparse_irq_lock){+.+.}, at: [<ffffffff811220f2>] irq_lock_sparse+0x12/0x20
|
| which lock already depends on the new lock.
|
| the existing dependency chain (in reverse order) is:
|
| -> #1 (sparse_irq_lock){+.+.}:
| __mutex_lock+0x88/0x9a0
| mutex_lock_nested+0x16/0x20
| irq_lock_sparse+0x12/0x20
| irq_affinity_online_cpu+0x13/0xd0
| cpuhp_invoke_callback+0x4a/0x130
|
| -> #0 ((complete)&st->done){+.+.}:
| check_prev_add+0x351/0x700
| __lock_acquire+0x114a/0x1220
| lock_acquire+0x47/0x70
| wait_for_completion+0x5c/0x180
| takedown_cpu+0x84/0xf0
| cpuhp_invoke_callback+0x4a/0x130
| cpuhp_down_callbacks+0x3d/0x80

|
| other info that might help us debug this:
|
| Possible unsafe locking scenario:
| CPU0 CPU1
| ---- ----
| lock(sparse_irq_lock);
| lock((complete)&st->done);
| lock(sparse_irq_lock);
| lock((complete)&st->done);
|
| *** DEADLOCK ***

We hold the sparse_irq_lock lock while waiting for the completion in the
CPU-down case and in the CPU-up case we acquire the sparse_irq_lock lock
while the other CPU is waiting for the completion.
This is not an issue if my interpretation of lockdep here is correct.

How do we annotate this?

Sebastian

\
 
 \ /
  Last update: 2017-08-25 16:52    [W:0.147 / U:23.304 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site