Announcement

Collapse
No announcement yet.

Mesa 21.2 Lands NVIDIA's Code For Handling Alternate GBM Backends

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #71
    Originally posted by oiaohm View Post
    GPLed code requiring a blob to function is not 100% against GPL. If it was impossible you would not be able to use bios/EFI interfaces from the like of grub.
    That's covered under the same part as "by design, the GPL doesn't require GPLed applications to only syscall into GPLed kernels". See the excerpt I quoted further down which defines the GPL's exception for calling into platform interfaces. The key detail is that the exception is nullified if you distribute the blob rather than finding it already part of the platform.

    Originally posted by oiaohm View Post
    Next this comes down to what is a independent work and what is a derivative work. Like Nvidia with its blob could prove in court that their windows driver and Linux driver require the same interface to be provided by the host so the design of that interface is not based on the GPL work so not a derivative of the GPL work but is in fact an independent work so legal.
    I think you're referring to this part of the GPLv2:

    The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law
    ...but the issue at hand is whether it's legal to redistribute a GPLed piece of work that depends on an independently written GPL-incompatible work, such as a GPL-licensed archive GUI linking against the UnRAR code rather than invoking it as a subprocess.

    As such, the question isn't whether the nVidia blob is derivative of the GPL condom (which it clearly isn't) but whether the GPL contains a clause which can be interpreted as "If Linux kernel modules are derivative works of the Linux kernel, then they must be entirely GPL-compatible".

    Remember that...

    You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License.
    ...so, if the GPL applies to the kernel well enough for a kernel module to qualify as a derivative work, which is what nVidia is hedging on by using a "GPL condom", then depending on Linux kernel module interfaces means nVidia doesn't hold sufficient rights to their GPL condom to overrule this passage from section 2 (emphasis mine):

    If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
    ...and this passage from section 3 (emphasis mine):

    For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
    (The aforementioned platform exception.)

    Basically, the GPL says that nVidia is only allowed to make works derived from the Linux kernel if all parts of the compiled object which nVidia supplies (rather than finding them already present as part of the platform) are available under the GPL.

    The reason nVidia feels it's safe to use the GPL condom approach is that the GPL takes effect on distribution, so they see it as safe as long as they never distribute the part which depends on both the kernel interfaces and the blob in binary form.

    As you said,

    Originally posted by oiaohm View Post
    Of course this is Nvidia job to go to court and prove if it legal or not.
    Whether nVidia's GPL condom is still sufficiently derivative of the Linux kernel interfaces to violate the GPL in source form is something nobody sane and pragmatic really wants resolved because, if it is derivative, it might kill access to nVidia drivers on Linux for an indefinite period of time while, if it isn't derivative, open-source developers lose leverage over nVidia.

    Originally posted by oiaohm View Post
    This is the same way ndiswrapper is legal the interface ndiswrapper is using to use windows drivers is not protected by GPL and the interface independent work to GPL works so is now a divide line between GPL and closed source windows driver in ndiswrapper. There are legal ways to-do this but all the proper legal ways will have proper divide line. Those legal ways are not how Nvidia does their drivers.
    See my previous mentions. Just the parts of the GPL about distributing things together are enough to put the nVidia binary driver and ndiswrapper in different baskets, before you even get into the hairier bits about how the nVidia binary driver's GPL condom implements a private interface and is intended to be specifically used with that blob, while ndiswrapper implements a public interface and is intended to provide an ABI stable enough to be perfectly compatible with an NDIS driver under a GPL-compatible license.

    Comment


    • #72
      Originally posted by ssokolow View Post
      Basically, the GPL says that nVidia is only allowed to make works derived from the Linux kernel if all parts of the compiled object which nVidia supplies (rather than finding them already present as part of the platform) are available under the GPL.

      The reason nVidia feels it's safe to use the GPL condom approach is that the GPL takes effect on distribution, so they see it as safe as long as they never distribute the part which depends on both the kernel interfaces and the blob in binary form.
      Does not exactly have to be GPL Its GPL compatible close enough. Of course that GPL condom in it current form is protecting Nvidia not anyone downstream. So person makes up a livecd puts a prebuilt Nvidia driver then puts it online they are screwed right.


      Originally posted by ssokolow View Post
      Whether nVidia's GPL condom is still sufficiently derivative of the Linux kernel interfaces to violate the GPL in source form is something nobody sane and pragmatic really wants resolved because, if it is derivative, it might kill access to nVidia drivers on Linux for an indefinite period of time while, if it isn't derivative, open-source developers lose leverage over nVidia.
      Problem here is sooner or latter a person who is not sane/pragmatic will ask the question. Yes being done wrong we should not be giving Nvidia a pass.

      Originally posted by ssokolow View Post
      See my previous mentions. Just the parts of the GPL about distributing things together are enough to put the nVidia binary driver and ndiswrapper in different baskets, before you even get into the hairier bits about how the nVidia binary driver's GPL condom implements a private interface and is intended to be specifically used with that blob, while ndiswrapper implements a public interface and is intended to provide an ABI stable enough to be perfectly compatible with an NDIS driver under a GPL-compatible license.
      But it is possible for Nvidia to document that private interface and demo its existence on other platforms. If the GPL condom contained a loader for the blob the blob and the GPL condom could ship independently so coming into conformance with
      If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.
      Without a loader split you really cannot be sure that you are 100 percent in conformance with GPL for everyone. Nvidia thinks they have protected their ass. Problem is way they have puts the down stream at risk instead of fixing it properly. Nvidia could protect their ass by using a loader in the class of ndiswrapper so allowing the driver blob to ship independant to the gpl condom. Using a loader it possible to make a solution that is conforming to GPLv2 while still using a binary blob.

      Comment


      • #73
        Originally posted by oiaohm View Post
        But it is possible for Nvidia to document that private interface and demo its existence on other platforms. If the GPL condom contained a loader for the blob the blob and the GPL condom could ship independently so coming into conformance with.
        But it's questionable whether that would be sufficient without nVidia's actions making it clear that they intend for there to eventually be independent implementers of that interface. Of course, they could always cover that base by porting Nouveau so the loader has a GPL-compatible alternative implementation of the blob available.

        Just documenting the blob's interface wouldn't be materially different from saying "The UnRAR source is under a GPL-incompatible license, but it's intended to be integrated into multiple third-party applications. Therefore, it's GPL-compatible."

        The courts need to rule that the GPLed code was written such that it doesn't inherently depend on the presence of the blob and the simplest way to do that would be to turn Nouveau into an alternative compilable-from-source implementation of the blob with a stable ABI shared between it and the GPL condom for it to depend on.

        (Similar to how GnuTLS exists to make it legal to combine GPL-licensed components and components that depend on the OpenSSL API in the same executable, despite OpenSSL having a GPL-incompatible license. It's the end user's problem if they choose to use the .so file from OpenSSL instead of the GnuTLS one the project spec'd for license compatibility.)

        Originally posted by oiaohm View Post
        Without a loader split you really cannot be sure that you are 100 percent in conformance with GPL for everyone. Nvidia thinks they have protected their ass. Problem is way they have puts the down stream at risk instead of fixing it properly. Nvidia could protect their ass by using a loader in the class of ndiswrapper so allowing the driver blob to ship independant to the gpl condom. Using a loader it possible to make a solution that is conforming to GPLv2 while still using a binary blob.
        I don't think it's that simple, but I do think a loader would be better than no loader.
        Last edited by ssokolow; 09 July 2021, 03:24 PM.

        Comment


        • #74
          Originally posted by oiaohm View Post

          Sorry to say no its not that simple. This violation problem is a game of buck pass. When Nvidia went build on delivery only that passed the problem to Distributions and users. When Distributions have gone DKMS only that pass the problem to users. Basically it changes who suffers if something is wrong and someone decides to proceed with legal.

          Correct fix would be if Nvidia implement a loader in there open source part of the driver to load the closed source part so we don't have a mixed license problem in a single file. For parties wanting to make livecd and like the mess if Nvidia kernel module is problem.
          What kind of tangent are you going on, what you are saying isn't directly addressing anything that I am saying.

          Comment


          • #75
            Originally posted by mdedetrich View Post
            What kind of tangent are you going on, what you are saying isn't directly addressing anything that I am saying.
            No your startement was over reaching,

            Originally posted by mdedetrich View Post
            When you install nvidia driver in arch the package manager compiles the DKMS module on demand (depending on Kernel version), there isn't any violation afaik.
            Say there isn't "any violation" is not true. True would be not a legally enforceable voilation. DKMS has built a module that is one step from legal violation lets say you make a vm image using arch with the Nvidia driver inside and ship that to someone you have just distributed it triggering the distribution part of GPLv2 so you have just committed GPLv2 breach. Before the breach the module the DKMS has built is technically in violation of GPLv2 terms just has not triggered the point yet where you have to obey the terms of GPLv2. So like it or not there is violation of terms just not enforceable violation yet.

            This is the buck pass problem. DKMS module build can be safe and unsafe. Safe is something you can legally distribute the built driver without issue. The Nvidia module built by DKMS is unsafe due to it design if you distribute it you are technically in voilation.

            Comment


            • #76
              Originally posted by oiaohm View Post
              Say there isn't "any violation" is not true. True would be not a legally enforceable voilation. DKMS has built a module that is one step from legal violation lets say you make a vm image using arch with the Nvidia driver inside and ship that to someone you have just distributed it triggering the distribution part of GPLv2 so you have just committed GPLv2 breach. Before the breach the module the DKMS has built is technically in violation of GPLv2 terms just has not triggered the point yet where you have to obey the terms of GPLv2. So like it or not there is violation of terms just not enforceable violation yet.
              Nice try but no, look I get you are trying to stretch as much as possible that there is some legally defensible violation because you really badly want to throw crap on at NVidia at every opportunity possible but unless you are an actual lawyerI will just advice you to stand down. I am pretty damn sure if there was an actual license violation it would have already been swiftly dealt with, just as many actual real violations were dealt with in the past.

              Comment


              • #77
                Originally posted by mdedetrich View Post
                Nice try but no, look I get you are trying to stretch as much as possible that there is some legally defensible violation because you really badly want to throw crap on at NVidia at every opportunity possible but unless you are an actual lawyerI will just advice you to stand down. I am pretty damn sure if there was an actual license violation it would have already been swiftly dealt with, just as many actual real violations were dealt with in the past.
                I have spent the time and money to get a problem legal review over this as I was requiring to move around prebuilt images. "there isn't any violation" So have you got legal advice before saying this or are you a lawyer sorry those alone are not good enough you need to get a problem legal review. The reason why distributions and Nvidia cannot provide prebuild driver for kernel is that there is a violation of the GPL terms. If there was not violation there would be no problem for distributions or Nvidia to provide prebuilt Linux kernel modules.

                Before you write again "there isn't any violation" I absolutely recommend you spending the money I have to get this legally reviewed and learn you are wrong. Yes mdedetrich you were in fact giving incorrect legal advice. Please note getting this stuff legally reviewed is not a job of a single lawyer so even if you are lawyer you should not comment on this stuff without a full review document backing you statement.

                There are ways Nvidia could fix this so that the drivers could be provided built by Nvidia and the Distributions and are no long traps to end users. Items like ndiswrapper and stuff used to port old closed AIX drivers to Linux past demoed how to do it absolutely legally. There is really no need to be in the legally questionable zone the result of being in the legally questionable zone is someone is going to make the mistake and use it wrong so then be at legal risk crossing their fingers they don't get prosecuted for it.

                mdedetrich you are making a very big incorrect mistake that I want to throw crap at Nvidia. I really don't want to throw crap I just wish Nvidia was playing correctly by the rules and not keep on repeating the mistake they have made.

                Yes actual license violation means you have cross the trigger point. The trigger point with GPLv2 is in distribution. The reality here you can be in violation of GPLv2 license terms yet not be in license violation because you have not distributed it yet until the build binary driver is distributed the distribution terms of gplv2 have not triggered so enforcement event of the GPLv2 license is not triggered yet and the binary driver work does not exist until its built. Nvidia is using a two loopholes in GPLv2 to get away with being in violation GPLv2 terms. You did not write license violation you just wrote violation and just writing violation could be violation of terms or violation of license yes those are two different things. Violation of terms does not mean you are on the hook for violation of license in all cases there are legally questionable ways to be in violation of terms yet not in violation of license and this is what Nvidia has done.
                Last edited by oiaohm; 10 July 2021, 02:32 AM.

                Comment


                • #78
                  Originally posted by oiaohm View Post
                  Pages full of baseless waffle
                  Dude, my full-time job is working with open source software and at my company we have an entire legal team to deal with these issues. For this reason I do not make substantive claims on these legals issues unless it comes from a proper legal source.

                  If we take your page of dribble with a grain of salt then
                  1. Your some magical legal genius that has managed to uncover some loophole which no one else has found for 20+ years (including actual Linux kernel devs/legal team which for past 20 or so years haven't found any issue apart from an unrelated GPL symbol case which was quickly rectified)
                  2. As per course for you, you are very so slightly twisting stuff and/or deliberately ignoring contradictory information to suite some point which you are trying to make

                  As is perfectly reasonable for people with common sense, I am currently betting on number 2 being case.

                  So I am saying either put up or shut up, and by put up I mean provide some statement from a lawyer (I.e. not you) or from something like the FSF foundation making an official statement on the matter, because one thing is for sure I have wasted an hour of my life trying to find anything vaguely related to what you are saying

                  Comment


                  • #79
                    Originally posted by mdedetrich View Post
                    Dude, my full-time job is working with open source software and at my company we have an entire legal team to deal with these issues. For this reason I do not make substantive claims on these legals issues unless it comes from a proper legal source.

                    If we take your page of dribble with a grain of salt then
                    1. Your some magical legal genius that has managed to uncover some loophole which no one else has found for 20+ years (including actual Linux kernel devs/legal team which for past 20 or so years haven't found any issue apart from an unrelated GPL symbol case which was quickly rectified)
                    2. As per course for you, you are very so slightly twisting stuff and/or deliberately ignoring contradictory information to suite some point which you are trying to make

                    As is perfectly reasonable for people with common sense, I am currently betting on number 2 being case.

                    So I am saying either put up or shut up, and by put up I mean provide some statement from a lawyer (I.e. not you) or from something like the FSF foundation making an official statement on the matter, because one thing is for sure I have wasted an hour of my life trying to find anything vaguely related to what you are saying
                    mdedetrich I am not a legal genius neither the legals I had look at it. A proper review checks out your existing documents. There is a lot of information on the "GPL Condom" defence that is illegal. Include documentation that explains what I just wrote that you can be in violation of GPL terms yet not in violation of GPL license. The annoying part here is the person who legally does the action that puts them in violation of the GPL license not the person who set them up. This is the old you can lead a horse to water and not make them drink issue(in other words a third party can set you up it you who has to be smart enough not to fall for it). The way Nvidia driver is setup the responsibility to use to correctly is pushed from them to the party who is dumb enough to distribute the prebuilt Nvidia driver. That something has not been prosecuted does not mean it legal. Distributions have been avoiding providing Nvidia drivers prebuilt for this problem it was first covered in 2004.

                    Go speak to your legal team and ask them a simple question can you be in "violation of GPL terms" while not in "violation of GPL license" the correct answer is yes you can. This is the key to this problem. Nvidia is not doing something that puts them in violation of gpl license and the distributions shipping DKMS version of Nvidia drivers is not doing something that puts them in violation of GPL license but both are in fact in violation of GPL terms. A party dumb enough to distribute prebuilt version of Nvidia binary driver is now in breach of GPL license because the violated terms now come enforceable. Of course the party who you can enforce against is not the party you wish to prosecute as they were only the party who had been setup by Nvidia short cut so basically entrapped. Really this has been known for almost 20 years now and it about time we stop sugar coating it.

                    Comment

                    Working...
                    X