[517] in linux-net channel archive
Re: 8390.c change for "Interrupted while interrupts are masked" msg
daemon@ATHENA.MIT.EDU (David Hinds)
Fri Jun 16 04:06:14 1995
From: David Hinds <dhinds@hyper.stanford.edu>
To: raeburn@cygnus.com (Ken Raeburn)
Date: Thu, 15 Jun 1995 23:42:14 -0700 (PDT)
Cc: linux-net@vger.rutgers.edu, dhinds@allegro.stanford.edu,
Linus.Torvalds@helsinki.fi
In-Reply-To: <9506160041.AA11999@cujo.cygnus.com> from "Ken Raeburn" at Jun 15, 95 08:41:23 pm
>
> My guess is that the "outb" to disable interrupts finishes (as far as the
> CPU knows) before the card has actually completed the task of disabling
> interrupts, leaving a race condition whereby an interrupt can come in just
> after the "outb", sometimes after "irqlock" gets set. Whether my guess is
> correct or not, this patch does seem to eliminate these messages. (The
> linux-1.3.1 kernel appears to have the same driver code, almost exactly,
> but I can't really try it out until umsdos is available.) I suspect the
> "inb" is sufficient; I put in the test just to be paranoid.
I just noticed that in the current 8390.c, every access to the IMR
register is a "slow" IO operation (inb_p, outb_p), except for this one
in ei_start_xmit(). With this new information, I think the best fix
will be to just change this outb() to an outb_p().
> (I see the "too much work at interrupt" messages also now, but haven't
> investigated those at all.)
I've fixed this one... when I was merging changes to the ne.c driver
into the de650_cs driver, I left out an interrupt acknowledgement at
the end of the de650_block_output() routine.
-- Dave Hinds
dhinds@allegro.stanford.edu