I spent some time with my father, during our Christmas holiday, on ACPI table stripping. We did this because someone we know has issues with a Gigabyte motherboard that I sold to her, where USB stalls (mouse stutter) during the first few second of OS X boot time. Another person, Lars from Germany, is also experiencing random hangs on the same Gigabyte GA-Z87M-D3H. So two people with the same motherboard, with different processors, are having issues with the latest BIOS (F11b).
The first thing that I did was to take out the processor and hard drive and installed it in my Gigabyte GA-Z87MX-D3H. Here I had no issues with USB during boot time, and I also can’t remember having seen a single hang when I used this motherboard.
Then I took out the RAM and swapped it with mine. Same problem. No problem with her RAM modules on my motherboard. We ruled out the actual installation of OS X and the hard drive, by swapping the drive. The RAM modes are also fine. I kind of knew this because I used the modules myself before I sold the modules with the PC.
The next step was to go back a couple of BIOS revisions, but that didn’t help either. Then, and this is where my father came in handy with his ACPI know-how, we stripped the factory DSDT (52365 bytes) down to 5922 bytes in under 30 minutes, but the problem persists.
What I did notice was that the PC booted faster with the stripped DSDT. Presumable because it is smaller now, taking less time to load the file, and it executes quicker sans all ACPI errors. We might need to re-investigate DSDT table stripping, because it looks like that people are underrating the importance of it. Probably because they have no clue whatsoever.
Anyway. What I plan on doing today, when I can find the time for it, is to check the PSU. This to rule out that the PSU is the problem. I don’t expect it to be the cause of the problems, because then two people with different PSU’s would have a broken/unsupported PSU. No. My best guess is that the BIOS is the root cause of the USB stalls and random hangs. I know that my GA-Z87MX-D3H has no issues so I may have to extract the USB driver from the BIOS and inject it in the BIOS of the GA-Z87M-D3H.
Yes. I do have a BIOS programmer. That is not the problem, but the BIOS chips are soldered on the motherboard. And I would rather not mess with the motherboard. Yeah. I know. I am forced to do it anyway. Or am I missing something here?
This brings me back to my previous blog post. It would have been great if we could get access to the BIOS source code, because then this problem would have vanished the same day, but we all know that this is not going to happen. Nope. BIOS vendors have to protect their corporate interests, and they will keep telling you that what they do is for your own protection… You just have to life with their bugs and fake security. Or wait for people like me who don’t give a BEEP and rip their BIOS apart 🙂
Update: I installed a GPU card on a GA-Z87M-D3H v1.1 motherboard that I got from Gigabyte for my test runs, and that appears to be a good workaround. This also worked on the GA-Z87M-D3H v1.0 that I sold, and thus installing a video card solve the mouse stutter and random hangs on both versions.
Update-2: It turns out that the mouse stutter – mostly seen at boot time and after a sleep wake cycle – is much simpler to solve than I thought. First I fired up Activity Monitor and rebooted… to find out that displaypolicyd (a daemon) was taking way too long at boot time. Yes. I had indeed changed this plist:
/S*/L*/E*/AppleGraphicsControl.kext/C*/P*/AppleGraphicsDevicePolicy.kext/C*/Info.plist
Where I replaced Config2 with none (see also this blog post) for the Mac-F60DEB81FF30ACF6/MacPro6,1 setup that I used. The problem was that I forgot that they had setup their hack as Mac-42FD25EABCABB274/iMac15,1. That was the real problem, because they did not make this change for the Mac-42FD25EABCABB274/iMac15,1. This is also why it used to work for me when I used this motherboard, because I did make the change, but they did not. In short. This is their own mistake. And also my own stupid mistake, because I failed to notice the difference.
My only excuse is that I had to work remote on this particular setup, because it is no longer mine. It is now owned and controlled by someone who lives almost 2000 KM away from me. I also no longer have a GA-Z87M-D3H motherboard, because I was asked to return it. In short. This specific problem was not caused by a BIOS bug!