New driver interface for Linux kernel

TuxGreg Kroah-Hartman has introduced a new driver interface for the Linux kernel today. The new interface makes it possible to run PCI drivers in userspace. The result is that closed source drivers can legally run on top of Linux, avoiding the heavy debated problem about linking non-GPL drivers into the Linux kernel. This would also make it easier to maintain drivers since the userspace API is normally stable which is in contrast to the usual kernel APIs which change quite often.

As Greg Kroah-Hartman describes the initial reason for writing such a framework was that he attended to a presentation where a developer from an industry company explained how he had done this, but only for a specific embedded device. Together with Thomas Gleixner he created therefore a framework to create such drivers in a “sane manner”, avoiding double efforts by different developers of different companies.

The new interface is called “Industrial IO device driver” which points to the main usage for it: industrial customers who want to run embedded or other devices on Linux, but do not want to maintain the code and keep it up to date to the sometimes changing kernel API. And industry companies probably have (at least their) reasons for keeping some code closed source; think about tricky algorithms to handle complex robot arms, etc.

The main question for me is now if this new interface will be used for other drivers as well – the best known and most discussed drivers are the ATI and NVIDIA binary drivers which are illegal according to some kernel developers. It would be nice for the users if ATI and NVIDIA would do it – until every sane Linux user has replaced his ATI/NVIDIA card with something from Intel which has in fact Open Source drivers (read: until ATI/NVIDIA finally releases their drivers as Open Source).

We’ll see. But, as a side note: if anyone here sighs and thinks: “Why not just allow closed source drivers?”, please read this article. That is one of the best articles related to this topic, and also the timeline is a bit short, it is entirely true. The only thing to add to this is another question I once read: “If you allow binary drivers – why don’t you just use Windows?” It is a harsh argument, but shows another, more idealistic point.

About these ads

5 thoughts on “New driver interface for Linux kernel

  1. If driver space = kernel space, then driver bug = kernel bug. A good move. Will this mean we only need one kernel device driver for all USB devices? There is always a hardware / software tradeoff, and many device designers legitimately chose to put propietary algorithms into software rather than hardware. Why should Linux live without device X, but embrace device Y, just because one uses code and the other wires to implement the same features? A good move.

    Now to get rid of “root” (;>)=

  2. Andy, just in case you missed it: this post is almost one year old – the new driver API has been added some days ago.

    And: I do like my root, and I could hardly get used to the Ubuntu way ;)

  3. Neither Nvidia nor AMD/ATI will ever open source their drivers. They both maintain two major product lines. One for desktop system (read gaming) and one for workstations (read CAD work).
    The only real differences between these two product lines are the drivers and the price! (there are minor differences such as framebuffer size but the core essentially is the same)

    If the open source community were to learn the secrets of these drivers then both major graphics card companys can kiss goodbye to their workstation product line revenue.
    As the far cheaper gaming cards could be used for CAD work just as effectively.

  4. Felix, you know that ATI has started handing out the hardware documentation to their cards? And that they also pay developers to develop a new driver for these cards?

    Also, can you please show me a link to the different drivers for CAD and gaming – especially in case of Linux? Because currently tehre is only one driver available…

Comments are closed.