Messages in this thread | | | Subject | Re: 2.2.15pre14 | Date | Sun, 19 Mar 2000 14:56:40 -0600 (CST) | From | (William Lash) |
| |
Yeah, fair enough, I meant to copy Leonard on this, but was in a hurry to get out the door on Friday evening. Leonard was the one that suggested adding the delays to the macros, and that has fixed the problem for me. Since I only have a CDRW on my SCSI card, I haven't really been concerned that adding those delays hurts performance. If I had hard drives out there, I might be more concerned with that. I have been meaning to try the change that I suggested below for a few weeks now, but I haven't gotten around to it. I didn't really want to bother Leonard until I knew if the change would help.
Anyway, here is my reasoning as to why the change might make a difference:
Right now, hp_int gets assigned (RDW_HARPOON((ioport+hp_intstat)) & default_intena) each time through the while loop. Looking through the code, it appears to me that default_intena can have the following bits set:
RESET, RSEL, PROG_HLT, TIMEOUT, BUS_FREE, XFER_CNT_0, SCAM_SEL, IUNKWN, ICMD_COMP, ITICKLE, IDO_STRT, and ITAR_DISC (the last five are grouped as AUTO_INT)
That leaves the following bits that will be masked off by the bitwise and:
PARITY, FIFO, SEL, and PHASE
So hp_int will never have these bits set inside the while loop. Now, the very first if inside the while loop is:
if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) {
Which depends upon FIFO, which can't be set. This looks as if it is an error condition, so it may not be possible for this to cause problems, but I wanted to try it anyway.
I don't see any of the other bits being used inside the while loop.
Anyway, I will try to give it a try in the next few days to see if this fixes my problem. If anyone sees a flaw in my logic, or can say definitively that this will, or will not help, let me know.
Bill Lash welash@xnet.com
> > > I am actually not concerned about what it complained about (the use of the > > | instead of || but the strange parenthesis in RDW_HARPOON((ioport+hp_intstat)) > > > > I am beginning to think that this should be (hp_int = RDW_HARPOON(ioport+hp_intstat)) > > > > I keep meaning to try this, but haven't gotten around to it yet. > > thanks for your input here. as it only happened once, I think it would be of > no use to change the stuff. however, it might be a good idea to have the BT > code maker (lnz@dandelion.com IIRC) take a look at your suggestion, or not ? > > to me it happened after I presumably toggled the off/on switch too fast. > maybe the JAZ didn't reset OK. > > Roeland > > -- > Grobbebol's Home | Don't give in to spammers. -o) > http://www.xs4all.nl/~bengel | Use your real e-mail address /\ > Linux 2.2.14 SMP 2x466MHz / 256 MB | on Usenet. _\_v >
- 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/
| |