PowerMizerEnable not working in Linux

Option “RegistryDwords” “PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3” in xorg.conf not working now. Everything worked in version 525.89.02. Doesn’t work with new drivers. How to make it work?

1 Like

“RegistryDwords” “PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3; PowerMizerLevelAC=0x2; PowerMizerLevel=0x2; PowerMizerDefault=0x3; PerfLevelSrc=0x3333”

It works with 0x3333 as adaptive freq clocking only and heats up the card pretty good and unnecessarily burns power even if start simple app like nvidia-settings ))))))

Nvidia? What’s going on with new drivers? Why ability to decrease performance was removed? Most of the people don’t require max performance on Linux on modern adapters!

On Turing and newer based gpus you can use nvidia-smi -lgc instead.

Unfortunatelly can’t do this with NVIDIA GeForce GTX 1060 with Max-Q Design using supported freq clocks

nvidia-smi -lgc 139,607
Setting locked GPU clocks is not supported for GPU 00000000:01:00.0.

nvidia-smi -lmc 405,810
Setting locked Memory clocks is not supported for GPU 00000000:01:00.0.

Finally, after summarizing the information from this forum, I managed to achieve the desired behavior of Nvidia PowerMizer on Linux, but only with version x11-drivers/nvidia-drivers-525.125.06 and some kernel modifications.

On next newer versions GPU started heat up the card pretty good and unnecessarily burns power even if start any app like browser, messanger, development app for working or just some classic game where graffic performance is not unnecessury.

It seems like that 525.125.06 is one of the last driver versions where PowerMizer works more or less adequately does not consume energy as aggressive as in newer versions when this really necessary.

So, to install the older driver, first need to make changes to the kernel code. Currently, I am using 5.15.160-gentoo, but it is not crucial.

As was mentioned earlier: Linux 6.7.3 + 545.29.06/550.40.07: ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol '__rcu_read_lock' - #2 by birdie,
having a slightly different bug:

ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol ‘rcu_read_unlock_strict’

similarly, there are the following changes:

diff -r -u --suppress-common-lines ./linux-5.15.160-gentoo.orig/kernel/rcu/tree_plugin.h ./linux-5.15.160-gentoo/kernel/rcu/tree_plugin.h
--- ./linux-5.15.160-gentoo.orig/kernel/rcu/tree_plugin.h   2024-06-14 10:02:57.927294393 +0300
+++ ./linux-5.15.160-gentoo/kernel/rcu/tree_plugin.h    2024-06-14 11:21:37.387501835 +0300
@@ -822,7 +822,10 @@
    rcu_report_qs_rdp(rdp);
    udelay(rcu_unlock_delay);
 }
+/* ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'rcu_read_unlock_strict' 
 EXPORT_SYMBOL_GPL(rcu_read_unlock_strict);
+*/
+EXPORT_SYMBOL(rcu_read_unlock_strict);
 
 /*
  * Tell them what RCU they are running.
diff -r -u --suppress-common-lines ./linux-5.15.160-gentoo.orig/Module.symvers ./linux-5.15.160-gentoo/Module.symvers
--- ./linux-5.15.160-gentoo.orig/Module.symvers 2024-06-14 10:02:59.370294457 +0300
+++ ./linux-5.15.160-gentoo/Module.symvers      2024-06-14 12:28:57.936679436 +0300
@@ -2469,7 +2469,7 @@
 0x0a8d77df     simple_transaction_release      vmlinux EXPORT_SYMBOL
 0xa9b5d3bf     readahead_expand        vmlinux EXPORT_SYMBOL
-0x2d5f69b3     rcu_read_unlock_strict  vmlinux EXPORT_SYMBOL_GPL
+0x2d5f69b3     rcu_read_unlock_strict  vmlinux EXPORT_SYMBOL
 0x8b9200fd     lookup_address  vmlinux EXPORT_SYMBOL_GPL
 0x4b401817     iwe_stream_add_value    vmlinux EXPORT_SYMBOL

Also, next patch was applied (not sure it’s necessury)

Perhaps these are bad changes, I am not an expert in kernel development, but there were no issues with this before, and currently, having a working PowerMizer is a priority.

So, after the kernel compile, this let to setup the 525.125.06 driver without the error…

For now with next options the Adaptive Powersave Mode works much better than on 550.78:

Option “Coolbits” “12”
Option “RegistryDwords” “PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3; PowerMizerLevelAC=0x2; PowerMizerDefault=0x3; PowerMizerLevel=0x2; PerfLevelSrc=0x3333”

Everything fine with the Instant Powersave Mode as well:

Option “RegistryDwords” “PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3; PowerMizerLevelAC=0x3; PowerMizerDefault=0x3; PowerMizerLevel=0x3; PerfLevelSrc=0x2222”

However, the adaptive mode is fully sufficient, with the Performance Level at 0-1 position max…