XCPM Screenshots of i7-6850K

Someone e-mailed me and asked me if XCPM is really working. Sure. Let me grab some pictures for you. Hold on. Working remotely here…

Idle
Let’s start with a picture of the processor running idle at less than 3 Watts.
Intel_i7_6850K_Idle
I have seen it run at an even lower wattage, but it is hard to capture (working remotely here).

Normal
Here is a picture of the processor after a Geekbench 3 test run.
Intel_i7_6850K_Normal
Pretty normal read out but…

Sustained Turbo
Some people are looking for a sustained turbo ratio, and that is possible with a trick.
Intel_i7_6850K_SustainedTurbo
But I am not going to tell you how that is done. For one simple reason…

Smoked
No. You really shouldn’t see something like this.
Intel_i7_6900K_Smoked
Running hot for a long period of time will degrade your processor, and eventually it will get smoked. Totally. Sans warranty from Intel I suppose.

Say what? Yup. That’s about it for now.

Quirks:

1.) When I select the XMP profile in the BIOS, then the Current Package Power in the Intel Power Gadget is broken. Far too low. Like 0.6W instead of a normal value.

Idle without C-States
IntelPowerGadget_CStatesFailure
Here we see that the Temperature in centigrade and the Power usage in Watt is higher without C-States enabled.

72 thoughts on “XCPM Screenshots of i7-6850K

  1. It’s worth mentioning that temperature is not really the causal factor in semiconductor degradation. It does enhance the primary wear mechanism, but heat is not the mechanism itself. For example, most semiconductors can be stored at temperatures that are limited only by their packaging (the heat spreader, interposer, etc), but ignoring that, a passivated die itself could sit at 175°C or more for long periods of time and suffer no meaningful reduction in life. This is time spent NOT in operation. It is a different story if there is current flowing.

    The true degradation mechanism is via hot carrier injection. Hot refers to the kinetic energy of individual charge carriers. Specifically, if electrons or holes in the valence band of SiO2 can be excited into SiO2’s conduction band, they are considered ‘hot’. After this, they can tunnel through the oxide layer of transistors (which is seen simply as additional leakage current), or worse, sometimes they will become lodged in the oxide layer itself. In other words, ‘hot’ charge carriers can effectively dope the insulating layers that make a MOSFET/CMOS transistor what it is, which will gradually erode and alter their electrical properties until at some point the CPU becomes unreliable and ultimately fails. This is the same mechanism that effects solid state memory, but flash memory actually uses tunnel injection to get charge carriers to tunnel onto an electrically isolated ‘floating gate’, which intentionally alters the threshold voltage of that MOSFET. Since we’re intentionally injecting hot carriers via tunnel injection, there are vastly more opportunities for charge carriers to become lodged in the metal oxide insulating layer, which is why at least early SSD drives wore out so quickly. I believe with current generation SSDs, this problem is largely mitigated to the point of irrelevance, but don’t quote me on that.

    All things being equal, temperature certainly increases the availability of these ‘hot’ carriers. But this is only when there is current actively flowing through the device. As for kinetic energy of electrons….that is what voltage does. Voltage/an electric field increases the kinetic energy of charge carriers. Thus, voltage is overwhelmingly responsible for CPU (really, any CMOS semiconductor) wear and age-related failures. Temperature is not going to help, but this happens just as much in a operating CPU kept at 1°C at all times, as one that is ripping along at 99°C. One kept cold but running at a higher voltage is not going to outlive a poorly cooled, hot-running CPU kept at a lower voltage.

    So, when overclocking, just be aware that the increased voltage is quietly ripping apart each and every one of those billions of transistors in the CPU even if you keep it extremely cool. Heat, or rather, lack thereof, is not at all a panacea in this regard.

    That said, all chip makers have extremely good models of how hot carrier injection changes the properties of the transistors on the die, so a significant amount of margin is engineered such that a CPU will remain fully functional even after significant degradation. Only time will tell for sure, but I like to think that even latest generation CPUs, assuming the voltage is kept as low as is practical, should generally last well past their useful life. I’m sure intel knows what to expect, but they aren’t sharing ;).

    Anyway, the wikipedia article is a bit sparse but does make for a good overview, to anyone interested: https://en.wikipedia.org/wiki/Hot-carrier_injection

    • The smoked image that I showed here is that of a OC’ed Intel i7-6900K and the CPU sample that tomshardware.com tested didn’t even boot over 4.3GHz. Not even with a massive extra voltage (see also this article over at toms hardware.com).

      The sample I have here does a much better job, but still requires too much energy.. The joules that is wants even exceeded that what the Intel Power Gadget can convert to Watts.

  2. hi piker just wondering again if there is any news about your patch for XCPM and if it could work with 3930k cpu… I’m just going to ask anyway but could XCPM make 3930k cpu work less hot and give similar result to the pic you post or getting XCPM working doesn’t make any changes if i already have a working pm from stingas patch and your ssdtPRGen.sh ?

    • It should work. I mean. Ivy Bridge was previously supported, with some kinks, but Apple dumped support for it in Sierra. What we need is someone with a bootable USB flash drive and some time… willing to give it a go. Feel free to report problems here.

  3. i have bootable usb with 10.11 in it using clover v2 something.. dose that count? and willing to try as soon you tell me where i should start. i even have fresh 10.12 beta 5 install in my other partition.. i mean i have SSD with 3 partitions one with 10.11.6 and one with 10.12 beta 5 and 3rd is 8gb install partition that i install any new system from since its much faster then using usb etc..
    so what is the first step i need to do to try out XCPM in 10.12 mate.. like what boot flag or is there some pm patches i need to apply first..

    • Sure. Clover is fine. What have you done so far?

      A few tips. Boot in verbose (-v) single-user mode (-s) with caches flushed (-f) and see if you can get to the prompt where you can enter ‘exit’. That is your first and main objective. For now.

      Check the output of: sysctl machdep.cpu.model. You want to know this, because you may be able to skip the patch for _xcpm_bootstrap. Let me know what you get.

      You can use HexEdit to patch the kernel – after you’ve made a backup of it – or Clover patches. Hopper (trial) can be used to check applied patches.

      Is MSR(0xE2) locked (bit-15 set)?

      If it reboots immediately then the most likely cause is a write to some MSR that is either reserved or unsupported. This is also why most people use the reboot fix patch (see blog article).

      A KP (panic) can trigger a reboot, but they are not the same. We can add a ret (c3) instruction to the panic routine in the kernel. A bit of a crude way to get a step further, but anything should be done to get you there.

      p.s. I am currently on holiday and only have (remote) access to a box with macOS Sierra DP6 so please use that for testing. Thanks.

  4. sounds lovely piker thanks for taking the time to write me back and i hope you enjoy your vacation.

    I have followed your steps so i started with booting with -v -s -f and it worked fine and i could type exit and log out to the username screen then log in to my desktop.

    then checked sysctl machdep.cpu.model and it returned 45.

    now i have never used HexEdit or patched a kernel let alone how to backup it etc or used Hopper before but i have downloaded both now and waiting your instruction in this part.

    I think asus mobs or at least my sabertooth x79 don’t have looked MSR so i run a test and it showed AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E000405

    i didn’t get any kernel panic and i update to 10.12 beta 6 now and I’m using Mac Pro 6.1 smbios and no clover pm patches etc so there is no stepping down for the cpu and its stuck at 3.2ghz which means i have no pm working of course since i haven’t patched the kernel maybe or also since mac pro 6.1 don’t have the correct FrequencyVectors for my 3930k so i must add that with ur freqVectorsEdit.sh v2.3 later on… although i don’t know which one is good enough for my cpu like what mac model i should use etc when the script ask me to choose..

    and i ran sysctl -n machdep.xcpm.mode and no surprise there it returned 0.

    • Thanks. My wife and children are sleeping already so I have a little spare time.

      Let’s see. You already established the cpu.model (45/0x2A) and figured out that MSR(0xE2) isn’t locked. That is good to know. You also downloaded Hopper and HexEdit. Great. Here’s what you can do:

      1.) cp /S*/L*/Kernels/kernel ~/Document
      2.) Double click on the Hopper.app
      3.) Click on: “Try the Demo
      4.) File -> Read Executable to Disassemble… -> kernel (browse to/select the copied kernel)
      5.) Tick the checkbox for: “Resolve Lazy Bindings” and click “OK”
      6.) Enter: “_xcpm_bootstrap” in the Search field
      7.) Select “_xcpm_bootstrap” from the list

      This bring you to the spot where I changed a byte. You can toggle the panels at the left/right side on/off with a keyboard shortcut and one of the three right/top most buttons. Familiarise yourself with the GUI. Remember that the Hopper.app was used to locate problematic code spots, and to verify the changed bytes that I entered in HexEdit.

      I opened the kernel of DP1 and _xcpm_bootstrap starts @ffffff800042ba10. This address will be different in other Developer Previews/Public Beta’s. That is not important, but you should know how to convert it to a file offset for HexEdit. Here is how you can do that:

      0x42ba10 - 0x200000 = 0x22BA10

      Yes. I dumped this part; ffffff8000 You don’t need it. Do the same with the value you see in your kernel. You can use the Calculator.app for it after changing the View to Programmer.

      Now open the same kernel backup file in HexEdit.app and press CMD+J. The address we want to enter, or paste, is a hexadecimal value so make sure “Hex” is selected. Just in case that isn’t already selected. Enter the address and “GO”. After that the cursor will flash in front of 55. That is the start of the _xcpm_bootstrap routine. But whatever you do, do not save anything yet. Please use some form of alternative media, like a USB flash drive, because this may stop it from booting!

      Another thing that you can do is to use FakeCPUID and make your i7-3930K look like a real Haswell (60/0x3C). I hope that you have used it before, because I do not use Clover 😉

      That’s it for now…

  5. ok lets see here first of i tried the simple way by using FakeCPUID in clover (0x0306C0) in the kernel and kext patches section and that gave me instant reboot not even a panic with white text etc when i rebooted to try it out… I don’t know what that mean really but i guess could mean i was wrong about MSR(0xE2) and maybe its locked… After all i checked if it was locked or not from 10.11.6 terminal not 10.12 partition… can there be a different ?

    it was long time ago i made a dsdt although i did it from the latest available bios update (4801 beta) for my sabertooth x79 and don’t know if there is something i should add there or if i needed to use MSR(0xE2) patch or not back in the days for that extracted dsdt that I’m now using in api/patched folder in clover. maybe that could be the problem ?

    Or maybe Haswell (0x0306C0) simple don’t work for my cpu modell ?

    anyway as for the kernel patching i guess we haven’t started to patch anything yet and you where just explaining different steps but i did everything you explained until this part where (But whatever you do, do not save anything yet. Please use some form of alternative media, like a USB flash drive, because this may stop it from booting!)
    i guess there is nothing to save since i didn’t patch anything and just found the 55 line in HexEdit?
    so i did as you explained in Calculator and added 427f30 minus 0x200000 = 0x227F30
    of course (427f30) from the 10.12 dp6. although i don’t know what the 0x200000 is but guess i don’t need too if you didn’t explain it.

    So now either I did as you asked or misunderstood you half way… anyway what should i do next…

    p.s i was in alicante torrevieja like 1 month ago for 10 days and it was nice until after 5 days got the worse flue ever so i was in bed half of the of the vacation really not cool 😦 then flew home half sick… worst first visit ever.

  6. Hi piker i hope you haven’t give up on me just yet.. been waiting for your new instructions for a while 😦 can’t wait to get my cpu working in XCPM man… i hope the weather is great at your vacation cause here in sthlm its not :/

      • Hey piker i hope you enjoyed your holiday man.. just wanted to check and remind you about my i7 3930k and let you know that I’m still waiting on your instruction since last time 🙂 to patch the kernel and activate XCPM for my cpu

      • Hi David,

        Sorry. The problem is that there is too much work for a single person. A lot of requests for help, as you may have noticed, and there is more good news coming out soon.

        Just hang in. I will get back to you. As soon as possible. Promised!

      • Hey piker how is things going man 🙂 I’m really ready to install 10.12 if you there is a progress about getting XCPM working with my cpu… I’m about to make a fresh install btw and was thinking what if changed to your boot loader instead of clover.. could that do things easier for me to get XCPM working.. for now i have made a fresh 10.12 install on 8gb SSD partition instead of usb that is way to much faster to install the system with 🙂 what should i do next any good tips or instructions to get 10.12 correctly installed… I’m kinda not sure what boot flags i should use with 10.12 everyone is saying different things unfortunately…

      • Please do not use RevoBoot. Too complicated. Clover should work just fine. And sorry, but I have no installation instructions. That is not my cup of tea. Technical posts only.

      • Hi piker i hope you doing good man 🙂 just wanted to check if you had any news about my i7 3930k and XCPM.. i remember you promised to get back to me but now that 10.12 is out i thought maybe there is something i could try ? its been a while now and i really hope you haven’t forgot about me…

  7. Hi Pike,

    how did you solve the problem of the 0x01A0 msr DC33 programming?

    When this MSR is set, IDLE cpu frequency will drop down correct, but not max. out under load.
    When i disable this, I get max load, but at idle the frequency will not drop permanent to x12. It jumps 12-46.

    I see your Inter Power Gadget toll shows one time the same problem, and then it seem you did the magic and solved this issue with the DC33 from 0x01A0 mrs from this MSR.

    I think fixing this will stable the system.

    Can you help and give me some informations about his?
    You are the only one who could this magic patch – your knowledge is awesome!

    Thx

  8. Hello Pike,

    Thank you for helping.
    This is what I am getting: with 0x01A0 msr DC33

    Model Specific Registers
    -----------------------------------
    MSR_CORE_THREAD_COUNT......(0x35) : 0x6000C
    MSR_PLATFORM_INFO..........(0xCE) : 0x20080C3BF3812300
    MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E000005
    MSR_PMG_IO_CAPTURE_BASE....(0xE4) : 0x10414
    IA32_MPERF.................(0xE7) : 0x2057CCF576
    IA32_APERF.................(0xE8) : 0x7F14A67C2
    MSR_FLEX_RATIO.............(0x194) : 0xE0000
    MSR_IA32_PERF_STATUS.......(0x198) : 0x293500002B00
    MSR_IA32_PERF_CONTROL......(0x199) : 0x2C00
    IA32_CLOCK_MODULATION......(0x19A) : 0x0
    IA32_THERM_STATUS..........(0x19C) : 0x88430000
    IA32_MISC_ENABLES..........(0x1A0) : 0x850089
    MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
    MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x24242B2B2B2B2B2C
    IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x1
    MSR_POWER_CTL..............(0x1FC) : 0x2904005B
    MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
    MSR_PKG_POWER_LIMIT........(0x610) : 0x7870800158640
    MSR_PKG_ENERGY_STATUS......(0x611) : 0x3677C2C
    MSR_PKG_POWER_INFO.........(0x614) : 0x1280460
    MSR_PP0_POWER_LIMIT........(0x638) : 0x0
    MSR_PP0_ENERGY_STATUS......(0x639) : 0x0
    MSR_PKGC6_IRTL.............(0x60b) : 0x0
    MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x353187ABC
    MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x0
    MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x4EE4C5511
    IA32_TSC_DEADLINE..........(0x6E0) : 0x312DAB8B0E66

    CPU Ratio Info:
    ------------------------------------
    CPU Low Frequency Mode.............: 1200 MHz
    CPU Maximum non-Turbo Frequency....: 3500 MHz
    CPU Maximum Turbo Frequency........: 4400 MHz

    CPU C3-Cores [ 0 1 6 8 10 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
    CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

    and here without, disabled this msr with this patch:

    find :A0010000DC33000000000000000000000000000040000000010005000000000000000000000000000000000000000000

    replace:
    A00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    Model Specific Registers
    -----------------------------------
    MSR_CORE_THREAD_COUNT......(0x35) : 0x6000C
    MSR_PLATFORM_INFO..........(0xCE) : 0x20080C3BF3812300
    MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x1E000005
    MSR_PMG_IO_CAPTURE_BASE....(0xE4) : 0x10414
    IA32_MPERF.................(0xE7) : 0x27956DC1
    IA32_APERF.................(0xE8) : 0x2E3973D6
    MSR_FLEX_RATIO.............(0x194) : 0xE0000
    MSR_IA32_PERF_STATUS.......(0x198) : 0x2A0100002B00
    MSR_IA32_PERF_CONTROL......(0x199) : 0x7F00
    IA32_CLOCK_MODULATION......(0x19A) : 0x0
    IA32_THERM_STATUS..........(0x19C) : 0x884A0800
    IA32_MISC_ENABLES..........(0x1A0) : 0x840089
    MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
    MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x24242B2B2B2B2B2C
    IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x1
    MSR_POWER_CTL..............(0x1FC) : 0x2904005B
    MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
    MSR_PKG_POWER_LIMIT........(0x610) : 0x7870800158640
    MSR_PKG_ENERGY_STATUS......(0x611) : 0xC565637
    MSR_PKG_POWER_INFO.........(0x614) : 0x1280460
    MSR_PP0_POWER_LIMIT........(0x638) : 0x0
    MSR_PP0_ENERGY_STATUS......(0x639) : 0x0
    MSR_PKGC6_IRTL.............(0x60b) : 0x0
    MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x1397C5FB61
    MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0xB0D90C
    MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x2B7C068C70
    IA32_TSC_DEADLINE..........(0x6E0) : 0x33CDB9143ECD

    CPU Ratio Info:
    ------------------------------------
    CPU Low Frequency Mode.............: 1200 MHz
    CPU Maximum non-Turbo Frequency....: 3500 MHz
    CPU Maximum Turbo Frequency........: 4400 MHz

    CPU C3-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
    CPU P-States [ 12 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 (44) ]

    Here are 2 pictures. With enabled http://imgur.com/RCqJBtt and disabled http://imgur.com/RCqJBtt

    • The only difference is this:

      MSR(0x01A0) value 0x840089 = Enhanced Intel SpeedStep Technology disabled
      MSR(0x01A0) value 0x850089 = Enhanced Intel SpeedStep Technology enabled

      You appear to have disabled EIST in the BIOS. Is that correct?

      • Which value should i change?
        does the complete string “A0010000DC33000000000000000000000000000040000000010005000000000000000000000000000000000000000000” program the msr?

        Is it possible to deactivate the bit, which set´s EIST to enabled?
        Or is it only possible to block the complete programming of this MSR?

        I used Hopper to view the xcpm code, but i don´t understand what there is going on 🙂

        I checked also mac OS 10.11, and there is the same. Some motherboards gets EIST state enabled when xcpm is used. I seems this caused the problems with low CPU performance and results in using nullCPUpm kext and fakecpu id.

        Only a few motherboards don´t change this bit, there is xcpm woking perfect.

      • Hello Pike,

        thx. for your help. You are a genius.
        I tested your patch for the msr 0x1A0 (change 01 00 05 -> 01 00 04). System boots fine with this. I also use google, and found some comments with ASUS and MSR 0x1A0. Bit 15 enable/disable EIST, Bit 20 is a lock for EIST. The original code from _xcpm_SMT_scope_msrs + _xcpm_pkg_scope_msrs enable EIST on my board, can´t believe it.

        But i noticed one problem: with Intel power gadget i can see that all CPUs (viewed screenshots from other) enabled xcpm with your patches, jumps in idle mode from min. to max. multiplier. Permanent, no smooth line in power gadget. Can this also triggers reboots? You can see this best when you change the preferences from power gadget to 500ms sampling resolution.

        I checked this with my iMac 14,2, and there the CPU goes down to 16, and stays there. No jumping to max. (tested with 100ms, 500 and other). CPU frequency is almost flat in idle and smooth.

        Could this be stress for the CPU (VRM …) and in some cases trigger an unexpected reboot?
        Reach this CPU really all P-States, or do the only jump from min to max?

        I tested many configurations in bios, changed some values in _xcpm_SMT_scope_msrs,
        _xcpm_pkg_scope_msrs and tested other frequency vectors files.

        No success.

        Does your tests shown the same results when CPU is in idle mode?
        And do you think it´s a problem for system stability?
        Can this be fixed or can we adjust some settings? Any ideas to this?

        2 screenshots added 🙂

        Thank you

        http://imgur.com/qmWVAzE

        http://imgur.com/rmJBv29

      • No I have not seen this. Are you, and the others with the same problem, perhaps using the wrsmr fix to get CPU maxed out (by okrasit)?

        Please note that I no longer have the X99 setup in house and thus I cannot check this myself, and the winner of the hardware is not responding e-mails.

        I can only test this with a Haswell, Skylake and a new Kaby Lake processor. All fine here.

    • Hi,
      on ASUS X99/A US3B 3.1 i7 5820k, MacOS 10.12 Beta (16A304a), I am experiencing the same behaviour as in Photograph’s screenshots below (frequency jumping erratically from min to max when idle).

      Patches used from Pike’s article to enable XCMP and avoid early reboots:
      e9 -> e6
      c4 -> c1
      55 -> c3
      I’ve also patched the BIOS following your advice to unlock 0xE2 MSR (two days without reboots now).

      I am not using the wrsmr fix to get CPU maxed out (by okrasit).

      Here the output from AppleIntelInfo:

      AppleIntelInfo.kext v1.5 Copyright © 2012-2016 Pike R. Alpha. All rights reserved

      Settings:
      ————————————
      logMSRs……………………….: 1
      logIGPU……………………….: 0
      logCStates…………………….: 1
      logIPGStyle……………………: 1
      InitialTSC…………………….: 0x122bd2e2b42
      MWAIT C-States…………………: 8480

      Model Specific Registers
      ———————————–
      MSR_CORE_THREAD_COUNT……(0x35) : 0x6000C
      MSR_PLATFORM_INFO……….(0xCE) : 0x20080C3BF3812100
      MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x402
      MSR_PMG_IO_CAPTURE_BASE….(0xE4) : 0x10414
      IA32_MPERF……………..(0xE7) : 0xA224AC338
      IA32_APERF……………..(0xE8) : 0xD526EDE9E
      MSR_FLEX_RATIO………….(0x194) : 0xE0000
      MSR_IA32_PERF_STATUS…….(0x198) : 0x29FD00002E00
      MSR_IA32_PERF_CONTROL……(0x199) : 0xC00
      IA32_CLOCK_MODULATION……(0x19A) : 0x0
      IA32_THERM_STATUS……….(0x19C) : 0x88420000
      IA32_MISC_ENABLES……….(0x1A0) : 0x840089
      MSR_MISC_PWR_MGMT……….(0x1AA) : 0x400000
      MSR_TURBO_RATIO_LIMIT……(0x1AD) : 0x22222E2E2E2E2E2E
      IA32_ENERGY_PERF_BIAS……(0x1B0) : 0x0
      MSR_POWER_CTL…………..(0x1FC) : 0x2904005B
      MSR_RAPL_POWER_UNIT……..(0x606) : 0xA0E03
      MSR_PKG_POWER_LIMIT……..(0x610) : 0x7FFF80015FFF8
      MSR_PKG_ENERGY_STATUS……(0x611) : 0xF3B63
      MSR_PKG_POWER_INFO………(0x614) : 0x1280460
      MSR_PP0_POWER_LIMIT……..(0x638) : 0x0
      MSR_PP0_ENERGY_STATUS……(0x639) : 0x0
      MSR_PKGC6_IRTL………….(0x60b) : 0x0
      MSR_PKG_C2_RESIDENCY…….(0x60d) : 0x5154CDA9A
      MSR_PKG_C6_RESIDENCY…….(0x3f9) : 0xFD57FB4CE
      IA32_TSC_DEADLINE……….(0x6E0) : 0x122BF89E3EA

      CPU Ratio Info:
      ————————————
      CPU Low Frequency Mode………….: 1200 MHz
      CPU Maximum non-Turbo Frequency….: 3300 MHz
      CPU Maximum Turbo Frequency……..: 4600 MHz
      CPU P-States [ 43 (46) ]
      CPU C6-Cores [ 1 2 5 6 8 11 ]
      CPU P-States [ 39 43 (46) ]
      CPU C6-Cores [ 0 1 2 4 5 6 8 10 11 ]
      CPU P-States [ 39 43 44 (46) ]
      CPU C6-Cores [ 0 1 2 3 4 5 6 8 10 11 ]
      CPU P-States [ 25 39 43 44 (46) ]
      CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 10 11 ]
      CPU P-States [ 25 29 39 43 44 (46) ]
      CPU P-States [ (12) 25 29 39 43 44 46 ]
      CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
      CPU P-States [ 12 25 29 32 39 43 44 (46) ]
      CPU P-States [ 12 25 29 30 32 39 43 44 (46) ]
      CPU P-States [ 12 25 29 30 32 33 39 43 44 (46) ]
      CPU P-States [ (12) 25 29 30 31 32 33 39 43 44 46 ]
      CPU P-States [ (12) 25 26 29 30 31 32 33 39 43 44 46 ]
      CPU P-States [ 12 25 26 29 30 31 32 33 38 39 43 44 (46) ]
      CPU P-States [ 12 25 26 29 30 31 32 33 38 39 43 44 45 (46) ]
      CPU P-States [ (12) 25 26 29 30 31 32 33 38 39 42 43 44 45 46 ]
      CPU P-States [ (12) 25 26 28 29 30 31 32 33 38 39 42 43 44 45 46 ]
      CPU P-States [ 12 25 26 28 29 30 31 32 33 36 38 39 42 43 44 45 (46) ]
      CPU P-States [ (12) 25 26 28 29 30 31 32 33 36 38 39 41 42 43 44 45 46 ]
      CPU P-States [ 12 25 26 28 29 30 31 32 33 35 36 38 39 41 42 43 44 45 (46) ]
      CPU P-States [ 12 25 26 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 (46) ]
      CPU P-States [ (12) 25 26 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 ]
      CPU P-States [ 12 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 (46) ]
      CPU P-States [ (12) 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ]
      CPU P-States [ (12) 22 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ]
      CPU P-States [ 12 19 22 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 (46) ]
      CPU P-States [ (12) 19 21 22 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ]
      CPU P-States [ (12) 19 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ]
      CPU P-States [ 12 19 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 (46) ]
      CPU P-States [ 12 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 (46) ]

      • Yes, CPU cores were already synced.

        Enabling EIST makes a difference and frequencies when system is idle jump back and forth from 1200 to 3300 MHz (max non turbo) instead of jumping from 1200 to 4600 (EIST disabled).
        4600 with EIST is reached only under heavy load, and Geekbench score is 22k vs 27k non-EIST.

        The other interesting thing worth noting is that random reboots happen after a couple of minutes from logging into the system – if no reboot happens after a few minutes the system is stable.

        Yesterday and today the system was very stable (no issues at all). After testing EIST on/off I had sudden reboots three times after logging in. Now I resetted BIOS to default, set the usual options (disable serial port, enable USB, set CPU to 46x, set C-states) and it seems to be stable once again… Don’t know if the events are related or I’m just experiencing random behaviours.

      • I would say stick with EIST enabled, disable C-States, run the CPU per Intel spec setup, without syncing cores, and see what it is that makes it unstable.

        I know that Asus had issues with C-States being enabled and OC’ing and nowadays they even disable C-States automatically when you use OC settings.

  9. Hi Pike,
    Could you think that your XCPM patch could work with El Capitan 10,11,6 and new Xeon Broadwell EP Cpu?
    Till now I can’t eliminate nullcpupowermanagement.kext..
    I have tried some clover kernel patch but I have an insta reboot (Kp) in ++++++++++++ step

    Thank you

    • Most likely yes. That is. With the right set of patches.

      About the KP. I have seen reports from people getting the same KP without the use of FakeCPUID. Can you boot without it when you use NullCPUPowerManagement.kext?

      Do you have Hopper? Lookup the _panic routine and change the 0x55 at the start of the routine into 0xC3 to see if that enables you to boot.

  10. Patches which was working with my “old” 2696 V3 xeon (haswell Ep) are not working with new cpu (2696 V4 Broadwell EP)

    No, I can’t boot without FakeCPUID. I use 0x0306E4

    I am not familiar with Hopper
    For minimal kernel patching I use base latest clover boot loader feature which allows to inject kernel patch you gave for Haswell E cpu

    • You probably need to update the patches for the Broadwell processor, but I would first need to know what patches you were using. Also. What is the value of:

      sysctl machdep.cpu.model

      Remember that we use this value as an offset for my XCPM patches. Your Haswell is probably a 0x3F model and the Broadwell a 0x4F model. That is a huge difference. Now you need to recalculate the value you want, and the FakeCPUID should match this.

      • Hello Pike, thank you for your answer

        Patches for El Capitan 10.11.6 Cpu 2696 V4 Broadway EP:
        this one 5D7F288D48BB83F902
        replaced with 5D7F288D48B383F902
        this one 83C3BB83FB09
        replaced 83C3B383FB09
        this one 554889E5415741564155415453504189D64189F74889FB4585FF0F84
        replaced C34889E5415741564155415453504189D64189F74889FB4585FF0F84

        sysctl machdep.cpu.model
        fabios-Mac-Pro:~ fabio$ sysctl machdep.cpu.model
        machdep.cpu.model: 62
        fabios-Mac-Pro:~ fabio$

        FakeCPUID 0x0306E4
        Thank you for you help

  11. sorry, i can´t reply direct to my comment.

    No Piker, i don’t use the okrasit patch, but i tested this one. Makes no difference.

    Actually i use my own patches for my board.

    F: 83C3C483FB22 R: 83C3C183FB22 (your _xcpm_bootstrap patch)

    and i patch msr 0x1A0 _xcpm_SMT_scope_msrs / _xcpm_pkg_scope_msrs to:
    A0010000DC33000000000000000000000000000040000000010004000000000000000000000000000000000000000000

    or complete disable this one.

    And i patch in _xcpm_pkg_scope_msrs:

    msr 0x063a & 0x0642 disable complete, or patching 3A060000DC33 -> 3A060000DB33 or 3A060000E033. Tested many configurations, i can´t boot with DC.

    same with 42060000DC33 -> 42060000DB33, 42060000E033…..

    But this has no significant effects.

      • Sorry, no that patches are all yours.

        I wrote this false. I would first like to correct a choice of words in my previous contribution.

        I don’t use the complete patches you posted, i onlypatch the msrs that makes problems. I used your guide and disabled the problematic msrs. And that is what i mean with “my patches”. My patches are referred to the best settings for my board, to have no reboots and complete boot sequence.

  12. Hi Pike
    FakeCPUID 0x0306E4 should mean that I am simulating an Ivy Bridge Cpu
    With my previous 2696 V3 I have no need of this to boot

    • Let’s see what we find in xnu-3248.60.10/osfkm/i386/cpuid.h:
      #define CPUID_MODEL_IVYBRIDGE_EP 0x3E
      That is exactly what sysctl machdep.cpu.model gives you. Is that due to Clover’s FakeCPUID?

      Edit: Yes it is. I found a CPU-Z screen dump and the processor model is 0x4F. Not 0x3E so yup. This is due to the Clover FakeCPUID feature.

      Now the real question is; Why don’t you use a FakeCPUID to make it look like a real Broadwell?

      • Because I didn’t know it exist a correct FakeCPUID value for my Xeon 2696 V4 (broadwell EP)
        Then I can confirm that cpuz reports 4F in Ext.Model value
        So,Could you Advice a correct Value for FakeCPUID in your opinion?
        Thank you

        Edit:
        0x0406F4 produces KP at ++++++++ start
        with or without nullcpupowermangement.kext

      • Pike great success…It boots 🙂
        now I will try with clove -xcpm boot arg

        Edit:
        in this condition (old Haswel E Kernel Patch) frequency is stuck at 2.8 Ghz..now trying -xcpm stuff

        Edit-2:
        -xcpm flag not works (no xcpm loaded and registered from console)
        also I have this:
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendPStates – Success!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::sendStepper – Stepper dictionary from plist is NULL!
        29/08/16 18:18:21,000 kernel[0]: X86PlatformShim::start – Failed to send stepper

        now trying to inject with your frequency vector script and then, to old HaswellE delete kernel patch on config plist

    • Progress is such a joy isn’t it.

      Let’s see. Be careful and well prepared when you disable the patch. If you do, it may end in a reboot. It all depends on MSR(0xE2) being unlocked and if your processors support the other MSRs.

      Again. Please be very careful and make sure that you have some sort of second boot drive handy. What I did was that I booted from my Sierra installation USB, with the M2 removed, and tried all MSRs one after the other and this is the result.

      Tip: If MSR(0xE2) is locked, then please do not forget to patch _xcpm_idle.

      The: “Failed to send stepper” error is most likely related to the PM SSDT.

  13. Thank you Pike, as always your advices were precious
    I was very happy to see that system could boot without nullcpupm that I have no taken any caution..but now I have a solid backup and I can go on testing
    Yes my MSR(0xE2) seems to be locked:

    fabios-Mac-Pro:desktop fabio$ sudo cat /tmp/AppleIntelInfo.dat

    AppleIntelInfo.kext v1.5 Copyright © 2012-2016 Pike R. Alpha. All rights reserved

    Settings:
    ------------------------------------
    logMSRs............................: 1
    logIntelRegs.......................: 1
    logCStates.........................: 1
    logIPGStyle........................: 1
    InitialTSC.........................: 0x9c8517b6cce
    MWAIT C-States.....................: 8480

    Model Specific Registers
    -----------------------------------
    MSR_CORE_THREAD_COUNT......(0x35) : 0x16002C
    MSR_PLATFORM_INFO..........(0xCE) : 0x20080C3BF2811600
    MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x8400
    MSR_PMG_IO_CAPTURE_BASE....(0xE4) : 0x10414
    IA32_MPERF.................(0xE7) : 0x58BD27AD5
    IA32_APERF.................(0xE8) : 0x67633B48C
    MSR_FLEX_RATIO.............(0x194) : 0x0
    MSR_IA32_PERF_STATUS.......(0x198) : 0x248D00002300
    MSR_IA32_PERF_CONTROL......(0x199) : 0x2200
    IA32_CLOCK_MODULATION......(0x19A) : 0x0
    IA32_THERM_STATUS..........(0x19C) : 0x88440000
    IA32_MISC_ENABLES..........(0x1A0) : 0x840089
    MSR_MISC_PWR_MGMT..........(0x1AA) : 0x402000
    MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x1E1F202122232525
    IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x0
    MSR_POWER_CTL..............(0x1FC) : 0x2904005B
    MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
    MSR_PKG_POWER_LIMIT........(0x610) : 0x785A0001584B0
    MSR_PKG_ENERGY_STATUS......(0x611) : 0x47E9FC
    MSR_PKG_POWER_INFO.........(0x614) : 0x2F0A18028804B0
    MSR_PP0_POWER_LIMIT........(0x638) : 0x0
    MSR_PP0_ENERGY_STATUS......(0x639) : 0x0
    MSR_PKGC6_IRTL.............(0x60b) : 0x0
    MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x0
    MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x0
    IA32_TSC_DEADLINE..........(0x6E0) : 0x9C8555B0146

    CPU Ratio Info:
    ------------------------------------
    CPU Low Frequency Mode.............: 1200 MHz
    CPU Maximum non-Turbo Frequency....: 2200 MHz
    CPU Maximum Turbo Frequency........: 3700 MHz
    CPU P-States [ 24 33 (37) ]
    CPU C6-Cores [ 1 2 3 4 5 7 9 10 11 13 14 ]
    CPU P-States [ (12) 24 28 33 37 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ]
    CPU P-States [ (12) 24 28 33 37 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 ]
    CPU P-States [ 12 24 28 29 33 (37) ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 ]
    CPU P-States [ 12 24 25 28 29 33 (37) ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]
    CPU P-States [ (12) 24 25 28 29 33 37 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]
    CPU P-States [ 12 23 24 25 28 29 33 (37) ]
    CPU P-States [ 12 23 24 25 28 29 33 (37) ]
    CPU P-States [ 12 23 24 25 27 28 29 33 (37) ]

    ../..

    CPU P-States [ 12 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 (37) ]
    CPU P-States [ (12) 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ]

    Also I have noticed that if I have speedstep on bios disabled I have less cpu p-states as you can see from last line
    I speedstep is active I have worst scores on multiple processor, same score for single processor and all speedstep are shown from 12 to 37

    For creating SSDT I used your SSDTPrgen.sh script with command that you suggest to me in ssdtprgen github issue section..
    Maybe I am missing in other part
    However, thank you for your time

  14. Hi,

    the idea with the FAKEcpuID is great. Perfect job Piker!

    I found many working CPUIDs for Haswell-E. Teststing more…

    sysctl machdep.cpu.model returns different IDs, depending on the FakeCPUID:
    61,63,70 or 71.

    With all FakeCPUIds xcpm starts without xcpm_bootstrap patch.
    Some IDs need to disable 2 msrs (42060000DC33/3A060000DC33 make problems).

    How can i convert the IDs returned by sysctl machdep.cpu.model?

    What CPUs are 61,63,70 or 71?

    • Take a look at Apple’s cpuid.h. If we use that the new get:

      61 / 0x3D (Broadwell) = 0x0306Ds
      63 / 0x3F (Haswell E) = 0x0306Fs
      70 / 0x46 (Chrystalwell) = 0x04066s
      71 / 0x47 (Broadwell H) = 0x04067s

      Where “s” is the CPU stepping.

      I hope that this is what you are looking for.

  15. Thank you!

    But i don´t unterstand what´s going on there…

    When i use 0x040670 it will boot, i geht CpuID 71, xcpm starts. So is Broadwell-H is full supported? 0x040670 should not enable xcpm, reading your posts, but it does?

    Using 0x040660 it will boot also, i geht CpuID70, xcpm starts – xcpm thinking i´m using a Chrystalwell CPU.

    Using 0x0306F0 it boots, but xcpm don´t start, CpuID 63, CPU stays at max frequency.

    Using 0x0306C0 don’t boot. Stops when clover loads/patches Kernel.

    Using 0x0306D0 boots, i get CpuID 61 and xcpm starts. But i have to disable all msrs using your reboot fix. Without your reboot fix ist stops when clover loads/patch the kernel.

    But with none of this patches i can get my CPU staying an min. multiplier in idle.

    • No. This is what I said in my reply to fabio:

      What I used for the XCPM patches for the Broadwell E processors was 0x47 aka 0x4f-0x8=0x47 and that would translate to something like 0x040674“.

      Can you test something for me? Do you have a USB pendrive with the Sierra installer handy? Without any third party kexts but FakeSMC.kext on it? No plugins nothing. With the same kernel patches. Boot from it and load the Intel EnergyDriver.kext and fire up the front end of the Intel Power Gadget. You still see a higher idle multiplier?

    • Hmm. Ok. That is not what I expected c.q. hoped for. I mean. Something has to trigger the higher P-States and I know for a fact that its not XCPM. The question now is what is…

  16. Yes, it´s not xcpm.

    I tested the same config without FakeCPUID / xcpm and using NullCPUpm kext. Same here, but cpu stay a little bit longer at 12 (min multiplier). But also jumps to max. Testing OS 10.11.6 + 10.12. DP 8.

    I also ask myself… does all X99 boards and CPUs this frequency jumping, or happens this only with ASUS or Haswell-E?

    I use X99 Deluxe with 5930k. Also running tests at stock frequency, no overclocking, default settings. Disabled onboard devices and changed many settings.

    • I have not seen the reported CPU spikes in the Intel Power Gadget, with the Broadwell E processors that I have used. Also. Your last picture of the Intel Power Gadget once again shows almost 20 Watt where I had only 2~3 Watt in idle mode. Again. With the Broadwell E processors. Not a Haswell E, but that shouldn’t be that much of a difference. Yeah. Something is terribly wrong here, but what…

      I do know that using different FakeCPUIDs can change things a little, because then certain MSRs are either programmed, or not. And when you look at MSR(0x1B0) then you see that yours is set to zero for top performance i.e. it is not programmed by XCPM, and thus the processor will spike a lot quicker than with a value of 5 (balanced) or 15 (energy saving mode).

      One other thing is the used FrequencyVectors data. I have used the iMac171,1 data and compared the output of the Intel Power Gadget with that of a MacBook Pro and there I see that it is much more relaxed. Using the same plist on my hack gave me the same result, but it also felt a bit sluggish.

      I also found a setting in the ASUS BIOS that lowered the used Watts in idle mode, but I forgot what it was. I could download the manual and try to find it for you, but I am too tired. It was a long hot day. Maybe tomorrow.

      • it´s called “EPU power saving mode” or so…

        I can use it with no heavy overclock, and it works when RAM is set to 2133mhz.
        Then it drops in idle to 5 watts. Depending on your cache settings (voltage/multi).

        But i think it´s a fake. When this is enabled, it shows most of the time the half watts. I tested this with running a benchmark or prime95. And prime95 is a killer…. Power Gadget shows 72 watts when running all workers in prime95. I think this must be wrong. 🙂

        http://imgur.com/P2mpPe1

        and i love the “new” AppleIntelInfo.kext 🙂

        AppleIntelInfo.kext v1.6 Copyright © 2012-2016 Pike R. Alpha. All rights reserved

        Settings:
        ------------------------------------
        logMSRs............................: 1
        logIGPU............................: 0
        logCStates.........................: 1
        logIPGStyle........................: 1
        InitialTSC.........................: 0x1b8adf3e3b9
        MWAIT C-States.....................: 8480

        Model Specific Registers (MSRs)
        ---------------------------------------

        MSR_CORE_THREAD_COUNT..........(0x35) : 0x6000C
        ----------------------------------------
        - Core Count......................... : 6
        - Thread Count....................... : 12

        MSR_PLATFORM_INFO..............(0xCE) : 0x20080C3BF3812300
        ----------------------------------------
        - Maximum Non-Turbo Ratio............ : 35
        - Ratio Limit for Turbo Mode......... : 1 (programmable)
        - TDP Limit for Turbo Mode........... : 1 (programmable)
        - Low Power Mode Support............. : 1 (LPM supported)
        - Number of ConfigTDP Levels........ : 1 (additional TDP level(s) available)
        - Maximum Efficiency Ratio........... : 12
        - Minimum Operating Ratio............ : 8

        MSR_PMG_CST_CONFIG_CONTROL.....(0xE2) : 0x1E000005
        ----------------------------------------
        - I/O MWAIT Redirection Enable....... : 0 (not enabled)
        - CFG Lock........................... : 0 (MSR not locked)
        - C3 State Auto Demotion............. : 1 (enabled)
        - C1 State Auto Demotion............. : 1 (enabled)
        - C3 State Undemotion................ : 1 (enabled)
        - C1 State Undemotion................ : 1 (enabled)
        - Package C-State Auto Demotion...... : 0 (disabled/unsupported)
        - Package C-State Undemotion......... : 0 (disabled/unsupported)

        MSR_PMG_IO_CAPTURE_BASE........(0xE4) : 0x10414
        ----------------------------------------
        - LVL_2 Base Address................. : 0x414
        - C-state Range...................... : 1 (C-States not included, I/O MWAIT redirection not enabled)

        IA32_MPERF.....................(0xE7) : 0x2BB851C264
        IA32_APERF.....................(0xE8) : 0x2DADD3AF96

        MSR_FLEX_RATIO.................(0x194) : 0xE0000
        ----------------------------------------

        MSR_IA32_PERF_STATUS...........(0x198) : 0x232800002500
        ----------------------------------------
        - Current Performance State Value.... : 0x2500

        MSR_IA32_PERF_CONTROL..........(0x199) : 0x7F00
        ----------------------------------------
        - Target performance State Value..... : 0x7F00
        - Intel Dynamic Acceleration......... : 0 (IDA engaged)

        IA32_CLOCK_MODULATION..........(0x19A) : 0x0
        IA32_THERM_STATUS..............(0x19C) : 0x88460000

        IA32_MISC_ENABLES..............(0x1A0) : 0x840089
        ----------------------------------------
        - Fast-Strings....................... : 1 (enabled)
        - Automatic Thermal Control Circuit.. : 1 (enabled)
        - Performance Monitoring............. : 1 (available)
        - Enhanced Intel SpeedStep Technology : 1 (enabled)

        MSR_MISC_PWR_MGMT..............(0x1AA) : 0x400001
        ----------------------------------------
        - EIST Hardware Coordination......... : 1 (disabled)

        MSR_TURBO_RATIO_LIMIT..........(0x1AD) : 0x2424252525252627
        ----------------------------------------
        - Maximum Ratio Limit for C00........ : 39
        - Maximum Ratio Limit for C01........ : 38
        - Maximum Ratio Limit for C02........ : 37
        - Maximum Ratio Limit for C03........ : 37
        - Maximum Ratio Limit for C04........ : 37
        - Maximum Ratio Limit for C05........ : 37

        IA32_ENERGY_PERF_BIAS..........(0x1B0) : 0x1
        ----------------------------------------
        - Power Policy Preference.............: 1 (highest performance)

        MSR_POWER_CTL..................(0x1FC) : 0x2904005B
        MSR_RAPL_POWER_UNIT............(0x606) : 0xA0E03
        MSR_PKG_POWER_LIMIT............(0x610) : 0x7FFF80015FFF8
        MSR_PKG_ENERGY_STATUS..........(0x611) : 0x68A2314
        MSR_PKG_POWER_INFO.............(0x614) : 0x1280460
        MSR_PP0_POWER_LIMIT............(0x638) : 0x0
        MSR_PP0_ENERGY_STATUS..........(0x639) : 0x0
        MSR_TURBO_ACTIVATION_RATIO.....(0x64C) : 0x0
        MSR_PKGC6_IRTL.................(0x60b) : 0x0
        MSR_PKG_C2_RESIDENCY...........(0x60d) : 0x9845B81559
        MSR_PKG_C3_RESIDENCY...........(0x3f8) : 0x611F20
        MSR_PKG_C6_RESIDENCY...........(0x3f9) : 0x9D2D6F44B8
        IA32_TSC_DEADLINE..............(0x6E0) : 0x1B8B017A7DD

        CPU Ratio Info:
        ----------------------------------------
        CPU Maximum Efficiency Ratio...........: 1200 MHz
        CPU Maximum non-Turbo Frequency........: 3500 MHz
        CPU Maximum Turbo Frequency............: 3900 MHz
        CPU P-States [ (12) 32 37 ]
        CPU C3-Cores [ 1 4 6 8 10 ]
        CPU C6-Cores [ 0 2 4 5 6 8 10 ]
        CPU P-States [ (12) 18 32 37 ]
        CPU C3-Cores [ 1 4 6 8 10 11 ]
        CPU C6-Cores [ 0 1 2 4 5 6 8 10 ]
        CPU P-States [ (12) 18 27 32 37 ]
        CPU P-States [ (12) 18 26 27 32 37 ]
        CPU P-States [ 12 18 26 27 30 32 37 (39) ]
        CPU C3-Cores [ 0 1 4 5 6 7 8 9 10 11 ]
        CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
        CPU P-States [ (12) 18 26 27 28 30 32 37 39 ]
        ../..
        CPU P-States [ (12) 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ]

  17. Let´s wait a moment…. now i used FakeCpuID 0x0306E4 + NullCPUpm kext and it changes.
    The other tests i used default 0x0306F2 or 0x040670.

    CPU keeps now longer at min multiplier. No permanent jumping from 12 to max.
    There are some peaks, but the “picture” changes in idle.

    Model Specific Registers
    -----------------------------------
    MSR_CORE_THREAD_COUNT......(0x35) : 0x6000C
    MSR_PLATFORM_INFO..........(0xCE) : 0x20080C3BF3812300
    MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x403
    MSR_PMG_IO_CAPTURE_BASE....(0xE4) : 0x10414
    IA32_MPERF.................(0xE7) : 0x1106DAE4E3
    IA32_APERF.................(0xE8) : 0x11072529F5
    MSR_FLEX_RATIO.............(0x194) : 0xE0000
    MSR_IA32_PERF_STATUS.......(0x198) : 0x235100002500
    MSR_IA32_PERF_CONTROL......(0x199) : 0xC00
    IA32_CLOCK_MODULATION......(0x19A) : 0x0
    IA32_THERM_STATUS..........(0x19C) : 0x88500000
    IA32_MISC_ENABLES..........(0x1A0) : 0x840089
    MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400000
    MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x2424252525252627
    IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x0
    MSR_POWER_CTL..............(0x1FC) : 0x2904005B
    MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
    MSR_PKG_POWER_LIMIT........(0x610) : 0x7FFF80015FFF8
    MSR_PKG_ENERGY_STATUS......(0x611) : 0xAA81219
    MSR_PKG_POWER_INFO.........(0x614) : 0x1280460
    MSR_PP0_POWER_LIMIT........(0x638) : 0x0
    MSR_PP0_ENERGY_STATUS......(0x639) : 0x0
    MSR_PKGC6_IRTL.............(0x60b) : 0x0
    MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x0
    MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x0
    IA32_TSC_DEADLINE..........(0x6E0) : 0x6CF87DCF6DA

    CPU Ratio Info:
    ------------------------------------
    CPU Low Frequency Mode.............: 1200 MHz
    CPU Maximum non-Turbo Frequency....: 3500 MHz
    CPU Maximum Turbo Frequency........: 3900 MHz
    CPU P-States [ (12) 35 37 ]
    CPU P-States [ (12) 18 35 37 ]
    ../..
    CPU P-States [ (12) 13 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 32 34 35 37 ]
    CPU P-States [ (12) 13 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 ]
    CPU P-States [ (12) 13 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 ]
    CPU P-States [ (12) 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 ]
    CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 ]
    CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 (37) ]

    http://imgur.com/gOTsDrl

    • Hi Pike,

      i have done some more tests with my Haswell-E and xcpm.

      I found some interesting thing: when i use no FakeCpuID (or CpuID 0x0306E4), no xcpm init and when i patch IntelCPUpm kext (from here the Clover patches http://www.insanelymac.com/forum/topic/312859-sandy-bridge-e-ivy-bridge-e-power-management-1012-beta/) and let clover generate the C-States an P-States, then there is an error:

      X86PlatformPlugin getting unexpected data for C1/C2… but system boots.

      And then CPU pm work, P-states are enabled, but no C-States working and idle Power is 45W (with xcpm/C-States idle is 20W) but the CPU stays better at min. multiplier.

      AppleIntelInfo.kext v1.6 Copyright © 2012-2016 Pike R. Alpha. All rights reserved

      Settings:
      ------------------------------------
      logMSRs............................: 1
      logIGPU............................: 0
      logCStates.........................: 1
      logIPGStyle........................: 1
      InitialTSC.........................: 0xdfd6ddc30f8
      MWAIT C-States.....................: 8480

      Model Specific Registers (MSRs)
      ---------------------------------------

      MSR_CORE_THREAD_COUNT..........(0x35) : 0x6000C
      ----------------------------------------
      - Core Count......................... : 6
      - Thread Count....................... : 12

      MSR_PLATFORM_INFO..............(0xCE) : 0x20080C3BF3812300
      ----------------------------------------
      - Maximum Non-Turbo Ratio............ : 35
      - Ratio Limit for Turbo Mode......... : 1 (programmable)
      - TDP Limit for Turbo Mode........... : 1 (programmable)
      - Low Power Mode Support............. : 1 (LPM supported)
      - Number of ConfigTDP Levels........ : 1 (additional TDP level(s) available)
      - Maximum Efficiency Ratio........... : 12
      - Minimum Operating Ratio............ : 8

      MSR_PMG_CST_CONFIG_CONTROL.....(0xE2) : 0x401
      ----------------------------------------
      - I/O MWAIT Redirection Enable....... : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
      - CFG Lock........................... : 0 (MSR not locked)
      - C3 State Auto Demotion............. : 0 (disabled/unsupported)
      - C1 State Auto Demotion............. : 0 (disabled/unsupported)
      - C3 State Undemotion................ : 0 (disabled/unsupported)
      - C1 State Undemotion................ : 0 (disabled/unsupported)
      - Package C-State Auto Demotion...... : 0 (disabled/unsupported)
      - Package C-State Undemotion......... : 0 (disabled/unsupported)

      MSR_PMG_IO_CAPTURE_BASE........(0xE4) : 0x10414
      ----------------------------------------
      - LVL_2 Base Address................. : 0x414
      - C-state Range...................... : 1 (C6 is the max C-State to include
      )

      IA32_MPERF.....................(0xE7) : 0x8C1102999
      IA32_APERF.....................(0xE8) : 0xA180A3AA3

      MSR_FLEX_RATIO.................(0x194) : 0xE0000
      ----------------------------------------

      MSR_IA32_PERF_STATUS...........(0x198) : 0x291E00002C00
      ----------------------------------------
      - Current Performance State Value.... : 0x2c00

      MSR_IA32_PERF_CONTROL..........(0x199) : 0x4800
      ----------------------------------------
      - Target performance State Value..... : 0x4800
      - Intel Dynamic Acceleration......... : 0 (IDA engaged)

      IA32_CLOCK_MODULATION..........(0x19A) : 0x0
      IA32_THERM_STATUS..............(0x19C) : 0x88400000

      IA32_MISC_ENABLES..............(0x1A0) : 0x850089
      ----------------------------------------
      - Fast-Strings....................... : 1 (enabled)
      - Automatic Thermal Control Circuit.. : 1 (enabled)
      - Performance Monitoring............. : 1 (available)
      - Enhanced Intel SpeedStep Technology : 1 (enabled)

      MSR_MISC_PWR_MGMT..............(0x1AA) : 0x400001
      ----------------------------------------
      - EIST Hardware Coordination......... : 1 (disabled)

      MSR_TURBO_RATIO_LIMIT..........(0x1AD) : 0x24242C2C2D2D2E2E
      ----------------------------------------
      - Maximum Ratio Limit for C00........ : 46
      - Maximum Ratio Limit for C01........ : 46
      - Maximum Ratio Limit for C02........ : 45
      - Maximum Ratio Limit for C03........ : 45
      - Maximum Ratio Limit for C04........ : 44
      - Maximum Ratio Limit for C05........ : 44

      IA32_ENERGY_PERF_BIAS..........(0x1B0) : 0x0
      ----------------------------------------
      - Power Policy Preference.............: 0 (highest performance)

      MSR_POWER_CTL..................(0x1FC) : 0x2904005B
      MSR_RAPL_POWER_UNIT............(0x606) : 0xA0E03
      MSR_PKG_POWER_LIMIT............(0x610) : 0x786B8005D8640
      MSR_PKG_ENERGY_STATUS..........(0x611) : 0x5EBF51D
      MSR_PKG_POWER_INFO.............(0x614) : 0x1280460
      MSR_PP0_POWER_LIMIT............(0x638) : 0x0
      MSR_PP0_ENERGY_STATUS..........(0x639) : 0x0
      MSR_TURBO_ACTIVATION_RATIO.....(0x64C) : 0x0
      MSR_PKGC6_IRTL.................(0x60b) : 0x0
      MSR_PKG_C2_RESIDENCY...........(0x60d) : 0x0
      MSR_PKG_C6_RESIDENCY...........(0x3f9) : 0x0
      IA32_TSC_DEADLINE..............(0x6E0) : 0xDFD7156D959

      CPU Ratio Info:
      ----------------------------------------
      CPU Maximum Efficiency Ratio...........: 1200 MHz
      CPU Maximum non-Turbo Frequency........: 3500 MHz
      CPU Maximum Turbo Frequency............: 4600 MHz
      CPU P-States [ 37 (44) ]
      CPU P-States [ (12) 30 37 44 ]
      CPU P-States [ 12 26 30 37 (44) ]
      CPU P-States [ (12) 26 30 32 37 44 ]
      CPU P-States [ 12 26 30 32 37 42 (44) ]
      CPU P-States [ 12 26 30 32 37 40 42 (44) ]
      CPU P-States [ 12 26 30 32 37 40 42 43 (44) ]
      CPU P-States [ (12) 26 30 32 36 37 40 42 43 44 ]
      CPU P-States [ 12 26 30 32 34 36 37 40 42 43 (44) ]
      CPU P-States [ 12 26 30 32 34 36 37 40 41 42 43 (44) ]
      CPU P-States [ (12) 26 30 32 33 34 36 37 40 41 42 43 44 ]
      CPU P-States [ (12) 26 29 30 32 33 34 36 37 40 41 42 43 44 ]
      CPU P-States [ (12) 26 29 30 32 33 34 36 37 38 40 41 42 43 44 ]
      CPU P-States [ (12) 26 28 29 30 32 33 34 36 37 38 40 41 42 43 44 ]
      CPU P-States [ (12) 26 28 29 30 31 32 33 34 36 37 38 40 41 42 43 44 ]
      CPU P-States [ (12) 26 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 20 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 18 20 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 16 18 20 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 16 18 20 21 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 16 18 20 21 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 16 18 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ 12 16 17 18 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 (44) ]
      CPU P-States [ (12) 15 16 17 18 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 13 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
      CPU P-States [ (12) 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

      The next thing is: dropping SSDT PmMgt 85209 in clover, and let clover now generate C/P-states, no errors in boot log and CpuPm works with C/P-States – but CPU jumps from min to max multiplier again – looks like xcpm.

      Same tests with ssdtPRGen.sh and generated SSDT. No errors in boot log, but cpu won´t stay at min.

      So could this be a conflict with the injected C-States C1, C3, C6 by clover or ssdtPRGen.sh?

      When C-States are correct injected, idle power drop down, but cpu is crazy jumping. Without C-States generated correct from clover and no SSDT, cpu drops down to min multiplier.

      • Stop! The value of MSR(0x199) is 0x4800 and that is the multiplier for 7200 MHz so what on earth are you doing?

        Who’s patch writes this value into that register? I know that some people think that it is fine to write an illegal value into this register, but this also means that something else has to correct the illegal value. Slowing down the whole process. If you do write to that register with some patch, then try 0x23. You will be surprised to see what it does.

        Next. One of your screenshots includes the text “IOPPF: AppleIntelCPUPowerManagement mode” so this is not XCPM, and thus you won’t need to patch the kernel with any of my XCPM patches.

        Now look at this output:

        MSR_PKGC6_IRTL.................(0x60b) : 0x0
        MSR_PKG_C2_RESIDENCY...........(0x60d) : 0x0
        MSR_PKG_C6_RESIDENCY...........(0x3f9) : 0x0

        All zero. Why is that? I tell you. Some settings in your BIOS are not helping you.

  18. Hi Pike,

    Been catching up with your blog recently and I gotta admit this is some hardcore stuff. Your work is superb. Just a little back ground of my system. I have the Rampage V Extreme w/ i7 6950x. I have followed this guide: http://www.insanelymac.com/forum/topic/312373-easy-installation-of-el-capitan-10115-in-5960x-cpu/page-1. Using CPUid 0x040674 without nullcpupm.kext and have successfully got it boot and overclocked my CPU to 4.3. I would like to get xcpm to load but I am still a noob and don’t know what is the next step I should take. Wondering if you can help.

    Thanks

  19. “Stop! The value of MSR(0x199) is 0x4800 and that is the multiplier for 7200 MHz so what on earth are you doing?”

    Oh, i don´t see that…. and i don´t know what there is going on. This was a boot with clover only, no SSDT. I let Clover generate C/P-States, and used FakeCpuID 0x0306E4 and AppleIntelCPUPowerManagement mode. This was testing without xcpm.

    For xcpm with a non locked BIOS, what are the best Settings for MSR 0xE2?

    1#############
    MSR_PMG_CST_CONFIG_CONTROL…..(0xE2) : 0x7E000403
    —————————————-
    – I/O MWAIT Redirection Enable……. : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………… : 0 (MSR not locked)
    – C3 State Auto Demotion…………. : 1 (enabled)
    – C1 State Auto Demotion…………. : 1 (enabled)
    – C3 State Undemotion……………. : 1 (enabled)
    – C1 State Undemotion……………. : 1 (enabled)
    – Package C-State Auto Demotion…… : 1 (enabled)
    – Package C-State Undemotion……… : 1 (enabled)

    MSR_PMG_IO_CAPTURE_BASE……..(0xE4) : 0x10414
    —————————————-
    – LVL_2 Base Address…………….. : 0x414
    – C-state Range…………………. : 1 (C6 is the max C-State to include

    2#############
    MSR_PMG_CST_CONFIG_CONTROL…..(0xE2) : 0x400
    —————————————-
    – I/O MWAIT Redirection Enable……. : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………… : 0 (MSR not locked)
    – C3 State Auto Demotion…………. : 0 (disabled/unsupported)
    – C1 State Auto Demotion…………. : 0 (disabled/unsupported)
    – C3 State Undemotion……………. : 0 (disabled/unsupported)
    – C1 State Undemotion……………. : 0 (disabled/unsupported)
    – Package C-State Auto Demotion…… : 0 (disabled/unsupported)
    – Package C-State Undemotion……… : 0 (disabled/unsupported)

    MSR_PMG_IO_CAPTURE_BASE……..(0xE4) : 0x10414
    —————————————-
    – LVL_2 Base Address…………….. : 0x414
    – C-state Range…………………. : 1 (C6 is the max C-State to include

    3#############
    MSR_PMG_CST_CONFIG_CONTROL…..(0xE2) : 0x1E000403
    —————————————-
    – I/O MWAIT Redirection Enable……. : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………… : 0 (MSR not locked)
    – C3 State Auto Demotion…………. : 1 (enabled)
    – C1 State Auto Demotion…………. : 1 (enabled)
    – C3 State Undemotion……………. : 1 (enabled)
    – C1 State Undemotion……………. : 1 (enabled)
    – Package C-State Auto Demotion…… : 0 (disabled/unsupported)
    – Package C-State Undemotion……… : 0 (disabled/unsupported)

    MSR_PMG_IO_CAPTURE_BASE……..(0xE4) : 0x10414
    —————————————-
    – LVL_2 Base Address…………….. : 0x414
    – C-state Range…………………. : 1 (C6 is the max C-State to include

    4#############
    MSR_PMG_CST_CONFIG_CONTROL…..(0xE2) : 0x5E000403
    —————————————-
    – I/O MWAIT Redirection Enable……. : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………… : 0 (MSR not locked)
    – C3 State Auto Demotion…………. : 1 (enabled)
    – C1 State Auto Demotion…………. : 1 (enabled)
    – C3 State Undemotion……………. : 1 (enabled)
    – C1 State Undemotion……………. : 1 (enabled)
    – Package C-State Auto Demotion…… : 0 (disabled/unsupported)
    – Package C-State Undemotion……… : 1 (enabled)

    MSR_PMG_IO_CAPTURE_BASE……..(0xE4) : 0x10414
    —————————————-
    – LVL_2 Base Address…………….. : 0x414
    – C-state Range…………………. : 1 (C6 is the max C-State to include

    5#############
    MSR_PMG_CST_CONFIG_CONTROL…..(0xE2) : 0x403
    —————————————-
    – I/O MWAIT Redirection Enable……. : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………… : 0 (MSR not locked)
    – C3 State Auto Demotion…………. : 0 (disabled/unsupported)
    – C1 State Auto Demotion…………. : 0 (disabled/unsupported)
    – C3 State Undemotion……………. : 0 (disabled/unsupported)
    – C1 State Undemotion……………. : 0 (disabled/unsupported)
    – Package C-State Auto Demotion…… : 0 (disabled/unsupported)
    – Package C-State Undemotion……… : 0 (disabled/unsupported)

    MSR_PMG_IO_CAPTURE_BASE……..(0xE4) : 0x10414
    —————————————-
    – LVL_2 Base Address…………….. : 0x414
    – C-state Range…………………. : 1 (C6 is the max C-State to include

    • Well. I took the value of MSR(0x199) from the dump that you provided. Anyway. I checked the value of MSR(0xE2) on my Skylake setup and I found this:

      MSR_PMG_CST_CONFIG_CONTROL.....(0xE2) : 0x7E000008
      ----------------------------------------
      - I/O MWAIT Redirection Enable....... : 0 (not enabled)
      - CFG Lock........................... : 0 (MSR not locked)
      - C3 State Auto Demotion............. : 1 (enabled)
      - C1 State Auto Demotion............. : 1 (enabled)
      - C3 State Undemotion................ : 1 (enabled)
      - C1 State Undemotion................ : 1 (enabled)
      - Package C-State Auto Demotion...... : 1 (enabled)
      - Package C-State Undemotion......... : 1 (enabled)

      Skylake has a few additional C-States – hence the value 8 instead of 3 here – but your number 1 BIOS settings matches it closely.

  20. Hi Pike,

    I also have the problem with XMP Profile and the energy meter of Intel Power Gadget. Is there a solution or a hint to focus the problem?

    And thank you for all your work…
    Best regards,
    Pablo (from Málaga)

  21. Ok Pike, thank you man. Another thing I want to ask you is about the xcmp msr performance fix kernel patch. When I do it I can percieve the extra performance on my system than past times (the times when i ran the system with NullCPUPowerManagement.kext) but also I can see some wrong values as 2 THz of frecuency or some other frecuencies as a result of a wrong multiplier. Anyway the phenomena is produced by fractions of a second. I think it is not a true situation because the Intel Power Gadget reports the CPU frecuency as usual, between the range of values of P-State values. I try changing the FF on the ‘replaced hex value’ of the kernel patch by the value 22 (because I read your comment about this value makes the kernel to read the firmware values instead of the XCMP ones), but with the same result. What stuff can be the reason of this behaviour?

    Edit: The 2THz and some other wrong values are reported by HWMonitor. I forgot to say it.

  22. Hello Pike! I was wondering if you could help me.

    I do not understand why it’s C3 and C1 (disabled/unsupported) when I use brodwell-e fake cpuid

    But when I use Haswell Fake Cupid 0x0306F2 then its C3 C1 State Auto Demotion enabled I don’t understand this.

    My hardware its Gigabyte X99 Ultra Gaming i7-6850K

    I have generated ssdt with your script!

    I notest that wen I use brodwell Fake Cupid 0x040674 I have only P states about 25 Power states.

    And when I use this Fake Cupid 0x0306F2 then I have also 23 – 25 P states and 12 C states c3 c6.
    I have not done any changes in bios config it,s defoult.

    I also notes that in the intel Power gadget it never work really on true idlle 1,2 GHZ

    It stay around 2 GHZ and 12 watt. I mention that it,s not overclocked it,s on stock.

    Please let me not that was I’m due wrong! Tank You!

    AppleIntelInfo.kext v2.6 Copyright © 2012-2017 Pike R. Alpha. All rights reserved.

    Settings:
    ——————————————
    logMSRs…………………………….: 1
    logIGPU…………………………….: 0
    logCStates………………………….: 1
    logIPGStyle…………………………: 1
    InitialTSC………………………….: 0x5e7d59866ec (180 MHz)
    MWAIT C-States………………………: 8480

    Processor Brandstring………………..: Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz

    Processor Signature………………… : 0x406F1
    ——————————————
    – Family…………………………. : 6
    – Stepping……………………….. : 1
    – Model………………………….. : 0x4F (79)

    Model Specific Registers (MSRs)
    ——————————————

    MSR_CORE_THREAD_COUNT…………(0x35) : 0xFFFFFF805B327000
    ——————————————
    – Core Count……………………… : 6
    – Thread Count……………………. : 12

    MSR_PLATFORM_INFO…………….(0xCE) : 0x20080C3BF3812400
    ——————————————
    – Maximum Non-Turbo Ratio………….. : 0x24 (3600 MHz)
    – Ratio Limit for Turbo Mode……….. : 1 (programmable)
    – TDP Limit for Turbo Mode…………. : 1 (programmable)
    – Low Power Mode Support…………… : 1 (LPM supported)
    – Number of ConfigTDP Levels……….. : 1 (additional TDP level(s) available)
    – Maximum Efficiency Ratio…………. : 12
    – Minimum Operating Ratio………….. : 8

    MSR_PMG_CST_CONFIG_CONTROL…….(0xE2) : 0x403
    ——————————————
    – I/O MWAIT Redirection Enable……… : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
    – CFG Lock……………………….. : 0 (MSR not locked)
    – C3 State Auto Demotion…………… : 0 (disabled/unsupported)
    – C1 State Auto Demotion…………… : 0 (disabled/unsupported)
    – C3 State Undemotion……………… : 0 (disabled/unsupported)
    – C1 State Undemotion……………… : 0 (disabled/unsupported)
    – Package C-State Auto Demotion…….. : 0 (disabled/unsupported)
    – Package C-State Undemotion……….. : 0 (disabled/unsupported)

    MSR_PMG_IO_CAPTURE_BASE……….(0xE4) : 0x10414
    ——————————————
    – LVL_2 Base Address………………. : 0x414
    – C-state Range…………………… : 1 (C6 is the max C-State to include)

    IA32_MPERF…………………..(0xE7) : 0x182BCE17A2
    IA32_APERF…………………..(0xE8) : 0x1149A8FD4D
    MSR_0x150……………………(0x150) : 0x52626

    MSR_FLEX_RATIO……………….(0x194) : 0xE0000
    ——————————————

    MSR_IA32_PERF_STATUS………….(0x198) : 0x182500000C00
    ——————————————
    – Current Performance State Value…… : 0xC00 (1200 MHz)

    MSR_IA32_PERF_CONTROL…………(0x199) : 0xC00
    ——————————————
    – Target performance State Value……. : 0xC00 (1200 MHz)
    – Intel Dynamic Acceleration……….. : 0 (IDA engaged)

    IA32_CLOCK_MODULATION…………(0x19A) : 0x0

    IA32_THERM_INTERRUPT………….(0x19B) : 0x0

    IA32_THERM_STATUS…………….(0x19C) : 0x884C0000
    ——————————————
    – Thermal Status………………….. : 0
    – Thermal Log…………………….. : 0
    – PROCHOT # or FORCEPR# event………. : 0
    – PROCHOT # or FORCEPR# log………… : 0
    – Critical Temperature Status………. : 0
    – Critical Temperature log…………. : 0
    – Thermal Threshold #1 Status………. : 0
    – Thermal Threshold #1 log…………. : 0
    – Thermal Threshold #2 Status………. : 0
    – Thermal Threshold #2 log…………. : 0
    – Power Limitation Status………….. : 0
    – Power Limitation log…………….. : 0
    – Current Limit Status…………….. : 0
    – Current Limit log……………….. : 0
    – Cross Domain Limit Status………… : 0
    – Cross Domain Limit log…………… : 0
    – Digital Readout…………………. : 76
    – Resolution in Degrees Celsius…….. : 1
    – Reading Valid…………………… : 1 (valid)

    MSR_THERM2_CTL……………….(0x19D) : 0x0

    IA32_MISC_ENABLES…………….(0x1A0) : 0x850089
    ——————————————
    – Fast-Strings……………………. : 1 (enabled)
    – FOPCODE compatibility mode Enable…. : 0
    – Automatic Thermal Control Circuit…. : 1 (enabled)
    – Split-lock Disable………………. : 0
    – Performance Monitoring…………… : 1 (available)
    – Bus Lock On Cache Line Splits Disable : 0
    – Hardware prefetch Disable………… : 0
    – Processor Event Based Sampling……. : 0 (PEBS supported)
    – GV1/2 legacy Enable……………… : 0
    – Enhanced Intel SpeedStep Technology.. : 1 (enabled)
    – MONITOR FSM…………………….. : 1 (MONITOR/MWAIT supported)
    – Adjacent sector prefetch Disable….. : 0
    – CFG Lock……………………….. : 0 (MSR not locked)
    – xTPR Message Disable…………….. : 1 (disabled)

    MSR_TEMPERATURE_TARGET………..(0x1A2) : 0x640A00
    ——————————————
    – Turbo Attenuation Units………….. : 0
    – Temperature Target………………. : 100
    – TCC Activation Offset……………. : 0

    MSR_MISC_PWR_MGMT…………….(0x1AA) : 0x402000
    ——————————————
    – EIST Hardware Coordination……….. : 0 (hardware coordination enabled)
    – Energy/Performance Bias support…… : 1
    – Energy/Performance Bias………….. : 0 (disabled/MSR not visible to software)
    – Thermal Interrupt Coordination Enable : 1 (thermal interrupt routed to all cores)

    MSR_TURBO_RATIO_LIMIT…………(0x1AD) : 0x2525252525252828
    ——————————————
    – Maximum Ratio Limit for C01………. : 28 (4000 MHz)
    – Maximum Ratio Limit for C02………. : 28 (4000 MHz)
    – Maximum Ratio Limit for C03………. : 25 (3700 MHz)
    – Maximum Ratio Limit for C04………. : 25 (3700 MHz)
    – Maximum Ratio Limit for C05………. : 25 (3700 MHz)
    – Maximum Ratio Limit for C06………. : 25 (3700 MHz)

    IA32_ENERGY_PERF_BIAS…………(0x1B0) : 0x0

    MSR_POWER_CTL………………..(0x1FC) : 0x2104005B
    ——————————————
    – Bi-Directional Processor Hot……….: 1 (enabled)
    – C1E Enable……………………….: 1 (enabled)

    MSR_RAPL_POWER_UNIT…………..(0x606) : 0xA0E03
    ——————————————
    – Power Units…………………….. : 3 (1/8 Watt)
    – Energy Status Units……………… : 14 (61 micro-Joules)
    – Time Units …………………….. : 10 (976.6 micro-Seconds)

    MSR_PKG_POWER_LIMIT…………..(0x610) : 0x7FFD00014EA82
    ——————————————
    – Package Power Limit #1…………… : 3408 Watt
    – Enable Power Limit #1……………. : 1 (enabled)
    – Package Clamping Limitation #1……. : 0 (disabled)
    – Time Window for Power Limit #1……. : 10 (2560 milli-Seconds)
    – Package Power Limit #2…………… : 4090 Watt
    – Enable Power Limit #2……………. : 1 (enabled)
    – Package Clamping Limitation #2……. : 1 (allow going below OS-requested P/T state setting Time Window for Power Limit #2)
    – Time Window for Power Limit #2……. : 3 (20 milli-Seconds)
    – Lock…………………………… : 0 (MSR not locked)

    MSR_PKG_ENERGY_STATUS…………(0x611) : 0x185E8D4C
    ——————————————
    – Total Energy Consumed……………. : 24954 Joules (Watt = Joules / seconds)

    MSR_PKGC3_IRTL……………….(0x60a) : 0x0
    MSR_PKGC6_IRTL……………….(0x60b) : 0x0
    MSR_PKGC7_IRTL……………….(0x60c) : 0x0
    MSR_PKG_C2_RESIDENCY………….(0x60d) : 0xA431515694
    MSR_PKG_C3_RESIDENCY………….(0x3f8) : 0x0
    MSR_PKG_C2_RESIDENCY………….(0x60d) : 0xA431515694
    MSR_PKG_C6_RESIDENCY………….(0x3f9) : 0x320303C6304
    MSR_PKG_C7_RESIDENCY………….(0x3fa) : 0x0

    IA32_TSC_DEADLINE…………….(0x6E0) : 0x5E7DAA1C5FE

    CPU Ratio Info:
    ——————————————
    Base Clock Frequency (BLCK)…………. : 100 MHz
    Maximum Efficiency Ratio/Frequency…….: 12 (1200 MHz)
    Maximum non-Turbo Ratio/Frequency……..: 36 (3600 MHz)
    Maximum Turbo Ratio/Frequency…………: 40 (4000 MHz)
    P-State ratio * 100 = Frequency in MHz
    ——————————————
    CPU P-States [ 26 (36) 37 ]
    CPU C6-Cores [ 1 2 4 7 8 11 ]
    CPU P-States [ 22 26 (36) 37 ]
    CPU C6-Cores [ 1 2 4 5 6 7 8 9 10 11 ]
    CPU P-States [ (12) 22 26 36 37 ]
    CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 ]
    CPU P-States [ (12) 20 22 26 36 37 ]
    CPU P-States [ (12) 20 22 26 27 36 37 ]
    CPU P-States [ (12) 20 21 22 26 27 36 37 ]
    CPU P-States [ (12) 20 21 22 23 26 27 36 37 ]
    CPU P-States [ (12) 20 21 22 23 24 26 27 36 37 ]
    CPU P-States [ (12) 20 21 22 23 24 25 26 27 36 37 ]
    CPU P-States [ 12 20 21 22 23 24 25 26 27 (35) 36 37 ]
    CPU P-States [ (12) 17 20 21 22 23 24 25 26 27 35 36 37 ]
    CPU P-States [ (12) 16 17 20 21 22 23 24 25 26 27 35 36 37 ]
    CPU P-States [ (12) 16 17 19 20 21 22 23 24 25 26 27 35 36 37 ]
    CPU P-States [ (12) 16 17 19 20 21 22 23 24 25 26 27 28 35 36 37 ]
    CPU P-States [ (12) 16 17 19 20 21 22 23 24 25 26 27 28 30 35 36 37 ]
    CPU P-States [ 12 16 17 19 20 21 22 23 24 25 26 27 28 29 30 35 (36) 37 ]
    CPU P-States [ 12 16 17 19 20 21 22 23 24 25 26 27 28 29 30 35 36 37 (38) ]
    CPU P-States [ (12) 13 16 17 19 20 21 22 23 24 25 26 27 28 29 30 35 36 37 38 ]
    CPU P-States [ (12) 13 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 35 36 37 38 ]
    CPU P-States [ (12) 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 35 36 37 38 ]
    CPU P-States [ (12) 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 35 36 37 38 ]
    ]
    CPU P-States [ (12) 13 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 ]
    CPU P-States [ (12) 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 ]
    CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 ]
    CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 (40) ]

    —————————————————-
    Done populating the CPU states!
    —————————————————-

Leave a comment