NVIDIA wants to remove GPL marker from Linux interface
NVIDIA developer Robert Morell has proposed removing a marker for the Linux kernel's GPL licence from a Linux kernel driver interface, apparently in order to permit the use of the interface with proprietary drivers. A discussion thread on the topic has seen several key kernel developers express clear opposition to the proposal and debate over which developers would have to consent to such a change.
The proposed change is to the DMA buffer sharing mechanism (dma_buf) interface (designed for kernel drivers) which was merged into Linux 3.3. It provides infrastructure to enable multiple drivers to share a DMA buffer. This can be useful for embedded systems, enabling kernel drivers to, for example, forward images captured by a smartphone camera to both a video encoder component for compression and storage and simultaneously to the graphics core for live replay, without having to copy the image data. The infrastructure could also be useful for hybrid graphics solutions used in current laptop models, allowing the dedicated graphics chip to pass images it has processed with minimum overhead to the processor's graphics core, which controls the screen. This is achieved using Linux 3.5's prime infrastructure, which makes use of the DMA sharing mechanism and forms the basis for hybrid graphics support in X Server 1.13.
NVIDIA is considering using the prime infrastructure to support its Optimus hybrid graphics technology, which is used in its proprietary drivers. NVIDIA also appears to want to use the DMA sharing mechanism in its Tegra series embedded chips, Linux support for which is apparently one area on which Morell is working. However, similarly to the drivers for desktop graphics cards, the drivers for the graphics cores on Tegra chips are not open source. Whether proprietary drivers can use interfaces designed for kernel drivers has been an issue of some controversy for several years. In 2005, some kernel developers therefore started to export driver interfaces in any new code they developed using the EXPORT_SYMBOL_GPL(), rather than the EXPORT_SYMBOL(), function. The name of this function is intended to make clear that only code which is released under the kernel licence – i.e. GPLv2 or a compatible licence – is permitted to use these interfaces. One of the core functions of the DMA buffer sharing mechanism is marked as such – changing this was discussed when it was first merged.
Morell has once again proposed removing the GPL label, triggering a further debate. Kernel veteran Alan Cox has spoken out against the change. He also makes clear that, as a Linux kernel copyright holder, he would consider this an infringement of sections of the GPL on derivative works if it was done with the aim of combining proprietary code with the kernel. Mauro Carvalho Chehab, who amongst other things maintains the kernel's media subsystem, containing DVB and webcam drivers, has also expressed opposition to the change. Dave Airlie, who maintains the DRM subsystem and associated graphics drivers, has noted that, if the alternative means drivers will implement comparable functions themselves, he does not care if the interfaces is used by proprietary drivers. Airlie also suggests that Morell may have already obtained the consent of all the copyright holders for the DMA sharing mechanism to carry out the proposed change. In response, Chehab states that he does not believe this to be the case, since the code for the DMA sharing mechanism also exposes other parts of the kernel code, including, for example, media subsystem interfaces. He therefore believes that all copyright holders for this code would have to approve the change.
Around 30 hours later, with 20 comments posted, the discussion ended yesterday evening with no clear outcome. It remains to be seen whether the proposed change will simply be forgotten or whether the change will sooner or later be merged into the Linux kernel despite the dissenting voices, and if it is, what consequences this will have.