Asus X99-E (WS) with i7-6850K

I have an Asus X99-E (WS) motherboard for testing laying around, for ages, that I like to use with Broadwell-E processors (i7-6800K and i7-6850K) and I’d like to use this setup for power management testing, but the guy who is installing the hardware said that it reboots when the kernel should be launched.

What is he missing?

Please be aware that we don’t use Clover… so we can only use raw patch data.

Update: I went to the shop this morning and checked the setup myself and found two major errors.

1.) Error in; “Boot Graphics” was used like it was “Graphics Mode” (triggers a reboot).

2.) Error in the BIOS; -> CPU Configuration -> Enable Execution Bit was set to ‘Disabled’ and that is known to trigger a reboot.

So problem solved? Err. Not exactly. Sure. The immediate reboot is fixed, but now I am looking at the ‘PCI configuration error’. Patching the IOPCIFamily binary didn’t help. I also see that AppleIntelCPUPowerManagement.kext is loaded. Oh well…

Update-2: We disabled the XHCI controller in the BIOS (the AsMedia 3.1 USB controller was already disabled) and now we are seeing this: “Still waiting for root device” error. One step closer, but USB is acting up. Handoff is enabled in the BIOs so that should not be a problem, right?

Update-3: I was getting errors (read the comments) and the value was rather suspicious and thus I checked the on-line manual and found this:

Above 4G Decoding [Disabled]

This item allows you to decode the 64-bit capable devices above 4G address space. Ensure that your system supports 64-bit PCI decoding. Configuration options: [Disabled] [Enabled]

We had this setting on Enabled and changing it to Disabled solved the errors. The macOS Sierra installation process is now running done and everything looks alright.

Update-4: Performance is rubbish! AppleLPC.kext won’t load. Even after adding the missing device-id to the Info.plist. Started to load without a single extra change (no prelinkedkernel used). But seriously. I have yet to figure out why people would want the i7-6800K six core processor. The turn offs for me are:

1.) 140 Watt TDP.
2.) Slow 3.4 GHz base frequency.
3.) Limited turbo support (only 200 MHz extra).
4.) MS Windows only ‘Turbo Boost Max 3 Technology’.

The Intel Turbo Boost Max 3 Technology is mind boggling limited and has no future. It only adds a new layer of complexity. We don’t need that. Your processors should deliver the best performance, on request, without the need of (MS Windows only) driver(s).

Update-5: I ran AppleIntelinfo.kext (the KP was fixed in the latest update) and what we see here is that while MSR_TURBO_RATIO_LIMIT (0x1AD) is setup correctly by the BIOS (0x2323232425262728) bit only really triggers the first turbo frequency. This was with a mild manual OC to 4.0 GHz. And even then only 3.5 GHz was reported, and 4.0 GHz only once.

Another error is that the IA32_ENERGY_PERF_BIAS MSR (0x1B0) is zero – this value should be at least 1 and not be higher than 15. At least for XCPM mode.

47 thoughts on “Asus X99-E (WS) with i7-6850K

  1. I don’t think the Broadwell-E/EP CPU ID is present in the kernel, so you would probably have to patch it ([url=]like you’ve done before[/url]. I [i]think[/i] this is what you’re looking for (from 10.12 DP2 kernel):

    ffffff80004f5475         cmp        eax, 0x3f // CPU_MODEL_HASWELL_SVR
    ffffff80004f5478         je         0xffffff80004f54bc

    External family of Broadwell-E/EP seems to be 0x4F, so changing this to

    cmp eax,0x4f

    should work.

  2. pikeralpha, I am running OS X on a Broadwell-EP platform, which is effectively the same. I had the exact same problem. The only way around it is to use a fakecpuid. The instant silent reboot is an Unsupported CPU panic, the exact culprit is on line 824 of cpuid.c in the xnu kernel where it checks that it is running on a supported CPU. Which Broadwell-E/EP technically isn’t.

    Broadwell-E/EP processors have never actually been used in any mac, so they’ve just left it out of the kernel. If you look in cpuid.h, with the knowledge that the CPUID for your (and my) processor is 406F1, and thus a CPUID model of 0x4F, you’ll see that it is simply not there🙂. Every other possible model is there, this is the *only* omission. A little annoying, isn’t it?

    Anyway, simply using a fakecpuid of the closest processor that IS supported, the Haswell-E/EP ones (306F2) has worked wonderfully for me. Thanks to your ssdt generation script and inserting frequency vectors (along with a MacPro 6,1 SMBIOS), power management on all fronts is working flawlessly. So I do not think you will run into anything particularly interesting sadly, but you will get a very smooth and stable system this way.

  3. …I need to read more carefully. Without using clover. 😳 I would see if you could patch the Haswell-EP ID (3F) to 4F (the Broadwell-EP ID). It only does this at the very beginning, so it might even be a one poke patch, but I haven’t actually looked into it myself. I think that’s your best bet and would preserve all the power management/architecture specifics.

    • I first changed the value of 0x47 into 0x4f and made it jump to the location for ordinary Broadwell processors so that should be fine. I also nopped the call to _panic in _cpuid_set_info so that is also no longer an issue.

      Next up:

      1.) Check if the BIOS v601 is locked (think MSR 0x2e).
      2.) Check calls to wrmsr (setting a reserved bit will triggers a reboot).

      Edit: Confirmed. BIOS is locked.

  4. I’m probably the wrong guy to comment because i’m super low level but i did build a 6 core once before and had a similar issue and fixed it with a kext in multibeast. There’s a kext in there somewhere about six and 8 core cpus. I know this isn’t the fix your looking for but I thought I’d mention it. You might be able to use that kext to get booted and sort it properly. Sorry if I sound like a dumbass

    • Thanks, but you are probably talking about the VoodooTSCSync.kext (or something like that). You only need that at a later stage. This reboot is so early that I suspect that it is something else.

  5. Weird, we have a 6950X up and running and it did not require any additional patching. Drop in replacement for the 5960X and the config that was working for that. The only thing that was causing a panic was CPUSensors.kext. Once that was removed we were back in business and performance is amazing.

    • Thanks, but I guess that you are using Clover. We are not. I also checked the Clover source code, but the kernel power management patch pattern does not match anything (has changed in macOS Sierra). The source code may be old or hasn’t been updated or anything but it is the same kind of story with Chameleon/Enoch. Not up to par for macOS Sierra.

      I just got news that the current memory configuration is only a single RAM 2133MHz Crucial memory module (in slot D1) because the G.Skill TridentZ has yet to arrive. Not sure if this can be a problem, but it is far from optimal (works with Windows).

      One other thing. He is using an old 6850 without frame buffer injection (darkweed I think) and that may be another issue we have to solve.

    • No, but the USB kexts are not loading, and I don’t know the device-id to fix it.

      Edit: Correction. Using 0x3000 does work with xHCI enabled in BIOS, and it loads AppleUSBXHCIPCI but now it dumps this:

      XHC1@14000000: AppleUSBXHCIPCI::hardwareException: controller unplugged (regRead32)
      XHC1@14000000:AppleUSBXHCI::start: unexpected PAGESIZE 0xffffffff
      XHC1@14000000:AppleUSBXHCIPCI::hardwareException: controller unplugged (regRead32)
      XHC1@14000000:AppleUSBXHCI::start: unexpected PAGESIZE 0xffffffff

      Edit: I worked around this error by disabling Above 4G Decoding in the BIOS. I also don’t need to patch the IOPCIFamily.kext binary. In fact. A patched IOPCIFamily.kext binary won’t solve this problem.

  6. Is it possible to get OS X working with Above 4G enabled? What precisely is the problem?

    I have an ASUS X99 system that requires Above 4G to be enabled in order to POST when I have certain combinations of PCI-e cards installed. Win10 boots fine with it, but I can not boot 10.10 or 10.11 with legacy or UEFI boot.

    I really appreciate any pearls. This has been a persistent annoyance to me for more than a year.

      • Is that the patch that is supposed to change 0x400000 into 0x800000?

        I checked it and I don’t think that the patch does what it should do. Feel free to verify this yourself in Hopper/otool output and then patch it manually. Then check Hopper/otool output again.

        The result I see here is that it changes 0x400000 into 0xffffffff800000. Seriously! That is not the 0x800000 I expected, and it wasn’t working. I have to change the BIOS setting or it won’t boot.

        Edit: The opcodes in the binary are used to compare a signed 32-bit value against a 64-bit register. Not a signed 64-bit value against a 64-bit register. And thus is 0x7fffffff the highest possible value. Not 0x80000000. That’s the problem.

  7. Forgive me for asking, but shouldn’t 2.) read “Execute Disable Bit”? At least that is what I read in my ASUS X99-E WS BIOS Utility (v3101).

  8. Hi Piker, i see that you don’t use clover, but in my case with clover AppleLPC.kext it’s loaded.

    What bootloader are you using?

    In other orders of things, my specs are Gigabyte X99-UD4P + i7-5820K + 32Gb DDR4 Gkill 2600. If you need my config.plist although is clover, please advise me and send it to you.

    Greetings from Spain😉

  9. “I first changed the value of 0x47 into 0x4f and made it jump to the location for ordinary Broadwell processors so that should be fine. I also nopped the call to _panic in _cpuid_set_info so that is also no longer an issue.”
    How did you do that?

    • I only use RevoBoot. Nothing else. You however should keep using Clover and help Slice and the other developers to improve things so that it not only works for you, but also other people with problems on this platform.

      Edit: Does audio work for you? If yes, what layout-id are you using?

      • Audio is working. I installed the HDA Enabler from Multibeast with audio ID “1”. I then replaced the AppleHDA.kext with a patched one. I can provide if you like.

        I have been trying to get Turbo working on this board with my Xeon (it’s so slow without Turbo) but there’s no way I can figure out how to do it. Do you have any suggestions?

        Also, I can’t get the ThunderboltEX II addon card to work with two GPU’s. I have tried different methods and installation orders to get this to work but nothing seems like it’s working. I’m really frustrated, this board should have enough lanes. It looks like it might be possible if I enabled Above 4G Decoding. Any idea how to boot with that enabled? Or something else. Would love to talk to you about this.

        Thanks much

      • No thanks. I was so busy with helping other people that I ran out of time to test audio myself.

        1.) Asus X99-E or Asus X99-E WS
        2.) What Xeon processor do you have?
        3.) What is the output of: sysctl machdep.cpu.model
        4.) Hare you using a patched version or some Clover patch for the IOPCIFamily.kext binary?

      • You have two options.

        1.) Use AppleIntelCPUPowerManagement.kext
        2.) Get XCPM working for your Xeon processor.

        Let’s assume that you are using a MacPro6,1 model and ditto board-id (via SMBIOS settings in Clover) and want option 1.

        1.) Open a terminal window
        2.) Run: sudo ./ -p 'E5-2630 v3' -turbo 2400 -w 1 -target 1
        3.) Open the file and comment out the _DSM method.

        Note: See also Github issues.

        Option 2 is to get XCPM to work (see blog articles) but I don’t have 10.5 anymore and can only look into the required kernel changes after my holiday.

        Edit: What npci=0xnnnn value are you using?

      • NPCI=0x2000. If I edit the file you said and I can’t boot what do I replace in order to boot again? I don’t think I’m using any power management kext currently.

  10. “2.) Error in the BIOS; -> CPU Configuration -> Enable Execution Bit was set to ‘Disabled’ and that is known to trigger a reboot.”

    Pike, in X99 AII I have Execute Disable Bit -> Enable or Disable. Is yours a typo or the bottom line is that the Execution Bit must run (so my option would be Execute Disable Bit -> Disable, I guess)?

    • No typo. That was the exact text in the 601 BIOS. Fixed in revision 701 or 801 and now it reads: “Execute Disable Bit” like it should. You should set it to Enabled. Not Disabled.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s