linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* RE: Driver Model 2 Proposal - Linux Kernel Performance v Usability
@ 2003-09-05 20:53 Chad Kitching
  2003-09-05 23:30 ` Mike Fedyk
  0 siblings, 1 reply; 47+ messages in thread
From: Chad Kitching @ 2003-09-05 20:53 UTC (permalink / raw)
  To: Mike Fedyk; +Cc: linux-kernel


From: Mike Fedyk [mailto:mfedyk@matchmail.com]
> Here is one thing we don't have standardized across the entire Linux
> distribution landscape.
> 
> What you need is a project that will take the top 10 
> distributions, and do
> this however each distribution does their thing:
> 
>  o identify the current kernel running (you're going to use the kernel
>    you're running, right?)

Not to mention on boot-up check to make sure the module still loads 
without warnings on the current kernel (or make sure the module exists 
in the current /lib/modules directory.
   
>  o download the kernel source for the running kernel

Problem: Most distributors modify their kernel somewhat.  Some enough 
to cause binary module incompatibility with the 'stock' kernel.  
Matching running kernel and source code kernel would be tricky, to
say the least.
 
>  o install the source in some temporary location

Why not just make the includes directory get installed somewhere.  
Somewhere like /lib/modules/`uname -r`/build/includes (especially since
make install puts a symlink at /lib/modules/`uname -r`/build anyway)
You also need to prep the extracted kernel with the proper .config, etc.
which isn't always in the source package from some distributors.

>  o compile against the downloaded kernel source
> 
>  o install the module under /lib/modules
> 
>  o load the module (with the corect optional parameters)

The biggest problem is people not having installed the C compiler, and 
related tools.  Or having not installed the kernel headers matching 
their version of the kernel.

^ permalink raw reply	[flat|nested] 47+ messages in thread
* RE: Driver Model 2 Proposal - Linux Kernel Performance v Usability
@ 2003-09-04 22:41 Chad Kitching
  0 siblings, 0 replies; 47+ messages in thread
From: Chad Kitching @ 2003-09-04 22:41 UTC (permalink / raw)
  To: jimwclark; +Cc: linux-kernel

From: James Clark [mailto:jimwclark@ntlworld.com]
> 
> Thank you for this (and the few other) sensible appraisal of 
> my 'proposal'. 
> 
> I'm very surprised by the number of posts that have ranted 
> about Open/Close source, GPL/taint issues etc. This is not
> about source code it is about making Linux usable by the 
> masses. It may be technically superior to follow the current 
> model, but if the barrier to entry is very high (and it is!) 
> then the project will continue to be a niche project. A 
> binary model doesn't alter the community or the benefits 
> of public source code. I agree that it is an extra interface 
> and will carry a performance hit - I think this is worth it. 
> Windows has many faults but drivers are often compatible across 
> major releases and VERY compatible across minor releases. It 
> is no accident that it has 90% of the desktop market. If we are 
> going to improve this situation this issue MUST be confronted.

I'll admit, I don't see how a binary only interface helps easy of use.  For the most part, common users in the Windows world can't handle installing a driver any better than they would be able to in Linux.

Now, before going any further with your proposal, look at http://www.projectudi.org/, who were commited to doing exactly what you propose with even more ambition dreams of cross OS compatibility.  It was a Caldera/SCO project, so it's more than likely dead on the Linux side, but you can see the technical description, specifications, and even source code for this type of  endevour.

You can read the some of the UDI debate at:
http://lkml.org/lkml/1998/9/18/37
http://lkml.org/lkml/1998/8/31/63

The problems with such an API are very numerous.  For an example, just look at Windows NT 4.0 versus Windows 2000 versus Windows XP or Windows 95->Windows 98->Windows 98SE->Windows ME.  In both those cases, the individual revisions have the same basic driver model, but added features in each made drivers from the previous one more or less incompatible with the newly released OS.  Now, lets assume a project like UDI was accepted into Linux.  What would happen when technology evolves, and the old stuff becomes obsolete?  Will Linux have to always refer to devices on fancy new buses as if they were on old PCI buses?  What happens when some core OS bug fix breaks three or four different drivers?  Will Linux have to incorporate bug workarounds for those defective drivers?  What will happen when the binary API for device drivers starts making the Windows DDK look simple?  The Linux module API is very, very simple compared to most other OS's driver API.  Someone can learn to make their first kernel driver in a few hours, and even have it talking to hardware within that time.

Source code for drivers is an advantage for Linux.  It ensures that anyone can have a chance to fix quirky bugs that are getting in the way of them using their computer to it's fullest.  I used to have problems with some particular 3c905 cards with Linux 2.4.  If I had been using binary drivers, my only recourse would be to try and pester the vendor (3COM) for a fix.  Instead, I found a trivial patch to the kernel that I applied, and recompiled, and got the cards working without a hitch.  You could try to argue that the commerical released driver would not have a problem like this, but it would likely also come with a compatibility list that only said it works on Red Hat 6.2, and Red Hat 7.0, and with me running Debian, I'd be out of luck -- no support, even if it SHOULD work.

The reality is that most people will simply use whatever their distributor has given them.  If it's Red Hat, they'll use whatever came with their Red Hat CDs.  If it came with a handy CD with install instructions, they might try to install that.  Otherwise, they'll hire a qualified person to do the work for them, exactly as if it were a Windows machine.  There have been no end of the people who insist that Linux is too hard to use because compiling the kernel is too difficult, and the obvious suggestion is then, to not compile the kernel and just use whatever your distributor gave you instead!  Most people won't need to worry about the source code, and may never need to touch it, but the fact that it's there for them, gives them some power that they otherwise would not have.

^ permalink raw reply	[flat|nested] 47+ messages in thread
* Driver Model 2 Proposal - Linux Kernel Performance v Usability
@ 2003-09-03 17:53 James Clark
  2003-09-03 17:49 ` Andre Hedrick
                   ` (5 more replies)
  0 siblings, 6 replies; 47+ messages in thread
From: James Clark @ 2003-09-03 17:53 UTC (permalink / raw)
  To: linux-kernel; +Cc: rml, root, mochel, alan

Following my initial post yesterday please find attached my proposal for a 
binary 'plugin' interface:

This is not an attempt to have a Microkernel, or any move away from GNU/OSS 
software. I believe that sometimes the ultimate goals of stability and 
portability get lost in the debate on OSS and desire to allow anyone to 
contribute. It is worth remembering that for every Kernel hacker there must 
be 1000's of plain users. I believe this proposal would lead to better 
software and more people using it.

Proposal
-----------
1. Implement binary kernel 'plugin' interface
2. Over time remove most existing kernel 'drivers' to use new interface - This 
is NOT a Microkernel.
3. Design 'plugin' interface to be extensible as possible and then rarely 
remove support from interface. Extending interface is fine but should be done 
in a considered way to avoid interface bloat. Suggest interface supports 
dependant 'plugins'
4. Allow 'plugins' to be bypassed at boot - perhaps a minimal 'known good' 
list
5. Ultimately, even FS 'plugins' could be created although IPL would be 
required to load these. 
6. Code for Kernel, Interface and 'plugins' would still be GPL. This would not 
prevent the 'tainted' system idea. 

Expected Outcomes
------------------------

1. Make Linux easier to use
2. The ability to replace even very core Kernel components without a restart.
3. Allow faulty 'plugins' to be fixed/replaced in isolation. No other system 
impact.
4. 'Plugins' could create their own interfaces as load time. This would remove 
the need to pre-populate /dev. 
5. Remove need for joe soap user to often recompile Kernel.
6. Remove link between specific module versions and Kernel versions.
7. Reduce need for major Kernel releases. Allow effort to concentrate on 
improving Kernel not maintaining ever increasing Kernel source that includes 
support for the 'Kitchen Sink'
8. Make core Kernel more stable. Less releases and less changes mean less 
bugs. It would be easy to identify offending 'plugin' by simply starting up 
the Kernel with it disabled.
9. Remove need for modules to be maintained in sync with each Kernel thus 
freeing 'module' developers to add improved features or work on new projects.

James



^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2003-09-15 11:38 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1062637356.846.3471.camel@cube>
2003-09-04 20:14 ` Driver Model 2 Proposal - Linux Kernel Performance v Usability James Clark
2003-09-04 20:27   ` Mike Fedyk
2003-09-04 21:16     ` James Clark
2003-09-04 21:50       ` Mike Fedyk
2003-09-04 22:10       ` insecure
2003-09-04 22:01     ` jdow
2003-09-04 20:29   ` Rik van Riel
2003-09-04 21:12     ` James Clark
2003-09-04 21:40       ` Alan Cox
2003-09-04 21:41       ` Bartlomiej Zolnierkiewicz
2003-09-04 22:19       ` Jamie Lokier
2003-09-04 21:29   ` Richard B. Johnson
2003-09-04 21:51     ` James Clark
2003-09-04 22:06       ` Alan Cox
2003-09-04 22:10       ` Martin Mares
2003-09-04 22:23       ` Gustav Petersson
2003-09-05 17:52       ` Valdis.Kletnieks
2003-09-05 18:31         ` James Clark
2003-09-05 18:59           ` Martin Schlemmer
2003-09-05 19:12           ` Dale P. Smith
2003-09-05 19:45             ` Stan Bubrouski
2003-09-05 19:59           ` Richard B. Johnson
2003-09-05 20:01             ` James Clark
2003-09-05 20:08           ` Mike Fedyk
2003-09-05 21:15           ` Valdis.Kletnieks
2003-09-05 23:19             ` Bernd Eckenfels
2003-09-10 20:50     ` Timothy Miller
2003-09-10 20:48       ` Richard B. Johnson
2003-09-10 23:22         ` James Clark
2003-09-10 23:58           ` Greg KH
2003-09-12 20:51         ` Timothy Miller
2003-09-12 20:55           ` Tim Hockin
2003-09-15 11:39           ` Richard B. Johnson
2003-09-05 20:53 Chad Kitching
2003-09-05 23:30 ` Mike Fedyk
  -- strict thread matches above, loose matches on Subject: below --
2003-09-04 22:41 Chad Kitching
2003-09-03 17:53 James Clark
2003-09-03 17:49 ` Andre Hedrick
2003-09-03 18:23   ` Guillaume Morin
2003-09-04  4:10     ` Andre Hedrick
2003-09-03 18:35   ` Guillaume Morin
2003-09-03 19:30     ` Andre Hedrick
2003-09-03 18:18 ` Greg KH
2003-09-03 18:23 ` Richard B. Johnson
2003-09-03 18:49 ` Patrick Mochel
2003-09-03 18:58 ` Gábor Lénárt
2003-09-03 20:18 ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).