• Become a Premium Member for $25/year with no ads to improve your community experience.

GUIDE Tuning ACPI for macOS [Clover/OpenCore]

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
6,637
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
13.x
Bootloader
  1. OpenCore (UEFI)
Mac
  1. Mac mini
  2. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
Tuning ACPI for macOS [Clover/OpenCore]

I. Renaming ACPI Devices


FindReplaceCommentNotes
5043303050434930Rename PC00 to PCI0
4C504342Rename LPC0 to LPCB
534252474C504342Rename SBRG to LPCBRequired for AMD systems and Legacy hardware
534D425F53425553Rename SMB_ to SBUSRequired for Legacy Hardware
4430314253425553Rename D01B to SBUS
4D435F5F4D434843Rename MC__ to MCHCRequired for Intel 400 series and newer
525443305254435FRename RTC0 to RTC_Required for AMD systems, Intel Legacy and HEDT Hardware
544D525F54494D52Rename _TMR to TIMRRequired for AMD systems and Legacy Hardware
5049435F49504943Rename PIC_ to IPIC
4C414E5F47494745Rename LAN_ to GIGERequired for AMD systems
444D4144444D4143Rename DMAD to DMACRequired for AMD systems and Legacy Hardware
434F50524D415448Rename COPR to MATH
4F4D53434C445243Rename OMSC to LDRC
Rename GFX0 to IGPUAutomatically done by WhateverGreen
Rename HECI to IMEI
Rename MEI to IMEI
584843495848435FRename XHCI to XHC
HDAS to HDEFAutomatically done by AppleALC
4742455F45544830Rename GBE_ to ETH0Required for systems with Dual Ethernet Controllers
4742453245544831Rename GBE2 to ETH1Required for systems with Dual Ethernet Controllers

Rename SBRG to LPCB
  • Find: 53425247
  • Replace: 4C504342
  • Comment: Rename SBRG to LPCB
Rename SBRG to LPCB
  • Find: 53425247
  • Replace: 4C504342
  • Comment: Rename SBRG to LPCB
Rename SBRG to LPCB

Find: 53425247
Replace: 4C504342
Comment: Rename SBRG to LPCB


Although, when a compatible Device is found, the driver will still tie to the original ACPI Device, regardless of its name. However, due to the fact Apple prefers a unique ACPI Device Name for specific hardware, it makes more sense to have such renames.

Do note that renaming the Devices are mostly cosmetic and do not have any impact except for a few such as HECI to IMEI and GFX0 to IGPU.


II. Enabling Missing ACPI Devices


Although, adding these missing ACPI Devices aren't required for most of the use cases, except for a few, and do not have any effect in terms of performance and therefore are not necessary either. As adding most of these missing ACPI Devices aren't mandatory, adding these missing ACPI Devices can still improve performance in certain areas, especially userspace. In addition, this can also reduce boot time to a certain level. However, they can be regarded as a refinement due to their being cosmetic in nature. This is only done to ensure all the missing Devices are initialized and loaded properly, have proper names, and more of a real Mac-like look in IOReg.





Moreover, you don't need to add all of these missing devices as it varies from system to system. Depending on your system, pick only the ones which you may need.


STEP 1: Finding the missing ACPI Devices

Provided that you're not booting with any patched DSDT or any Hotpatch/Custom SSDTs or Device renames in config.plist, you can find out the missing ACPI Devices very easily. Note that this method requires macOS/OS X to be installed on the target system and these operations must be executed on the target machine only.



Available SSDTs

Pre-defined

III. Fixing Missing ACPI Devices Names


Although these devices are accessible and may work partially or fully on macOS, they often tend to create issues when initializing a particular device. Due to the missing device's name, it can be difficult to recognize the device. This also affects the system's performance.


On Windows, these devices are accessed via WMI and have their name with the help of installed drivers.


On a few systems, there are devices which do not have a proper name. For example, This is pretty much common on AMD Systems. However, this can be fixed by defining a Device Name in the SSDT which can reduce boot time to a certain level and provides faster userspace. One example is SSDT-BRG0.aml which is also included in the OpenCorePkg.

Normally devices without a proper device name usually appear as 1002142. Where, the first four character represents the VendorID and the last four character represents the Device ID. When a proper Device name is defined, its seen as XHCI. Do note that these devices usually can only have 4 characters.

IV. Dropping ACPI Tables


When you want to load a custom DSDT or SSDT, you must drop the Native/OEM ACPI Table(s) to avoid unnecessary code overlaps, to avoid conflicts. This is because when you try to load a patched DSDT or SSDT, the existing codes in the native ACPI Tables overlap the codes resulting in no effect of the patched DSDT or SSDT which you try to inject. Therefore, you must drop the native ACPI Tables where the patched DSDT or SSDT can be in effect, leading to the desired result.

Dropping the native ACPI Table(s) may not be required on every system, but only on certain machines when you want to enable a certain set of features or functionality under macOS/OS X such as VT-d. Normally, these tables are DMAR, which is required for the VT-d. The other tables to drop include MATS and MCFG. Although these are the common Table Signatures that needs to be dropped, they're not only the one, and having said that, you may need to drop the other Table Signatures as per your System.

Dropping the native ACPI Tables is supported by both the bootloaders i.e. Clover and OpenCore.


TableDescription
DSDTDrops DSDT Table. TableID must be specified.
SSDTDrops SSDT Table. TableID must be specified.
HPETDrops HPET Table. Fixing HPET Conflicts is way more preferred.
ECDTDrops Embedded Controller Description Table. TableID must be specified.
BGRTDrops Boot Graphics Resource Table. TableID must be specified.
MCFGDrops Memory Mapped Configuration Table. TableID must be specified.
DMARDrops DMA Remapping Table. TableID must be specified.
Dropping the DMAR Table disables VT-d support. Using DisableIOMapper Quirk is preferred over dropping the DMAR Table to disable VT-d support.
Unless the VT-d support needs to be disabled explicitly, dropping this Table isn't recommended. Dropping the DMAR Table might be required in certain cases in order to enable VT-d correctly. See Enabling VT-d for more information.
APICDrops Advanced Programmable Interrupt Controller. TableID must be specified.
Mainly relevant for HEDT Systems like X58, X79, X99, and X299 but might be helpful for other systems with higher CPU Core Count. See Patching APIC for more information.
ASFTDrops DSDT Table. TableID must be specified.
SBSTDrops DSDT Table. TableID must be specified.
SLICDrops Microsoft Software Licensing Table. TableID must be specified.
MATSDrops DSDT Table. TableID must be specified.
BATBDrops DSDT Table. TableID must be specified.
UEFIDrops DSDT Table. TableID must be specified.
 
Last edited:

Forum statistics

Threads
1,479
Messages
13,997
Members
21,155
Latest member
carlosfusion