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.
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.

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=1into the CPU scope. This is the single most important patch. Use theSSDT-PLUG.dslfrom the Acidanthera repository, compiled with MaciASL. Place it inEFI/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
_PSSentries with frequencies above the CPU’s max turbo, you must either drop those entries or replace them with correct values. A common tool is thePStateGeneratorscript 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).
- Boot the installer with
-v debug=0x100. If you see a panic atAppleACPIPlatformExpert::startorX86PlatformPlugin::start, you need the SSDT-PLUG. - Extract your DSDT by booting with
acpi_dump=1or using the F4 key in Clover. Copy theDSDT.amland any SSDTs to a USB drive. - Open the DSDT in MaciASL, apply the “Fix _PSS” patch from the patches menu (if available for your board), or manually edit the
_PSSpackage to cap the max frequency at the CPU’s official turbo limit. - Compile the SSDT-PLUG and SSDT-UNC. For X79, use the
SSDT-PLUG.dslwithPluginType=1set on the first CPU (CPU0). For X99, you need both PLUG and UNC — the UNC table defines theUNC0device under_SB. - Place all compiled AML files in your EFI’s ACPI folder. In OpenCore, add them to the
ACPI/Addsection withEnabled=trueandCommentdescribing each table.

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.
