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

Reply via email to