Contribute
Register

The "Official" C612 (aka lets built the machine Apple never gave us)

Status
Not open for further replies.
I am very pleased to report....

Total success! :D :D :D I found the piece of the puzzle, and it effects all multiprocessor systems and I am fairly confident that this will solve the strange hangs, freezes, and performance issues that users like @analogo have been suffering.

It's nothing to do with the C612.

It's the dual processors. There is the different xnu power management scheme in the kernel that is specifically for multiprocessor systems.

First, some back story: I'd since corrected any issues with power management, injected frequency vectors, corrected the SSDTs using information I got booted in linux and had all my frequencies correct. So I knew this wasn't anything to do with using an engineering sample.

My poor scores had a very strange behavior to them. My scores would be fairly high right after a restart, usually 60,000 thereabouts, but would quickly drop over minutes down to my low 44000 score. If I immediately ran Geekbench a second time, I would usually get 50,000 or 48,000, and a third run would net 44-45,000, and that is where it would stay. However, a quick reboot would reset this, and it would happen all over again.

At first I thought this was a heat issue and the CPUs were rapidly heating once OS X was loaded due to some issue in the power management. However, I verified that my cooling (which is very generous for 2x 135W) wasn't an issue. I did some stress tests in Linux while monitoring all core temperatures, and even with all cores at 3GHz for 10 minutes straight, I couldn't even hit 50°C on a single core. So my cooling certainly seemed adequate.

I was reading through some of Piker-Alpha's posts about xnu power management, and something caught my eye: he had a list of flags, from which only -xcpm was the only one given any attention. There were some debug flags, some cstate/idlestate tweaking things, but a very important flag was over looked.


-xcpm_ipi


I am an electrical engineer, do a lot of embedded stuff, and IPI was a term I was familiar with. inter-processor interrupts. They let one CPU force another CPU to drop whatever it is doing, and do something else. Any single CPU system wouldn't even have these, and I imagine using -xcpm_ipi would cause a kernel panic or simply not work on those systems.

But, on multiprocessor systems, IPIs are used by Apple for something critical in power management of all those cores. Indeed, considering Xeons have a unified cache and there are some considerations that must be made about which cores can be clocked how and when, depending on which things are accessing what in one cache or another, I can see how one might employ IPIs in some sort of central role. The fact that the performance is fixed by a reboot, then quickly degrades, makes me think it is some sort of cache or memory issue, and flushing it with a reboot temporarily fixes the problem. I haven't actually looked into it, and I won't bore you with this technical stuff anymore.


If you have a Haswell-EP or Broadwell-EP multiprocessor hackintosh, remove -xcpm from your boot arguments in clover, and add instead -xcpm_ipi

It will make your system buttery smooth and well behaved. And it increased my performance almost half again. At least compared to 45,000. Only, these scores are permanent, they don't go away. It's really that easy. One kernel flag was the problem the entire time.

Here are my new, consistent scores with -xcpm_ipi turned on:
upshot_gwglySKf.png


I now have native xcpm working, complete with all the weird extra (C10 anyone?) Broadwell C-States, in my case, 21 P-States, and single and multicore turboboost working flawlessly. On the Broadwell-EP platform, with dual CPUs.
 
I am very pleased to report....

That's great news! Nice work!

A bit OT, but I have a Broadwell-EP CPU also, and I'm trying to get it to work on an Asrock X99 board. Maybe you can help me with that. I can't even get past the row of pluses in the Clover stage. Also, depending on different settings and USB ports I've tried, I sometimes have reloc issues instead of the pluses. I'm not positive which is the more informative error message or symptom.

After doing a lot of research, I put together this list of possibly related issues:

Code:
slide=0
cpus=1
alternate OsxAptioFixDrv (with and without slide=0) - also, what is OsxAptinFix2Test3?
USB HDD instead of flash
increase reloc size, recompile
SMBIOS memory data
reset BIOS (to clear memmap?)
disable SATA controller(s) and/or don’t use PCI-e SSD

But I haven't yet had time to try it all. Any pointers? I feel like I could start making some progress on this build if I could just get the damn kernel to load. Thanks.
 
That's great news! Nice work!

A bit OT, but I have a Broadwell-EP CPU also, and I'm trying to get it to work on an Asrock X99 board. Maybe you can help me with that. I can't even get past the row of pluses in the Clover stage. Also, depending on different settings and USB ports I've tried, I sometimes have reloc issues instead of the pluses. I'm not positive which is the more informative error message or symptom.

After doing a lot of research, I put together this list of possibly related issues:

Code:
slide=0
cpus=1
alternate OsxAptioFixDrv (with and without slide=0) - also, what is OsxAptinFix2Test3?
USB HDD instead of flash
increase reloc size, recompile
SMBIOS memory data
reset BIOS (to clear memmap?)
disable SATA controller(s) and/or don’t use PCI-e SSD

But I haven't yet had time to try it all. Any pointers? I feel like I could start making some progress on this build if I could just get the damn kernel to load. Thanks.

Are you using a fakecpuid? OS X does not support Broadwell-EP CPUs, simply because no mac has ever been made with them (yet) so the kernel takes one look at the CPU and goes, "NOPE". Your problem is the same one I encountered, and the solution is just to lie to OS X heh.

Try booting with a fakecpuid of 0x0306F2, you can just enter it into your clover config with clover configurator. That should get you booting.

OsxAptioFixDrv wil report an error before the ++++'s (which signify the point after which any output is from the OS X kernel, not clover) if any. If you're seeing ++++++'s and an instareboot, it means you don't have to worry about OsxAptioFixDrv.

Here:

1. Set your bios to its optimized defaults (or whatever, it should have a reset to defaults option somewhere).
2. Disable intel virtualization and Vt-d, though it will probably be disabled already.
3. Disable all CPU power management options, like thermal throttling, turbo, c-states
4. Change your clover config back to the default, remove any arguments or flags you added. The default settings in clover default to what they do with good reason. You should also avoid changing or adding flags unless you know what exactly what they do, and have good reason to believe that using it will fix a specific problem. Just trying different combinations and seeing if it helps is a great way to accidentally introduce some subtle difference that prevents your machine from working, because you WILL forget about something you changed, usually the thing that is completely breaking your system :). I speak from experience.
5. Make sure 'FakeLPC' is set in the clover fixes, along with all the other default ones. Which is most of them. These fixes are very robust and shouldn't cause problems if one isn't needed. In fact, they can detect if they are needed and are not used if not.

In clover configurator, make your kext and kernel patches screen look exactly like this:
upshot_O8pTmD5X.png


Your motherboard is unknown to me and I don't know what quirks it might have, so I can't promise that this will get OS X booting, but I can promise that it will get you further than the ++++++++'s at least ;).
 
However, this is a bit off topic. I would suggest following this guide, its either the same motherboard or one that is nearly the same. I know it is for Haswell-E and not Broadwell-EP, but the only thing that you should need to do differently is SSDT generation (generate it for broadwell and not haswell) and use a fakecpuid so OS X thinks you're using a Haswell-EP chip.
 
Thank you so much for the reply! I also have an ES processor. Technically, I think those end in F0 or F1, but I assume I can still use the 0306F2 cpuid, yeah?

I think what happened was that when I put in the fake cpu id I was using a clover config that was bad in some other way, causing the OsxAptioFixDrv problems.

I'll post after I try it out, tomorrow.
 
This is great news. metacollin, would you consider taking a stab at a quick guide on the steps needed to get your C612 machine working?
 
Your motherboard is unknown to me and I don't know what quirks it might have, so I can't promise that this will get OS X booting, but I can promise that it will get you further than the ++++++++'s at least ;).

Thanks again. It is the Asrock X99 Extreme4.

You were correct about getting past pluses, but it was only the case when I used the fakecpuid 0x0306a0 from the config.plist in the guide that you linked! With 0306F2 or 0306F0 it hung up at the ++++++++.

Otherwise, I followed the advice you gave to begin with default clover configuration from the package installer, and make only the edits that I'm aware about. I.e., to set up
KernelAndKextPatches as you said (but with that Ivy ID), and I also set the SMBIOS.

I learned that I need the Test2.efi referenced from the guide you linked (had tried this before, but it didn't make any change the first time, possibly due to using AptioFixDrv instead of AptioFixDrv2). Also, I only copied the kexts VoodooTSCSync, FakeSMC and NullCPUPowerManagement (no difference in behavior with the other 3 that were recommended, at this stage at least).

Now I am getting to some normal power management / RTC related KPs that I'm going to work on tomorrow. But in the meantime, and since it's more on topic for this thread, do you have any idea why my system doesn't work with the fakecpuid that, in combination with -xcpm_ipi, corrected CPU power management problems for you? I have made sure to reset all BIOS options and disable the thermal throttling, c-states, speedstep and turbo (had not been running it that way before).
 
Hi everyone, I will be posting a guide soon, I've just been really busy.
 
Hey @metacollin

I have followed your posts, and tested it on our HP Z840 machine.
Used the Autodesk Flame Bios settings and the newest 2.20 HP Z840 Bios.

I managed to get quite far, but the DMOS stoped me before the weekend.

image.jpeg


I'm guessing it's the Quadro M4000 card, so I'll bring a older gfx card on Monday to test.

Specs on the machine is
Intel Xeon E5-2687Wv3 3.1 2133 10C2ndCPU

256GB DDR4-2133 (16x16GB) 2CPU RegRAM

c612 chipset.
Quadro M6000/M4000 cards.

Thoughts ?
 

Attachments

  • image.jpeg
    image.jpeg
    2 MB · Views: 276
Tested today with a Quadro 4000 Mac card.
I still stranded with DSMOS

Tested different nvidia modules, and -x

With -s I do get into SingelUserMode =)
 
Last edited:
Status
Not open for further replies.
Back
Top