Kernel Developers Work To Block NVIDIA "GPL Condom" Effort Around New NetGPU Code
Linux kernel developers are working on tightening up the access around GPL-only kernel symbols and kernel shims that interface with proprietary kernel modules. This latest work is being driven by code recently put out for improving the Linux networking code where NVIDIA's proprietary kernel driver would be the initial consumer.
Sent out last month by Facebook's Jonathan Lemon was some interesting work on DMA zero-copy support between network adapters and a GPU device for the data path while the protocol processing is still handled on the host CPU. The host CPU also would support zero-copy send/receive.
That infrastructure work itself is quite interesting but where it becomes more heated is this patch adding a NetGPU "NVIDIA" driver to support this network/GPU path. "This provides the interface between the netgpu core module and the nvidia kernel driver. This should be built as an external module, pointing to the nvidia build."
That patch/driver is useless without the NVIDIA kernel driver albeit all of this network to GPU zero-copy infrastructure work is being done for the NVIDIA use-case, although other vendors/drivers could implement similar functionality.
Among other code comments, the shim NVIDIA driver patch led high-level Linux kernel developer and stable maintainer Greg Kroah-Hartman to comment:
Lemon commented in response that he will look at seeing whether there are some AMD or Intel GPUs he can use with their in-kernel tree drivers as a client besides the NVIDIA proprietary driver. Other in-fighting came within the discussion as well. Longtime kernel developer Christoph Hellwig commented on the discussion, "Seriously? If you only even considered this is something reasonable to do you should not be anywhere near Linux kernel development. Just go away!"
Following that Hellwig then proposed a new set of patches for tightening up access to kernel symbols exported as GPL-only, such as the case for these different "shim" drivers that sit between the open kernel code and proprietary kernel modules like the NVIDIA driver. He explained, "we've had a bug in our resolution of _GPL modules since day one, that is a module can claim to be GPL licensed and use _GPL exports, while it also depends on symbols from non-GPL modules. This is used as a circumvention of the _GPL exports by using a small shim module using the _GPL exports and the other functionality." Or as it's also referred to, the GPL condom defense.
As for the experimental work on DMA zero-copy between NICs and GPUs, the upstream discussions appear blocked until it's working on a GPU with open-source kernel driver like AMD Radeon or Intel... Or otherwise working with the Nouveau open-source NVIDIA driver.
Sent out last month by Facebook's Jonathan Lemon was some interesting work on DMA zero-copy support between network adapters and a GPU device for the data path while the protocol processing is still handled on the host CPU. The host CPU also would support zero-copy send/receive.
That infrastructure work itself is quite interesting but where it becomes more heated is this patch adding a NetGPU "NVIDIA" driver to support this network/GPU path. "This provides the interface between the netgpu core module and the nvidia kernel driver. This should be built as an external module, pointing to the nvidia build."
That patch/driver is useless without the NVIDIA kernel driver albeit all of this network to GPU zero-copy infrastructure work is being done for the NVIDIA use-case, although other vendors/drivers could implement similar functionality.
Among other code comments, the shim NVIDIA driver patch led high-level Linux kernel developer and stable maintainer Greg Kroah-Hartman to comment:
Ok, now you are just trolling us.
Nice job, I shouldn't have read the previous patches.
Please, go get a lawyer to sign-off on this patch, with their corporate email address on it. That's the only way we could possibly consider something like this.
Oh, and we need you to use your corporate email address too, as you are not putting copyright notices on this code, we will need to know who to come after in the future.
Lemon commented in response that he will look at seeing whether there are some AMD or Intel GPUs he can use with their in-kernel tree drivers as a client besides the NVIDIA proprietary driver. Other in-fighting came within the discussion as well. Longtime kernel developer Christoph Hellwig commented on the discussion, "Seriously? If you only even considered this is something reasonable to do you should not be anywhere near Linux kernel development. Just go away!"
Following that Hellwig then proposed a new set of patches for tightening up access to kernel symbols exported as GPL-only, such as the case for these different "shim" drivers that sit between the open kernel code and proprietary kernel modules like the NVIDIA driver. He explained, "we've had a bug in our resolution of _GPL modules since day one, that is a module can claim to be GPL licensed and use _GPL exports, while it also depends on symbols from non-GPL modules. This is used as a circumvention of the _GPL exports by using a small shim module using the _GPL exports and the other functionality." Or as it's also referred to, the GPL condom defense.
As for the experimental work on DMA zero-copy between NICs and GPUs, the upstream discussions appear blocked until it's working on a GPU with open-source kernel driver like AMD Radeon or Intel... Or otherwise working with the Nouveau open-source NVIDIA driver.
114 Comments