Re: SMP lockup & 3c509 on 2.2.x [aka. the Deadly 'ping -f']

M.H.VanLeeuwen (vanl@lucent.com)
Fri, 23 Apr 1999 15:12:03 -0500


Andrea Arcangeli wrote:
>
> On Mon, 19 Apr 1999, M.H.VanLeeuwen wrote:
>
> >wait_on_irq, CPU 0
> > irq 2[0,2]
> > bh 2[0,0]
> ><[c0109ca1]> <[c0109bde]>....
> >
> >c0109ca1 <__global_cli+bd/14c>
> >c0109bde <synchronize_irq+e/14>
> >c0109ed1 <disable_irq+61/68>
> >c015ed4d <qdisc_restart+39/6c>
> >c015aa43 <dev_queue_xmit+3b/c8>
> >c0164719 <ip_output+85/b8>
> >c016521a <ip_build_xmit+29a/2cc>
>
> I want a larger view on the trace, please apply this patch, and hope to
> get a longer trace at the next lockup ;).
>
> Index: irq.c
> ===================================================================
> RCS file: /var/cvs/linux/arch/i386/kernel/irq.c,v
> retrieving revision 1.1.2.14
> diff -u -r1.1.2.14 irq.c
> --- irq.c 1999/04/17 14:58:41 1.1.2.14
> +++ linux/arch/i386/kernel/irq.c 1999/04/23 14:21:01
> @@ -478,11 +478,13 @@
> printk("bh: %d [%d %d]\n",
> atomic_read(&global_bh_count), local_bh_count[0], local_bh_count[1]);
> stack = (unsigned long *) &stack;
> - for (i = 40; i ; i--) {
> + for (;;) {
> unsigned long x = *++stack;
> if (x > (unsigned long) &get_options && x < (unsigned long) &vsprintf) {
> printk("<[%08lx]> ", x);
> }
> + if (!(x & 0x2000)) /* break if we finished the stack */
> + break;
> }
> }
>
>
> Andrea Arcangeli

Andrea

your patch didn't work, only got one [<xxx>] print, so i did this

-- --- irq.c.orig Fri Apr 23 13:27:08 1999
+++ irq.c Fri Apr 23 14:09:31 1999
@@ -477,7 +477,7 @@
printk("bh: %d [%d %d]\n",
atomic_read(&global_bh_count), local_bh_count[0], local_bh_count[1]);
stack = (unsigned long *) &stack;
- for (i = 40; i ; i--) {
+ for (i = 80; i ; i--) {
unsigned long x = *++stack;
if (x > (unsigned long) &get_options && x < (unsigned long) &vsprintf) {
printk("<[%08lx]> ", x);
@@ -485,7 +485,7 @@
}
}

-#define MAXCOUNT 100000000
+#define MAXCOUNT 1000000

static inline void wait_on_bh(void)
{

changed MAXCOUNT so I didn't have to wait so long! ;-) for the trace dump

recompiled with 3c509 a built-in kernel instead of module, that took care
of the "autofs" symbol problem U saw earlier, just a screw up on my part.

Trace: c0109ca1 <__global_cli+bd/14c>
Trace: c0109bde <synchronize_irq+e/14>
Trace: c0109ed1 <disable_irq+61/68>
Trace: c01b4455 <el3_start_xmit+139/240>
Trace: c015eac5 <qdisc_restart+39/6c>
Trace: c015a61f <dev_queue_xmit+3b/c8>
Trace: c0164869 <ip_output+95/bc>
Trace: c0165396 <ip_build_xmit+2d2/30c>
Trace: c01610df <ip_route_output+5b/dc>
Trace: c0170075 <raw_sendmsg+229/260>
Trace: c016fd80 <raw_getfrag+0/24>
Trace: c0175298 <inet_sendmsg+0/90>
Trace: c017531b <inet_sendmsg+83/90>
Trace: c01562e8 <sock_sendmsg+88/ac>

Martin

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/