Subject: Re: bus_space and barriers
To: Nathan J. Williams <nathanw@MIT.EDU>
From: Erik E. Fair <fair@clock.org>
List: tech-kern
Date: 11/04/2000 14:43:56
A couple of observations on this discussion.
1. memory barriers only matter on heavily pipelined processors (i.e.
modern stuff), but we run on all kinds of hardware. Not every driver
will need memory barriers; depends on whether it runs on modern stuff
or not. Argueably, adding the barrier stuff in when you know you're
never going to need it is going to make the drivers harder to read
and maintain.
2. this is being presented as a dichotomy; barriers explicit or
implict, when they are required. There is no reason why we can't have
both, provided the APIs are clearly delineated, differentiated, and
documented.
3. having both an explicit memory barrier API and an implicit memory
barrier API allows us to have the best both worlds: less than
completely wizardly programmers who can get a device working with the
implicit API, and wizardly programmers who can make the device
perform to its limits with the explicit API.
We have a strong desire to "get it right the first time" in the
NetBSD community, but this ethic has gotten us into trouble time and
again. If we allow for stepwise, incremental refinement, we converge
on the nearly perfect implementation over time, while making visible
progress along the way. The key is to keep iterating over the code
(turning the crank on the process) so that we don't get stuck at a
sub-optimal level.
Erik <fair@clock.org>