Subject: Re: More Device Properties
To: None <cgd@sibyte.com, eeh@netbsd.org>
From: None <eeh@netbsd.org>
List: tech-kern
Date: 02/22/2001 18:36:59
	There are four goals at hand here:

	(1) backward compatibility of drivers while converting to the new
	interface.  I think that this is obvious; drivers won't need to be
	converted all at once (but they will have to wait to have their busses
	converted).

	(2) seamless transition, i.e. busses and/or can be converted without
	massive breakage, and without massive rototilling of the source tree.
	This follows as well.  The only possibility is for the Sbus case
	you've described, and it can be handled as well: Convert one MD bus
	driver.  Later, convert the next.  Later, convert the next.  _Then_
	start converting drivers.  If you're in a rush to convert drivers,
	well, then it's on you to convert the busses in a way that works.  But
	you can get a seamless transition.

	(3) desire for the 'new interface' used by converted drivers to get
	rid of aux entirely.  My way of doing conversion manages this, yours
	does not.

	(4) desire that when the interface is completely converted, more
	rototilling of source code isn't necessary for the conversion to be
	finished.  It may be possible to do this with your method, but it's
	much harder to _verify_ than with mine.



	So, regarding the statement you made above:

	(1) The claim you make is false; the opposite is true, bus drivers
	tend to be MI and device drivers tend to be MI and MD.  Sbus is an
	exception.

	(2) Despite that, with my suggested method for conversion, you can
	meet all of the goals outlined above.  You just have to convert all of
	the MD busses before you can start converting MI drivers.  That's not
	a big deal.

	(3) Given the points above, and the fact that my proposal for
	conversion actually _satisfies_ all of things that I can think of as
	reasonable goals for the conversion, yes, in fact, I do think my
	method would be quite acceptable.

No, your proposal calls for a transitional interface
for bus drivers, which means that they will require
conversion twice: once to the transitional interface
that provides both `aux' and properties and then another
conversion to remove `aux' and migrate to the final
interface.

My proposal only required a single transition, although
it did leave some unused remnants of the original interface
visible.

I do not beleive this can be done as a one-step process
that does not leave some remnants of `aux' around without
causing major disruptions.  However, the level of acceptable
breakage during this transition is a policy rather than
an engineering issue.

Eduardo