Slashdot Mirror


GPL Issues Surrounding Commercial Device Drivers?

Demiurg asks: "My company has recently decided to support Linux for it's embedded networking products which means that I'm starting to write Linux device drivers for our hardware. The company was very concerned about GPL issues and consulted a lawyer - who advised us to go for a user-space driver, saying that this is the only safe way to avoid GPL issues. I tried to give them a few examples of companies distributing binary only drivers (NVIDIA and Rational) but was told that these companies do not distribute binary only drivers - they only allow you to download them from a web site (which is not an option for an embedded product). What does Slashdot have to say about the issue? Is writing a user-mode (and hence not very efficient) driver the only way for a company to protect it's intellectual property? Please refrain from giving answers like 'all code should be GPL' - although I personally may agree, such answers will not help me convince management to make the change." Are there any lawyers (or readers with the right legal knowledge) out there that can confirm or contradict this recommendation?

9 of 461 comments (clear)

  1. Linus allows an exception for device drivers by LordNimon · · Score: 5, Informative
    You may need to dig up the reference from some mailing list archive, but Linus Torvalds himself has said that he will allow binary-only drivers, as long as they're loadable modules, to be distributed.

    It all boils down to the concept of "derivative work". Is a device driver a derivative work of the kernel? My opinion is no, but only the courts can truly answer that question, and no one has asked them yet.

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
    1. Re:Linus allows an exception for device drivers by ch-chuck · · Score: 5, Informative

      One example of this was the Proxim RangeLAN wireless drivers - the author Dave Komacke works at Proxim, and was able to distribute a binary-only module for Linux. Worked fine for me. Web Page here.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    2. Re:Linus allows an exception for device drivers by strredwolf · · Score: 5, Informative

      The Linux Kernel Mailing List has a FAQ on such drivers (including NVIDIA). I think it's question #19 where you can access the actual posts.

      --

      --
      # Canmephians for a better Linux Kernel
      $Stalag99{"URL"}="http://stalag99.net";
    3. Re:Linus allows an exception for device drivers by wfrp01 · · Score: 5, Informative

      Linus Torvalds himself has said that he will allow binary-only drivers, as long as they're loadable modules, to be distributed.

      That's been a long standing supposition. However, lwn recently ran an article in which Linus' view on this matter doesn't seem to support this point of view:

      There is NOTHING in the kernel license that allows modules to be non-GPL'd. The _only_ thing that allows for non-GPL modules is copyright law, and in particular the "derived work" issue. A vendor who distributes non-GPL modules is _not_ protected by the module interface per se, and should feel very confident that they can show in a court of law that the code is not derived.

      and also

      The original binary-only modules were for things that were pre-existing works of code, ie drivers and filesystems ported from other operating systems, which thus could clearly be argued to not be derived works, and the original limited export table also acted somewhat as a barrier to show a level of distance.

      --

      --Lawrence Lessig for Congress!
  2. Why necessarily slower in userland? by drinkypoo · · Score: 5, Informative

    Why is a userland driver on linux necessarily slower? Shouldn't a well-written user space driver at an appropriate priority level be just as fast as a kernel driver? And if not, why is this slow on linux but fast on some other operating systems, and what can be done to fix it?

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  3. Context switches. by cduffy · · Score: 5, Informative

    Why is a userland driver on linux necessarily slower?

    See subject.

    And if not, why is this slow on linux but fast on some other operating systems, and what can be done to fix it?

    No operating system can have userspace drivers without context switches. Some OSes have very low context switch times and *do* put all their drivers in userspace (which has a number of very big advantages I'm not going into right now) -- but they still, unavoidably, pay some performance penalty for doing so.

  4. Addition/Correction by cduffy · · Score: 5, Informative

    No operating system can have userspace drivers without context switches.

    By that I mean no operating system with memory protection for userspace apps. It's possible to give up this benefit (even selectively) for improved userspace performance; see Kernel Mode Linux for a kernel patch that does just that (and which might be applicable to this fellow's situation).

  5. Re:lawyers by kableh · · Score: 5, Informative

    My company uses Linux in some of our embedded products. Before doing so, and before we had fulltime counsel, we hired a lawyer to go over the GPL and tell us if it was going to present a problem. This lawyer seemed to think that anything compiled with GCC would fall under the GPL, which is incorrect. There are specific exceptions that allow it to be used to produce non-free software.

    I'm not saying he should ignore the lawyer, but that his lawyer could quite possibly be wrong. The GPL is 'viral' in a sense, but not in as devious a way as Microsoft FUD would indicate, and at least they are up front about being a bunch of commies =)

    See http://www.gnu.org/licenses/gpl-faq.html for more info.

  6. Module API by be-fan · · Score: 5, Informative

    The kernel exports certain symbols that are available for driver modules to link to. These symbols are classified by license. Many symbols a driver can link to without having to be a GPL'ed driver. These symbols, presumably, are written by people who grant permission to link against non-GPLed code. Other symbols (for example the new work-queues stuff) are exported as so-called GPL_ONLY symbols, and linking against those in a non-GPL module is illegal. Thus, if you avoid using the GPL_ONLY symbols you can probably get away with a binary only module. The fact that this mechanism exists implies permission, so this aspect would be important to bring up to the lawyer.

    --
    A deep unwavering belief is a sure sign you're missing something...