Subject: Re: DS3100 ethernet spl problem fixed
To: None <mellon@fugue.com>
From: Charles Hannum <Charles-Hannum@deshaw.com>
List: port-pmax
Date: 12/31/1995 16:58:27
Arne writes:
> A related issue: Currently, on executing network (lance) interrupts
> on 3100, all other interrupts except hardclock are disabled.
Jason writes:
> malloc() amnd free() operate at splimp, and thus it needs to block bio
> interrupts so that putccdbuf() isn't called during another free() or
> malloc() operation. It's reasonable to assume that other drivers may
> call malloc() and/or free() at interrupt time.
Why don't malloc() and free() operate at splhigh()?
Then what's the point of splimp()? Its entire reason for existing now
is to serialize access to malloc() and free(). All you'd do by making
them use splhigh() is make it so that nothing else can be squozen in
between. That's silly, and would make it impossible to implement,
e.g., a working sound driver, unless one chose to simply bypass the
normal hierarchy.
It makes no
sense to me that disk interrupts should necessarily be blocked while
processing ethernet interrupts.
They're not, except during malloc() or free(), and changing those to
use splhigh() wouldn't change that fact.
Also, it seems bad that tty interrupts are blocked during processing
of lance interrupts.
That was the whole point of the splnet()/splsoftnet() changes.
Indeed, I went to some length to explain that.