|
|
Subscribe / Log in / New account

Netgpu and the hazards of proprietary kernel modules

This article brought to you by LWN subscribers

Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

By Jonathan Corbet
July 31, 2020
On its face, the netgpu patch set appears to add a useful feature: the ability to copy network data directly between a network adapter and a GPU without moving it through the host CPU. This patch set has quickly become an example of how not to get work into the kernel, though; it has no chance of being merged in anything like its current form and has created a backlash designed to keep modules like it from ever working in mainline kernels. It all comes down to one fundamental mistake: basing kernel work on a proprietary kernel module.

The use case for netgpu appears to be machine-learning applications that consume large amounts of data. The processing of this data is offloaded to a GPU for performance reasons. That GPU must be fed a stream of data, though, that comes from elsewhere on the network; this data follows the usual path of first being read into main memory, then written out to the GPU. The extra copy hurts, as does the memory-bus traffic and the CPU time needed to manage this data movement.

This overhead could be significantly reduced if the network adapter were to write the data directly into the GPU's memory, which is accessible via the PCI bus. A suitably capable network adapter could place packet data in GPU memory while writing packet headers to normal host memory; that allows the kernel's network stack to do the protocol processing as usual. The netgpu patch exists to support this mode of operation, seemingly yielding improved performance at the cost of losing some functionality; anything that requires looking at the packet payload is going to be hard to support if that data is routed directly to GPU memory.

A lot of work has been done in recent years to enable just this kind of zero-copy, device-to-device data transfer, so one might expect this functionality to be well received. And, indeed, the code was reviewed normally until the last patch in this 21-part series, where things ran into a snag. This is the patch that interfaces between the netgpu module and the proprietary NVIDIA GPU driver; it can't even be built without the NVIDIA driver's files on disk. On seeing this, Greg Kroah-Hartman stopped and complained:

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.

What followed was an occasionally harsh and acrimonious discussion on whether the patches should have ever been posted in the first place. Jonathan Lemon, the author of the patches, insisted that they were not about providing functionality to the proprietary NVIDIA module in particular:

This is not in support of a proprietary driver. As the cover letter notes, this is for data transfers between the NIC/GPU, while still utilizing the kernel protocol stack and leaving the application in control.

While the current GPU utilized is nvidia, there's nothing in the rest of the patches specific to Nvidia - an Intel or AMD GPU interface could be equally workable.

Others disagreed, though, stating that the code was clearly designed around the NVIDIA module from the beginning. Christoph Hellwig argued that any upstream-oriented driver should be based on the existing P2PDMA framework, which exists just to support device-to-device data transfers. Jason Gunthorpe agreed, and argued that the design of the module as a whole was driven by NVIDIA's choices:

The design copied the nv_p2p api design directly into struct netgpu_functions and then aligned the rest of the parts to use it too. Yes, other GPU drivers could also be squeezed into this API, but if you'd never looked at the NVIDIA driver you'd never pick such a design. It is inherently disconnected from the [memory-management subsystem].

By the time the discussion wound down, it was clear that this patch set wasn't going anywhere in its current form. Large amounts of work will have to be done to build it on top of the existing kernel mechanisms for cross-device data movement — P2PDMA, the DMA-buf subsystem, etc. This work may have achieved its initial goal, but it clearly went far down the wrong path when it comes to being merged into the mainline kernel.

The sad part is that, by all appearances, the goal of this work was not to add functionality for NVIDIA GPUs in particular. Lemon does not seem to be an NVIDIA employee; the patches included a Facebook email address. But NVIDIA, with its proprietary module, was what was at hand, so that is the device that the patch set was designed to work with. Designing the module to work with free GPU drivers from the outset would have driven a number of decisions in different directions and avoided much of the trouble that has ensued.

Meanwhile, in an attempt to make this sort of mistake harder to make (and, surely only by coincidence, make life a bit harder for proprietary modules in general), Hellwig has posted a patch set changing the way GPL-only symbols are handled. Symbols exported as GPL-only by the kernel are made unavailable to proprietary modules, but there has always been a bit of a loophole in how this is enforced. A proprietary module can be broken into two parts, one of which is a minimal shim layer that interfaces between the kernel and the proprietary code. If the shim module is GPL-licensed, it can access GPL-only symbols, which it can then make available to the proprietary module.

Hellwig's patch does not entirely close this loophole, but it makes exploiting it a bit harder. With this patch applied, any module that imports symbols from a proprietary module is itself marked as being proprietary, denying it access to GPL-only symbols. If the shim module has already accessed GPL-only symbols by the time it gets around to importing symbols from the proprietary module, that import will not be allowed. This new restriction would keep the netgpu-NVIDIA interface module from loading, impeding the development of such modules in the future. It still does not cover the case, though, of a shim module that exports its own symbols to a proprietary module without importing anything from that module.

For as long as the kernel has had a module loader, there have been debates over proprietary modules. In 2006, the development community seriously discussed banning them entirely. Two years later, a long list of kernel developers signed a position statement stating that proprietary modules are "detrimental to Linux users, businesses, and the greater Linux ecosystem". These modules continue to exist, though, and do not appear to be going away anytime soon. This episode, where a proprietary module helped send a significant development project in the wrong direction and makes it nearly impossible to implement this functionality in a way that works with all GPUs, demonstrates one of the reasons why the development community sees those modules as being harmful.

Index entries for this article
KernelCopyright issues
KernelModules/Exported symbols


(Log in to post comments)

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 0:03 UTC (Sat) by gus3 (guest, #61103) [Link]

I'm pretty sure I know how the BSD's would move forward with such a question ("no, it isn't KISS"). And I know also how Microsoft Windows and Apple MacOS would move forward ("yes, we can manage it with lots of new API's").

The fact that this strange argument presents as such a grey area in Linux, is part of its charm for me. Maybe it'll happen, probably not, but the lessons coming out of the discussion will be on the Internet, forever, for anyone to study and learn from.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 5:49 UTC (Sat) by flussence (subscriber, #85566) [Link]

The easiest way to get the Linux kernel community to handwave your GPL violations through remains to call it firmware. nVidia keeps making this rookie mistake of trying to do it on the “central” processor, while the ARM crowd's had it all sussed out since the RPi 1.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 8:41 UTC (Sat) by mfuzzey (subscriber, #57966) [Link]

I don't see how anything that is really firmware, by which I mean that runs on a different processer / core / hardware module to Linux can be a GPL violation since it shares no code with Linux.

Unless, it is also based on Linux, which could be a GPL violation even if the main processor were running Windows.
But most coprecessor devices don't have the power / memory to run Linux anyway so they're normally bare metal or some RTOS.

Of course, there are plenty of other reasons to prefer open source firmware, including security in some cases. But I don't think it's a GPL issue.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 1:06 UTC (Mon) by marcH (subscriber, #57642) [Link]

> I don't see how anything that is really firmware, by which I mean that runs on a different processer / core / hardware module to Linux can be a GPL violation since it shares no code with Linux.

It typically shares a number of .h files.

You can call your lawyer now.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 11:35 UTC (Mon) by excors (subscriber, #95769) [Link]

At least on RPi, I don't think the firmware uses any headers that originated from Linux. The shared headers were generally written by Broadcom, so Broadcom can freely use them in the proprietary firmware, then dual-licensed as GPL and BSD for use by Linux drivers etc. And the headers are not trying to copy the shape of the kernel's internal API and export it to the firmware: they have their own custom interface design, because historically the firmware interfaces were mainly used by other code within the firmware and by Linux userspace blobs, then the kernel support was added later (with the kernel drivers responsible for translating things to/from the proprietary interface). So the firmware is not derived from the Linux kernel in any meaningful way, and isn't violating the GPL.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 20:25 UTC (Mon) by NYKevin (subscriber, #129325) [Link]

The legal status of "it uses .h files" is extremely murky. On the one hand, if you assume that any .h file automatically makes anything that includes it a derivative work, you're basically taking the "APIs are copyrightable" stance, which is problematic for a number of reasons. On the other hand, the FSF does have good legal arguments that a binary which dynamically links to X may well be a derivative work of X.

I've often wondered what would happen if someone released a "library" with a minimal implementation of readline(3) under a permissive license. This would not be particularly difficult, although you'd obviously lose most of the functionality of GNU Readline (you'd basically end up with a combined printf(3)-and-then-getline(3)). But then you could link proprietary code against that minimal library, and end users could re-link against GNU Readline (so long as they don't redistribute the resulting binary). Arguably, distros could even design their package managers to do this re-linking automatically once both packages are installed. That can't be how the FSF intends the GPL to operate, but I'm not sure if I've missed something, or if it really does have such a gaping hole in its linking rules.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 23:08 UTC (Mon) by marcH (subscriber, #57642) [Link]

I believe many GPL discussions give way too much importance to linking. What the GPL (deeply) cares about is "derivative work" and linking is IMHO/IANAL never a proof of being a derivative work. It's just warning sign.

Let's say I write a POSIX compliant application on Solaris/Illumos/whatever and I don't care about Linux at all. Someone else links it (statically or dynamically; doesn't matter) to some GPLed libc implementation and redistributes it - without even touching my code. Why the hell would that other person make _me_ commit a GPL violation? That wouldn't make any kind of legal sense.

Now of course to avoid this situation (and maintain some linker fear FUD?) most (all?) libc implementation are LGPL at most. But you get the idea. Maybe there's a better, real GPL example.

> I've often wondered what would happen if someone released a "library" with a minimal implementation of readline(3) under a permissive license.

- Either you assume anything that reproduces the readline _interface_ is a derivative work of readline. Then your minimal, non-GPL implementation is already a violation.

- Or you assume merely reproducing the readline interface is not a derivative work of readline. Then you can do anything with the readline interface.

Either way your indirection is pointless.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 4, 2020 22:31 UTC (Tue) by nybble41 (subscriber, #55106) [Link]

> Either you assume anything that reproduces the readline _interface_ is a derivative work of readline. Then your minimal, non-GPL implementation is already a violation.

Which would, of course, be equally problematic for all the open-source reimplementations of proprietary libraries, including projects like LessTif (Motif), Wine (MS Windows), various system emulators, and perhaps even Mesa (OpenGL / Vulkan).

IANAL but IMHO there is no reason why it should matter, legally, whether there actually *is* an alternative implementation. The mere fact that any library *could* be reimplemented with a compatible license should be enough to prove that source code or dynamically-linked object code is not automatically a derivative work of some library just because it makes use of that library's interfaces. Macros and inline functions could be an issue, but only for object code, and only then if they contain enough non-functional "expression" in the compiled object code to qualify for copyright on their own merit. You're not embedding the source code, and most of the creative expression which copyright is *supposed* to cover gets left behind during compilation.

The concept of "derivative work" is supposed to apply to cases where the original work is copied and somehow transformed or translated as an integral part of some new creative work. It was never meant to cover *functional* dependencies; copyright was never intended to apply to functional elements in the first place, and linking and runtime considerations are 100% a matter of function, not creative expression. Even if you distributed the third-party library along with your own program on the same storage medium (or in the same archive) that ought to be considered "mere aggregation" and have no effect on the status of your own work.

The closest analog to "linking" I can think of outside of software is a bibliography, but you don't hear anyone trying to claim that citing someone else's paper in your own research makes your publication a derivative work of theirs for the purpose of copyright law.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 4, 2020 23:00 UTC (Tue) by marcH (subscriber, #57642) [Link]

> Which would, of course, be equally problematic for all the open-source reimplementations of proprietary libraries,...

I don't remember the license of any proprietary library using the "derivative work" concept like copyleft licenses do, so "equally" is too much. I agree it would raise similar and very interesting questions there too.

> just because it makes use of that library's interfaces. Macros and inline functions could be an issue, but only for object code, and only then if they contain enough non-functional "expression" in the compiled object code to qualify for copyright on their own merit.

I wish you were right and I wish it were that simple but playing the devil's advocate:

- Why a complex API with elaborate data structures be less copyrightable than a simple macro? In other words, why are Nouns less copyrightable than Verbs? http://steve-yegge.blogspot.com/2006/03/execution-in-king...

- More importantly, we have one-click buy patents and copyright extended 70+ years after the author death, so why do you assume common sense applies to intellectual property law? Copyright is a legal and political question, not a technical one. This means it doesn't get decided by engineers like us but by lawyers like this (random) guy:

https://www.ipwatchdog.com/2020/02/18/earth-google-heres-...

> APIs are like the turbocharger in a car engine. They speed up the process of retrieving Google’s search results and enhance the user’s experience. To users of a search engine, speed and accuracy of search results are the most important factors affecting their choice. Oracle’s APIs essentially make Google’s search engine hum.

(no comment)

Netgpu and the hazards of proprietary kernel modules

Posted Aug 5, 2020 0:12 UTC (Wed) by Wol (subscriber, #4433) [Link]

> - Why a complex API with elaborate data structures be less copyrightable than a simple macro? In other words, why are Nouns less copyrightable than Verbs?

I believe, under American law at least, that copyright cannot be used to interfere with interoperability, so if I want to interface with your code I can use your elaborate data structures and they are not protected.

On the other hand, I can rewrite your macro differently to the same effect in which case it's not a derivative, or if its function is such that your implementation is the obvious one and I come up with the same implementation, then it's too simple to be copyrightable.

(I believe that SCOTUS ruled that the string "copyright (C) Nintendo" was required for interoperability because the console checked for it, and therefore Nintendo couldn't claim copyright, or passing off, or anything else to stop competitors using it. Something like that anyway.)

Cheers,
Wol

Netgpu and the hazards of proprietary kernel modules

Posted Aug 5, 2020 7:38 UTC (Wed) by nybble41 (subscriber, #55106) [Link]

> (I believe that SCOTUS ruled that the string "copyright (C) Nintendo" was required for interoperability because the console checked for it, and therefore Nintendo couldn't claim copyright, or passing off, or anything else to stop competitors using it. Something like that anyway.)

It wasn't just a string, it was an actual image of their logo which was supposed to be displayed during initialization for "official" games. If a game didn't embed the logo then the console wouldn't run it. The ruling granted competing developers permission to embed the image in their games for the purpose of interoperability without licensing the image from Nintendo. By making the logo image a required part of the functional interface Nintendo basically forfeited their copyright over it.

There have been similar cases where various parties attempted to use copyright (and the DMCA) to block things like third-party ink cartridges. Those haven't been any more successful. The courts have been pretty consistent in upholding the principle that copyright does not extend to functional elements of a design required for interoperability.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 5, 2020 1:20 UTC (Wed) by NYKevin (subscriber, #129325) [Link]

> I don't remember the license of any proprietary library using the "derivative work" concept like copyleft licenses do, so "equally" is too much. I agree it would raise similar and very interesting questions there too.

The concept of "derivative work" is not part of the license. It's part of copyright law. By default, you're not allowed to create derivative works at all. The GPL relaxes this restriction, but only if the derivative is also distributed under the GPL (and complies with all the other rules w.r.t. source code etc.).

Proprietary licenses (usually) don't mention derivative works, which implies that you don't have permission to create them, much less redistribute them.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 6, 2020 13:03 UTC (Thu) by anselm (subscriber, #2796) [Link]

Proprietary licenses (usually) don't mention derivative works, which implies that you don't have permission to create them, much less redistribute them.

To a copyright lawyer, a “derivative work” based on a software program would be one where all messages are translated into Swahili, or one that adds a command or menu item to the original program, with the rest of the program substantially unchanged. These are the derivative works that the manufacturers of proprietary software do not like to see third parties create or distribute without permission.

It's not at all obvious why a program that just calls a published interface of another software program would be “derivative” of that program, because unlike the other examples its source code (or object code, given dynamic linking) doesn't incorporate any copyrightable part of the original program.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 6, 2020 13:47 UTC (Thu) by marcH (subscriber, #57642) [Link]

> doesn't incorporate any copyrightable part of the original program.

We wish it were that simple

https://en.wikipedia.org/wiki/Google_v._Oracle_America

Netgpu and the hazards of proprietary kernel modules

Posted Aug 6, 2020 14:44 UTC (Thu) by anselm (subscriber, #2796) [Link]

Note that Google's conduct in this case does in fact involve copying stuff from Oracle, and the court case hinges mainly on (a) whether the Oracle stuff in question that Google copied is copyrightable in the first place, and (b) if it is, whether it was OK for Google to copy it under the doctrine of “fair use”. It doesn't really help us with the question of whether program A is “derivative” of program B if it calls program B without incorporating copyrightable stuff from B.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 6, 2020 23:07 UTC (Thu) by marcH (subscriber, #57642) [Link]

I think you're making a distinction between re-implementing an API versus using it. I doubt this makes a legal difference, references?

Netgpu and the hazards of proprietary kernel modules

Posted Oct 13, 2020 16:07 UTC (Tue) by immibis (subscriber, #105511) [Link]

There may be a difference between writing a compatible implementation of a proprietary library, and actually copying the header files from the proprietary library into your one (which Google did).

Netgpu and the hazards of proprietary kernel modules

Posted Aug 11, 2020 8:16 UTC (Tue) by daenzer (subscriber, #7050) [Link]

> [...] open-source reimplementations of proprietary libraries, including projects like [...] perhaps even Mesa (OpenGL / Vulkan).

OpenGL / Vulkan aren't proprietary libraries, but open specifications under the umbrella of the Khronos group: https://www.khronos.org/registry/

Mesa has officially passed OpenGL / Vulkan conformance for some (not all) driver / hardware combinations:

https://www.khronos.org/conformance/adopters/conformant-p... ("Mesa" / "RADV" under driver version)
https://www.khronos.org/conformance/adopters/conformant-p... ("Mesa", plus some of the AMD Linux entries)

Netgpu and the hazards of proprietary kernel modules

Posted Aug 13, 2020 11:42 UTC (Thu) by flussence (subscriber, #85566) [Link]

Maybe it's time to remove the:
>WARNING: radv is not a conformant vulkan implementation, testing use only.
message? ;-)

Netgpu and the hazards of proprietary kernel modules

Posted Aug 13, 2020 12:37 UTC (Thu) by daenzer (subscriber, #7050) [Link]

That message currently still appears when using an older AMD GPU (pre-Volcanic Islands) or the new ACO shader compiler backend (which is enabled by default as of the upcoming Mesa 20.2 release), because RADV hasn't officially passed conformance yet with those.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 4, 2020 17:57 UTC (Tue) by madscientist (subscriber, #16861) [Link]

> I've often wondered what would happen if someone released a "library" with
> a minimal implementation of readline(3) under a permissive license.

That was already done, a long long time ago. See for example https://thrysoee.dk/editline/

It's not even really "minimal"; it's a pretty robust and complete implementation of the API.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 6, 2020 21:15 UTC (Thu) by ecree (guest, #95790) [Link]

That's not even hypothetical: https://yarchive.net/comp/linux/gpl.html#57

tl;dr: the GPL has nothing to do with 'linking' and everything to do with 'derivative work', which is a legal rather than a technical predicate.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 9:41 UTC (Sat) by blackwood (guest, #44174) [Link]

The gpu driver for the all-firmware RPi gpu stack never made it to upstream. It's not that easy, upstream maintainers aren't idiots, an obvious "hide it in firmware" just pisses them off more. The actual upstream rpi stack has a fully open gpu driver running on the cpu.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 21:25 UTC (Sat) by flussence (subscriber, #85566) [Link]

Radeons used to be entirely firmware-free and in the spirit of the GPL's “preferred form for modification” until AMD (and someone with root access to the fdo git server) infamously sabotaged the radeonhd effort. Someone then went and retroactively added firmware blob dependencies as far back as R200, which was a fully functional driver without it.

And upstream was rightly pissed off when the DC pull request farce happened, but I think they should've pushed back more instead of capitulating. The kernel's now basically carrying around multiple megabytes of disassembly dumps. Maybe nVidia should try it next.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 11:03 UTC (Sun) by airlied (subscriber, #9104) [Link]

Wow, did you try to be wrong in as many ways as possible in one comment or did it just come naturally?

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 23:05 UTC (Sun) by quotemstr (subscriber, #45331) [Link]

> until AMD (and someone with root access to the fdo git server) infamously sabotaged the radeonhd effort.

Wait, what?

Netgpu and the hazards of proprietary kernel modules

Posted Aug 7, 2020 10:42 UTC (Fri) by flussence (subscriber, #85566) [Link]

What, you aren't aware of the rabbit hole that leads to this masterpiece? Maybe you're better off not knowing.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 17:13 UTC (Mon) by Cyberax (✭ supporter ✭, #52523) [Link]

To others who are interested in deciphering these half-truths and lies:

Early Radeon 200 series had completely open drivers, that didn't require any firmware, they included OpenGL support and other nice things. Unfortunately, the later R300/R500/R600 cards had only closed-source drivers (and shitty ones at that).

At this time there were already a pretty decent reverse-engineering NVidia driver. So a reverse-engineering project was started ("avivo") for Radeon 500 series as well. Fortunately, ATI was acquired by AMD and they released a lot of documentation after some back-and-forths about NDAs and legal reviews.

With the availability of the documentation two projects were started: RadeonHD and new code in the existing xf86-video-ati driver (mostly added by airlied and Alex Deucher). The difference was that RadeonHD used direct register manipulation and xf86-video-ati used AtomBIOS.

AtomBIOS is basically an interpreted firmware that is used to manipulate power states, engine intialization and other utility stuff. Supporting it allowed the xf86-video-ati driver to not care about these details, that were also not documented in the released official documents. There was a fair amount of free tools created to reverse-engineer the proprietary drivers, and they could be used to RE the AtomBIOS as well so initially RadeonHD actually worked better than xf86-video-ati ( https://airlied.livejournal.com/53129.html ).

But this was not sustainable. AtomBIOS is developed internally in the AMD/ATI and replicating it in RadeonHD with all the device-specific quirks was not possible. And eventually RadeonHD just died. xf86-video-ati is still being developed.

RadeonHD sources are still available for anyone interested: https://github.com/freedesktop-unofficial-mirror/xorg__dr...

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 18:32 UTC (Mon) by mjg59 (subscriber, #23239) [Link]

I'd also add that not relying on AtomBIOS didn't mean RadeonHD was free of firmware dependencies - as far as I know all Radeon hardware has always needed firmware to be uploaded, but back in the day the firmware was just embedded directly into the radeon DRM kernel module instead of being pulled off disk. 70967ab9c0c9017645d167d33675eab996633631 changed that in 2009, but before that there was certainly still a firmware dependency all the way back to r100.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 1, 2020 6:47 UTC (Sat) by gioele (subscriber, #61675) [Link]

> With this patch applied, any module that imports symbols from a proprietary module is itself marked as being proprietary, denying it access to GPL-only symbols. If the shim module has already accessed GPL-only symbols by the time it gets around to importing symbols from the proprietary module, that import will not be allowed.

Will this have an impact on the ZFS module as well?

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 14:20 UTC (Sun) by Baughn (subscriber, #124425) [Link]

ZFS isn't proprietary, so I don't see why it would.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 14:35 UTC (Sun) by rahulsundaram (subscriber, #21946) [Link]

> ZFS isn't proprietary, so I don't see why it would.

It could impact non-GPL compatible modules

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 19:11 UTC (Sun) by NYKevin (subscriber, #129325) [Link]

My question is, supposing this (or some future policy change) does impact ZFS, what will Canonical do about it? They're already distributing ZFS binaries, which is (maybe, depending on which lawyers you ask) a GPL violation in its own right. So will they bite the bullet and start shipping a modified kernel that doesn't enforce non-GPL taint? Or will they hack the hell out of the ZFS module to work around whatever the problem ends up being?

(I would also be very interested in seeing whether the GPLv2's freedom to modify implicitly overrides the DMCA's anti-circumvention provisions, should this ever get litigated. GPLv3 has an explicit term overriding that, but the kernel's not under GPLv3...)

Netgpu and the hazards of proprietary kernel modules

Posted Aug 2, 2020 20:16 UTC (Sun) by nivedita76 (guest, #121790) [Link]

It should, the GPLv2 gives you authority to modify, so it gives you authority to circumvent, so DMCA shouldn't apply, since it has an exception if the copyright owner gave you permission. It would be a pretty bad look for the FSF or the Linux kernel trying to enforce DMCA against anyone, in any case.

(A) to “circumvent a technological measure” means to descramble a scrambled work, to decrypt an encrypted work, or otherwise to avoid, bypass, remove, deactivate, or impair a technological measure, without the authority of the copyright owner

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 17:50 UTC (Mon) by rahvin (guest, #16953) [Link]

There are a lot of people that already believe Canonical's distribution of the CDDL licensed ZFS is already a copyright violation. The CDDL was specifically designed to prevent the code being merged and/or distributed with GPL code. Distributing the two together is already legally dangerous, I don't see how this kernel discussion impacts that.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 3, 2020 23:38 UTC (Mon) by marcH (subscriber, #57642) [Link]

> The CDDL was specifically designed to prevent the code being merged and/or distributed with GPL code.

Just like any other simplistic/anthropomorphic "Bigcorp X wants Y" statement, I expect this will never be proved one way or the other.

There was a great comment about this on this site about a few months back, I wish I were still using bookmarks...

Netgpu and the hazards of proprietary kernel modules

Posted Aug 4, 2020 1:06 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

Instead of rehashing the same discussion, here is one of the prior ones

https://lwn.net/Articles/676442/

CDDL compatibility

Posted Aug 4, 2020 18:20 UTC (Tue) by marcH (subscriber, #57642) [Link]

Thanks, very useful! So this CDDL story is like pretty much everything on TV and social media: a tiny grain of truth that has been 1. ridiculously oversimplified, and 2. blown completely out of proportion.

I just found out how to save humanity (no less): propaganda classes in school. Very simple: Step 1, one student finds and tells a complex story in class. Step 2, small groups of students report it like it would be on social media or TV news. No, wait: they actually report it on social media, cause why not. Their grades are based on the number of likes and re-shares.

No they understand how the world works and are really prepared for adult life.

This new class is even compatible with pandemics and home schooling.

Immoral? No because unlike all the grown-ups doing this for profit all day long they unmask themselves a few weeks later, after they've been graded - educating not just themselves but all the people they fooled too. Plus the only way to discredit fake news is more fake news.

CDDL compatibility

Posted Aug 7, 2020 4:25 UTC (Fri) by liam (subscriber, #84133) [Link]

From Think Again: How to Reason and Argue

   I have taught courses on reason and argument for over thirty-five years at Dartmouth College and now Duke University. Many students tell me that my courses have helped them in various areas of their lives. They motivate me to keep going.
   While my students learned to argue, the rest of the world lost that skill. The level of discourse and communication in politics and also in personal life has reached new lows. During election years, my course has always discussed examples of arguments during presidential debates. During the 1980s, I had no trouble finding arguments on both sides in the debates. Today all I find are slogans, assertions, jokes, and gibes but very few real arguments. I see dismissals, put-downs, abuse, accusations, and avoiding the issue more than actual engagement with problems that matter. There might be fewer protests in the streets today than in the 1960s, but there are still fewer serious attempts to reason together and understand each other.


   My goal is to show what arguments are and what good they can do. This book is not about winning arguments or beating opponents. Instead, it is about understanding each other and appreciating strong evidence. It teaches logic instead of rhetorical tricks.

It's that last part that's really tricky.

CDDL compatibility

Posted Aug 7, 2020 8:10 UTC (Fri) by marcH (subscriber, #57642) [Link]

What to expect when TV and social media are "free" (= you're the product) while education becomes more and more inaccessible.

The super rich need to wake up, pay taxes and fund education (and a few other things) as they used to do in the previous few decades. Quick before the next idiots start world war 3 somewhere.

https://en.m.wikipedia.org/wiki/Weimar_Republic#Economic_...

It has to come from the top because the poor are unfortunately now too often too ignorant to even understand the numbers showing how much they're screwed.

CDDL compatibility

Posted Aug 8, 2020 23:26 UTC (Sat) by liam (subscriber, #84133) [Link]

Ah, you missed the first part. He's talking about the "elites" (Dartmouth & Duke).
My point in posting this was, one, your comment immediately brought it to mind, and two, virtually no one is adept at accepting a good argument and recognizing good data unless it can be easily incorporated into their worldview.
We give far greater scrutiny to the opposition than our allies. To do otherwise is exhausting and, possibly, bad for our well being. That's why it's so tricky.

CDDL compatibility

Posted Aug 8, 2020 23:58 UTC (Sat) by Wol (subscriber, #4433) [Link]

And that's why, to really win an argument, you need to understand your opponent's. You never win an argument by telling your opponent they are wrong. You need to ask them questions, that throw their beliefs into question - "if you believe A, then surely B must be true too, no?" "no? Well if A is true, how come B isn't?".

If you've done it right, you now leave them questioning their own beliefs. At which point, you can explain your own. Just expect them to poke holes in your beliefs, just like you've done to them :-)

Cheers,
Wol

CDDL compatibility

Posted Aug 9, 2020 0:25 UTC (Sun) by liam (subscriber, #84133) [Link]

That's a good methodology if the goal is to win arguments.
What was interesting to me was the idea that rhetoric (not big "R"😂) could be genuinely helpful, and not simply a program for making an opponent submit.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 4, 2020 18:21 UTC (Tue) by marcH (subscriber, #57642) [Link]

I tried harder and found the great comment I was referring to:
https://lwn.net/Articles/817671/
> There is a tendency in these discussions to anthropomorphize large corporations. Which is dangerous, because it is grossly inaccurate to reality...

The keywords are "LWN antropomorphize corporations"
https://www.google.com/search?q=site:lwn.net+anthropomorp...

at least two independent and inter-operable implementations

Posted Aug 3, 2020 1:10 UTC (Mon) by marcH (subscriber, #57642) [Link]

> While the current GPU utilized is nvidia, there's nothing in the rest of the patches specific to Nvidia - an Intel or AMD GPU interface could be equally workable.

For the IETF "could" isn't enough:

https://www.ietf.org/how/runningcode/implementation-reports/

> The IETF Standards Process (RFC 2026, updated by RFC 6410) requires at least two independent and inter-operable implementations for advancing a protocol specification to Internet Standard.

Because the devil is always in the details.

at least two independent and inter-operable implementations

Posted Aug 5, 2020 3:36 UTC (Wed) by gdt (subscriber, #6284) [Link]

I would be cautious when presenting IETF processes as an ideal. See rfc8789 for the latest developments; correcting an undesirable outcome where documents which had not achieved "rough consensus" were being published as Informational RFCs.

at least two independent and inter-operable implementations

Posted Aug 5, 2020 6:07 UTC (Wed) by marcH (subscriber, #57642) [Link]

> I would be cautious when presenting IETF processes as an ideal.

Good thing I gave only a very narrow quote then.

> ... where documents which had not achieved "rough consensus" were being published as Informational RFCs.

My quote refers to the Standards Track.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 19, 2020 2:54 UTC (Wed) by rlhamil (guest, #6472) [Link]

My basic problem with GPL (as contrasted with BSD, MIT, etc licenses) is that somehow legal trickery is ok, but only if it's in support of ideology.

I'm not a huge fan of ideology, thinking it seldom worth the benefits it claims to offer. I prefer results. As long as something open isn't suddenly closed (Oracle, I hate you forever! OpenSolaris could have been the BEST OS around, if you weren't such jerks!), one can always re-implement replacements for closed code, if one wants/needs to go to the bother. Otherwise, I want my dang commercially available gizmo to work and be cheap, and whether it runs Linux or some embedded BSD just isn't that interesting to me. If I really want to hack it, I probably can even with closed code, and if I'm too lazy to reverse-engineer, then I'm probably too lazy even if I don't have to.

Netgpu and the hazards of proprietary kernel modules

Posted Aug 19, 2020 10:39 UTC (Wed) by ldearquer (guest, #137451) [Link]

> My basic problem with GPL (as contrasted with BSD, MIT, etc licenses) is that somehow legal trickery is ok, but only if it's in support of ideology.

As long as you have a view of the world, you have an ideology. Calling something "ideology" to discredit it makes no sense, as you probably are reflecting your own ideology by doing so. Believe it or not, even putting ahead any "results" (of whatever kind) to other considerations is already an ideology on its own.

> As long as something open isn't suddenly closed

Well, that's the whole point of the GPL

> If I really want to hack it, I probably can even with closed code, and if I'm too lazy to reverse-engineer, then I'm probably too lazy even if I don't have to.

Can't disagree more. Either you are way more skilled than me (quite probably this is case), or you never truly reverse-engineered something

Netgpu and the hazards of proprietary kernel modules

Posted Aug 19, 2020 11:06 UTC (Wed) by Wol (subscriber, #4433) [Link]

> I'm not a huge fan of ideology, thinking it seldom worth the benefits it claims to offer. I prefer results. As long as something open isn't suddenly closed (Oracle, I hate you forever! OpenSolaris could have been the BEST OS around, if you weren't such jerks!),

Idealogy, as you call it, is required to deliver the results - what actually is the difference in meaning between "benefits" and "results"?

Your Oracle story is all too common in the software world - and many others - and the real harm caused to real people is immense.

Cheers,
Wol


Copyright © 2020, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds