[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-smp
Subject:    tulip patch
From:       "Robert G. Brown" <rgb () phy ! duke ! edu>
Date:       1998-03-31 21:58:16
[Download RAW message or body]

Dear All,

Well, it took me a while to get it right, but I can now run a 0.77 tulip
kernel and hammer it with complete stability.  I went back this far to
avoid getting entangled with changes that might have been made to try to
deal with and debug the problem.

I replaced all the "obvious" places where flags were set with = signs in
tulip.c.  This ended up being for three flags: dev->tbusy,
dev->interrupt, and dev->start (I'm not sure I really need the last
one).  I thought the tbusy flag might be involved in the "Too much work"
problem (and I still don't know if it is or isn't).

Anyway, the patches are below.  They can obviously be fairly simply
generalized to more modern tulip.c's, but since a lot of stuff can
probably be pulled out I'll leave that to Don.

I have been unable to crash a dual PPro running the patched tulip.c 0.77
even when hitting it with two simultaneous UDP_STREAMS, a thing that was
guaranteed to crash 0.87 through revision O and likely to hang P.

Let me know if it helps.

   rgb


Robert G. Brown	                       http://www.phy.duke.edu/~rgb/
Duke University Dept. of Physics, Box 90305
Durham, N.C. 27708-0305
Phone: 1-919-660-2567  Fax: 919-660-2525     email:rgb@phy.duke.edu


diff tulip.c tulip.c-0.77
%< snip snip ===============================
1076,1078c1076,1078
< 	clear_bit(0,(void*)&dev->tbusy);
< 	clear_bit(0,(void*)&dev->interrupt);
< 	set_bit(0,(void*)&dev->start);
---
> 	dev->tbusy = 0;
> 	dev->interrupt = 0;
> 	dev->start = 1;
1570c1570
< 	  clear_bit(0,(void*)&dev->tbusy);
---
> 	  dev->tbusy = 0;
1573c1573
< 	  clear_bit(0,(void*)&dev->tbusy);
---
> 	  dev->tbusy = 0;
1576c1576
< 	  clear_bit(0,(void*)&dev->tbusy);
---
> 	  dev->tbusy = 0;
1619c1619
< 	set_bit(0,(void*)&dev->interrupt);
---
> 	dev->interrupt = 1;
1691c1691
< 				clear_bit(0,(void*)&dev->tbusy);
---
> 				dev->tbusy = 0;
1746c1746
< 	clear_bit(0,(void*)&dev->interrupt);
---
> 	dev->interrupt = 0;
1858,1859c1858,1859
< 	clear_bit(0,(void*)&dev->start);
< 	set_bit(0,(void*)&dev->tbusy);
---
> 	dev->start = 0;
> 	dev->tbusy = 1;
2045c2045
< 				set_bit(0,(void*)&dev->tbusy);
---
> 				dev->tbusy = 1;
2095,2096d2094
<  * SMP version:
<  *  compile-command: "gcc -DMODVERSIONS -DMODULE -D__KERNEL__ -D__SMP__ \
-I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -c tulip.c"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic