MacPro6,1 SMBIOS data

New RevoBoot SMBIOS data:

#define SMB_BIOS_VERSION    "MP61.88Z.0116.B04.1312061508"
#define SMB_PRODUCT_NAME    "MacPro6,1"
#define SMB_BOARD_PRODUCT   "Mac-F60DEB81FF30ACF6"
#define EFI_MODEL_NAME      { 'M', 'a', 'c', 'P', 'r', 'o', '6', ',', '1' }

MacPro61
Other serial numbers can be found here (scroll down to the bottom). Please note that it should begin with: FSKLT.

I checked the SMC _CID in the DSDT and that is the same as what we use for Ivy Bridge and Haswell configurations:

Name (_CID, "smc-huronriver")

Edit: You should set the SMC revision keys in the plist to – data: AiAPAAAW (2.20f16)

The following SMC keys are now also used:

FakeSMCDevice: [Warning] key not found PCTR, length - 2
FakeSMCDevice: [Warning] key not found PG0R, length - 2
FakeSMCDevice: [Warning] key not found PG1R, length - 2
FakeSMCDevice: [Warning] key not found PH0R, length - 2
FakeSMCDevice: [Warning] key not found PMTR, length - 2
FakeSMCDevice: [Warning] key not found PZ2E, length - 4
FakeSMCDevice: [Warning] key not found PZ2F, length - 4
FakeSMCDevice: [Warning] key not found PZ3E, length - 4
FakeSMCDevice: [Warning] key not found PZ3F, length - 4
FakeSMCDevice: [Warning] key not found PZ4E, length - 4
FakeSMCDevice: [Warning] key not found PZ4F, length - 4
FakeSMCDevice: [Warning] key not found PZ5E, length - 4
FakeSMCDevice: [Warning] key not found PZ5F, length - 4
FakeSMCDevice: [Warning] key not found MSAi, length - 2
FakeSMCDevice: [Warning] key not found MSGA, length - 2
FakeSMCDevice: [Warning] key not found WIr0, length - 1
FakeSMCDevice: [Warning] key not found WIw0, length - 1
FakeSMCDevice: [Warning] key not found WIz0, length - 1
FakeSMCDevice: [Warning] key not found TA0V, length - 2
FakeSMCDevice: [Warning] key not found TC0F, length - 2
FakeSMCDevice: [Warning] key not found Te0T, length - 2
FakeSMCDevice: [Warning] key not found TG0F, length - 2
FakeSMCDevice: [Warning] key not found TG0R, length - 2
FakeSMCDevice: [Warning] key not found TG1F, length - 2
FakeSMCDevice: [Warning] key not found TG1R, length - 2
FakeSMCDevice: [Warning] key not found TM0V, length - 2
FakeSMCDevice: [Warning] key not found TS0V, length - 2
FakeSMCDevice: [Warning] key not found Tp0F, length - 2
FakeSMCDevice: [Warning] key not found DM0P, length - 1
FakeSMCDevice: [Warning] key not found DM0S, length - 1
FakeSMCDevice: [Warning] key not found LsNM, length - 1

And then there is this:

SMC::smcReadKeyAction ERROR LsNM kSMCKeyNotFound(0x84) fKeyHashTable=0x0
SMC::smcGetLightshowVers ERROR: smcReadKey LsNM failed (kSMCKeyNotFound)
SMC::smcPublishLightshowVersion ERROR: smcGetLightshowVers failed (kSMCKeyNotFound)
SMC::smcInitHelper ERROR: smcPublishLightshowVersion failed (kSMCKeyNotFound)

This means that Apple will have to update the EFI firmware for other Mac models as well. Pretty soon I hope because that should help solving the error message.

Edit: I solved this by adding a new SMC key to FakeSMC/kext/C*/Info.plist:

<key>LsNM</key>
<array>
    <string>ui8</string>
    <data>AQ==</data>
</array>

This sets it to 1, but the new MacPro has 3. Another related SMC keys is: LsbV (hex_/AQQKAAY=) which I added so that SystemProfiler shows:

Illumination Version: 1.4a6

Oh bummer. Seems like I have even more work to do:

X86PlatformShim::start - Failed to send stepper

Edit: Mac-F60DEB81FF30ACF6.plist does not include FrequencyVectors data, but that appears to be required for Haswell processors. Using Mac-7DF21CB3ED6977E5.plist, or any of the other plist with FrequencyVectors data solved this problem.

Edit: You can download and run freqVectorsEdit.sh to fix the above problem.

Note: I used OS X 10.9.2 Build 13C32 for my testing!

Update:
Using the MacPro6,1 SMBIOS may trigger this error message:
C001 ACST and _CST evaluations failed!
which you can(?) fix by using this AML snippet:

        Method (ACST, 0, NotSerialized)
        {
            Store ("ACST: called", Debug)
            Return (Package (0x05)
            {
                0x01, 
                0x03, 
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000000, // Address
                            0x01,               // Access Size
                            )
                    }, 

                    0x01, 
                    0x41, 
                    0x03E8
                }, 

                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000010, // Address
                            0x03,               // Access Size
                            )
                    }, 

                    0x03, 
                    0x43, 
                    0x01F4
                }, 

                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000020, // Address
                            0x03,               // Access Size
                            )
                    }, 

                    0x06, 
                    0x46, 
                    0x015E
                }
            })
        }

Which I extracted from the new Mac Pro firmware for you.
Please report when this snippet works for you. Or not of course.

Update-1:

People with a Xeon E5 processor should set the (SMBIOS) cpu-type property to: 0x0A01, 0x0A02 or 0x0A03

75 thoughts on “MacPro6,1 SMBIOS data

  1. Pingback: OS X Mavericks 10.9.2 Seeded | Pike's Universum

  2. First off, thanks for the awesome reads on your blog. I’ve learn far more about the internals of OS X here than I’m proud to admit, but it’s all good reading none the less. Also, my computer now shows itself as a small black “trash can” in About This Mac screen, which is really awesome. Now, I’ve created a SSDT with the latest ssdtPRGen.sh (for the i7-3820 – Sandy Bridge) and added the _DSM Method for plugin-type=1 in it, but I still can’t get machdep.xcpm.mode to be set as one, which won’t allow me to run on a cooler power state. I’m running Chameleon 2283 (I really like Clover, but it always breaks sleep for me). Now, I get the Unknown CPU: family = 0x6, model = 0x2d, stepping = 0x7 error which makes me think it’s ignoring plugin-type, but alas I’m not as versed on PM as you are. Any words of advice?

      • Thanks. I actually put NullCPUPM back on for now and it actually gives me the 12x power state without breaking sleep. Not a “real” solution, but it runs 20 – 30 degrees cooler and I’ll take it.

      • Have you tried using -xcpm as boot argument? Do you still need NullCPUPM with this boot argument?

        p.s. I looked at your ACPI tables and they are a mess (120 Processor declarations instead of 8 and a lot of unused code). Isn’t there anyone else with the same motherboard who has a stripped DSDT/SSDT for you?

      • I’m using the SSDT from rampagedev and added the output from ssdtPRGen.sh script to it (plus my other GPU). Otherwise I’m not using any other DSDTs or the like. I tried using the DropSSDT option in Chameleon and then use -xcpm (tried it before the DropSSDT option with no luck) and I’ve gotten a few:
        12/22/13 1:41:21.000 AM kernel[0]: X86PlatformPlugin::getCPUCStates – C001 ACST and _CST evaluations failed!
        Still locked at x36 though without NullCPU.

      • Oops. You are using a Sandy Bridge processor, correct? In that case you have to use AppleIntelCPUPowerManagement.kext since XCPM lacks support for Sandy Bridge processors.

      • Well, technically it’s Sandy Bridge-E, which always confused me. Isn’t the Xeon E5 (what the Mac Pro 6,1 really uses) Sandy Bridge-EP? I’ve heard that Power Management is chipset based (LGA2011 in my case) and I’ve heard it’s CPU/Architecture based (SB vs IB, etc).

      • No. The late 2013 Mac Pro (MacPro6,1) comes with a Intel® Xeon® E5-1620 v2, E5-1650 v2 or E5-2697 v2 processor (formerly Ivy Bridge EP). Note the v2 here, which is important, because v1 is Sandy Bridge EP.

      • Ah, ok that makes a lot more sense. So, for working P-States I’d need to upgrade the processor then? Either way, I appreciate all the help.

      • Your current processor should work as well. We just have to figure out how to enable it. This is why I am writing a new blog article with stuff that should help, a lot. This way more people can attack power management problems.

      • I’m in a similar situation to Michael. I have a 3930k and have been trying a few things to get PM working, without success.

        First off, I injected plugintype 1 via DSDT to get X86PlatformPlugin to load. I know it’s for Ivy and not SB-E but it seems to be somewhat of a requirement for MacPro6,1. My AGPM edit didn’t load until I did this as MacPro6,1 is in X86PlatformPlugin.kext

        Without dropping my SSDT I had no _CST or such errors in the console. The X86PlatformPlugin.kext loads but the CPU stays running at 32x. In the console there’s a line “IOPPF: AppleIntelCPUPowerManagement mode”. However AppleIntelCPUPowerManagement.kext isn’t loaded. So does X86PlatformPlugin have some sort of backwards compatibility?

        If I drop the SSDT and try to inject states via Chameleon or a SSDT (generated with ssdtPRGen.sh) I get those X86PlatformPlugin::getCPUCStates console errors. I know Clover has an option to inject Ivybridge states, so perhaps they’re different and both of these methods are injecting SB ones? I’m not at all familiar with IB on OS X.

        The -xcpm boot arg doesn’t seem to have any effect (always machdep.xcpm.mode = 0).

      • I’m not convinced that you need XCPM for power management with your processor, but I understand that people use every opportunity to try something new.
        Also. I would stick to the SSDT generated by ssdtPRGen.sh, not because we wrote it, but because I know that it generates the correct data, as far as I know, so what errors do you get? It should not trigger any errors, but perhaps we need to check the CPU data.

        And “IOPPF: AppleIntelCPUPowerManagement mode” means that it detected a none-Ivy Bridge / Haswell processor. In which case it falls back to AppleIntelCPUPowerManagement.kext

        Do you have Linux installed? In that case check if power management works, and then check what you need in the SSDT. This tells you that it relies on the SSDT, meaning that we must get it functional on OS X as well. Oh and can you dump the MSR’s that AppleintelCPUPowerManagement.kext dumps in /var/log/system.log? This will tell us if Linux is initialising the hardware differently.

      • Actually I think there might be a problem with the SSDT script (v6.9):

        Generating ssdt_pr.dsl for a MacPro6,1 [Mac-F60DEB81FF30ACF6]
        Sandy Bridge Core i7-3930K processor [0x206D7] setup [0x0501]
        With a maximum TDP of 130 Watt, as specified by Intel

        Warning: Low Frequency Mode is 0 (unknown)
        Now using 1600 MHz for Server/Desktop processors

        Number logical CPU’s: 12 (Core Frequency: 3200 MHz)
        Number of Turbo States: 6 (3300-3800 MHz)
        Number of P-States: 23 (1600-3800 MHz)

        The low frequency mode is 1200 MHz so the first few steps from 1200 to 1600 are missing.

      • You can verify this by replacing the 0 with 1200 in the data for your processor. Then you run ssdtPRGen.sh once more to see if that solves the error. I think it will, because the 12 in the error message might be an indicator as to what is wrong.

      • Isn’t XCMP for Haswell only, and macpro6,1 is not really Haswell but Ivy Bridge EP?

        I mean why does everyone expect to have their PM work through the kernel, if they don’t have a Haswell based CPU, or am I missing something here?

        Also, what about people with locked 0xE2 MSR (on LGA 2011 and SB-EP), do we need to patch AICPM to remove any wrmsr to 0xE2?
        Is that really the only thing missing, because I still can’t get PM to work with SB-EP on LGA 2011, patched AICMP or not.

      • You either need a patched version of AppleIntelCPUPowerManagement.kext or a patched (UEFI) BIOS. Whatever you prefer/is possible for your motherboard.

        I personally think that there is a binary that need to be patched for X79 motherboards. I know that my sister had it working for one of the previous versions of OS X, but since she passed away… I have no idea what she did.

      • I got a little muddled-up there. AppleIntelCPUPowerManagement.kext is indeed loaded. It’s ACPI_SMC_PlatformPlugin.kext that wasn’t loading when I added the plugintype DSDT edit.

        With the DSDT edit removed it went back to loading ACPI_SMC_PlatformPlugin.kext. There are no errors in the console log with this and the generated SSDT.aml. The errors I was getting (the same ones Michael mentions: “C001 ACST and _CST evaluations failed!” for each core) were obviously due to trying to use X86PlatformFamily.kext. Maybe trying to use MacPro6,1 is a waste of time with a SB-E processor. I just thought it might help getting native PM working on my setup.

        What are the MSRs that I should look for in system.log?

        I don’t have linux installed but I have a ubuntu live-cd that I use when needed. What’s the best way to check Speedstep in this? Is there anything built-in or should I install something like indicator-cpufreq?

      • Hmm. I didn’t use PMPatch on my BIOS. As I can boot 10.9 without a KP I assumed it wasn’t needed. Is it still required?

    • Well, I wasn’t having any issues like that. I just tried it and it found nothing to patch. So I guess my BIOS doesn’t have 0xE2 locked. Just wondered if it might be a factor.

      • I’m trying to get my LGA 2011 SB-E mackintosh PM to work too, without much success.

        Load Pike’s AppleIntelCPUPowerManagementInfo.kext and look at the register 0XE2 in dmesg output.

        If it reads like 0xNNNN8NNN or anything above 8 in that spot, your BIOS locks MSR 0xE2 bit 15 and you either need to patch the BIOS or patch AICPM.

      • I guess that confirms I don’t need to patch my BIOS. Here’s all the output in case there’s anything helpful in it. My board is a P9X79 PRO with the latest 4502 BIOS.

        MSR_CORE_THREAD_COUNT……(0x35) : 0x6000C
        MSR_PLATFORM_INFO……….(0xCE) : 0xC0070012000
        MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E000400
        MSR_PMG_IO_CAPTURE_BASE….(0xE4) : 0x10414
        IA32_MPERF……………..(0xE7) : 0xE6ADDA526
        IA32_APERF……………..(0xE8) : 0xD894C361B
        MSR_IA32_PERF_STATUS…….(0x198) : 0x23DE00002000
        MSR_IA32_PERF_CONTROL……(0x199) : 0x2000
        IA32_CLOCK_MODULATION……(0x19A) : 0x0
        IA32_THERM_STATUS……….(0x19C) : 0x882D0000
        IA32_MISC_ENABLES……….(0x1A0) : 0x4000850089
        MSR_MISC_PWR_MGMT……….(0x1AA) : 0x400000
        MSR_TURBO_RATIO_LIMIT……(0x1AD) : 0x2323232324252626
        IA32_ENERGY_PERF_BIAS……(0x1B0) : 0x0
        MSR_POWER_CTL…………..(0x1FC) : 0x2504005B
        MSR_RAPL_POWER_UNIT……..(0x606) : 0xA1003
        MSR_PKG_POWER_LIMIT……..(0x610) : 0x69F40005A9F40
        MSR_PKG_ENERGY_STATUS……(0x611) : 0x50C76BF
        MSR_PP0_CURRENT_CONFIG…..(0x601) : 0x141494800007F8
        MSR_PP0_POWER_LIMIT……..(0x638) : 0x0
        MSR_PP0_ENERGY_STATUS……(0x639) : 0x3E87F07
        MSR_PP0_POLICY………….(0x63a) : 0x0
        MSR_PKG_C2_RESIDENCY…….(0x60d) : 0x0
        MSR_PKG_C3_RESIDENCY…….(0x3f8) : 0x0
        MSR_PKG_C6_RESIDENCY…….(0x3f9) : 0x0
        MSR_PKG_C7_RESIDENCY…….(0x3fa) : 0x0
        AICPUPMI: Low Frequency Mode : 1200 MHz
        AICPUPMI: Clock Speed : 3200 MHz
        AICPUPMI: Max Frequency : 3200 MHz
        Unknown CPU: family = 0x6, model = 0x2d, stepping = 0x7
        AICPUPMI: CPU P-States [ (32) ]

      • Why is MSR 0x1AD set to 0×2323232324252626? That should only be used for 8 core processors. Not for six core processors. This may confuse AppleIntelCPUPowerManagement.kext

        Also. Your 3930K runs at a clock speed of 3.2 GHz and support turbo frequencies up to 3.8 GHz but MSR 0x1AD starts with 0x23 aka 3.5 GHz instead of 0x21. And this is important; The first turbo frequency must be set to the next bank aka only 100 MHz higher. Not anything else (lower/higher).

        Can you change the (UEFI) BIOS settings in a way that MSR 0x1AD reports 0x212223242526?

        If not, then you need to set it in the boot loader (simple add it somewhere). Luckily for you MSR_PLATFORM_INFO[28] = 1 so you can read/write MSR 0x1AD.

        Next. MSR_PKG_CST_CONFIG_CONTROL(0xE2) is set to 0x1E000400 but that means that there is no package C-State support. Look here:

        000b: C0/C1 (no package C-sate support)
        001b: C2
        010b: C6 no retention
        011b: C6 retention
        100b: C7
        101b: C7s
        111: No package C-state limit.

        You want at least C6 so OR it with 3. Same story; Just do this from the boot loader. After this change it should start showing a none-zero value for: MSR_PKG_C2_RESIDENCY(0x60D)

      • I’m glad you’re seeing some issues as I’ve suspected something isn’t quite right with this setup.

        First off, there are two entries in my BIOS to enable Turbo and one was turned off. So enabling that one has changed the line

        AICPUPMI: Max Frequency : 3200 MHz
        to
        AICPUPMI: Max Turbo Frequency: 5700 MHz

        I know 5700 is wrong but I read somewhere this is some sort of known bug.

        In my BIOS I had the “Package C State Limit” set to Auto (the optimized default). It can be set to Auto, C0, C2, C6, C7 or “No Limit”. Setting it to C6 gave me 0xE1000403 for 0xE2. setting it to “No Limit” gave me 0xE1000407. In both cases all of the MSR_PKG_Cx_RESIDENCY values remain at zero. Also the optimized defaults had “CPU C3 Report” and CPU C7 Report” set to Disabled. I’ve set them to Enabled for now.

        I can’t see any way to get 0x1AD starting at 21 in the BIOS. With Turbo now fully enabled and Package C State Limit set to either C6 or “No Limit” it reads 0x2323393939393939. Disabling C3 and C7 report still gives me this value.

      • Ok. So you can change the C-State settings in your BIOS, which is good, but you need a turbo frequency override setting. Do you have the Clover source code? If yes, open cpu.c and search for the case statement for your processor and add this: AsmWriteMsr64(MSR_TURBO_RATIO_LIMIT, 0×212223242526) and compile Clover. See of that works.

      • I think I may have found the Turbo override setting in the BIOS (Asus renamed/redesigned everything a while back). The lowest value I can enter is 33. If I set this manually for each core I get 0×2323212121212121. There’s no way I can get it to start with 21. I also don’t know why there’s 8 values when I have a 6-core chip.

        I downloaded CloverGrowerPro to try and compile Clover but can’t find where I’m supposed to add that line to cpu.c.

      • I don’t think so.

        If I set all cores to 33 I get 0x2323212121212121.
        If I set all cores to 38 I get 0x2323262626262626

        EVERY other variation I make (33,33,33,38,38,38 or 33,34,35,36,37,38 etc) gives me the same value back: 0x2323232324252626

      • That is a real BIOS bug, but for now… ask the Clover developers for help. Ask them where to put the code because I only have an iPad to work with at the moment so I cannot help you with it.

        P.s. Just an idea. Can you use lower values than 33 to get the correct output?

      • Pike,

        Am I in the same boat then, because my 0x1AD shows 21 while my clock speed is 2600MHz so next turbo should be 2700MHz?

        MSR_CORE_THREAD_COUNT……(0x35) : 0x80010
        MSR_PLATFORM_INFO……….(0xCE) : 0xC0064011A00
        MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E008407
        MSR_PMG_IO_CAPTURE_BASE….(0xE4) : 0x20414
        IA32_MPERF……………..(0xE7) : 0x1DF1EB134C8
        IA32_APERF……………..(0xE8) : 0x1DF1EB1433F
        MSR_IA32_PERF_STATUS…….(0x198) : 0x212500001A00
        MSR_IA32_PERF_CONTROL……(0x199) : 0x1A00
        IA32_CLOCK_MODULATION……(0x19A) : 0x0
        IA32_THERM_STATUS……….(0x19C) : 0x882F0000
        IA32_MISC_ENABLES……….(0x1A0) : 0x850089
        MSR_MISC_PWR_MGMT……….(0x1AA) : 0x400000
        MSR_TURBO_RATIO_LIMIT……(0x1AD) : 0x2121212122222424
        IA32_ENERGY_PERF_BIAS……(0x1B0) : 0x7
        MSR_POWER_CTL…………..(0x1FC) : 0x2504005B
        MSR_RAPL_POWER_UNIT……..(0x606) : 0xA1003
        MSR_PKG_POWER_LIMIT……..(0x610) : 0x68450005A8398
        MSR_PKG_ENERGY_STATUS……(0x611) : 0xC83DF8C8
        MSR_PP0_CURRENT_CONFIG…..(0x601) : 0x14149400000648
        MSR_PP0_POWER_LIMIT……..(0x638) : 0x0
        MSR_PP0_ENERGY_STATUS……(0x639) : 0x9B1B1356
        MSR_PP0_POLICY………….(0x63a) : 0x0
        MSR_PKG_C2_RESIDENCY…….(0x60d) : 0x0
        MSR_PKG_C3_RESIDENCY…….(0x3f8) : 0x0
        MSR_PKG_C6_RESIDENCY…….(0x3f9) : 0x0
        MSR_PKG_C7_RESIDENCY…….(0x3fa) : 0x0
        AICPUPMI: Low Frequency Mode : 1200 MHz
        AICPUPMI: Clock Speed : 2600 MHz
        AICPUPMI: Max Turbo Frequency: 3600 MHz
        AICPUPMI: CPU P-States [ (26) ]

        Not to mention my 0xE2 bit 15 is locked and even with patched AICPM I get nothing. This is on a Xeon SB-E

      • Yes, it should start with 0x1B, but your MSR_PLATFORM_INFO[28] = 0 which means that MSR_TURBO_RATIO_LIMIT is locked. Your only option is to change the (UEFI) BIOS settings until it works.

        At least MSR_PMG_CST_CONFIG_CONTROL ends with a 7 so C-States should work. Check the MSR_PKG_CX_RESIDENCY’s after a kextunload/kextload AppleIntelCPUPowerManagementInfo.kext

        Have you tried PMPatch?

      • I do not see anything in my BIOS that can change my turbo stuff. I think they even disabled turbo for some reason according to EVGA forums (it’s a beta bios so everyone hopes they fix it).

        I’ve patched my AICPM and nop-ed all wrmsr relating to 0xE2 but that does not seem to help, except preventing KPs.

        I also get ACPI_SMC_PlatformPlugin::pushCPU_CSTData – _CST evaluation failed and X86PlatformPlugin::getCPUCStates – CP00 ACST and _CST evaluations failed!, depending on the platform I pick when using your ssdtPRGen. If I don’t I don’t get those errors but then nothing happens either.

        I am not sure anymore what platform should I use in SMBios.plist, it’s a SB-E Xeon v1 system.

  3. OMG I don’t know what we are going to be without you when you will leaving to live your life you will be missed for this incredible work you have done and your are doing for us.
    Cheers

  4. Pike hello, thank you for your explanation, but now that it’s released the new Mac Pro, you think you can solve the problem of energy management on x79 platforms? You know very well that there are problems on x79 speed step, I am one of those that I have this platform, and I had to disable the speed step from bios and now it works just two steps, the minimum and the maximum, and not the intermediate ones. I also tried with a SSDT with your script, but without positive results.

    Ps: many experts have said that it was necessary to wait for the release of the new Mac Pro, to study and solve this problem permanently, but for now I have not found yet a good news.
    I’m available to do tester
    Thz Pike .
    Carmine

    • Sure. The new Mac Pro and Mavericks might make it easier to solve this problem, but let me ask you this; Is power management fully operational on Windows/linux? If yes, then the ACPI tables should be fine with a few additional bits.

  5. Good morning Pike …
    yes, confirm Windows 8.1 I have all the energy management, but also on maverics see that the voltage of the cpu goes up and down, but I see only two pstate (12 x, 47 x) but I have to disable the speed step from bios( with osx of course ) on ,Windows if I enable everything works perfectly, I do not know if I was clear in my explanation

  6. Piker, Should this Method (ACST, 0, NotSerialized) be placed in the DSDT? Because my SSDT generated with your script has an ACST method already. By the way I have XCPM on my ASRock Z77/3770K working with MacPro6,1 and full power management working.

      • My DSDT didn’t have the ACST method, so I copy and pasted your snippet into my my own patched dsdt, compiled , saved and rebooted. I don’t know if the new ACST code made any difference with my hardware, I do know that my SSDT generated with your script produced an SSDT with a very similar ACST method. I’ve been working all day so I haven’t had much to to play, but will check my console logs once home and report back if I need this ACST code snippet or not.

  7. Piker, I just noticed (still need more testing) but when using xcpm my hack no longer needs a bonjour sleep proxy server (like and apple airport or appleTV) to wake the machine from sleep over ethernet (maybe wifi also). This is good new, if we can get xcpm working 100% it could mean very good new. I think Power Nap might also be working. =)

    • That is good news, but Ivy Bridge processors are less of an issue for me. I mean. Only Haswell processors use the new FrequencyVector data and that makes it not only more complicated, but also a lot more interesting to play with.

  8. hello, allready got ACST metdod in my macmini 6.2 / GA-Z77-DS3H but got still this message:
    SMC::smcReadKeyAction ERROR LsNM kSMCKeyNotFound(0x84) fKeyHashTable=0x0
    SMC::smcGetLightshowVers ERROR: smcReadKey LsNM failed (kSMCKeyNotFound)
    SMC::smcPublishLightshowVersion ERROR: smcGetLightshowVers failed (kSMCKeyNotFound)
    SMC::smcInitHelper ERROR: smcPublishLightshowVersion failed (kSMCKeyNotFound)
    SMC::smcInitHelper ERROR: MMIO regMap == NULL – fall back to old SMC mode

    • Sorry, but the SMC errors/warnings about missing keys/data have nothing to do with ACPI methods – the errors need to be fixed by the FakeSMC developers. I can’t help you with this.

  9. Hi PikerAlpha,
    You never cease to amaze me with your knowledge of what is going on under the hood in OS X. It sounds like we’re still a little ways off from native CPUPM on x79 with SanyB-E. I have a rampage iv extreme w a 3930k and use chameleon. I’m currently getting bios controlled speed step (2 states 12 & 44x) by using NullCPUPM with bios settings: eist=disabled, c1e=enabled and all other states (reporting) =disabled.

    2 questions for you:

    1) Could you detail in your opinion what smbios/dsdt/ssdt configurations and combinations I should be using to get me as close as possible to native CPUPM at the moment?

    2) I followed your sister’s tiny ssdt examples a while back in order to use a ssdt to replace my dsdt but I got stumped when trying to add IRQNoFlags interrupts to hpet. Is there a way to do this via ssdt?

    I can’t thank you enough for all the wonderful information and contributions that you and your family have given to the community!

  10. I have a SB-EP Xeon which is basically the same chip series as 3930k, just dual capable. The following are the things that take it in the right direction, but still not 100%:

    – Run 10.9.2,
    – Set SMcputype key in SMBios.plist to 2561,
    – Make sure BIOS does not lock bit 15 of the 0xE2 MSR register (Pike’s tool AppleInteCPUPowerManagementInfo.kext can show that). I opted to patch my BIOS because it was locking, else you can patch AICPM,
    – Set plugin-type to 1 on my CPU0 in DSDT (important for X86PlatformPlugin.kext to load),
    – Ensure that AICPM does detect your CPU – it is not for me so that’s still pending.

    I used my native SSDT (EVGA) without any changes, although you might have to use Pike’s ssdtPRGen.sh.

    I still do not have full PM because AICPM does not detect my CPU and KPs on boot, so NullCPUPowerManagement is needed to avoid that.

    But P- and C-States are initiated in the X86PlatformPlugin (check in IOReg) so the only thing missing is the glue (AICPM), I believe, which should come from macpro6,1 hopefully when someone shares AICPM kext from it.

  11. Wow Guys its just lots and lots of information just by reading your comments and frankly its a lot for me to handle I’m just a newbie in mackintosh world here and just wanted some information about how to enable VGA connection in my Z87-D3HP for my HD 4600 to work in Mavericks but forget it , hats off to u guys now I’m curious like where to start from to understand all these things which u guys are talking about…pls if there are some documentation just for the learning purpose then please do help me by recommending some………sorry about off post topic but pike r alpha u r genius i learnt many new things just by reading ur posts…pls do mail me if u want to suggest some stuff for this newbie……and thanx again

  12. Hi Pike, also using your Snippet I have _CST evaluations failed
    If I use SSDT=Yes without dropping original SSDT I have no errors

    • You mean this error: “ACPI_SMC_PlatformPlugin::pushCPU_CSTData – _CST evaluation failed“?
      If yes, then you are using the wrong plugin! If not, and it also names ACST as one of the candidates, then you simply are doing something wrong. No idea what of course.

      Note:

      Do not use ‘a snippet‘ but the generated SSDT. I know that some of you are stubborn and keep using your OEM SSDT data, but that may not be a good idea. The reason I say this is that the power values are usually too high. What we use is calculated by what biosbits.org says is right. Just look at their test suite.

  13. In my case 10.9.3,10.9.4 and 10.10 won’t turn on monitor.After boot my system I hear my skype and iMessage but don’t turn on my monitor.What do you think?

  14. hi pike, i had a macbook pro 2013 late with retina. these days i found some errors in console logs like below:

    SMC::smcReadKeyAction ERROR LsNM kSMCKeyNotFound(0x84) fKeyHashTable=0x0
    SMC::smcGetLightshowVers ERROR: smcReadKey LsNM failed (kSMCKeyNotFound)
    SMC::smcPublishLightshowVersion ERROR: smcGetLightshowVers failed (kSMCKeyNotFound)
    SMC::smcInitHelper ERROR: smcPublishLightshowVersion failed (kSMCKeyNotFound)

    what’s that mean ? does it means one sensor on logic board is broken? because one day i power on my mac, its fan run crazly, and the kernel_task take 300% CPU!,all program is very slow. but it works fine when i leave it for some time.

    if it is a hardware issue, i should take it to Apple Store to resolve.

    wish your answer, thanks from china. 🙂

  15. Hello pikeralpha, I updated my SysDef to MacPro6,1 because it allows me to overclock to 4.5ghz on my i7-2600k without KP on boot in OS X 10.9.4 however it’s broken display sleep. Any idea how to fix this issue? Thanks.

Leave a comment