- Joined
- Jul 22, 2018
- Messages
- 8,025
- Motherboard
- Supermicro X11SPA-T
- CPU
- Intel Xeon W-3275 28 Core
- Graphics
- 2xAMD RX 580 8GB
- OS X/macOS
- 13.x
- Bootloader
- OpenCore (UEFI)
- Mac
- Mac mini
- MacBook Pro
- Mobile Phone
- Android
- iOS
Tuning ACPI for macOS [Clover/OpenCore]
I. Renaming ACPI Devices
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
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
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.
I. Renaming ACPI Devices
Find | Replace | Comment | Notes |
---|---|---|---|
50433030 | 50434930 | Rename PC00 to PCI0 | |
4C504342 | Rename LPC0 to LPCB | ||
53425247 | 4C504342 | Rename SBRG to LPCB | Required for AMD systems and Legacy hardware |
534D425F | 53425553 | Rename SMB_ to SBUS | Required for Legacy Hardware |
44303142 | 53425553 | Rename D01B to SBUS | |
4D435F5F | 4D434843 | Rename MC__ to MCHC | Required for Intel 400 series and newer |
52544330 | 5254435F | Rename RTC0 to RTC_ | Required for AMD systems, Intel Legacy and HEDT Hardware |
544D525F | 54494D52 | Rename _TMR to TIMR | Required for AMD systems and Legacy Hardware |
5049435F | 49504943 | Rename PIC_ to IPIC | |
4C414E5F | 47494745 | Rename LAN_ to GIGE | Required for AMD systems |
444D4144 | 444D4143 | Rename DMAD to DMAC | Required for AMD systems and Legacy Hardware |
434F5052 | 4D415448 | Rename COPR to MATH | |
4F4D5343 | 4C445243 | Rename OMSC to LDRC | |
Rename GFX0 to IGPU | Automatically done by WhateverGreen | ||
Rename HECI to IMEI | |||
Rename MEI to IMEI | |||
58484349 | 5848435F | Rename XHCI to XHC | |
HDAS to HDEF | Automatically done by AppleALC | ||
4742455F | 45544830 | Rename GBE_ to ETH0 | Required for systems with Dual Ethernet Controllers |
47424532 | 45544831 | Rename GBE2 to ETH1 | Required for systems with Dual Ethernet Controllers |
Rename SBRG to LPCB
- Find: 53425247
- Replace: 4C504342
- Comment: Rename SBRG to LPCB
- Find: 53425247
- Replace: 4C504342
- Comment: 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.
Table | Description |
---|---|
DSDT | Drops DSDT Table. TableID must be specified. |
SSDT | Drops SSDT Table. TableID must be specified. |
HPET | Drops HPET Table. Fixing HPET Conflicts is way more preferred. |
ECDT | Drops Embedded Controller Description Table. TableID must be specified. |
BGRT | Drops Boot Graphics Resource Table. TableID must be specified. |
MCFG | Drops Memory Mapped Configuration Table. TableID must be specified. |
DMAR | Drops 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. |
APIC | Drops 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. |
ASFT | Drops DSDT Table. TableID must be specified. |
SBST | Drops DSDT Table. TableID must be specified. |
SLIC | Drops Microsoft Software Licensing Table. TableID must be specified. |
MATS | Drops DSDT Table. TableID must be specified. |
BATB | Drops DSDT Table. TableID must be specified. |
UEFI | Drops DSDT Table. TableID must be specified. |
Last edited: