[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