Contribute
Register

Guide: X79 OS X Controlled SpeedStep (CPU Power Management)

shilohh

Moderator
Joined
Jan 2, 2012
Messages
1,771
Motherboard
Asus Rampage IV Black Edition
CPU
4930K @ 4.4GHz
Graphics
PNY GTX 980 + EVGA Titan X
Mac
MacBook Pro, Mac Pro
Mobile Phone
iOS
Update Feb 18, 2016


I originally wrote this guide to help people with X79 systems get XCPM CPU power management working quickly and easily. Now I feel it's time for a re-write to explain things a little better.

Requirements:


1) MSR 0xE2 Unlocked BIOS
(you do NOT have MSR register 0xE2 bit 15 set). EDIT:
I think that all the latest BIOSs for Asus and ASRock X79 boards are unlocked. Gigabyte X79 boards are locked.

How to see if your board is MSR Locked:

Use RunAICPUPMI.app. Click "OK" and enter your password. Don't bother following the apps instructions and stressing your CPU yet. Click "OK" again.


If you see:

AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x****8*** or 0x8*** (*= any number) Then it is locked.

You want to see:
AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E000403 (0x403 is OK)

4930K Example:
Code:
: AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x403
EDIT: I'm not sure if Clover's new "AsusAICPUPM" feature will work, or if the MSR E2 patch for AppleIntelCPUPowerManagement.kext will work for MSR locked X79 boards. I need people to test these:

If you have a Gigabyte X79 mobo, first try setting "AsusAICPUP" to "true" in clover configurator.

If that doesn't work, try the following in kexts to patch:
1:
KextsToPatch: AppleIntelCPUPowerManagement
Find: E20000004889F00F30
Replace: E20000004889F09090
Type/Key: String
2:
KextsToPatch: AppleIntelCPUPowerManagement
Find: E20000000F30
Replace: E20000009090
Type/Key: String

Example:
Code:
<dict>
        <key>Comment</key>
	<string>MSR Patch</string>
	<key>Find</key>
	<data>
	4gAAAA8w
	</data>
	<key>Name</key>
	<string>AppleIntelCPUPowerManagement</string>
	<key>Replace</key>
	<data>
	4gAAAJCQ
	</data>
</dict>
<dict>
	<key>Comment</key>
	<string>MSR Patch</string>
	<key>Find</key>
	<data>
	4gAAAEiJ8A8w
	</data>
	<key>Name</key>
	<string>AppleIntelCPUPowerManagement</string>
	<key>Replace</key>
	<data>
	4gAAAEiJ8JCQ
	</data>
</dict>
(Cedit: J Lamp)
http://www.insanelymac.com/forum/topic/306734-sandy-bridge-e-ivy-bridge-e-power-management-1011-final-app-store-realease/page-2#entry2208021

2) A proper working SSDT for the CPU (credit to PikerAlpha).
https://github.com/Piker-Alpha/ssdtPRGen.sh/tree/master

3) For SandyBridge-E a patched AppleIntelCPUPowerManagement.kext
Clover's KextsToPatch feature or any other method (credit to Omni).

http://www.insanelymac.com/forum/topic/295200-testers-needed-cpu-power-management-for-sb-and-ib-xeons-or-i7-39xx-on-x79-or-c60x-chipset/

4) You are not using the NullCPUPowerManagement.Kext.

5) OS X 10.9.2 or later.



Step 1: Set BIOS.

1a) If you need to update your BIOS, remove DSDT.aml from /Extra or /Volumes/EFI/EFI/CLOVER/ACPI/patched, if present. Download BIOS 4804 (R4E) or the newest BIOS for your board from http://support.asus.com. Place it on a Fat formatted USB drive (Most come formatted correctly but your UniBeast or Clover OS X installer drive won’t work).

1b) Plug in the USB and reboot holding down the delete key.

1c) Update your BIOS using Easy Flash Utility in the Tools section of your current BIOS (If you are using a Rampage IV Extreme and a 3930K, you can use my CodeRush patched BIOS 4206 by using USB BIOS Flashback but you should install the OEM 4206 first from http://support.asus.com).

1d) Reboot holding the delete key and load the Optimized Defaults and Enable C1E and
set any other settings you need.

1e) Extract and patch a new DSDT from the new BIOS
, if you use one and you updated the BIOS.

R4E DSDT guide: ​http://www.tonymacx86.com/dsdt/114418-asus-rampage-iv-extreme-guide-create-your-dsdt-5-min-using-maciasl.html


Step 2: Set your bootloader configuration file/s.

Explanation:
Using valid smbios data will help trick OS X into thinking that the machine is a real Mac. We need the CPU detected as a Xeon E5 (the only X79 CPUs in real Macs) and you should use as much valid SMBIOS data as possible (bord-id, serial number, BIOS version, etc etc etc). To set the CPU type to Xeon E5 use 2561(decimal) in Chameleon or 0x0A01(hexadecimal) in Clover. Clover Configurator can generate valid MacPro6,1 SMBIOS data and so can Chameleon Wizard.2a) Clover:

Open your config.plist with TextEdit or Clover Configurator and set smartUPS to true:

Code:
    <key>ACPI</key>
    <dict>
...
        <key>[COLOR=#ff0000]smartUPS[/COLOR]</key>
        <[COLOR=#ff0000]true[/COLOR]/>
Set the CPU Type to 0x0A01:
Code:
<key>CPU</key>
    <dict>
        <key>BusSpeedkHz</key>
        <integer>100000</integer>
        <key>Type</key>
        <string>[COLOR=#ff0000]0x0A01[/COLOR]</string>
NOTE: Newer versions of clover may set this automatically.

DON'T use Generate CStates or Generate PStates! If they are in your config.plist, make sure they are set to false!

2a) Chameleon/Chimera:

Open /Extra/org.chameleon.boot.plist with TextEdit or Chameleon Wizard and set it to SystemType 3.

Example:

Code:
   <key>Kernel Flags</key>
   <string>npci=0x2000</string>
   <key>[COLOR=#ff0000]SystemType[/COLOR]</key>
   <string>[COLOR=#ff0000]3[/COLOR]</string>
   <key>Timeout</key>
   <string>1</string>
Open /Extra/smbios.plist. Set the SMcputype to 2561:

Example:
Code:
    <key>[COLOR=#FF0000]SMoemcputype[/COLOR]</key>
    <string>[COLOR=#FF0000]2561[/COLOR]</string>
DON'T use Generate CStates or Generate PStates! If they are in your org.cham, DELETE THEM!


Step 3: CPU SSDT

Explanation:
PikerAlpha's ssdtPRGen will create a SSDT for the CPU to give clear data to OS X about the CPU's voltages, C-State and P-State capabilities. For XCPM (Apple's new type of CPUPM) we also need a DSM method with "Plug In Type 1" (Mac ACPI code) which is created by "-c 1" in the command below, we need a ACST Method (Mac ACPI code), we need a extra power state at least 1MHz above our max power state and a extra power state at least 1MHz below our lowest reachable power state. Without these extra states we would never fully reach the lowest or highest state. The "-w 3" in the command below creates the extra states above and below max and min. We also need to tell ssdtPRGen how high we want our maximum frequency to go. "-turbo [your chosen value]" in the command below will create states from the CPU base frequency all the way up to the maximum turbo frequency that you specify.

3a)
Download PikerAlpha’s ssdtPRgen.sh script at:https://github.com/Piker-Alpha/ssdtPRGen.sh/archive/master.zip or Download ZIP

3b) Open Terminal and type:
sudo [drop ssdtPRgen.sh on the terminal window to auto fill the path] -c 1 -w 3 -turbo [your max turbo state or OC in MHz]

It should look something like this:

Code:
sudo /Users/shilohh/Downloads/ssdtPRGen.sh-master/ssdtPRGen.sh -c 1 -w 3 -turbo 4200
Note: You can set your turbo higher if you want to play with overclocking later. Your CPU will only clock up as high as it is set to in the BIOS or in the creation of your SSDT. If you try and run turbo higher than the SSDT is made for, it won't clock past the max value in the SSDT.

Enter your password and hit enter/return.You should get an output like this in the terminal window:
Code:
ssdtPRGen.sh v0.9 Copyright (c) 2011-2012 by † RevoGirl
             v6.6 Copyright (c) 2013 by † Jeroen
             v12.7 Copyright (c) 2013-2014 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <


Override value: (-c) CPU type, now using: Ivy Bridge!
Override value: (-w) Ivy Bridge workarounds, now set to: 3!
Override value: (-turbo) maximum (turbo) frequency, now using: 4200 MHz!


System information: Mac OS X 10.9.2 (13C64)
Brandstring 'Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz'


Scope (_SB_) {134 bytes} with ACPI Processor declarations found in the DSDT (ACPI 1.0 compliant)
Generating ssdt.dsl for a 'MacPro6,1' with board-id [Mac-F60DEB81FF30ACF6]
Ivy Bridge Core i7-3930K processor [0x206D7] setup [0x0a01]
With a maximum TDP of 130 Watt, as specified by Intel
Number logical CPU's: 12 (Core Frequency: 3200 MHz)
Number of Turbo States: 10 ([URL="tel:3300-4200"]3300-4200[/URL] MHz)
Number of P-States: 31 ([URL="tel:1200-4200"]1200-4200[/URL] MHz)
Injected C-States for C000 (C1,C3,C6)
Injected C-States for C001 (C1,C3,C6)


Intel ACPI Component Architecture
ASL Optimizing Compiler version [URL="tel:20130117-64"]20130117-64[/URL] [Jan 19 2013]
Copyright (c) 2000 - 2013 Intel Corporation


ASL Input:     /Users/a1/Desktop/ssdt.dsl - 369 lines, 11038 bytes, 96 keywords
AML Output:    /Users/a1/Desktop/ssdt.aml - 2649 bytes, 40 named objects, 56 executable opcodes


Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations
and ssdt.aml and ssdt.dsl will appear on the desktop.

Copy ssdt.aml from your desktop to /Extra (Chameleon/Chimera) or /Volumes/EFI/EFI/CLOVER/ACPI/patched (Clover).

Step 4: Kexts

4a) Verify there is NO NullCPUPowerManagement.
Delete NullCPUPowerManagement.kext from /System/Library/Extensions, if it’s present, and empty the trash.

4b) Patch the AppleIntelCPUPowerManagement.kext for SandyBridge-E CPUs ONLY. Skip to 4c if you have IvyBridge-E!

DO NOT do anything in this step (4b) if you have a Ivy Bridge-E CPU.

Explanation: If you have a SandyBridge-E CPU you will need to patch the AICPUPM kext. You have the choice of using Clover's KextsToPatch "on the fly" method which will patch the kext at every boot or patching the kext with a pearl script. If you use the perl script you will probably have to re-patch the kext after every OS X update. If you use Clover's built in kext patching, it will be "update proof-ish". Clover attempts to apply it's patches at every boot but as you can see below, apple may make a change that requires different bits to be patched. This is why there is a different patch for 10.11 than there was for 10.10 and 10.9.

Choose a appropriate patch to use. Use only 1 method in this step (4b). Again, this is only for SandyBridge-E CPUs. (credit to omni & stinga11)

Clover KextsToPatch method:

Open Clover Configurator and click on the "Kernel and Kext Patches" button on the left side of the app. Click on the "+" button at the lower left corner of the "KextsToPatch" window to create a new entry. Click in the "Name*" box of the new entry and type or paste in "AppleIntelCPUPowerManagement". Click in the "Find* [HEX]" box of the new entry and paste in the "Find:" value from the code box of "Patch 1:" (that matches your OS X version) from the patches below. Click on the "Replace* [HEX]" box and paste in the "Replace With:" value from the code box of "Patch 1:" (that matches your OS X version) from the patches below. Add a comment in the "Comment" box if you'd like (optional). Click in the "Type/Key (?)" box of the new entry and set it to "STRING". Repeat the process with new entries for the rest of the patches in the section that matches your version of OS X. NOTE: Clover configurator converts the HEX values to Base64 as seen in the "config.plist actual text Example". Alternatively, you can use the "config.plist actual text Examples" below to edit the config.plist in TextEdit or a Plist Editor. NOTE: The tonymacx86 website's Code box converts "tab" spaces to normal "spacebar" spaces. The leading spaces in the config.plist (xml document) structure are "tab" spaces so copy/pasting the content from the Code boxes below won't work unless you convert the "spacebar" spaces to the correct amount of "tab" spaces after pasting. However, you can copy the "tab" spaces from another entry in the config.plist that has the correct spacing and paste them over the "spacebar" spaces to correct them.

10.11 KextsToPatch:
Patch 1:
Find:
Code:
FF0F842D
Replace with:
Code:
FF0F852D
Patch 2:
Find:
Code:
3E7539
Replace with:
Code:
3E9090
Patch 3:
Find:
Code:
0100010F84
Replace with:
Code:
0100010F85
Patch 4:
Find:
Code:
7511B9
Replace with:
Code:
EB11B9
Patch 5:
Find:
Code:
C974160F324825FF0F000048
Replace with:
Code:
C9EB160F324825FF0F000048
Patch 6:
Find:
Code:
C9740C0F3283E01F4289443B
Replace with:
Code:
C9EB0C0F3283E01F4289443B
Patch 7:
Find:
Code:
01745F
Replace with:
Code:
01EB5F


config.plist actual text Example:
Code:
        <key>KextsToPatch</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                /w+ELQ==
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                /w+FLQ==
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                PnU5
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                PpCQ
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                AQABD4Q=
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                AQABD4U=
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                dRG5
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                6xG5
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                yXQWDzJIJf8PAABI
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                yesWDzJIJf8PAABI
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                yXQMDzKD4B9CiUQ7
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                yesMDzKD4B9CiUQ7
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.11 AICPM</string>
                <key>Find</key>
                <data>
                AXRf
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                Aetf
                </data>
            </dict>
10.10/10.9 KextsToPatch:
Patch 1:
Find:
Code:
FF0F842D
Replace with:
Code:
FF0F852D
Patch 2:
Find:
Code:
3E7539
Replace with:
Code:
3E9090
Patch 3:
Find:
Code:
0100010F84
Replace with:
Code:
0100010F85
Patch 4:
Find:
Code:
7411B9
Replace with:
Code:
EB11B9
Patch 5:
Find:
Code:
740B4183FC037511B9420600
Replace with:
Code:
EB0B4183FC037511B9420600
Patch 6:
Find:
Code:
02740B4183FC037522B90206
Replace with:
Code:
02EB0B4183FC037522B90206
Patch 7:
Find:
Code:
017456
Replace with:
Code:
01EB56
config.plist actual text Example:
Code:
        <key>KextsToPatch</key>
        <array>
            <dict>
                <key>Find</key>
                <data>
                AnQLQYP8A3UiuQIG
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                AusLQYP8A3UiuQIG
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                dBG5
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                6xG5
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                /w+ELQ==
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                /w+FLQ==
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                dAtBg/wDdRG5QgYA
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                6wtBg/wDdRG5QgYA
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                AXRW
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                AetW
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                AQABD4Q=
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                AQABD4U=
                </data>
            </dict>
            <dict>
                <key>Find</key>
                <data>
                PnU5
                </data>
                <key>Name</key>
                <string>AppleIntelCPUPowerManagement</string>
                <key>Replace</key>
                <data>
                PpCQ
                </data>
            </dict>
Kext perl patch method:Do not use this if you are using the Clover KextsToPatch method above.

Open a terminal window and copy/paste in all of the content from the "perl patch:" code box that matches your version of OS X. Hit enter/return. Enter your password and hit enter/return again.

10.11 perl patch:
Code:
sudo perl -pi -e 's|\xFF\x0F\x84\x2D|\xFF\x0F\x85\x2D|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x3E\x75\x39|\x3E\x90\x90|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x01\x00\x01\x0F\x84|\x01\x00\x01\x0F\x85|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x75\x11\xB9|\xEB\x11\xB9|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\xC9\x74\x16\x0F\x32\x48\x25\xFF\x0F\x00\x00\x48|\xC9\xEB\x16\x0F\x32\x48\x25\xFF\x0F\x00\x00\x48|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\xC9\x74\x0C\x0F\x32\x83\xE0\x1F\x42\x89\x44\x3B|\xC9\xEB\x0C\x0F\x32\x83\xE0\x1F\x42\x89\x44\x3B|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x01\x74\x5F|\x01\xEB\x5F|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo chown -R root:wheel /System/Library/Extensions/AppleIntelCPUPowerManagement.kext;
sudo chmod -R 755 /System/Library/Extensions/AppleIntelCPUPowerManagement.kext;
sudo touch /System/Library/Extensions;
kextcache -system-prelinked-kernel;
kextcache -system-caches;
sudo kextcache -update-volume /


10.10/10.9 perl patch:

Code:
sudo perl -pi -e 's|\xFF\x0F\x84\x2D|\xFF\x0F\x85\x2D|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x3E\x75\x39|\x3E\x90\x90|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x01\x00\x01\x0F\x84|\x01\x00\x01\x0F\x85|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x74\x11\xB9|\xEB\x11\xB9|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x02\x74\x0B\x41\x83\xFC\x03\x75\x22\xB9\x02\x06|\x02\xEB\x0B\x41\x83\xFC\x03\x75\x22\xB9\x02\x06|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x74\x0B\x41\x83\xFC\x03\x75\x11\xB9\x42\x06\x00|\xEB\x0B\x41\x83\xFC\x03\x75\x11\xB9\x42\x06\x00|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo perl -pi -e 's|\x01\x74\x56|\x01\xEB\x56|g' /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement;
sudo chown -R root:wheel /System/Library/Extensions/AppleIntelCPUPowerManagement.kext;
sudo chmod -R 755 /System/Library/Extensions/AppleIntelCPUPowerManagement.kext;
sudo touch /System/Library/Extensions;
kextcache -system-prelinked-kernel;
kextcache -system-caches;
sudo kextcache -update-volume /
4c) StepContextDict.

Explanation: With MacPro system definitions only 4 states are reached. HWMonitor shows the multiplier mostly sticking at the base multiplier (34 or 3.4GHz for the 4930K) and intermittently falling to 12 (1.2GHz) for very short periods. If we use the MacMini6,2 system definition, 6 states are reached and the CPU will idle at 12 steadily and step behaviour is less erratic according to load. However, I prefer to use MacPro6,1 as it is also X79. To achieve the same smooth stepping behaviour and 6 P-States as the MacMini we can replace just the StepContextDict data in the /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/Mac-F60DEB81FF30ACF6.plist (Mac-F60DEB81FF30ACF6 is the board-id of the MacPro6,1) with the StepContextDict data from MacMini6,2's plist. Again, this would leave us with a plist to patch after every OS update because clover can't do this one on the fly. Clover can only replace a plist value with another value that is the same length. Instead we can use PikeRAlpha's "Dummy Kext" method to override the plist with our modified one and we won't have to worry about repatching after updates. X79X86PlatformPlugin.kext contains StepContextDict data from MacMini6,2 in the plist for the MacPro6,1.

Download X79X86PlatformPlugin.kext (should be used for both Sandy and Ivy Bridge-E) and place it on your Desktop. Run KextBeast to install it.


Testing:


Use HWMonitor.app or Intel(R) Power Gadget.app to see your power draw at load and idle.

Use RunAICPUPMI.app to view your reached PStates. (Credit PikeRAplpha)

http://www.tonymacx86.com/ssdt/91551-appleintelcpupowermanagementinfo-kext-msrdumper-successor.html

Code:
: AICPUPMI: CPU P-States [ 12 (23) 44 ]
: AICPUPMI: CPU P-States [ 12 23 (29) 44 ]
: AICPUPMI: CPU P-States [ 12 23 29 (34) 44 ]
: AICPUPMI: CPU P-States [ [COLOR=#ff0000]12 23 29 34 (43) 44[/COLOR] ]
In the example above, I've reached 6 states. 12, 23, 29, 34, 43 & 44.

If your CPU is not stepping down under light or no load, check for C-State residency in your RunAICPUPMI terminal output.

NOTE: Now that I've upgraded to a 4930K and am not using the patched AppleIntelCPUPowerManagement kext, I've noticed that C3 residency is 0x0 but CPUPM is still working correctly. If this is also the case for you but the CPU is still stepping and has low power draw at idle, don't worry about it.

you want to see:

MSR_PKG_C2_RESIDENCY…….(0x60d) : 0x224F0EEA6C0 <-Anything except for 0
MSR_PKG_C3_RESIDENCY…….(0x3f8) : 0×29429020 <-Anything except for 0 (Sandy Bridge-E)
MSR_PKG_C6_RESIDENCY…….(0x3f9) : 0xAE4EEE2420 <-Anything except for 0

You dont want to see:
AICPUPMI: MSR_PKG_C2_RESIDENCY…….(0x60d) : 0×0
AICPUPMI: MSR_PKG_C3_RESIDENCY…….(0x3f8) : 0×0 <-OK for Ivy Bridge-E
AICPUPMI: MSR_PKG_C6_RESIDENCY…….(0x3f9) : 0×0

My Full Example:
Code:
: AICPUPMI: v3.3 Copyright © 2012-2014 Pike R. Alpha. All rights reserved
: AICPUPMI: logMSRs............................: 1
: AICPUPMI: logIGPU............................: 0
: AICPUPMI: logCStates.........................: 1
: AICPUPMI: logIPGStyle........................: 0
: AICPUPMI: MWAIT C-States.....................: 4384
: AICPUPMI: MSR_CORE_THREAD_COUNT......(0x35)  : 0x6000C
: AICPUPMI: MSR_PLATFORM_INFO..........(0xCE)  : 0xC10F0012200
: AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x403
: AICPUPMI: MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x10414
: AICPUPMI: IA32_MPERF.................(0xE7)  : 0x19FBBA909EB
: AICPUPMI: IA32_APERF.................(0xE8)  : 0x18606525742
: AICPUPMI: MSR_FLEX_RATIO.............(0x194) : 0xE0000
: AICPUPMI: MSR_IA32_PERF_STATUS.......(0x198) : 0x28AC00002C00
: AICPUPMI: MSR_IA32_PERF_CONTROL......(0x199) : 0x2C00
: AICPUPMI: IA32_CLOCK_MODULATION......(0x19A) : 0x0
: AICPUPMI: IA32_THERM_STATUS..........(0x19C) : 0x88360000
: AICPUPMI: IA32_MISC_ENABLES..........(0x1A0) : 0x850089
: AICPUPMI: MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
: AICPUPMI: MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x24242C2C2C2C2C2C
: AICPUPMI: IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x0
: AICPUPMI: MSR_POWER_CTL..............(0x1FC) : 0x2104005B
: AICPUPMI: MSR_RAPL_POWER_UNIT........(0x606) : 0xA1003
: AICPUPMI: MSR_PKG_POWER_LIMIT........(0x610) : 0x69F40005A9F40
: AICPUPMI: MSR_PKG_ENERGY_STATUS......(0x611) : 0xEE6CC076
: AICPUPMI: MSR_PKGC3_IRTL.............(0x60a) : 0x0
: AICPUPMI: MSR_PKGC6_IRTL.............(0x60b) : 0x0
: AICPUPMI: MSR_PP0_CURRENT_CONFIG.....(0x601) : 0x14149480001FFF
: AICPUPMI: MSR_PP0_POWER_LIMIT........(0x638) : 0x80000000
: AICPUPMI: MSR_PP0_ENERGY_STATUS......(0x639) : 0x6E315687
: AICPUPMI: MSR_PP0_POLICY.............(0x63a) : 0x0
: AICPUPMI: MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x127D9C7D508E
: AICPUPMI: MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x0
: AICPUPMI: MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x38F7FEED072
: AICPUPMI: CPU Low Frequency Mode.............: 1200 MHz
: AICPUPMI: CPU Maximum non-Turbo Frequency....: 3400 MHz
: AICPUPMI: CPU Maximum Turbo Frequency........: 4400 MHz
: AICPUPMI: CPU P-States [ (12) 44 ]
: AICPUPMI: CPU C3-Cores [ 0 8 9 ]
: AICPUPMI: CPU C6-Cores [ 0 6 7 8 9 ]
: AICPUPMI: CPU C3-Cores [ 0 3 6 7 8 9 10 11 ]
: AICPUPMI: CPU C6-Cores [ 0 2 3 4 5 6 7 8 9 10 11 ]
: AICPUPMI: CPU C3-Cores [ 0 1 2 3 6 7 8 9 10 11 ]
: AICPUPMI: CPU C3-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
: AICPUPMI: CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
: AICPUPMI: CPU P-States [ 12 (23) 44 ]
: AICPUPMI: CPU P-States [ 12 23 (29) 44 ]
: AICPUPMI: CPU P-States [ 12 23 29 (34) 44 ]
: AICPUPMI: CPU P-States [ 12 23 29 34 (43) 44 ]
Credits:
Omni
PikerAlpha
Stinga11
CodeRush
 

Attachments

Joined
May 15, 2011
Messages
255
Motherboard
Asus Sabertooth X79
CPU
i7-3930K
Graphics
GTX-580 3GB
Mac
iMac, MacBook Pro, Mac Pro
Classic Mac
Mobile Phone
iOS
Guide: Asus X79 OS X Controlled SpeedStep

This tutorial is confirmed working here on my system. I'm laughing at all the X79 haters now.

Thanks!
 
Joined
Mar 28, 2011
Messages
181
Motherboard
Asus Tuf X299 Mark 1
CPU
i9-7900X
Graphics
EVGA Gtx 980Ti SC+
Mobile Phone
iOS
Guide: Asus X79 OS X Controlled SpeedStep

shilohh I followed the steps in my system, ( 3930K + rampage iv formula bios 4804), seems to work but the multiplier goes crazy up and down constantly and work more down is 2.52 ghz, I may have wrong?

Only in bios activate c states c1E c3 c6 EIST= disabled and turbo on.

I have clover , is the problem clover ?

thanks in advance.
 

Attachments

Joined
Jul 24, 2011
Messages
128
Motherboard
Gigabyte GA-Z97X-UD5H
CPU
Intel Core i7 4790k
Graphics
Nvidia GTX 980Ti
Mac
MacBook Air
Classic Mac
LC, Power Mac, Quadra
Mobile Phone
Android, iOS
Guide: Asus X79 OS X Controlled SpeedStep

Just letting you know It Does not work on Intel X79 Boards. Get a power management kp on boot
 
Joined
Jan 12, 2012
Messages
69
Motherboard
HP ZBook 17 G1
CPU
Intel Core i7-4940MX
Graphics
Intel HD 4600 / AMD FirePro M6100
Guide: Asus X79 OS X Controlled SpeedStep

Thank you so much Shilohh for all your work!
Unfortunately this also doesn't work for me on R4E with 3930k with 10.9.2. The problem starts with switching to the newest BIOS. I'm on 4206 now which works fine (but without power management). Under 4804 it always hangs during boot.
 

shilohh

Moderator
Joined
Jan 2, 2012
Messages
1,771
Motherboard
Asus Rampage IV Black Edition
CPU
4930K @ 4.4GHz
Graphics
PNY GTX 980 + EVGA Titan X
Mac
MacBook Pro, Mac Pro
Mobile Phone
iOS
Guide: Asus X79 OS X Controlled SpeedStep

Thank you so much Shilohh for all your work!
Unfortunately this also doesn't work for me on R4E with 3930k with 10.9.2. The problem starts with switching to the newest BIOS. I'm on 4206 now which works fine (but without power management). Under 4804 it always hangs during boot.
Did you delete your old dsdt and create a new one from 4804? If not, boot with the flag DSDT=No and do so.
 
Top