Skip to contentSkip to conversation

PROBLEM: [2.4.6] kernel BUG at softirq.c:206!

DISCUSSION Manfred H. Winter 2 participants 3 messages Jul 5, 2001 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

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 sof
 		if (!tasklet_trylock(t))

kernel/softirq.c static void tasklet_hi_action(struct sof · line 211

Quoted 10 lines
kernel/softirq.c +3 -1
 			BUG();
 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 0xc0118028
0xc0118028 <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
#2 lore raw
In reply to a message not in the archive
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 -1
                      BUG();
 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 0xc0118028
0xc0118028 <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?

-

#3 lore raw

Hi Andrew!

Quoted 18 lines · Andrew Morton
Quoted 4 lines

Okay, here's the output of gdb:

(gdb) x/10i 0xc0118028
0xc0118028 <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.

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