Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Graphics Open Source Linux

Open-Source NVIDIA Driver Goes Stable On Linux 231

An anonymous reader writes "The open source Nouveau driver, a reverse-engineered incarnation of NVIDIA's official proprietary driver for Linux, has reached its biggest milestone. The Nouveau driver is now being considered stable within the Linux kernel and leaving the staging area, with the pledge of a stable ABI. Phoronix has summarized the state of the Nouveau driver, which works fine if you don't care about performance or are fine with running hardware that's a few generations old."
This discussion has been archived. No new comments can be posted.

Open-Source NVIDIA Driver Goes Stable On Linux

Comments Filter:
  • by Anonymous Coward

    Sorry, this is kind of off, but still interesting and related as this was work done by reverse engineering. How do you reverse engineer on Linux, or other UNIX systems like OS X and BSD? Windows has many great software like IDA and OllyDBG, but seems there's just no such things available for Linux or UNIX. The problem isn't even about using console programs, it's about showing the debugging process and being able to put breakpoints.

    • by Anonymous Coward on Friday April 13, 2012 @09:03PM (#39681681)

      http://nouveau.freedesktop.org/wiki/Development [freedesktop.org]
      I'm no engineer, not even a reverse engineer, but I'd probably start with a bus analyzer, gdb, and follow some kernel/driver debugging lists.
      Dear reader, feel free to tell me how wrong this approach is.

    • strace, gdb, etc...

    • by Anonymous Coward on Friday April 13, 2012 @09:28PM (#39681859)

      Umm, IDA is available on Linux.

    • by Anonymous Coward on Friday April 13, 2012 @09:48PM (#39682019)

      We don't reverse engineer the code, we reverse engineer what is sent to the card. Linux can dump everything going through the PCIE bus, that's the so-called mmiotrace.

      We only reverse engineer by taking the binary driver as a blackbox, sending commands and seeing what comes out.

      Martin Peres - Nouveau developper

      • Comment removed (Score:4, Interesting)

        by account_deleted ( 4530225 ) on Saturday April 14, 2012 @12:29AM (#39682859)
        Comment removed based on user account deletion
        • by Anonymous Coward on Saturday April 14, 2012 @12:49AM (#39682955)

          For one thing, DMCA only fits if they actually implemented some type of protection scheme which may or may not be the case. In either case, this does not apply at all as the DRM isn't being broken. The blackbox driver is working as intended and not taken apart in any way, it's like trying to see how a car works without actually taking it apart by systematically doing what you normally would do anyways and recording it's response.

          Instead of running a program that sends a large set of commands to the driver and having it returns random responses, you send 1 specific command at a time and recording each response so you are able to reproduce it in their own driver.

          What they are doing, is basically mapping the interface (doorway as you will) to the blackbox driver. An interface can not be copyrighted (this has some precedence in court rulings and is done often like emulators). It's only illegal once you start copying either parts of the source code or machine code. If you copy the outside, the inside really doesn't matter in the greater scheme (though of course there are issues of performances and driver specific bugs)

          Yes, this is an insane amount of work and these people should be respected greatly especially if they are not being paid to help improve linux.

          (Different Anon)

        • by Forever Wondering ( 2506940 ) on Saturday April 14, 2012 @02:37AM (#39683359)

          Now for my other question, since you are basically snatching the data from a binary blob which i'm sure is full of proprietary code, after all if it wasn't they could just FOSS the thing, do you worry about DMCA? i know that AMD can't release full specs on their GPUs because protected path isn't theirs and would break DMCA and since Nvidia cards i'm sure have protected path as well do you have to worry about legal ramifications? or have you set up the project in some place that doesn't recognize software patents?

          What nouveau development does is feed data through the API and look at the I/O ports and what data they get. The developers are feeding data they "own" [e.g. the address of a frame buffer they created] and then retrieving it after it is transmuted. Virtually all devices in a system (e.g. disk controllers, etc.) have a port list so just having that is not novel (i.e. not patentable). Since nVidia isn't publishing a document on the port list, no copyright either. Might be claimed as a proprietary trade secret, but it's okay to reverse engineer in this manner [reverse engineer is a protected activity under the right "clean room" circumstances].

          The "clean room" methodology has been court tested many times. In this instance, we have three groups that do not communicate, except in controlled ways. Group A does the above "port probing" and writes a document of their findings. Group B writes an API document using only Group A's report. Group C uses the API document generated by Group B to write the device driver code.

          If you ARE Mr Peres I would like to say I admire your guts, frankly I wouldn't want to go within 100 yards of anything to do with video as long as all these crazy patents and lawsuits are going on. And how about hardware acceleration of video? How can you do that without ending up in the whole H.26x patent minefield?

          No doubt nVidia has a license to H.264 patents. Under the exhaustion doctrine, anyone can benefit from using the API to output H.264 video. If that were not the case, any end user [even using nVidia's proprietary driver], would be required to pay H.264 patent licensing fees. Likewise for the use of one's home entertainment system.

          However, that doesn't mean some folks don't try. Lodsys [a patent troll] licensed a patent to Apple. Apple incorporated the technology under an API that software developers can use. Lodsys has been trying to extract license fees from all software developers that use the Apple API. Apple is intervening in court to stop Lodsys using the exhaustion doctrine as the basis for their challenge against Lodsys in defense of the developers.

          Frankly I think its a shame that such questions even have to be asked as while i have no problems with proprietary software and use both FOSS and proprietary software every day i do NOT support software patents but as long as that minefield exists I am curious how you intend to approach feature parity with the blob driver without stepping into the whole patent mess since one of the big uses of GPUs is video processing and that's patented up the wazoo.

          It's not so much the patent mess (as I mentioned above), but rather the difficulty of deducing the port list, API doc, etc. using the clean room method. The 2D case is [relatively] easy enough. The 3D case [with a large number of acceleration modes, etc.] is a lot more work, many more test cases, etc. Sheer scope of such an undertaking is the biggest limiting factor.

        • by mupuf ( 2617831 ) on Saturday April 14, 2012 @05:50AM (#39683853) Homepage

          Ok, I created an account. It will be simpler for others to follow. Comparing me to Linus or Eric Raymond is really over-the-top. I'm just a PhD student who has been working on power management in nouveau for little more than 1.5 years.

          Anyway, the answers to your post are right, clean-room REing is legal. The shady part is for the firmwares that you have to decode in order to re-implement them. Fortunately, we know nvidia used a compiler to compile them. As we write them in asm only and don't use the same interface, I guess we are pretty covered.

          As for video decoding, nVidia though about us and added a "safe" for the encryption keys. So yes, we can re-implement video decoding (it is an on-going work, but it's ugly) but the compliance with hdcp will never come.

          As for software patents, we do our best not to do things covered by them but sometimes we have to. In this case, we think about the sane countries that could benefit our code (most of them are "sane" ;)).

          Lastly, nVidia said they would neither help nor hinder the project. If there is something they don't like, I'm sure they will let us know before going to court. If they wanted to go to the court, that would be one hell of a pain since they would have to sue individuals from many countries, mostly european.
          Most of us are students, that would be bad PR to sue us :D

          • Ok, I created an account. It will be simpler for others to follow. Comparing me to Linus or Eric Raymond is really over-the-top. I'm just a PhD student who has been working on power management in nouveau for little more than 1.5 years.

            I'm not hairyfeet that you did the reply to. But, since you referenced info from my post in your reply to his, I'm assuming you just tried to consolidate things. One of the advantages to having an account is that your posts start at level 1 (vs 0 for AC) and people are more likely to "mod you up" and improve your "karma" if you post as yourself (or even a pseudonym as I and many others do--slashdot!=facebook). Eventually, if your karma goes high enough, your posts automatically start at level 2.

            Anyway, the answers to your post are right, clean-room REing is legal. The shady part is for the firmwares that you have to decode in order to re-implement them. Fortunately, we know nvidia used a compiler to compile them. As we write them in asm only and don't use the same interface, I guess we are pretty covered.

            I was fam

        • by Alex Belits ( 437 ) * on Saturday April 14, 2012 @07:52AM (#39684189) Homepage

          Shut up, hairyfeet, you are supposed to write pages and pages about horrors of not having a single unchanging ABI for kernel drivers, so poor proprietary drivers developers can write shit drivers.

    • Windows has many great software like IDA and OllyDBG

      Real programmers use od.

    • Sorry, this is kind of off, but still interesting and related as this was work done by reverse engineering. How do you reverse engineer on Linux, or other UNIX systems like OS X and BSD? Windows has many great software like IDA and OllyDBG, but seems there's just no such things available for Linux or UNIX. The problem isn't even about using console programs, it's about showing the debugging process and being able to put breakpoints.

      Even if that was true... couldn't you do the reverse engineering on a Windows machine?

  • The latest version on Ubuntu 12.04 beta2 doesn't cut it on my hardware. I am thankful for Nvidia's support of Linux.
    • by GrumpyOldMan ( 140072 ) on Friday April 13, 2012 @10:32PM (#39682277)

      Besides spotty hardware supprt, AFAIK it is also missing VDPAU (HD video decoding) support, which is the main reason a lot of HTPC types use Nvidia cards in their linux machines. It is also fairly hard to remove. I think it took me 1/2 hour of re-booting before I finally purged nouveau from my system to clear the way so that the Nvidia driver could attach.

      As a Linux (and other *nix) driver guy, I have tons of respect for how Nvidia deals with the constant, gratuitous changes in the Linux kernel APIs.

      • I could not agree more. Nvidia has been very responsive.
      • I think it took me 1/2 hour of re-booting before I finally purged nouveau from my system to clear the way so that the Nvidia driver could attach.

        Or you could have blacklisted nouveau and rebooted, which would have taken about thirty seconds plus the reboot time. However, it IS offensive that you have to do this.

      • by Hatta ( 162192 )

        I just switched back to the proprietary driver, because Nouveau doesn't control my fan's speed, and can't adjust brightness contrast. All it took was removing the driver with apt-get, putting nomodeset back in my /boot/grub/menu.lst, and running the nVidia installer again. 5 minutes, tops.

  • Which I do, but I also care about performance. I've found myself having to switch back and forth between it and the propreitary Nvidia driver on some machines.

  • Sometimes causes me headaches when trying to develop CUDA projects... but all in all a wonderful thing for 95% of the Linus user base. Spock would approve.

    I only wish Ubuntu didn't ram it down my throat.

  • Nothng but Hate (Score:5, Insightful)

    by goodgod43 ( 1993368 ) on Friday April 13, 2012 @09:54PM (#39682055)

    It's amazing to me that there is so much flame out there for this. None of you could do this, Not a single one of you have tried, and yet, this small group of dedicated people have actually figured out a piece of proprietary hardware to the point of having their code included in the Linux kernel? Way to go guys.

    • by ghn ( 2469034 )
      +1 to you. Congrats to the Nouveau developers. That is a major accomplishment.
    • It's amazing to me that there is so much flame out there for this.

      Not from real people, it's just trolls.

      • Yep. People who will never be users or contributors, not matter what they say. They're here because they don't do anything meaningful with their lives, so they have to undermine the work of others.

        The only winning move is to ignore them.

    • Agreed. I briefly ran a mostly current Nouveau on my work desktop when I updated to Fedora 16, and everything auto-detected and came up nicely.

      This was shortly before I pulled the PCIe card out because the Radeon driver finally works too with my display, and now supports the AMD APU I bought last June.

      The only thing I acutally want at this point is lower power consumption, by utilizing as much silicon as possible (which will also help the gamers). Functionality seems to finally be mature at least! Sure,

    • I wouldn't flame about it — it's cool that it exists — but I wish they would spend their time focused on problems that actually need solving, like support for (original) Xbox graphics. Every so often someone contributes some work on it, and from the comments it looks like it's ALMOST there, but not quite. But meanwhile they're working on drivers for cards that already have official support! That cheeses me off slightly. Not so much that I would actually create a comment and complain about it if

  • Comment removed based on user account deletion
  • by Anonymous Coward on Friday April 13, 2012 @10:22PM (#39682223)

    Seriously guys why all the hate? Sure it doesn't work for everyone, it works on old hardware. But here's the deal, it works and is sufficient for day to day use. Here's the amazing and nerdy part of it too, they REVERSE ENGINEERED IT. Something as complicated as a video card. That's no small feat and they should be congratulated for their efforts to make linux just that much better. Start hating when you contribute something with any significance at all. BTW I'm not a kernel developer, just a nerd that appreciates a feat such as this.

    • Dammit, posted AC. That'll learn me to not log in.
      • by Anonymous Coward on Friday April 13, 2012 @11:51PM (#39682677)

        Dammit, posted AC. That'll learn me to not log in.

        Yeah I hate it when I accidentally forget to log in, and then accidentally type in a CAPTCHA, and then accidentally click "Submit", and then realize "shit, I forgot to log in!".

        Gets me every time.

        • Well, before that I'd honestly never posted AC before :P. I didn't know that the CAPTCHA was just for AC since I post fairly infrequently these days I actually thought it was something new. But when you say it like that, yes it was kinda stupid.
          • Well, before that I'd honestly never posted AC before :P. I didn't know that the CAPTCHA was just for AC since I post fairly infrequently these days I actually thought it was something new. But when you say it like that, yes it was kinda stupid.

            Anyone and I do mean anyone can do a stupid thing. The fact you have a sense of humor about it is strong evidence, in fact proof positive, that you're not a stupid person.

            If you were a stupid person you would resent and resist all suggestions that you erred in any way that could be corrected. That is the mark of stupidity. It never admits fault no matter how obvious it may be and never believes it should ever do anything differently. Instead it climbs up on its high horse, acts "hurt" and tries to con

    • by tiqui ( 1024021 )

      The Nouveau guys and the distro guys brought the "hate" on themselves

      First, the Nouveau guys did a remarkable thing (a very good effort at reversing a very complicated thing and providing a somewhat functional result), but then it was jammed into the distros before it was ready and in a way that was just amazingly annoying. Hint to Linux distribution people: if you are going to bundle a buggy, not-really-ready driver into a release, make it an obvious obvious checkbox-type option at install time like this:

  • Awesome! (Score:4, Interesting)

    by starseeker ( 141897 ) on Friday April 13, 2012 @10:44PM (#39682343) Homepage

    I'm using this driver (well, probably a slightly older version of it) with my desktop now, and so far I've been pleasently surprised. I don't need blazing fast performance on 3D for most things. FlightGear/OpenArena level games are about as far as I'm likely to push, since I'm not into the latest and greatest FPS anymore. Given that, the prospect of an integrated driver that "just works" without having to do anything extra is awesome.

    My last Gentoo re-install I ended up trying the Nouveau driver after my attempt at enabling the binary NVIDIA driver didn't go well - had to flip on a couple kernel options to get acceleration, but after doing so and for my uses the results are "fast enough." I'll be sticking with Nouveau from now on unless I hit a major show-stopper. Well done, Nouveau team!

    • My last Gentoo re-install I ended up trying the Nouveau driver after my attempt at enabling the binary NVIDIA driver didn't go well - had to flip on a couple kernel options to get acceleration, but after doing so and for my uses the results are "fast enough." I'll be sticking with Nouveau from now on unless I hit a major show-stopper. Well done, Nouveau team!

      That about the same space I'm in with the open source Radeon driver, except that it's working well on very recent cards. I can still go back to the Catalyst driver any time I want and I will get a (steadily shrinking) throughput boost. But the number of times I bothered to do that in the last 18 months is zero. Instead, I plugged in a newer card and got much bigger boost that way, incidentally, without increasing power consumption. By the way: this point totally hard to understand for Windows users... when

  • by portablejim ( 1538997 ) on Friday April 13, 2012 @10:56PM (#39682397) Homepage

    One thing which you cannot do with the official NVIDIA driver for GNU/Linux is have mixed rotation monitors. (I would like to be proven wrong - have even tried to prove myself wrong, but given up).

    I currently have one monitor in portrait and one monitor in landscape and one monitor in landscape, with the ability to drag windows from one to the other. I have some acceleration, which allows me to see through terminal windows.

    Nouveau works, official one does not work. Simple choice.

    • by dbIII ( 701233 )
      I'm doing it now with the NVIDIA driver - one horizontal and one vertical. The line in xorg.conf for the vertical screen is:

      Option "Rotate" "Left"

      Now for some reason the GUI tool doesn't include that option but it can be done by adding that option to the configuration file.

      I think there also might be a driver independent way to do with RandR as well instead of in xorg.conf but I haven't touched RandR for a while.
      Of course if Nouveau already does what you want then there's no reason to stop using

      • by sbryant ( 93075 )

        I'm doing it now with the NVIDIA driver - one horizontal and one vertical. The line in xorg.conf for the vertical screen is:

        Option "Rotate" "Left"

        Now for some reason the GUI tool doesn't include that option but it can be done by adding that option to the configuration file.

        It looks like there's no way of doing that on the fly, then - or does anybody know how to do that? I know that nVidia's driver doesn't use xrandr. I want to use rotation, but I could only get it to rotate all the screens at once (

        • Nvidia driver doesn't do xrandr? I use it. Here's my xorg.conf:

          Section "Module"
          Load "glx"
          EndSection

          Section "Device"
          Identifier "Default Device"
          Option "RandRRotation
          Driver "nvidia"
          Option "NoLogo" "True"
          EndSection

  • ...and it would seem to be a rather persistent thing, at that.

    Personally, I think it's great to hear some simple news about a non-trivial thing relating to a driver that also affects the overall performance of my own computer. That it's an article not written in marketspeak covered with a 20 gallon drum full of marketsauce, then, I guess that may also serve to comment to the technological integrity of the open source developer domain.

    But sure sure, we can troll, we can. Cheers.

  • by Mr EdgEy ( 983285 ) on Friday April 13, 2012 @11:16PM (#39682491)

    The comments on this story really do illustrate how the readership of Slashdot really has changed over the past few years.
    This is a real "News for Nerds" story, a story about open source development and how we're still not really past the bad old days of winmodems when it comes to (real, not binary blob) hardware support by manufacturers.

    A full half of the comments I can see above seem to be troll posts along the lines of "LOL M8 DOESNT RUN UNREAL TOURNAMENT 27".

    Oh dear.

    • At least the moderators are doing their job of making the better comments higher then. I think it is great that a stable open source version of the NVIDIA driver is available. I think what really should be taken away from this is that it is another improvement to the world of open source. The knowledge gained from reverse engineering and building a suitable alternative is really all that matters. Whether or not it can handle the most high end gear or not is relevant unless they pitched it as being able to.
  • If i didnt care about performance why would I bother to install something aside from whatever the system boots with on install?

  • Absolutely fantastic, provided you haven't bought a video card made in the last 3 or 4 years...

    Hell, I can't even boot the latest Mint or Fedora live-CDs without derping around nouveau, and I'm not exactly bleeding edge here.

    • Hell, I can't even boot the latest Mint or Fedora live-CDs without derping around nouveau, and I'm not exactly bleeding edge here.

      Ubuntu users have no end of problems too, they have to actually blacklist Nouveau on several Ubuntu versions to get the nvidia driver to load. I am among them, still on Oneiric though.

  • I applaud your efforts, but unless we get wirespeed performance on our nVidia hardware in both 2D and 3D modes, thanks anyway, but no thanks until nVidia assists the Noveau folks for real.

  • by sgage ( 109086 ) on Saturday April 14, 2012 @07:48AM (#39684171)

    I have no problem with the performance of the nouveau drivers, but compared to the proprietary drivers my card (8500 GT) runs quite a bit hotter. So I tend to stick with the proprietary drivers.

    If the nouveau devs can address this point, I'd be very content to stick with nouveau.

  • by sensei moreh ( 868829 ) on Saturday April 14, 2012 @09:56AM (#39684817)
    Subject line says it all.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...