Fixing ACPI Panics on X79/X99 Hackintosh for macOS High Sierra

Step-by-step guide to resolve kernel panics on X79/X99 Hackintosh builds running High Sierra. Covers SSDT-PLUG, DSDT patches, and version-specific fixes.

x79 motherboard with lga2011 socket and four dimm slots

If your X79 or X99 Hackintosh panics during boot after installing macOS High Sierra (10.13), the culprit is almost always a kernel panic from ACPI table parsing. The root cause is almost always the SSDT (Secondary System Description Table) that macOS expects to find for proper CPU power management and PCIe device enumeration. On these platforms, the stock BIOS tables often lack or misdeclare the plugin-type property, which macOS’s XNU kernel requires for loading the X86PlatformPlugin kext. Without it, the system either hangs at AppleIntelCPUPowerManagement or boots but with only one core active and no turbo boost.

The fix is not a simple boot-arg or a kext injection — it requires either a custom SSDT or a patched DSDT that injects the missing plugin-type=1 into the CPU scope. Below I break down the exact patches needed, the tools to apply them, and the version-specific caveats for High Sierra builds on these older HEDT chipsets.

x79 motherboard with lga2011 socket and four dimm slots

Why High Sierra Is Picky About ACPI on X79/X99

macOS High Sierra dropped support for the AppleIntelCPUPowerManagementClient kext used in earlier versions and relies entirely on the kernel’s built-in power management via X86PlatformPlugin. This plugin reads the plugin-type property from the ACPI namespace. On genuine Macs, this property is set to 1 in the CPU’s _DSM method within the DSDT or an SSDT. Most X79 and X99 BIOS tables, even after a UEFI update, do not include this property. The result is that the kernel either ignores the CPU entirely (single-core boot) or panics when it tries to enumerate the P-States.

Many X99 boards also ship with an incorrect _PSS (Performance Supported States) table that lists frequencies outside the CPU’s actual operating range. High Sierra’s kernel is stricter than Sierra’s about validating these tables, so a mismatch causes an immediate panic during the AppleIntelInfo debug phase.

Required Patches for a Stable Boot

You need three ACPI modifications to get a stable High Sierra install on X79/X99:

  • SSDT-PLUG — injects plugin-type=1 into the CPU scope. This is the single most important patch. Use the SSDT-PLUG.dsl from the Acidanthera repository, compiled with MaciASL. Place it in EFI/OC/ACPI/ (OpenCore) or /EFI/CLOVER/ACPI/patched/ (Clover).
  • SSDT-UNC — defines the UNC (uncore) device for X99. Without it, macOS cannot see the memory controller and PCIe root ports properly, leading to random wake-from-sleep failures.
  • DSDT patch: “Fix _PSS mismatch” — if your board’s DSDT has _PSS entries with frequencies above the CPU’s max turbo, you must either drop those entries or replace them with correct values. A common tool is the PStateGenerator script from the Hackintosh community, but I recommend manually editing the DSDT with MaciASL after disassembling it with iASL.

Tooling and Workflow

I assume you already have a bootable High Sierra USB installer. These steps assume OpenCore 0.7.9 or later (Clover r5127+ also works but requires different config.plist entries).

  1. Boot the installer with -v debug=0x100. If you see a panic at AppleACPIPlatformExpert::start or X86PlatformPlugin::start, you need the SSDT-PLUG.
  2. Extract your DSDT by booting with acpi_dump=1 or using the F4 key in Clover. Copy the DSDT.aml and any SSDTs to a USB drive.
  3. Open the DSDT in MaciASL, apply the “Fix _PSS” patch from the patches menu (if available for your board), or manually edit the _PSS package to cap the max frequency at the CPU’s official turbo limit.
  4. Compile the SSDT-PLUG and SSDT-UNC. For X79, use the SSDT-PLUG.dsl with PluginType=1 set on the first CPU (CPU0). For X99, you need both PLUG and UNC — the UNC table defines the UNC0 device under _SB.
  5. Place all compiled AML files in your EFI’s ACPI folder. In OpenCore, add them to the ACPI/Add section with Enabled=true and Comment describing each table.

maciasl with dsdt editor showing plugin-type property in cpu scope

Version-Specific Risks and Limitations

High Sierra 10.13.0 through 10.13.3 — These builds have a known bug where the _PSS validation is too aggressive. Even a correctly patched DSDT may panic if the CPU reports a frequency slightly above the table’s max. The workaround is to either disable turbo in BIOS (defeating the purpose) or apply the cpuid_set_perf_ctl=1 boot argument, which bypasses the frequency check entirely but disables proper speed shifting.

High Sierra 10.13.4 and 10.13.6 — Apple relaxed the validation, but introduced a new requirement: the APIC table must have the proper interrupt mapping for all 40+ PCIe lanes on X99. If your board’s ACPI omits certain APIC entries (common on ASUS X99-DELUXE and Gigabyte X99-UD4), you will get random ACPI_SMC_PlatformPlugin panics during sleep/wake cycles. The fix is to patch the DSDT’s _PRT (PCI Routing Table) to reassign interrupts to unused IRQs, but this is board-specific and fragile. I have seen users corrupt their NVRAM by applying a wrong APIC patch — always test with a backup NVRAM dump.

Ethernet and Audio — While not directly ACPI, note that High Sierra’s AppleIntelE1000e.kext no longer works with the older I217-V controller found on some X79 boards. You must use SmallTreeIntel82576.kext or FakePCIID.kext with an injected device-id. Audio codecs on X99 (ALC1150, ALC892) require the AppleALC.kext with layout-id set via ACPI injection in the HDEF device. Without the SSDT-UNC, the HDEF device may not be properly enumerated, causing no audio output.

Preserving a Verified Configuration

Once you have a working boot, dump the entire ACPI namespace using acpidump.efi from the OpenCore shell and save it alongside your config.plist. Also export the IORegistry (ioreg -lw0 > ioreg.txt) so you can compare it after any BIOS update. If you ever update the BIOS, the ACPI tables may change — even a microcode update can alter the SSDT indexing. Keep a copy of your patched AML files and the original BIOS version number in a folder named X79_HighSierra_10.13.6_2019 or similar. This archive is your lifeline if a later macOS version breaks compatibility and you need to revert.

For sleep testing, run pmset -g log after waking from S3 sleep. If the log shows DarkWake entries without a Wake from Deep Idle, your ACPI patches are incomplete. The most common missing piece on X99 is the SSDT-UNC — without it, the kernel cannot find the memory controller during wake, and the system either reboots or stays on a black screen with fans spinning.