The Linux Kernel and Open Source Drivers

Posted on Wednesday, July 22, 2009 by Erlik

There has been a lot of talk about the Linux kernel and Open Source drivers this week. Most of it was about Microsoft that released drivers under the GPL V2 for inclusion in the Linux kernel. As pointed out by Steven J. Vaughan-Nichols this was planned for a long time and will benefit Microsoft as much (if not more) than Linux. The only important thing this shows is that Microsoft is ready to embrace the GPL if it serves it's business interests.

Much more interesting is the discussion on Phoronix about the case of the new VIA Chrome 9 DRM (Direct Rendering Manager). The gist of the story is this: VIA has a binary 3D driver for it's Chrome 9 IGP, but they want that some of the code (the DRM) is entered into the Linux kernel. The DRM code is open source, but not the driver itself. Now without the driver the DRM is useless, meaning that if it is accepted the kernel would contain some code whose only purpose would be to run VIA's binary driver.

This raises a lot of issues: how would this code be maintained? What if the kernel part of the code needs to evolve and updates to the driver are required? What about security? VIA could solve some of these issues by providing a complete documentation of the binary Chrome 9 driver, but currently this documentation is not available: critical pieces are missing.

Not designed for Open Source

The problem is that VIA did not design their product with Open Source in mind. What happened is that instead of developing their own technology from scratch they actually licensed another company's technology for use in their product. At the time they did not plan for open source drivers and agreed that the third party's code would have to remain secret. This probably did not matter a lot a few years ago, but since then the market share of Linux has grown a lot, and now VIA is stuck between a rock and a hard place.

If they can't release their drivers as Open Source they can't include it into the kernel, but to open source their driver they need the permission of the company that own the technology that they licensed. That company probably has no interest in Open Sourcing its technology, so VIA is stuck. They could probably rewrite some of the driver themselves, but it would cost a lot of resources. Intel is experiencing the same issue with their Poulsbo (mobile) driver: they used third party technologies that they can currently not release as open source. AMD encountered similar issues with their documentation efforts: some information licensed from third parties has to be cleared before it can be released.

Back to the kernel and the Microsoft

This bring us back to the kernel and Microsoft. Any Open Source driver that is incorporated in the kernel enjoy several advantage in the Linux world: it works out of the box and it is maintained pretty much forever. This is why Intel 's integrated graphics are so popular with Linux users. The chips do not offer great performance but a "full feature" open source Intel driver is shipped with all distributions, while AMD and Nvidia Open Source drivers are currently much more limited. If you want to get full performance and all features with these graphic chips you need to install a binary driver that may or may not work with your specific distribution and hardware.

So Open Source drivers are better and will help sell hardware to the Linux community, but Open Source is not something that you can add as an afterthought. You need to ensure from the start that all the technology that you intend to use can be released. This needs to be specified in contracts with all third-party technology providers and needs to be taken into consideration at all stages of product development. This requires some effort on the part of the hardware manufacturer. Now ask yourself this question: would Microsoft have released their virtualization drivers as Open Source if they could have been included in the kernel as binary drivers? Probably not! (especially if as some suggest Microsoft had little choice)

By requesting an open source driver (or the documentation to build one) as a prerequisite for the inclusion of the VIA DRM in the kernel the Linux community not only ensures that the kernel remains portable and secure but also encourages device manufacturers to ensure that their products are "Open Source compatible" and to eliminate third party technology that can't be released. It is possible that rejecting VIA's DRM would cause some pain to current VIA users, but it would give a strong message to device manufacturers: Plan Open Source support in your products and you will gain access to the kernel, remain closed and you will be at a disadvantage. This does not mean that all binary drivers are bad, sometime there is no other way to make hardware work, only they should not expect to be considered as first class citizens in the Linux world.

For more posts like this subscribe to Tech-no-Media (rss) or Follow me on Twitter.

Image cc by Henrique Vicente

Technorati Delicious StumbleUpon Reddit BlinkList Mixx Facebook Google Bookmark newsvine live slashdot Submit to OSNews

3 Responses to "The Linux Kernel and Open Source Drivers":

Anonymous says:

The main thing I like about open source, fully disclosed drivers is the security - nothing can be hidden, otherwise, -how can you tell?

Erlik says:

I thought about writing about the benefits of open source drivers, but that would have made the post way too long. Maybe I'll do another post on that.

dca says:

This is a hoot. The ONLY reason MS released anything was so Linux can run without any hitches as a guest unders MS Server 2008 & Hyper-V (period). Who cares, no data centers that I've been to do that anyway, it's RHEL as host w/ Windows Servers as guests in VMware...