PROBLEM: [2.4.6] kernel BUG at softirq.c:206!
A message that is not in the archive (sent off-list or not yet received): [email protected]
Hi Andrew!
Quoted 16 lines · Andrew Morton
Quoted 6 lines
kernel panic every time (see original post). My CPU is a MediaGX, and Manfred's one is a 6x86MX. What about yours ?
After my first unsuccessful attempt with a 2.4.6-pre3, I tried several other 2.4.6-preX and 2.4.5-acX kernels. All 2.4.6 (since pre1) seem to be affected, and so do the latest ac's. I don't have tested 2.4.7-pre[12] yet, but looking at the changelog, I doubt the fix is in.It may help to know which tasklet is in the wrong state. Could you please add this patch:
kernel/softirq.c +0
-0@@ -202,8 +202,10 @@ static void tasklet_hi_action(struct sofif (!tasklet_trylock (t))
kernel/softirq.c static void tasklet_hi_action(struct sof · line 211
Quoted 10 lines
kernel/softirq.c +3
-1BUG (); repeat: -if (!test_and_clear_bit (TASKLET_STATE_SCHED , &t->state)) +if (!test_and_clear_bit (TASKLET_STATE_SCHED , &t->state)) { +printk ("func: %p\n" , t->func);BUG (); + }if (!atomic_read (&t->count)) {local_irq_enable (); t->func (t->data);
Okay, here's the output of gdb:
(gdb) x/10i 0xc01180280xc0118028 <bh_action>: mov 0x4(%esp,1),%eax
0xc011802c <bh_action+4>: cmpl $0x0,0xc025c2e4 0xc0118033 <bh_action+11>: jne 0xc0118043 <bh_action+27> 0xc0118035 <bh_action+13>: mov 0xc024af20(,%eax,4),%eax 0xc011803c <bh_action+20>: test %eax,%eax 0xc011803e <bh_action+22>: je 0xc0118042 <bh_action+26> 0xc0118040 <bh_action+24>: call *%eax 0xc0118042 <bh_action+26>: ret 0xc0118043 <bh_action+27>: lea (%eax,%eax,4),%eax 0xc0118046 <bh_action+30>: lea 0xc025bf80(,%eax,4),%eax
HTH,
Manfred
Signature · 4 lines
/"\ | PGP-Key available at Public Key Servers \ / ASCII ribbon campaign | or "http://www.mahowi.de/pgp/mahowi.asc" X against HTML mail | RSA: 0xC05BC0F5 * DSS: 0x4613B5CA / \ and postings | AIM: mahowi42 * ICQ: 61597169
Quoted 22 lines · Manfred H. Winter
...
Quoted 5 lines
kernel/softirq.c Thu Jul 5 21:32:08 2001 renamed from kernel/softirq.c Wed Jul 4 18:21:32 2001 +0
-0@@ -202,8 +202,10 @@ static void tasklet_hi_action(struct sof if (!tasklet_trylock(t))kernel/softirq.c Thu Jul 5 21:32:08 2001 static void tasklet_hi_action(struct sof · line 211
Quoted 10 lines
kernel/softirq.c Thu Jul 5 21:32:08 2001 renamed from kernel/softirq.c Wed Jul 4 18:21:32 2001 +3
-1BUG(); repeat: - if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state)) + if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state)) { + printk("func: %p\n", t->func); BUG(); + } if (!atomic_read(&t->count)) { local_irq_enable(); t->func(t->data);Okay, here's the output of gdb:
(gdb) x/10i
0xc01180280xc0118028<bh_action>: mov 0x4(%esp,1),%eax
Quoted 10 lines
0xc011802c <bh_action+4>: cmpl $0x0,0xc025c2e4 0xc0118033 <bh_action+11>: jne 0xc0118043 <bh_action+27> 0xc0118035 <bh_action+13>: mov 0xc024af20(,%eax,4),%eax 0xc011803c <bh_action+20>: test %eax,%eax 0xc011803e <bh_action+22>: je 0xc0118042 <bh_action+26> 0xc0118040 <bh_action+24>: call *%eax 0xc0118042 <bh_action+26>: ret 0xc0118043 <bh_action+27>: lea (%eax,%eax,4),%eax 0xc0118046 <bh_action+30>: lea 0xc025bf80(,%eax,4),%eax
Well I guess it tells us it's not random uninitialised crud.
Just for interest: what happens if you swap around the lines
time_init();
softirq_init();in init/main.c?
-
Hi Andrew!
Quoted 18 lines · Andrew Morton
Quoted 4 lines
Okay, here's the output of gdb:
(gdb) x/10i
0xc01180280xc0118028<bh_action>: mov 0x4(%esp,1),%eaxQuoted 10 lines
0xc011802c <bh_action+4>: cmpl $0x0,0xc025c2e4 0xc0118033 <bh_action+11>: jne 0xc0118043 <bh_action+27> 0xc0118035 <bh_action+13>: mov 0xc024af20(,%eax,4),%eax 0xc011803c <bh_action+20>: test %eax,%eax 0xc011803e <bh_action+22>: je 0xc0118042 <bh_action+26> 0xc0118040 <bh_action+24>: call *%eax 0xc0118042 <bh_action+26>: ret 0xc0118043 <bh_action+27>: lea (%eax,%eax,4),%eax 0xc0118046 <bh_action+30>: lea 0xc025bf80(,%eax,4),%eaxWell I guess it tells us it's not random uninitialised crud.
Quoted 7 lines
Just for interest: what happens if you swap around the lines
time_init(); softirq_init();in
init/main.c?
That works, kernel boots now without problems.
Thanks,
Manfred
Signature · 4 lines
/"\ | PGP-Key available at Public Key Servers \ / ASCII ribbon campaign | or "http://www.mahowi.de/pgp/mahowi.asc" X against HTML mail | RSA: 0xC05BC0F5 * DSS: 0x4613B5CA / \ and postings | AIM: mahowi42 * ICQ: 61597169