OK, the goal achieved. Now, we can downvolt the Radeon VII with a kext (which only contain an info.plist to inject the required parameters), no need to modify the system kext anymore. OS update won't revert the modded kext. PRAM reset won't break the GPU driver. In fact, we can simply reset PRAM to disable the PP table (good for trouble shooting).
Here is the "how to"
a) Still highly recommend you go through the step 0-6 in
post #1, so that you can find out the voltage (or clock speed) that optimum for your own Radeon VII.
But if you are too lazy to do that, you can simply download the attached kext, disable SIP, and then jump to step f, this kext will downvolt your Radeon VII to 981mV with HBM set to 1100MHz. Should be good for most Radeon VII. If anything goes wrong, a PRAM reset will bring your system back to normal, then you can remove the kext (or mod it to fit your card)
b) once you get the Base64 code, download (and unzip) the CustomPowerPlay.kext (attached in this post).
c) Right click on it, select "Show Package Contents"
d) Inside the "Contents" folder, there is an info.plist file, open it by text editor.
e) Search "<key>PP_PhmSoftPowerPlayTable</key>", then there is a very long Base64 code under it. Replace that Base64 code by your own code (from step 0), and save it.
f) Copy the CustomPowerPlay.kext to /Library/Extensions/ (
NOT /System/Library/Extensions/)
g) Open Terminal, enter
Code:
sudo chmod -R 755 /Library/Extensions/CustomPowerPlay.kext
h) Enter
Code:
sudo chown -R root:wheel /Library/Extensions/CustomPowerPlay.kext
i) Enter
Code:
sudo codesign --deep -fs - /Library/Extensions/CustomPowerPlay.kext
j) Enter
Code:
sudo touch /Library/Extensions; kextcache -update-volume /
(May shows something like "No such file..." or "Error 107", don't worry, you can safely ignore them)
k) Restart
After reboot, the PowerPlay table should be working as expected. Since there is no way to observe the RadeonVII's parameters directly in macOS. My own suggestion is to run Luxmark 3.1 before applying the kext, record down the power draw and score, then run it again after kext installed. You should see about 5% improvement, but lower power draw.
Also, you may run IOJones
https://sourceforge.net/projects/iojones/
Then search AMD10000, you should see "9 values" next to "aty_properties", and able to see that large PP table.
View attachment 855225