Improve GPU performance and remove nullcpupowermanagement.kext
Last edited: January 23, 2020
What you'll need:
The HPET patch can break Windows booting through OpenCore, do not use this guide unless you're ok with this
1. Removing nullcpupowermanagement.kext:
Remove NullCPUPowerManagement.kext and add the following patch to Kernel -> Patch:
D0 05 00 00 84 C0 74 46 E8
D0 05 00 00 84 C0 EB 46 E8
Do not reboot yet, you need to follow the entire guide first
2. Create an
Now the fun begins, we'll be grabbing our SSDT-PLUG and converting it to our system. The specific part we're wanting to adapt is
CPU0 as not all DSDTs have theirs starting with
CPU0, for us AMD usually exposes this under the CPUSSDT. Generally, AMD uses
C000 but others can be
P000 so you'll want to edit all mentions of
CPU0 to your value.
Easiest way to check what
Now edit your SSDT with MaciASL, then export it via
ACPI Machine Language. Don't forget to add this SSDT to both your config.plist under ACPI -> Add and add the file to EFI/OC/ACPI.
Don't forget that compiled SSDTs have a .aml extension(Assembled)
3. Verifying HPET is on
This is important as this is required for SSDT-PLUG to work correctly, many systems already have it enabled but some need it forced on. To verify yours, open IORegistryExproler and search for
HPET. Look to the right and try to see what properties this device has, we want it to have
0xF, if not then we want to enable it.
- Prebuilt so no need to compile, just add to config.plist and EFI/OC/ACPI
- _OSI to XOSI rename under ACPI -> Patch:
|Find||Data||5f 4f 53 49|
|Replace||Data||58 4f 53 49|
4. Creating the AGPM injector kext
Now open up AGPMInjector and run it, then add the kext to both your config.plist under kernel -> Add and into EFI/OC/Kexts.
And voila! you're done!
5. Verifying your work
Open IORegistryExplorer and search for your CPU, then verify that both X86PlatformPlugin and AGPM are connected. If so, then you have proper GPU power management and therefore slightly improved performance.