Re-Clocking Your NVIDIA GPU With Nouveau On Linux 3.17
With the Nouveau driver changes for Linux 3.17 there are no magic breakthroughs when it comes to re-clocking -- allowing the GPU's core and memory clocks to run at their rated frequencies and voltages rather than any (often much lower) values programmed by the video BIOS at boot time. With Linux 3.17 came re-clocking for Kepler GPUs and now it works, but generally not all performance levels/states properly function. If you are running a GeForce 400/500 "Fermi" GPU or other generations of NVIDIA hardware aside from the few integrated mobile chipsets, chances are you're out of luck in being able to tap the full potential of the GPU when using this open-source, reverse-engineered NVIDIA GPU.
When using the Linux 3.17 kernel there's no huge differences in the support and the how-to guide for re-clocking the GPU with Nouveau I outlined a few months back in Trying Out Nouveau GPU Re-Clocking On Linux 3.16. The re-clocking steps already changed once before back with the original Nouveau re-clocking code before the rewrite, but with Linux 3.17 there's now a minor difference compared to Linux 3.16.
Before trying my earlier steps, the new step to carry out right away is setting the nouveau.pstate=1 kernel module parameter. Without loading Nouveau that way or adding that string to your GRUB2 configuration, the performance state sysfs file isn't being shown. The reading/setting of the performance levels is currently (since Linux 3.16) done via the /sys/class/drm/card0/device/pstate file but with Linux 3.17 this file won't show up by default.
Ben Skeggs' commit message for the change reads, "drm/nouveau: hide sysfs pstate file behind an option again - No-one has yet had time to move this to debugfs as discussed during the last merge window. Until this happens, hide the option to make it clear it's not going to be here forever." So the sysfs file is no longer being shown by default since it really didn't belong there to begin with and compatibility will break regardless, so for now it's hidden behind the pstate module parameter before it's moved over to debugfs.
After exposing the pstate file, re-clocking for Kepler GPUs should be just like it was on Linux 3.16. In my tests on the different GeForce 600/700 GPUs, I'm still only hitting around the 0a performance level (a mid-range state) while anything higher is causing the system to hang or major corruption issues. While we can hope for improvements or expanded re-clocking for Linux 3.18, chances are there won't be any miracle with the drm-next-3.18 window closing in a few weeks, but there are outstanding patches for re-clocking improvements for select GPUs.
An example of Kepler re-clocking gone wrong with Nouveau on Linux 3.17.