* Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 9:09 SMP/cc Cluster description [was Linux/Pro] Alan Cox
@ 2001-12-05 19:40 ` erich
2001-12-05 20:04 ` erich
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: erich @ 2001-12-05 19:40 UTC (permalink / raw)
To: Alan Cox; +Cc: linux-kernel, Larry McVoy, Jeff Merkey
Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> > For example, there should be no reason that most drivers or any other
> > random kernel module should know anything about SMP. Under Linux, it
> > annoys me to no end that I have to ever know (and yes, I count compiling
> > against "SMP" configuration having to know)... more and more sources of
> > error.
>
> Unfortunately the progression with processors seems to be going the
> wrong way. Spin locks are getting more not less expensive. That makes
> CONFIG_SMP=n a meaningful optimisation for the 99%+ of people not running
> SMP
I appreciate the costs (having worked in the Intel x86 arch team) and don't
like that part either, but the question at hand is whether you need the SMP
locks in most of the compiled drivers/modules themselves. That is in part
an artifact of the old architecture before they were loadable.
This really goes into a side-topic, but plainly:
The general driver/random module framework in Linux really needs to get
separated from the core kernel, and made so that it doesn't need to be
recompiled between minor kernel versions. Perhaps even pulling the
drivers in general apart from each other, just aggregating releases for
convenience.
MS with Windows (and even DOS) went the right direction here. In fact,
they have been hurting themselves by what lack of driver interoperability
there is even between Windows NT/2K/XP. Admittedly they didn't have much
of a choice with their closed-source scheme, but it still is a better
solution from a usability and stability point of view in general.
Don't get me wrong, I only run MS Software on 2 of my 8 machines (and
have been trying to remove one of those with Wine/WineX), but I appreciate
a better overall solution when I see one.
I will go so far as to say, for the long term this is necessary for the
survival of Linux, and would help it's health even in the server arena.
For example, we need the ability to easily:
-- Install random drivers on top of your kernel version and not
have them disappear when changing kernels unless that is desired.
This is just a royal pain for most people I've ever dealt with
who are not kernel hackers, and rightly so.
-- Install random kernels while retaining the same drivers for
testing/stability purposes.
I know that on my Linux servers, it bugs me that it's hard/nigh
impossible sometimes to change the core kernel and still trust
the drivers haven't drifted.
Those can usually be done by someone who is willing to/capable of
performing sleazy tricks or detailed hacking, but it's a burden. It
gets prohibitive often enough to be very frustrating, and I'm more patient
than most I know with random kernel hacking.
Stability/control/compatibility is in general of far more concern to most
than tweaked performance of the core kernel against the drivers. That
wouldn't be given up either, it just becomes an option.
A lesser solution, but moderately workable in the short-term:
Build a framework for an external "drivers" source/binary tree that can be
(via a single command) rebuilt for a different Linux kernel version. This
is arguably a Linux distribution thing.
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 19:40 ` Loadable drivers [was SMP/cc Cluster description ] erich
@ 2001-12-05 20:04 ` erich
2001-12-05 20:28 ` Stephan von Krawczynski
2001-12-06 4:49 ` Keith Owens
2 siblings, 0 replies; 13+ messages in thread
From: erich @ 2001-12-05 20:04 UTC (permalink / raw)
To: Alan Cox; +Cc: linux-kernel, Larry McVoy, Jeff Merkey
I wrote:
> This really goes into a side-topic, but plainly:
>
> The general driver/random module framework in Linux really needs to get
> separated from the core kernel, and made so that it doesn't need to be
> recompiled between minor kernel versions. Perhaps even pulling the
> drivers in general apart from each other, just aggregating releases for
> convenience.
...and licensing issues aside (probably only GPL for the moment), this
kind of thing could form the basis for an open-source kernel/OS-independent
set of drivers.
I know that I have been intending on doing a Linux driver compatibility
layer of sorts for my OS project (going to be GPL'd) I'm working on.
Maybe there are some others interested in this kind of project?
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 19:40 ` Loadable drivers [was SMP/cc Cluster description ] erich
2001-12-05 20:04 ` erich
@ 2001-12-05 20:28 ` Stephan von Krawczynski
2001-12-05 21:17 ` erich
2001-12-06 4:49 ` Keith Owens
2 siblings, 1 reply; 13+ messages in thread
From: Stephan von Krawczynski @ 2001-12-05 20:28 UTC (permalink / raw)
To: erich; +Cc: alan, linux-kernel, lm, jmerkey
On Wed, 05 Dec 2001 11:40:07 -0800
erich@uruk.org wrote:
> This really goes into a side-topic, but plainly:
>
> The general driver/random module framework in Linux really needs to get
> separated from the core kernel, and made so that it doesn't need to be
> recompiled between minor kernel versions. Perhaps even pulling the
> drivers in general apart from each other, just aggregating releases for
> convenience.
You have just expressed my wildest nightmares. Just go ahead ...
> MS with Windows (and even DOS) went the right direction here. In fact,
> they have been hurting themselves by what lack of driver interoperability
> there is even between Windows NT/2K/XP. Admittedly they didn't have much
> of a choice with their closed-source scheme, but it still is a better
> solution from a usability and stability point of view in general.
You can only be plain kidding with this statement. If you split the drivers
from the rest of the kernel, you managed to get rid of this nice (yes, I really
meant nice) monolithic design, where I only need a simple config file to
_update_ to a new kernel revision (_up_, not _down_) and be happy (including
all the drivers). Obviously you just prove yourself wrong - mentioning not
working driver interoperability between NT/2K/XP whatever - with the idea that
it is indeed possible to make major new kernel versions (which should be
getting better btw) without _any_ changes in the driver framework that will
break your nice and stable but _old_ drivers. What's the use of this? You are
not talking about releasing driver-plugin-/framework-patches or the like just
to load _old_ drivers into _new_ kernel-environment?
Is this what they do at MS? Well if, they have not come that far.
> Don't get me wrong, I only run MS Software on 2 of my 8 machines (and
> have been trying to remove one of those with Wine/WineX), but I appreciate
> a better overall solution when I see one.
This brings up memories about reading Peter Nortons' latest hardcore books some
years ago, brrrr.
Reading between your lines, I can well see that you are most probably talking
about closed-source linux-drivers breaking with permanently released new kernel
revisions. But, in fact, this is the closed-source phenomenon, and _not_ linux.
> I will go so far as to say, for the long term this is necessary for the
> survival of Linux, and would help it's health even in the server arena.
You just invented the circle with edges: you are talking about "long-term" and
"MS drivers solution" at the same time. Remember, this company is currently
saying the product cycle is 3 years. I know pretty big companies that haven't
even managed to get the NT drivers really working under W2K, and were just shot
down by XP release.
I tend to believe we could just wait another two MS cycles to have even the
biggest MS-fans converted to kernel-hackers, only because of being real fed up
with the brilliant, long term driver design.
Regards,
Stephan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
[not found] ` <E16Bhtn-0004xf-00@trillium-hollow.org.suse.lists.linux.kernel>
@ 2001-12-05 20:44 ` Andi Kleen
2001-12-05 21:52 ` erich
2001-12-05 23:56 ` Alan Cox
0 siblings, 2 replies; 13+ messages in thread
From: Andi Kleen @ 2001-12-05 20:44 UTC (permalink / raw)
To: erich; +Cc: linux-kernel
erich@uruk.org writes:
>
> MS with Windows (and even DOS) went the right direction here. In fact,
> they have been hurting themselves by what lack of driver interoperability
> there is even between Windows NT/2K/XP. Admittedly they didn't have much
> of a choice with their closed-source scheme, but it still is a better
> solution from a usability and stability point of view in general.
I remember some quote from a Microsoft manager when they released Win2k.
(paraphrased) "A significant percentage of the blue screens in NT4 were
caused by buggy third party drivers." (and then how they will try to avoid
it in the future by having more stringent windows logo tests etc.
The experience in recemt Linux is basically similar. Single Linux has
gained vendor support in drivers it has gotten a lot more unstable
than it used to be (sad but true). There are first a lot more and more
complex drivers than there used to be. A lot of drivers both writen
by individuals and also companies for their are simply crappy buggy
code. I could give you numerous examples here; names withheld to
protect the guilty. For hardware companies it might be because driver
writing is not a profit center, but a cost. There might be other
reasons. There are just a lot of bad drivers around.
[This is not a general insult on driver writers; there are some very well
written drivers, but also unfortunately a lot of bad ones.]
Now when a driver crashes guess who is blamed? Not the driver author
but the Linux kernel is seen as unstable and it effectively is as
a end result - it doesn't work for the user. All just because of bad drivers.
The solution that is tried in Linux land to avoid the "buggy drivers" ->
"linux going to windows levels of stability" trap is to keep drivers in tree
and aggressively auditing them; trying to fix their bugs.
A lot of driver code is actually cut'n'pasted or based
on other driver code (or you can say they often use common design patterns)
Now when a bug/race/.. is found and fixed in one driver having the majority
of drivers in tree makes it actually possible to fix the bug who is likely
in other drivers who use similar code there too. With having drivers in external
trees that crashing/angry user/debugging/etc. would likely need to be done once
per driver; overall causing much more pain for everybody.
Your scheme would make this strategy of tight quality control of
drivers much harder, and I think it wouldn't do good to the long term
stability of linux.
There are other reasons why linux has really no stable driver interface.
Sometimes it is just needed to break drivers to fix some bugs cleanly.
Getting rid of this possibility (fixing bugs cleanly even if it requires
changes in other kernel code) would also cause more bugs in the long term.
-Andi
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 20:28 ` Stephan von Krawczynski
@ 2001-12-05 21:17 ` erich
2001-12-06 16:34 ` Stephan von Krawczynski
0 siblings, 1 reply; 13+ messages in thread
From: erich @ 2001-12-05 21:17 UTC (permalink / raw)
To: Stephan von Krawczynski; +Cc: alan, linux-kernel, jmerkey
Stephan von Krawczynski <skraw@ithnet.com> wrote:
...
> You can only be plain kidding with this statement. If you split the
> drivers from the rest of the kernel, you managed to get rid of this
> nice (yes, I really meant nice) monolithic design, where I only need
> a simple config file to _update_ to a new kernel revision (_up_, not
> _down_) and be happy (including all the drivers).
Hmm. There is little fundamentally incompatible with having splits in
the core kernel and sets of drivers, and getting most of what you want
here.
However, the comment about being "happy (including all the drivers)"
seems a bit naive in my experience. That makes the assumption that the
drivers in the new/old/whatever kernel you change to are necessarily of
the same caliber as the ones you came from, and that is not always true
by any means.
Also, in a world where one values stability, being able to rev
backward is quite important also. The lack of software package tools
like rpm being able to "downgrade" software easily is a serious one in
my mind. What do you do when you install something major and it
breaks, but it has interdependencies on multiple other things?
I don't object to producing well-tested full sets of driver source that
go with kernel versions, I just don't want them to be tied if I have
a need to pull something apart (a driver from one version and from
another are the only ones that run stably), which frankly happens too
often for my taste. Even if it didn't I'd still want it as much as
possibly for the fall-back options it provides.
...
> working driver interoperability between NT/2K/XP whatever - with the
> idea that it is indeed possible to make major new kernel versions (which
> should be getting better btw) without _any_ changes in the driver
> framework that will break your nice and stable but _old_ drivers. What's
> the use of this? You are not talking about releasing driver-plugin-/
> framework-patches or the like just to load _old_ drivers into _new_
> kernel-environment?
> Is this what they do at MS? Well if, they have not come that far.
I didn't go far enough with my comment. I should have said that the
lack of a common driver framework base that works between *all* (or nearly
all, some obsolescence is ok) their Windows versions is a problem.
In the consumer line (win3.1/95/98/me) where they were keeping very good
compatibility across some kinds of drivers (it had it's problems, to be
sure), they were trying the hardest because they recognized that the
most important thing was to just have things work in the first place.
NOTE: I'm not endorsing their overall API convenience (driver or
Win16/Win32), stability, suitability, merchantability, whatever, I'm
just talking about drivers and their distribution model at the moment.
...
> Reading between your lines, I can well see that you are most probably
> talking about closed-source linux-drivers breaking with permanently
> released new kernel revisions. But, in fact, this is the closed-source
> phenomenon, and _not_ linux.
No, though I don't object to closed-source in general per se. I hate it
for myself and businesses I've worked for because I like to be able to
fix/improve/whatever code, but I recognize that the majority of users
out there would never touch code.
My general feeling is that binary drivers are ok/should be supported well
across versions since that is the thing you load in at boot/bring-system-
up time. Having separate (and usually many) step(s) to getting a driver
and having it load on your system is a major and I'm thinking artificial
pain.
In general my argument stems from the same basis that the kernel/user-level
interface does: keeping interfaces stable and removing packaging/bundling
requirements across major boundaries almost always yield a win somewhere.
In the case of MS and drivers, the win they have in convenience to end-users
of all types, and the ability to mix and match drivers forward or backward
up to some limitations in API revisions.
...
> I tend to believe we could just wait another two MS cycles to have even
> the biggest MS-fans converted to kernel-hackers, only because of being
> real fed up with the brilliant, long term driver design.
Most people will never touch code or a compiler, and just want a simple
obvious formula or even to have the system automagically do the Right
Things for you. Even many programmers have limitations of curiousity or
energy, and it isn't a bad thing to organize even core system things to
be easy.
MS may be stupid/annoying in other ways, but they know this and have
moved toward it, albeit sluggishly at times.
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 20:44 ` Loadable drivers [was SMP/cc Cluster description ] Andi Kleen
@ 2001-12-05 21:52 ` erich
2001-12-05 23:56 ` Alan Cox
1 sibling, 0 replies; 13+ messages in thread
From: erich @ 2001-12-05 21:52 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-kernel
Andi Kleen <ak@suse.de> wrote:
> erich@uruk.org writes:
>
> > MS with Windows (and even DOS) went the right direction here. In fact,
> > they have been hurting themselves by what lack of driver interoperability
> > there is even between Windows NT/2K/XP. Admittedly they didn't have much
> > of a choice with their closed-source scheme, but it still is a better
> > solution from a usability and stability point of view in general.
>
> I remember some quote from a Microsoft manager when they released Win2k.
> (paraphrased) "A significant percentage of the blue screens in NT4 were
> caused by buggy third party drivers." (and then how they will try to avoid
> it in the future by having more stringent windows logo tests etc.
Sure. Though if they really cared enough, they could have a
"safe-driver" mode that would run the drivers in protected address
spaces or something. There is a performance loss associated with this
obviously, but it would be a great way to run drivers while testing them
out, or if you had a critical need and a driver would eat itself
occasionally.
> The experience in recemt Linux is basically similar. Single Linux has
> gained vendor support in drivers it has gotten a lot more unstable
> than it used to be (sad but true). There are first a lot more and more
> complex drivers than there used to be. A lot of drivers both writen
> by individuals and also companies for their are simply crappy buggy
> code. I could give you numerous examples here; names withheld to
> protect the guilty. For hardware companies it might be because driver
> writing is not a profit center, but a cost. There might be other
> reasons. There are just a lot of bad drivers around.
[see above comment about a "safe-driver" mode... I'm already working
on this for my own OS project, and have been moderately tempted to do
it for Linux (as well as an automatic buffer-overflow protector) ]
I'm not disagreeing with you, in fact this is the major reason I'd want
such a framework.
You can pick the drivers that way relatively easily, and stick to the ones
you know work!! Right now, that is very difficult (and effectively
impossible for most) if you rev anything kernel/driver-related.
There could even be a website that maintained info about drivers and
known-working versions. Having such info for the kernel tree wouldn't
be a bad idea as is.
The distribution folks could work with the general community on this
pretty easily I'd guess.
> Now when a driver crashes guess who is blamed? Not the driver author
> but the Linux kernel is seen as unstable and it effectively is as
> a end result - it doesn't work for the user. All just because of bad
> drivers.
>
> The solution that is tried in Linux land to avoid the "buggy drivers" ->
> "linux going to windows levels of stability" trap is to keep drivers in
> tree and aggressively auditing them; trying to fix their bugs.
This works kind of fine when you're talking about developers (though the
problems I mention below aren't completely aleviated either, just not as
bad). For random people or even IT folks trying to maintain some systems
I would say this is not a feature.
Their only alternative right now is to try out things that work for them
in a very coarse-grained manner ("try out this kernel" : "hmm, didn't work").
A good example is if you need a driver for some new bit of hardware...
you often have to rev your entire kernel/driver tree to get it. Most would
have no choice but to do so unless hand-held by a kernel hacker.
If it breaks something else (which happens often enough) then you're just
SOL.
I.e. I think too many things are tied together for non-hackers.
> A lot of driver code is actually cut'n'pasted or based
> on other driver code (or you can say they often use common design patterns)
> Now when a bug/race/.. is found and fixed in one driver having the majority
> of drivers in tree makes it actually possible to fix the bug who is likely
> in other drivers who use similar code there too. With having drivers in
> external trees that crashing/angry user/debugging/etc. would likely need
> to be done once per driver; overall causing much more pain for everybody.
>
> Your scheme would make this strategy of tight quality control of
> drivers much harder, and I think it wouldn't do good to the long term
> stability of linux.
Not necessarily at all.
You're talking about 2 things:
Driver maintenance: This mostly need not change, so your example of fixing
problems is the same.
Driver/kernel error reporting: I say the same thing as I said about MS:
that if we cared enough, we'd have a "safe-driver" framework and driver/
module versioning so that we can tell pretty much exactly where the
problem occured. You don't use it all the time by any means, but if you
want to get a report answered, there would be some trivial way to turn it
on.
[The "safe-driver" thing obviously may not be the identical footprint so
a crash may not happen the same way or at all, but if it doesn't happen,
then hey, you have a way to run stably, which for most people that is
enough]
Note that MS has been getting a lot of pushback from people about the
inclusion of third-party drivers (to the point where they've partially
disabled the "signed drivers" thing by default, falling back from an
earlier position in the Win XP beta of not accepting them without some
major gyrations on the part of the poor person trying to just run their
hardware). Just saying "no" isn't that supportable a position.
For example, I think the "module tainted" thing is not terribly useful
along the lines of really fixing bugs. It may be an indicator and tell
the core kernel folks when not to "waste their time on some binary-only
bug", but I'm not sure what else it does.
> There are other reasons why linux has really no stable driver interface.
> Sometimes it is just needed to break drivers to fix some bugs cleanly.
> Getting rid of this possibility (fixing bugs cleanly even if it requires
> changes in other kernel code) would also cause more bugs in the long term.
This is of course a different problem, but it's unclear if it's one that
would cause more bugs.
Unstable interfaces between major subsystems are often a sign of lack of
design. [ok, I'm flamebait, but at least I'll be warm-n-toasty now that
it's colder outside]
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 20:44 ` Loadable drivers [was SMP/cc Cluster description ] Andi Kleen
2001-12-05 21:52 ` erich
@ 2001-12-05 23:56 ` Alan Cox
1 sibling, 0 replies; 13+ messages in thread
From: Alan Cox @ 2001-12-05 23:56 UTC (permalink / raw)
To: Andi Kleen; +Cc: erich, linux-kernel
> The solution that is tried in Linux land to avoid the "buggy drivers" ->
> "linux going to windows levels of stability" trap is to keep drivers in tree
> and aggressively auditing them; trying to fix their bugs.
We need to teach Linus about "taste" in drivers. His core code taste is
impeccable, but I'm not fond of his driver taste ;)
Alan (currently cleaning up NCR5380)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 19:40 ` Loadable drivers [was SMP/cc Cluster description ] erich
2001-12-05 20:04 ` erich
2001-12-05 20:28 ` Stephan von Krawczynski
@ 2001-12-06 4:49 ` Keith Owens
2001-12-07 0:41 ` erich
2 siblings, 1 reply; 13+ messages in thread
From: Keith Owens @ 2001-12-06 4:49 UTC (permalink / raw)
To: erich; +Cc: linux-kernel
On Wed, 05 Dec 2001 11:40:07 -0800,
erich@uruk.org wrote:
>Build a framework for an external "drivers" source/binary tree that can be
>(via a single command) rebuilt for a different Linux kernel version. This
>is arguably a Linux distribution thing.
kbuild 2.5. Already done.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-05 21:17 ` erich
@ 2001-12-06 16:34 ` Stephan von Krawczynski
2001-12-06 20:14 ` Kai Henningsen
2001-12-07 0:37 ` erich
0 siblings, 2 replies; 13+ messages in thread
From: Stephan von Krawczynski @ 2001-12-06 16:34 UTC (permalink / raw)
To: erich; +Cc: alan, linux-kernel, jmerkey
On Wed, 05 Dec 2001 13:17:47 -0800
erich@uruk.org wrote:
> Stephan von Krawczynski <skraw@ithnet.com> wrote:
> > You can only be plain kidding with this statement. If you split the
> > drivers from the rest of the kernel, you managed to get rid of this
> > nice (yes, I really meant nice) monolithic design, where I only need
> > a simple config file to _update_ to a new kernel revision (_up_, not
> > _down_) and be happy (including all the drivers).
>
> Hmm. There is little fundamentally incompatible with having splits in
> the core kernel and sets of drivers, and getting most of what you want
> here.
There is. You double the administrational work. Most updates are performed
because you want the latest bugfixes. If you get more bugfixes than you
intended - lucky.
Currently you draw the latest kernel-tree (or the latest _you_ like to use),
use your old .config and it works out - as long as you do not use closed-source
drivers.
If you split things up, you draw _two_ archives, compile and install both.
> However, the comment about being "happy (including all the drivers)"
> seems a bit naive in my experience. That makes the assumption that the
> drivers in the new/old/whatever kernel you change to are necessarily of
> the same caliber as the ones you came from, and that is not always true
> by any means.
Oops. Then you have a severe problem in understanding how linux _should_ be
worked with. Obviously you can go and buy some distribution and it may work out
pretty well. But being a serious administrator you _will_ do kernel updates
apart from the distro (sooner or later). If there are drivers in a newer kernel
release, that do not work any longer, compared to an older release, you should
say so. Best place would be the listed maintainer. Because if it doesn't do the
job for your configuration any longer, chances are high others were hit, too.
The maintainer cannot know, if you do not tell him.
I guess we have the mutual agreement here, that maintained drivers should get
better not worse through the revisions. This means configurations once
successful are not meant to break later on.
This basically is what I intended to say with "being happy" :-)
> Also, in a world where one values stability, being able to rev
> backward is quite important also. The lack of software package tools
> like rpm being able to "downgrade" software easily is a serious one in
> my mind. What do you do when you install something major and it
> breaks, but it has interdependencies on multiple other things?
This isn't kernel-related, is it? You can always boot the previous kernel (and
drivers), if you updated correctly. I am talking about revision-updates, not
major updates (like from 2.0 to 2.2). Major update will break mostly. But -
frankly spoken - it should. If you are using a bunch of very old binaries, you
should be driven to update these anyway.
> I don't object to producing well-tested full sets of driver source that
> go with kernel versions, I just don't want them to be tied if I have
> a need to pull something apart (a driver from one version and from
> another are the only ones that run stably), which frankly happens too
> often for my taste. Even if it didn't I'd still want it as much as
> possibly for the fall-back options it provides.
Can you give a striking example for this? (old driver ok, new driver broken,
both included in kernel releases)
> I didn't go far enough with my comment. I should have said that the
> lack of a common driver framework base that works between *all* (or nearly
> all, some obsolescence is ok) their Windows versions is a problem.
Which means: it does not work there.
> In the consumer line (win3.1/95/98/me) where they were keeping very good
> compatibility across some kinds of drivers (it had it's problems, to be
> sure), they were trying the hardest because they recognized that the
> most important thing was to just have things work in the first place.
I honour they were _trying_, only it was not successful. I wrote drivers for
all noted versions above and can tell you: it is a _mess_.
> NOTE: I'm not endorsing their overall API convenience (driver or
> Win16/Win32), stability, suitability, merchantability, whatever, I'm
> just talking about drivers and their distribution model at the moment.
Ok, lets put it this way: they use a completely split up model of driver
maintenance to get the most out of the market (anybody can release anything at
anytime and any quality and interoperability), and therefore everything tends
to be severly broken and complex in administration. You have to draw the latest
drivers for your graphics card, scsi card, scanner, printer, USB equipment,
even monitor from the respective source (manufacturer), install it seperately
and pray it does not shoot your last driver installation from different
hardware component - which it does in a significant percentage. And if you
upgrade from (e.g.) win95 to win98, you will draw all drivers again and
completely reinstall everything.
To tell the pure truth: nobody cares about anything on w*indoze.
> > Reading between your lines, I can well see that you are most probably
> > talking about closed-source linux-drivers breaking with permanently
> > released new kernel revisions. But, in fact, this is the closed-source
> > phenomenon, and _not_ linux.
>
> No, though I don't object to closed-source in general per se. I hate it
> for myself and businesses I've worked for because I like to be able to
> fix/improve/whatever code, but I recognize that the majority of users
> out there would never touch code.
They _should_ not do that. And they _need_ not do that today. The distros
really got very far on the path to the real lusers, that don't know much and
don't want to learn anything. This is ok.
I mean have you had a look at the latest distros, I found it amazing how far
things have already come. You can install client systems under linux in 20% of
the time you would need for _any_ windows.
> My general feeling is that binary drivers are ok/should be supported well
> across versions since that is the thing you load in at boot/bring-system-
> up time. Having separate (and usually many) step(s) to getting a driver
> and having it load on your system is a major and I'm thinking artificial
> pain.
I have learned something over the recent years: I guess RMS pointed in the
right direction. I _don't_ think binary drivers are ok. I want to control my
environment, and don't let _anybody_ control it _for_ me. And if something goes
wrong, I have a look. And if I am too dumb, I can ask somebody who isn't. And
there may be a lot of those.
> In general my argument stems from the same basis that the kernel/user-level
> interface does: keeping interfaces stable and removing packaging/bundling
> requirements across major boundaries almost always yield a win somewhere.
Carl Sagan "The Demon Haunted World":
"If there is a chain of argument every link in the chain must work."
> In the case of MS and drivers, the win they have in convenience to end-users
> of all types, and the ability to mix and match drivers forward or backward
> up to some limitations in API revisions.
Ah, yes. Indeed I am one of those thinking that a driver should _work_, I do
not measure its quality on the number of versions available - and loadable in
my environment. If I have to this, the driver is _broken_.
But yes, you are right: 99% of all w-users obviously think internet is designed
for downloading the latest w-drivers, and it is a definitive must to have all
revisions to find one working.
> > I tend to believe we could just wait another two MS cycles to have even
> > the biggest MS-fans converted to kernel-hackers, only because of being
> > real fed up with the brilliant, long term driver design.
>
> Most people will never touch code or a compiler, and just want a simple
> obvious formula or even to have the system automagically do the Right
> Things for you. Even many programmers have limitations of curiousity or
> energy, and it isn't a bad thing to organize even core system things to
> be easy.
I talked about the developers, but even talking about users, I do believe that
...
> MS may be stupid/annoying in other ways, but they know this and have
> moved toward it, albeit sluggishly at times.
... it is not their ultimate goal to let MS control their lives. You think this
is over-estimation? They are already handing out electronic _passports_, sorry,
but in my understanding of democracy this is not done by commercial companies.
This is what a state is all about - knowing and identifying its citizens - and
no one _else_.
MS is not stupid. I won't tell you what it is though, find out yourself.
Regards,
Stephan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-06 16:34 ` Stephan von Krawczynski
@ 2001-12-06 20:14 ` Kai Henningsen
2001-12-07 0:37 ` erich
1 sibling, 0 replies; 13+ messages in thread
From: Kai Henningsen @ 2001-12-06 20:14 UTC (permalink / raw)
To: linux-kernel
skraw@ithnet.com (Stephan von Krawczynski) wrote on 06.12.01 in <20011206173455.104b6a02.skraw@ithnet.com>:
> I have learned something over the recent years: I guess RMS pointed in the
> right direction. I _don't_ think binary drivers are ok. I want to control my
> environment, and don't let _anybody_ control it _for_ me. And if something
> goes wrong, I have a look. And if I am too dumb, I can ask somebody who
> isn't. And there may be a lot of those.
And it is absolutely amazing what you *can* do, if you have the soure,
what you never expected to be able to do, but because you *do* have the
source, you just *have* to look at the problem area ... and poof! there's
something that certainly doesn't look right, maybe if you just try to
change this little bit ...
And thus you learn something new which you wouldn't even have tried with
closed source.
It's not only this. I remember when I first tried to get PPP to work - no,
wait, back then it was SLIP. (Slightly before Linux 1.0, I think.) It just
wouldn't work, and I had no idea why. Obviously I was doing something
wrong, but what?
So I looked at the relevant kernel part. Still rather unclear, but the
data has to go through *here* ... now suppose I insert a printk there, and
one there, and then reboot and retry and watch syslog ... aha! (Well,
actually, it took me several passes, and I don't remember what the problem
turned out to be except it wasn't a kernel bug.)
MfG Kai
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-06 16:34 ` Stephan von Krawczynski
2001-12-06 20:14 ` Kai Henningsen
@ 2001-12-07 0:37 ` erich
2001-12-07 13:34 ` Stephan von Krawczynski
1 sibling, 1 reply; 13+ messages in thread
From: erich @ 2001-12-07 0:37 UTC (permalink / raw)
To: Stephan von Krawczynski; +Cc: alan, linux-kernel, jmerkey
Stephan von Krawczynski <skraw@ithnet.com> wrote:
> erich@uruk.org wrote:
>
> > Hmm. There is little fundamentally incompatible with having splits in
> > the core kernel and sets of drivers, and getting most of what you want
> > here.
>
> There is. You double the administrational work. Most updates are
> performed because you want the latest bugfixes. If you get more bugfixes
> than you intended - lucky.
> Currently you draw the latest kernel-tree (or the latest _you_ like to
> use), use your old .config and it works out - as long as you do not use
> closed-source drivers.
And if something breaks out of it - unlucky?
I again think your statement that "...and it works out" is naive.
See below for more.
> If you split things up, you draw _two_ archives, compile and install
> both.
Actually, that's something of my point.
I think the control to install one or the other, certainly for the
systems I want to be most reliable (firewalls/other servers), is of
high benefit, hence my proposing this in the first place.
All these things tied together means they all stand or fall together
for most people, it's only people like many on this list or other
kernel hackers that end up being able to do anything about it.
There are many important reasons why those in charge of so many
production computing environments around the world try to, when
faced with some broken component, want to *only* change that one
and not all or even a large subset of them. It is risky.
Even if you want to upgrade wholesale, then the ability to rev
backward something that doesn't work in the new set, but you know
works in the old form, is very valuable.
> Oops. Then you have a severe problem in understanding how linux _should_
> be worked with. Obviously you can go and buy some distribution and it
> may work out pretty well. But being a serious administrator you _will_
> do kernel updates apart from the distro (sooner or later). If there are
> drivers in a newer kernel release, that do not work any longer, compared
> to an older release, you should say so. Best place would be the listed
> maintainer. Because if it doesn't do the job for your configuration any
> longer, chances are high others were hit, too.
> The maintainer cannot know, if you do not tell him.
> I guess we have the mutual agreement here, that maintained drivers
> should get better not worse through the revisions. This means
> configurations once successful are not meant to break later on.
> This basically is what I intended to say with "being happy" :-)
OK, you're telling me that people "should fix it", but my point, and
one I haven't heard any contradiction to yet, is that often enough
people don't.
So, the response has been to hold the drivers close in so when
interfaces change/a bug is found, they can all be changed together.
I think there is some merit to that when you find a bug, but
otherwise this becomes a statistical shooting gallery.
My reasoning? Each time driver code is touched, in particular without
testing done afterward, there is some probability of another bug
being induced.
> > I don't object to producing well-tested full sets of driver source that
> > go with kernel versions, I just don't want them to be tied if I have
> > a need to pull something apart (a driver from one version and from
> > another are the only ones that run stably), which frankly happens too
> > often for my taste. Even if it didn't I'd still want it as much as
> > possibly for the fall-back options it provides.
>
> Can you give a striking example for this? (old driver ok, new driver
> broken, both included in kernel releases)
Not really striking per se, but 2 off of the top of my head I've had to
deal with:
-- integrated 10/100 MBit Enet network in a SiS735 motherboard,
effectively SiS900 chipset. Worked fine in later RH 7.1
kernel (2.4.3-rhat), but not with 7.2 kernel(s) (2.4.7-rhat &
2.4.9-rhat).
-- drivers for the Lucent pcmcia Orinoco series of cards work/
don't work across different revisions from 2.4.0-ish -> present.
Yes, I've reported various problems with other bits before, and
debugged some of my own, submitted patches, etc.
You can make the argument that some of them are young drivers/etc., but
that just proves my point that I want the control, not just for me, but
for others to easily load across drivers across different kernel
versions.
My issue with the current process is that it's developer-centric, and
though I've been able to work past these problems, none of the non-
kernel hackers I've known would generally care to.
In fact, several others who I know with similar hardware just gave up
when I told them they had to install a kernel/hacked driver patches.
> Ok, lets put it this way: they use a completely split up model of
> driver maintenance to get the most out of the market (anybody can
...
> hardware component - which it does in a significant percentage. And if
> you upgrade from (e.g.) win95 to win98, you will draw all drivers again
> and completely reinstall everything.
>
> To tell the pure truth: nobody cares about anything on w*indoze.
I can't believe you just said that. Maybe nobody *on this list*, but
in general, this makes it hard to take you at all seriously.
...
> > My general feeling is that binary drivers are ok/should be supported well
> > across versions since that is the thing you load in at boot/bring-system-
> > up time. Having separate (and usually many) step(s) to getting a driver
> > and having it load on your system is a major and I'm thinking artificial
> > pain.
>
> I have learned something over the recent years: I guess RMS pointed in the
> right direction. I _don't_ think binary drivers are ok. I want to control
> my environment, and don't let _anybody_ control it _for_ me. And if
> something goes wrong, I have a look. And if I am too dumb, I can ask
> somebody who isn't. And there may be a lot of those.
Huh? I didn't ask you to use them.
I'm just pointing out that binary drivers are the end-product (you don't
"insmod driver.c"), so it's kind of hard to just hand-wave them out of
existence. Not everyone has a fully self-hosted system with compilers
just sitting around to do your bidding.
Also, the model you present above is only suitable for a small fraction
of users. It is irrelevant to most users if the code is fixable. If
it doesn't work as is and there is no easy other thing they can try,
it is effectively broken.
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-06 4:49 ` Keith Owens
@ 2001-12-07 0:41 ` erich
0 siblings, 0 replies; 13+ messages in thread
From: erich @ 2001-12-07 0:41 UTC (permalink / raw)
To: Keith Owens; +Cc: linux-kernel
Keith Owens <kaos@ocs.com.au> wrote:
> On Wed, 05 Dec 2001 11:40:07 -0800,
> erich@uruk.org wrote:
> >Build a framework for an external "drivers" source/binary tree that can be
> >(via a single command) rebuilt for a different Linux kernel version. This
> >is arguably a Linux distribution thing.
>
> kbuild 2.5. Already done.
Cool. Thanks for the good work guys!
[dang, now I have to go off and learn all about kbuild 2.5...]
--
Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/
"Reality is truly stranger than fiction; Probably why fiction is so popular"
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Loadable drivers [was SMP/cc Cluster description ]
2001-12-07 0:37 ` erich
@ 2001-12-07 13:34 ` Stephan von Krawczynski
0 siblings, 0 replies; 13+ messages in thread
From: Stephan von Krawczynski @ 2001-12-07 13:34 UTC (permalink / raw)
To: erich; +Cc: alan, linux-kernel, jmerkey
On Thu, 06 Dec 2001 16:37:36 -0800
erich@uruk.org wrote:
> > If you split things up, you draw _two_ archives, compile and install
> > both.
>
> Actually, that's something of my point.
>
> I think the control to install one or the other, certainly for the
> systems I want to be most reliable (firewalls/other servers), is of
> high benefit, hence my proposing this in the first place.
Only in an environment with little evolution going on. But whats the use of
updating anyway, then?
Another thing that really jumps right into my face from your arguments:
you say "administrator needs to have a way to change core kernel, without
changing any drivers, and is not able to read and understand the source of both
core and drivers, so it is best for him to change as little as possible."
But wait: how does _he_ know then, that a standard update (kernel _and_
drivers, as currently) will not work. I mean, you trust the work of some people
building one set of core and drivers, but do not trust the same people to give
you a newer set of core and drivers? And all this, although you are not able or
willing to have a look at the _sources_ to really make sure.
I am definitely not fond of the proposed MS idea, that anybody can administrate
any server, he only needs to know how to perform mouse-clicks. If you can't
drive a car, you should probably not take the seat at the drivers side.
> All these things tied together means they all stand or fall together
> for most people, it's only people like many on this list or other
> kernel hackers that end up being able to do anything about it.
What is wrong with this idea? If you are joe-user, then take your preferred
distro and live with it (quite well nowadays). If you are an experienced user,
then tune your setup according to your needs. If you are really good at it,
then get yourself a job as an administrator for servers people work and rely on
- and read sources. And last, if you have some ideas, go ahead and write source
and give it to the public to verify and tune its quality. And if your real good
it may well be, that god will take your code and you suddenly become one of the
kernel-driver-maintainers. This is a pretty simple and straight-forward world.
And there is noone coming round the corner and tell you: "btw, we changed the
world just yesterday, everything is easy, only you should throw away your old
code."
> There are many important reasons why those in charge of so many
> production computing environments around the world try to, when
> faced with some broken component, want to *only* change that one
> and not all or even a large subset of them. It is risky.
I really don't get it: if your system works, why upgrade? if your system does
not work: why did you give it to the people in the first place?
> Even if you want to upgrade wholesale, then the ability to rev
> backward something that doesn't work in the new set, but you know
> works in the old form, is very valuable.
Ever heard of lilo? It can boot multiple kernel-images. And guess what: they
are all finding their corresponding modules if you do it right.
> OK, you're telling me that people "should fix it", but my point, and
> one I haven't heard any contradiction to yet, is that often enough
> people don't.
Interesting. I in fact never heard of anyone complaining about a driver (that
is maintained) that does not get fixed if you tell the people about a problem.
If they don't have the hardware to test, simply give it to them.
> My reasoning? Each time driver code is touched, in particular without
> testing done afterward, there is some probability of another bug
> being induced.
There is always another bug. This is fundamental in software development. This
is why it is really important to talk about bugs you came across. If you do not
use new code, no code will ever become better.
> > Can you give a striking example for this? (old driver ok, new driver
> > broken, both included in kernel releases)
>
> Not really striking per se, but 2 off of the top of my head I've had to
> deal with:
>
> -- integrated 10/100 MBit Enet network in a SiS735 motherboard,
> effectively SiS900 chipset. Worked fine in later RH 7.1
> kernel (2.4.3-rhat), but not with 7.2 kernel(s) (2.4.7-rhat &
> 2.4.9-rhat).
Okay, this is my personal tip for administrators: do not use distro-kernels, do
use linus-kernels, and do not update to very fresh ones. If you wanna be
brilliant, read LKML to know whats going on. This is no hint for joe-user.
> -- drivers for the Lucent pcmcia Orinoco series of cards work/
> don't work across different revisions from 2.4.0-ish -> present.
Haha. This is a real good example for real life not matching my ideas, perhaps
david hinds and linus should find some solution for it. If you want to have a
working set of lucent pcmcia you need to draw the latest pcmcia-package and
tools from david and install them on top of standard kernel. This has worked
since the civil war, believe me, I use it everyday with _lots_ of different
kernels and hardware setups. Only annoying part: it is not part of the kernel.
Therefore it is pretty interesting to hear you complaining about a _split away_
drivers' issue. :-)
> My issue with the current process is that it's developer-centric, and
> though I've been able to work past these problems, none of the non-
> kernel hackers I've known would generally care to.
Tell you what, this happened about 2 months ago:
I build a nice and simple hardware for a desktop. It contained Asus Board,
PIII-500, 512MB, ATI graphics card, IDE-10G-hd and ATAPI cdrom, keyboard,
PS/2-mouse and soundblaster . It didn't look all that non-standard.
I tried to install:
win95-orig:
install fails right away, win95 cannot CD-boot
win98:
doesn't install with 512 MB, install fails.
win ME:
doesn't even get recognised by the BIOS as bootable CD
win 2K:
hangs in hardware detection cycle, I switched it off after 3 hours of continous
hd seeking at about 50%.
SuSE 7.2 (Linux):
install takes about 15 minutes, everything works.
What do we learn of this: win scales everybody down to joe-user-level, and you
cannot do a thing against it. I guess it is definitely not developer-centric.
> > To tell the pure truth: nobody cares about anything on w*indoze.
>
> I can't believe you just said that. Maybe nobody *on this list*, but
> in general, this makes it hard to take you at all seriously.
I have seen to many things on windows to come to a different conclusion.
> Also, the model you present above is only suitable for a small fraction
> of users. It is irrelevant to most users if the code is fixable. If
> it doesn't work as is and there is no easy other thing they can try,
> it is effectively broken.
Again, you are talking about joe-user here. If joe-user has a problem, he
should call up the distro-hotline he bought, they will help him with
installation problems (mostly for free). He does not need a compiler or
anything.
And the experienced guy (or girl, hey there are some :-) will have a large
number of options available, including the source and his (her) brain.
Regards,
Stephan
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2001-12-07 13:35 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <E16BY3e-0005S9-00@the-village.bc.nu.suse.lists.linux.kernel>
[not found] ` <E16Bhtn-0004xf-00@trillium-hollow.org.suse.lists.linux.kernel>
2001-12-05 20:44 ` Loadable drivers [was SMP/cc Cluster description ] Andi Kleen
2001-12-05 21:52 ` erich
2001-12-05 23:56 ` Alan Cox
2001-12-05 9:09 SMP/cc Cluster description [was Linux/Pro] Alan Cox
2001-12-05 19:40 ` Loadable drivers [was SMP/cc Cluster description ] erich
2001-12-05 20:04 ` erich
2001-12-05 20:28 ` Stephan von Krawczynski
2001-12-05 21:17 ` erich
2001-12-06 16:34 ` Stephan von Krawczynski
2001-12-06 20:14 ` Kai Henningsen
2001-12-07 0:37 ` erich
2001-12-07 13:34 ` Stephan von Krawczynski
2001-12-06 4:49 ` Keith Owens
2001-12-07 0:41 ` erich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox