Hello, I wrote:
>>> I'm also getting this with RT patch applied on x86_64 SMP machine (with
>>>low-latency desktop kernel) after hitting initial breakpoint:
>>>BUG: at kernel/softirq.c:647 __tasklet_action()
>>>Call Trace:
>>> [<ffffffff8022e61a>] __tasklet_action+0xe7/0x138
>>> [<ffffffff8022e693>] tasklet_action+0x28/0x2a
>>> [<ffffffff8022e892>] ksoftirqd+0x149/0x1f3
>>> [<ffffffff8022e749>] ksoftirqd+0x0/0x1f3
>>> [<ffffffff8023d324>] kthread+0xdc/0x113
>>> [<ffffffff8020adf8>] child_rip+0xa/0x12
>>> [<ffffffff8023d44f>] kthread_create+0x6a/0x15c
>>> [<ffffffff8023d248>] kthread+0x0/0x113
>>> [<ffffffff8020adee>] child_rip+0x0/0x12
>>>---------------------------
>>>| preempt count: 00000100 ]
>>>| 0-level deep critical section nesting:
>>>----------------------------------------
Ugh, this one was really nasty. The actual reason has turned to be that
the KGDB's tasklet gets scheduled *before* per-CPU data gets replicated for
each CPU, therefore it modifies the .data.percpu section itself. But the
tasklet is actually run *after* the replication, so it gets into the tasklet
lists on every CPU -- and so I get that BUG on every CPU! Any thoughts on how
to avoid this nuisance? :-/
>> ... and in the RT mode, this causes a hard lockup.
> Actually, I can -- here is it:
> BUG: scheduling with irqs disabled: swapper/0x00010001/0
> caller is rt_spin_lock_slowlock+0xfe/0x1a3
> Call Trace:
> [] schedule+0x85/0x108
> [] rt_spin_lock_slowlock+0xfe/0x1a3
> [] __lock_text_start+0x20/0x22
> [] kgdb_nmihook+0xbb/0xfa
> [] kgdb_notify+0x63/0x105
> [] notifier_call_chain+0x2c/0x43
> [] raw_notifier_call_chain+0x9/0xb
> [] default_do_nmi+0x61/0x1c2
> [] do_nmi+0x27/0x38
> [] nmi+0x7f/0x90
> [] mwait_idle+0x0/0x5c
> [] mwait_idle+0x57/0x5c
> <>
> [] cpu_idle+0x5d/0x9c
> [] start_secondary+0x2ec/0x2fb
> [] rest_init+0x44/0x46
>
> ---------------------------
> [] start_kernel+0x2e0/0x2ed
> | preempt count: 00010001 ]
> [] _sinittext+0x189/0x198
> | 1-level deep critical section nesting:
> ----------------------------------------
> .. [] ....
> cpu_idle+0x99/0x9c
> .....[] .. ( <= ---------------------------
> | preempt count: 00010001 ]
> | 1-level deep critical section nesting:
> start_secondary+0x2ec/0x2fb)
[skipped]
Well, here the reason was very simple -- I somehow forgot to convert
slavecpulocks[] to raw. :-<
WBR, Sergei
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Kgdb-bugreport mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport