EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
2,696
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
11.0.x
Bootloader
  1. OpenCore
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
  2. iOS

How to create OpenCore config.plist for booting macOS on AMD Desktops


An EliteMacx86 Exclusive Guide - This guide covers creation of config.plist for booting macOS on AMD Desktops for OpenCore as a bootloader.

Overview


The config.plist is a system configuration file for the Hackintosh and allows to boot macOS. Without a config.plist, no machine can boot into macOS.

A sample config.plist file is bundled with OpenCore. The config.plist which comes with OpenCore, is the default config.plist and is not optimised for all the systems. It can boot into some installation but when talking about the majority, it will fail to boot on most of the newer machines and high end builds.

Also, it's a good idea to create a config.plist for each specific system which will exclude the errors and trouble while installation and you can easily boot into macOS installation. The configuration file is written in XML and can be edited using a plist or text editor. But we don't recommend you to use a text editor as it has a chance of config.plist file corruption. The best way to edit a config.plist is to use some specific tools like Xcode, Plist Editor Pro etc..

This guide covers a creation of basic config.plist which will allow to boot your supported AMD Desktop system. To check whether your hardware is supported or not, check the compatibility table mentioned in this guide.

For Intel users, a separate thread is available.

For Laptop users, a separate thread is available.

Notes:
  • It's good to have a minimal configuration and options set before you install. Once you install, you can add the other options later on. This will cause less trouble and speedup the installation process.
  • As it's a basic config.plist creation guide, so only important sections has been discussed. This will only allow to boot your system. For further hardware functioning, check the related guides on the forum.
  • All the properties and schemes must be defined. Do not delete sections unless specified in the guide or OpenCore will result in error.
  • This guide is as per OpenCore 0.6.3 (Release) standards.

Compatibility List


AMD 15h and later supports upto macOS Big Sur. Refer to the chart below to confirm the compatibility of your AMD CPU.

AMD 15 and 16h

VendorCode NameMicroarchitecture NameFamily NumberSierraHigh SierraMojaveCatalinaBig Sur
Bulldozer
Llano
TrinityPiledriver
RichlandPiledriver
KabiniJaguar
KaveriStreamroller
Kaveri (Refreshed)Godavari
CarrizoExcavator
Bristol RidgeExcavator
Jaguar
Puma


AMD 17 and 19h

VendorCode NameMicroarchitecture NameFamily NumberSierraHigh SierraMojaveCatalinaBig Sur
Raven RidgeZen17h❌
PicassoZen+17h❌
RenoirZen 217h❌
Zen 319h❌



= Unofficially supported
❌ = Not supported

Notes:
  • Mobile CPUs are not supported yet.
  • APUs are not supported yet.

Preparing Config.plist


Before you prepare your config.plist, you need to grab a sample config.plist.

To obtain a sample config.plist, follow the guide below.

After grabbing the config.plist, use any .plist editor and setup your config.plist for your target system as described below.
 
Last edited:

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
2,696
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
11.0.x
Bootloader
  1. OpenCore
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
How to create a config.plist for booting macOS on AMD Desktops [OpenCore]

AMD 15 and 16h


SupportCompatibility
macOSmacOS High Sierra and above
APU SupportNo APU is supported
Supported Chipsets970, 990X, 990FX


ACPI


This section is for loading, blocking and patching the ACPI tables. The sub-sections are explained below.

Add
This section is for adding the DSDT and SSDT files for your system. This basically includes USB and CPU Power Management SSDT.

The required SSDTs for 15 and 16h Systems includes:

Path*ValueNotes
SSDT-ECUSBXYES
  • This SSDT is required for EC and USB Power.
  • This SSDT is required for proper USB Power.
  • This SSDT fixes EC and USB Power.
SSDT-PLUGYES
  • This SSDT enables Power Management function.
  • It can fix potential issues such as sleep/wake function and performance.
  • This SSDT is required for a proper CPU and GPU Power Management.
  • If you're using NVIDIA GPU, it's advised to enable NVIDIA discrete GPU Power Management.

Note:
You can add your add-on DSDT or SSDTs here when performing Post-Install.


Delete

This section allows to block the ACPI tables from loading.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Patch

This section is used for device renames such as USB, Graphics and Audio. You can implement the necessary ACPI patches for optimising the ACPI system components with DSDT and SSDT. This section is important when doing Hot-patch.

The common renames for 15 and 16h Systems includes:

Table Signature*FindReplaceCommentEnabledNotes
DSDT5045475047465830Rename PEGP to GFX0 (Graphics)YES
  • Renames PEGP to GFX0 for a better power management.
  • This rename is required for implementing discrete GPU Power Management.
DSDT4844415348444546Rename HDAS to HDEF (Audio)YES
  • Renames HDAS to HDEF for Audio.
  • This rename is required for implementing Audio Function.
  • For Branded Systems, you may need to patch your DSDT. For more information on Audio implementation, read here.


Quirks
This section allows to apply certain ACPI quirks.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Booter



This section is used for booting and provides firmware fixes in relation to boot.efi. The sub-sections are explained below.

MmioWhitelist
Designed to be filled with plist dict values, describing addresses critical for particular firmware functioning when DevirtualiseMmio quirk is in use.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Quirks
This section allows to apply certain Booter quirks.

The common Booter Quirks for 15 and 16h Systems includes:

OuirksValueNotes
AvoidRunTimeDefragYES
  • Fixes certain UEFI runtime services such as date time, NVRAM, power control, etc.
  • Apart from Apple and VMware, this quirk is required by rest of the firmwares
EnableSafeModeSlideYES
  • Patch bootloader to have KASLR enabled in safe mode.
  • This quirk requires ProvideCustomSlide to be enabled.
  • This quirk can be helpful if you're unable to boot into safe mode.
EnableWriteUnprotectorYES
  • Allows write access to UEFI runtime services code.
  • This quirk may potentially weaken firmware security, please use RebuildAppleMemoryMap if the firmware supports memory attributes table (MAT)
ProvideCustomSlideYES
  • Provide custom KASLR slide on low memory.
  • This option forces macOS to use a pseudo random value among the available ones.
SetupVirtualMapYES
  • Setup virtual memory at SetVirtualAddresses.
  • Fixes several virtual address issues and tends to fix early Kernel Panics.
  • The necessity of this quirk is determined by early boot failures. Currently, new firmware with memory protection support (such as OVMF) do not support this quirk.
RebuildAppleMemoryMapYES
  • Generates Memory Map which is compatible with macOS.
  • Since several types of firmware come with incorrect memory protection tables, this quirk often comes paired with SyncRuntimePermissions.
SyncRuntimePermissionsYES
  • Update memory permissions for runtime environment.
  • The need for this quirk is indicated by early boot failures. Only firmware released after 2017 is typically affected.
ProvideMaxSlide0
  • Provide maximum KASLR slide when higher ones are unavailable.

Note:
The values which have been not discussed above, that will remain disabled.


DeviceProperties



This section is used for adding device properties. This includes PCI Devices information such as Graphics, Audio, WiFi, Ethernet and other controllers.

The common Device properties for 15 and 16h Systems includes:

DevicesKeyValueTypeNotes
  • PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)
  • PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x9,0x0)/Pci(0x0,0x0)
  • PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x2)/Pci(0x4,0x0)/Pci(0x0,0x0)
  • PciRoot(0x0)/Pci(0x1,0x3)/Pci(0x0,0x0)
  • PciRoot(0x0)/Pci(0x8,0x2)/Pci(0x0,0x0)
built-in01000000DATA
  • Fixes Internal Drive (NVMe) shown as External

Note:
The above PCI path are the common paths for NVMe controllers. If issue isn't fixed, probably, your path is different.

To check your PCI path, follow the guide below.


Kernel


This section is for adding and blocking kexts. The sub-sections are explained below.

Add
This section is used to add kexts, in what order to load and defines the architecture of each kext(s).

The required kexts for 15 and 16h Systems includes:

ArchBundlePath*ExecutablePathPlistPathEnabledNotes
AnyLilu.kext**Contents/MacOS/LiluContents/Info.plistYES
  • Provides arbitrary patching.
AnyVirtualSMC.kext**Contents/MacOS/VirtualSMCContents/Info.plistYES
  • Emulates Apple hardware.
  • VirtualSMC is a successor of FakeSMC.
  • This kext requires Lilu.kext to function.
AnyWhateverGreen.kext**Contents/MacOS/WhateverGreenContents/Info.plistYES
  • Provides GPU patching on macOS.
  • This kext requires Lilu.kext to function.
AnyAppleALC.kext**Contents/MacOS/AppleALCContents/Info.plistYES
  • Enables onboard/built-in Audio.
  • This kext requires Lilu.kext to function.

Notes:
  • All the plugins must load after loading it's dependencies otherwise the kext will no longer function even when loaded in OS X/macOS.
  • The mandatory kexts must be loaded in sorted order as shown in the above table.
  • *Indicates BundlePath i.e. Name of the Kext
  • **Indicates mandatory kexts.
  • All the added kexts must exists in the EFI/OC/Kexts directory.
  • The options which have been not discussed above, that will remain untouched.
To find the Executable Path and Plist path of kexts, follow the guide below

Block
This section allows to block kexts from loading.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Force

This section allows to force kexts from loading.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Patch
This section allows patching for Kernel and Kexts. This is where AMD Kernel patching takes place which provides support for booting macOS unofficially.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Kernel</key>
    <dict>
        <key>Patch</key>
        <array>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - commpage_populate -remove rdmsr</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uaABAAAPMg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx+AAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpu_topology_sort</string>
                <key>Comment</key>
                <string>algrey - cpu_topology_sort -disable _x86_validate_topology</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6AAA//8=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /wAA//8=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 0 - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                McAx2zHJMdIPokGJxgAAAAAAAAB0
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////////////wAAAAAA////
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIAx2zHJMdIPokGJxg8fQADr
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 0</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                McAx2zHJMdIPokGJxkGJ0QAAAAAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////////////////wAAAAAA//8=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIAx2zHJMdIPokGJxkGJ0escZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 0 10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                McAx2zHJMdIPokGJxoM9RD2oAAB0G0E=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIAx2zHJMdIPokGJxkGJ0escZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 4</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uAQAAABEifFEiQ==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIBEifFEiQ==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - don't set cpuid_cores_per_package</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                weAa/8A=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //D///A=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx8A6wY=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>NoOne - skip cpuid_cores_per_package test - 10.15/10.16</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAA8AAAAAAIsAvA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8AAAAA//8A/w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                AAAAAAAAAQAAAAAAAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                AAAAAAAADwAAAAAAAAAAAA==
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - - skip cpuid_cores_per_package test</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQAi128
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8A////
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                AAAAAAAAAQAAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                AAAAAAAADwAAAAAA
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - remove wrmsr</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uYsAAAAxwDHSDzA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fhAAAAAAAZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - set microcode=186</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uYsAAAAPMg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uroAAABmkA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - set flag=1</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uRcAAAAPMsHqEoDiBw==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                sgFmDx+EAAAAAABmkA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - disable check to allow leaf7</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                ADoPgg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                AAAPgg==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - GenuineIntel to AuthenticAMD </string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                R2VudWluZUludGVsAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                QXV0aGVudGljQU1EAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                MduAPQAAAAAGdQA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////wAAAP///wA=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                u7xP6njpXQAAAJA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - jmp to calculations and set cpuid_cores_per_package - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                dXHoAAAAAEiLBQAAAABIiQUAAAAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////AAAAAP///wAAAAD///8AAAAA
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                dE4AAAAAAJCJDQAAAADpfgAAAGaQ
                </data>
                <key>ReplaceMask</key>
                <data>
                //8AAAAAAP///wAAAAD/////////
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and threads calculations - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uTUAAAAPMkjB4iCJwUgJ0bkBAAEAD0XID7fBwekQg+EP
                6x65NQAAAA8ySMHiIInBSAnRuQEAAQAPRcgPt8HB6RA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                uAgAAIAx2zHJMdIPokGJzkUPtvZB/8ZEifFEifBmDx+E
                AAAAAABmDx+EAAAAAAAPH4QAAAAAAOl8////Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 1 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6xa5NQAAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                6yK5NQAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 1 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6zi5NQAAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                6xK5NQAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 2</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uTUAAAAPMkjB4iAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAA=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                ichmDx+EAAAAAABmDx+EAAAAAABmDx+EAAAAAAAPHwA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 3 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                iQUAAAAAiRUAAAAAhcB1GA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8AAAD//////w==
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx+EAAAAAAAPH4QAAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 3 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                hcB0
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                ZpDr
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 4 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                iwUAAAAAiQAAAAAAiwU=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD//wAAAAD///8=
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                iQAAAAAAAAAAAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                /wAAAAAAAAAAAAAAAAA=
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and logicals count - part 4 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                SIsFAAAAAEiJBQAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////AAAA/////wAAAP8=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                kIkAAAAAAJAAAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                //8AAAAAAP8AAAAAAAA=
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - i386_init - remove rdmsr (x3)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uZkBAAAPMkjB4iCJxkgJ1rmYAQAADzJIweIgicBICcK/
                WAIxBTHJRTHA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fhAAAAAAAZg8fhAAAAAAAZg8fhAAAAAAAZg8fhAAA
                AAAAZg8fRAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - remove Penryn check to execute default case 10.14.1-.3</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gfm8T+p4D4TFAQAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                ZmZmDx+EAAAAAACQ
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - remove Penryn check to execute default case</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                PbxP6ngPhAABAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////wD///8=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                ZmZmDx+EAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - grab DID and FID from MSR</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uZQBAAAPMonDuc4AAAAPMg+2zokNAAAAAA+2xIkFAAAA
                AA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////////////////////////////AAAA////////AAAA
                /w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uXEAAcAPMonASInBSMHpBoPgP0iDwBCA4QdI0+gPH0QA
                AA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_tsc_init</string>
                <key>Comment</key>
                <string>algrey - tsc_init - skip msr_flex_ratio test and go grab FSBFrequency from EFI</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                98MAAAEAdA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fRAAA6w==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_init - remove version check and panic - 10.15</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                g/gTdl4=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>19.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>NoOne - lapic_init - remove version check and panic - 10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                g/gTD4aBAAAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.0.0</string>
                <key>Replace</key>
                <data>
                kJCQkJCQkJCQ
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_init - remove version check and panic - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                JfwAAACD+BM=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                JfAAAADrI5A=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_interrupt - skip checks and prevent panic - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQO
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD/////
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                6zkPH4AAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>_lapic_interrupt</string>
                <key>Comment</key>
                <string>algrey - lapic_interrupt - skip checks and prevent panic - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQK
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>250</integer>
                <key>Mask</key>
                <data>
                //8AAAD/////
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                60gPH4AAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - mtrr_update_action - fix PAT</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                icCB4v//AP+BygAAAQC5dwIAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////////D////////////////w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uXcCAAC4BgEHALoGAQcADx9AAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>Shaneee - mtrr_update_action - fix PAT</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <false/>
                <key>Find</key>
                <data>
                icCB4v//AP+BygAAAQC5dwIAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////////D////////////////w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uXcCAAC4BgYGBroGBgYGDzAPCQ==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
        </array>
    </dict>
</dict>
</plist>

Notes:
  • Without the above Kernel patches, macOS will fail to boot as AMD is not officially supported by Apple yet.
  • As of now, there are 36 patches in total. Once you merge the patches, make sure to verify the number of patches.

Emulate
This section allows to spoof your CPU ID if you're using any unsupported CPU.

OptionValueNotes
OptionValueNotes
DummyPowerManagementYES
  • Disables AppleIntelCpuPowerManagement
  • Provides Dummy Power Management. Equivalent to NullCPUPowerManagement.
  • This option is for CPUs without native power management driver in macOS.
  • This option is required for all AMD based systems as there is no any native Power Management.
  • If you disable this option, you'll get kernel Panic for AppleIntelCPUPowerMangement.kext.
  • It's recommended to set this option to "enabled."

Scheme
This section allows settings related to Kernel. These settings are relevant for older Mac Operating Systems.

The required settings for 15 and 16h Systems includes:

OptionsValueNotes
FuzzyMatchYES
  • Enables checksum ignore with kernel cache instead of using latest cache available.
  • This setting allows matching the latest kernel cache with a suitable architecture when the kernel cache without suffix is unavailable, improving macOS 10.6 boot performance on several platforms.
  • This option is required for macOS Big Sur.
KernelArchAuto
  • Determines Kernel Architecture.
  • It's recommended to set this option to "Auto" and let OS X/macOS decide the Kernel Architecture.
KernelCacheAuto
  • Determines Kernel Cache.
  • It's recommended to set this option as Auto.

Quirks
This section allows to apply certain Kernel quirks. It provides settings related to Kernel and several other options related to BIOS/UEFI and USB ports.

The required quirks for 15 and 16h Systems includes:

QuirksValueNotes
CustomBIOSGuidNO
  • Performs GUID patching for UpdateSMBIOSMode Custom mode.
  • If you're having a Dell Motherboard, it's recommended to use CustomBIOSGuid quirk.
  • When using this option, you must set UpdateSMBIOSMode to Custom in PlatformInfo section.
LapicKernelPanicNO
  • Disables kernel panic on AP core lapic interrupt.
  • Equivalent to Clover's Kernel LAPIC.
  • If you're using an HP Motherboard, you'll need to enable this quirk.
PanicKNoextDumpYES
  • Prevent kernel from printing kext dump in the panic log preventing from observing panic details.
PowerTimeoutKernelPanicYES
  • Disables kernel panic on setPowerState timeout.
  • Fixes kernel panics related to power changes with Apple drivers in macOS Catalina, most notably with digital audio.
XhciPortLimitYES
  • Enables 15 port limit patch.
  • This quirk is a temporary solution and is advised to map your USB ports during post-installation.
DisableLinkeditJettisonYES
  • Disables __LINKEDIT jettison code.
  • Provides more reliable performance without keepsyms=1
  • This quirk is required for macOS Big Sur.


Misc


This section provides settings related to GUI, drive entries and debug.

Boot
This section mainly provide functions for OpenCore GUI.

The required settings for 15 and 16h Systems includes:

OptionsValueNotes
Picker Mode
  • Builtin
  • External
  • Apple
  • Sets Boot Picker Mode used for Boot Management
Builtin
  • Sets text only user interface for OpenCore menu.
External
  • Enables external theme.
  • If you have Themes installed, set this option to External.
Apple
  • Sets Apple Boot Theme, if available
Picker Attributes0
  • Sets specific attributes for picker

Debug
This section allows debug functions for boot.

The required settings for 15 and 16h Systems includes:

OptionsValueNotes
Target
  • 0
  • 67
  • A bitmask (sum) of enabled logging targets. By default all the logging output is hidden, so this option is required to be set when debugging is necessary.
0
  • If you're using RELEASE version of OpenCore, set this option to 0.
67
  • Enables logging and provides more debug information.
  • Using this option requires Debug version of OpenCore.
Disable WatchDogYES
  • Some types of firmware may not succeed in booting the operating system quickly, especially in debug mode, which results in the watchdog timer aborting the process.
  • This option turns off the watchdog timer.
  • This option also fixes Kernel Panic due to watchdog timeout.
  • It's recommended to set this option to "enabled."
AppleDebugYES
  • Enables boot.efi logging to OpenCore log, useful for debugging.
  • This option only applies to 10.15.4 and newer.
ApplePanicYES
  • Saves Kernel Panic log to OpenCore partition.


Security
This section controls security related settings such as FileVault, Boot Protect and Secure Boot functions.

The required settings for 15 and 16h Systems includes:

OptionsValueNotes
Scan Policy0
  • Define operating system detection policy.
0
  • Enables all drive at OpenCore menu.
Vault
  • Optional
  • Basic
  • Secure
  • Provides File Vault function.
Optional
  • Requires nothing, no vault is enforced, insecure.
  • It's recommended to set this option to Optional.
Basic
  • Requires vault.plist file present in OC directory.
  • This provides basic filesystem integrity verification and may protect from unintentional filesystem corruption.
Secure
  • Requires vault.sig signature file for vault.plist in OC directory.
  • This includes Basic integrity checking but also attempts to build a trusted boot chain.
BootProtect
  • None
  • Boostrap
  • Attempt to provide bootloader persistence
None
  • Enables usage of Bootstrap.efi in the directory EFI/OC/Bootstrap instead of BOOTx64.efi.
  • This setting is helpful for users using rEFInd to boot or avoid BOOTx64.efi overwrites from Windows.
Bootstrap
  • For this option to work RequestBootVarRouting is required to be enabled.
  • Use of Bootstrap option will also enable "OpenCore" instead of UEFI: OS followed by your drive name in Boot Menu.
DmgLoading
  • Disabled
  • Signed
  • Any
  • Define Disk Image (DMG) loading policy used for macOS Recovery.
Disabled
  • Disables loading of DMG images.
  • Disabled policy will still let macOS Recovery to load in most cases as there usually are boot.efi files compatible with Apple Secure Boot.
  • Manually downloaded DMG images stored in com.apple.recovery.boot directories will not load.
Signed
  • Enables only Apple-signed DMG images will load. Due to Apple Secure Boot design Signed policy will let any Apple-signed macOS Recovery to load regardless of Apple Secure Boot state, which may not always be desired.
  • It's recommended to set this option to "Signed" to avoid issues.
Any
  • Enables any DMG images will mount as normal filesystems.
  • Any policy is strongly not recommended and will cause a boot failure when Apple Secure Boot is activated.
SecureBootModel
  • Default
  • Disabled
  • Defines Apple Secure Boot hardware model.
  • Sets Apple Secure Boot hardware model and policy.
  • Specifying this value defines which operating systems will be bootable.
  • Operating systems shipped before the specified model was released will not boot.

Default
  • Enables Default Secure Boot.
  • Recent available model, currently set to j137
Disabled
  • Disables Secure Boot.
  • It's advised to set this option as "Disabled" to avoid booting issues.
AllowNvramResetYES
  • Enables NVRAM reset when pressing Command+Option+P+R
  • Enables NVRAM Reset entry in boot picker.
  • It's recommended to set this option to "Enabled."
AllowSetDefaultYES
  • Allows to set default boot device in the boot picker using CTRL+Enter and CTRL+Index.


Bless Overrides
This section is used for adding custom scanning paths through bless model.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Entries

This section is used to create boot entries when having multi boot and OpenCore fails to recognise it.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Tools
This section is used for running debugging tools such as UEFI Shell.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.



NVRAM



This section is for adding NVRAM properties, boot args and configuring SIP. The sub-sections are explained below.

Add
This section has various settings including UI, boot args, keyboard input, NVRAM settings and System Integrity Protection.

The required NVRAM properties for 15 and 16h Systems includes:

UUIDKeyValueTypeNotes
7C436110-AB2A-4BBB-A880-FE41995C9F82boot-args
  • -v
  • npci=0x2000
  • alcid=xx
  • agdpmod=pikera
  • debug=0x100
  • keepsyms=1
STRING
  • Adds boot args which provides several functions.
-v
  • Enables verbose mode. Helpful to track the installation progress or when booting.
  • We recommend to use this boot arg.
npci=0x2000
  • Disables PCI debugging related to kIOPCIConfiguratorPFM64.
  • This issue can also fix stuck on "PCI Start Configuration Begin" as there are IRQ conflicts relating to PCI lanes.

alcid=xx
  • Sets Layout ID for AppleALC.
  • The xx represents the layout ID for your codec.

agdpmod=pikera
  • Fixes Black Screen at boot for NAVI GPUs.
  • If you're using and AMD NAVI based GPU, you'll need to use this boot arg.

debug=0x100
  • This disables macOS's watchdog which helps prevents a reboot on a kernel panic.
keepsyms=1
  • This is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic.
  • This can give some more helpful insight as to what's causing the panic itself.
nvda_drv31DATA
  • Enables NVIDIA WebDrivers.
  • Equivalent to Clover's NVIDIAWeb option in System Parameters.
  • If you're using an NVIDIA GPU, you'll need to use this key.
csr-active-config
  • 00000000
DATA
  • Defines SIP type.
00000000
  • Enables SIP completely. (0x0)
  • It's advised to configure SIP via recovery using "csrutil."
  • For more information on SIP, check the SIP disabling guide.
prev-lang:kbden-US:0STRING
  • Sets Keyboard language.

Note:
  • If "npci=0x2000", doesn't works, use "npci=0x3000."
  • Do not use "npci=0x2000" with "npci=0x3000". Use only one. Never both.

Delete
Removes NVRAM variables from a map (plist dict) of GUIDs to an array (plist array) of variable names in plist string format.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


LegacySchema
This section is used for assigning NVRAM variables, used with LegacyEnable set to YES.
Enables loading of NVRAM variable file named nvram.plist from EFI volume root

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


OptionsValueNotes
OptionsValueComment
WriteFlashYES
  • Enables writing off added Variables to flash memory
  • It is recommended to have this value enabled on most types of firmware but it is left configurable for firmware that may have issues with NVRAM variable storage garbage collection or similar.


PlatformInfo


This section allows to set SMBIOS. It's an important section and has various impact on your system. The sub-sections are explained below.

DatHub - Generic - PlatformNVRAM

DataHub

OptionValueNotes
Add this section in config.plistYESAdds DataHub field

Generic

The required NVRAM properties for 15 and 16h Systems includes:


OptionsValueNotes
Add this section in config.plistYESAdds Generic field
from SMBIOSYES
ProcessorType0
  • Sets SMBIOS Processor Type.
  • This will override your actual CPU type.
  • It's recommended to set this option to "0" to detect the original CPU by macOS instead of using SMBIOS CPU Type.
SystemMemoryStatusAuto
  • Indicates whether system memory is upgradable in PlatformFeature. This controls the visibility of the Memory tab in About This Mac.
Auto
  • Use the original PlatformFeature value.
  • It's recommended to set this option to "Auto."
Upgradable
  • Explicitly unset PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
Soldered
  • explicitly set PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
SpoofVendorYESSets SMBIOS vendor fields to Acidanthera

PlatformNVRAM

OptionValueNote
Add this section in config.plistYESAdds PlatformNVRAM field

Memory
This section allows to configure settings for your RAM.

To configure your memory settings, a separate thread is available


SMBIOS

OptionValueNote
Add this section in config.plistYESAdd SMBIOS field.

System

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.

BIOS

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Chassis

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Board



OptionsValueNotes
AutomaticYES
  • Generate PlatformInfo based on Generic section instead of using values from DataHub, NVRAM, and SMBIOS sections.
UpdateDatHubYES
  • Update Data Hub fields. These fields are read from Generic or DataHub sections depending on Automatic value.
UpdateNVRAMYES
  • Update NVRAM fields related to platform information.
UpdateSMBIOSYES
  • Update SMBIOS fields. These fields are read from Generic or SMBIOS sections depending on Automatic value.
UpdateSMBIOSMode
  • Auto
  • Create
  • Overwrite
  • Custom
  • Update SMBIOS fields approach
Auto
  • Sets SMBIOS Mode to Auto
Create
  • Sets SMBIOS Mode to Create
Overwrite
  • Sets SMBIOS Mode to Overwrite
Custom
  • Sets SMBIOS Mode to Custom
If you're having a Dell Motherboard, it's advised to use Custom option.
When using this option, you must set CustomSMBIOSGuid quirk in Kernel section.
CustomMemoryNO
  • Use custom memory configuration defined in the Memory section. This completely replaces any existing memory configuration in SMBIOS, and is only active when UpdateSMBIOS is set to true.


UEFI


This section is for adding UEFI drivers and related settings.

APFS
Provides APFS settings for APFS Driver.

The required settings for 15 and 16h Systems includes:

OptionsValueNotes
JumpStartHotplugNO
  • Load APFS drivers for newly connected devices.
  • Enables Hot plug of APFS drives in boot picker.
  • It's advised to disable this option unless required.


Audio
Provides Audio related settings for Audiodxe Driver and Boot Chime.

Notes:
  • The Audio section in UEFI section is unrelated to Audio function on Mac.
  • This setting is important for Boot Chime. It's advised to setup this section during Post-Installation.
To enable Boot chime, follow the guide below.


Drivers
This section is for adding .efi drivers.

The required drivers for 15 and 16h Systems includes:

DriversValueNotes
AudioDxe.efiYES
  • Provides Boot Chime support
  • If you want to use Boot Chime, you need this driver.
OpenCanopy.efi*YES
  • Provides GUI functionality for OpenCore Boot screen.
  • This driver is required if you need GUI or theme for OpenCore.
OpenRuntime.efi*YES
  • Runtime driver including several other drivers merged such as ApfsDriverLoader.
  • OpenRuntime.efi is a replacement for AptioMemoryFix.efi driver.
HFSPlus.efi*YES
  • Provides reading of HFS+ Volumes/drives in OpenCore Boot Picker.
  • Without HFSPlus.efi driver, you won't be able to see any HFS+ volumes including your USB installer and installation drive for macOS Sierra and prior in OpenCore boot picker.

Notes:
  • *Indicates Mandatory Drivers.
  • All the added drivers must exists in the EFI/OC/Drivers directory.

OptionValueComment
Connect DriversYES
  • Specifies and adds the drivers for booting.

Input
This section provides settings for FileVault and Hotkey support for Keyboard passthrough.

Notes:
  • Normally, this section requires no modification and will remain untouched.
If you want to enable FileVault, follow the guide below.

Output
This section provides settings for OpenCore GUI.

Note:
Normally, this section requires no modification and will remain untouched.


ProtocolsOverride

This section provides settings for Virtual machines, legacy Macs and FileVault users.

Note:
Normally, this section requires no modification and will remain untouched.

If you want to enable FileVault, follow the guide below.


ReservedMemory
This section is used for exempting certain memory regions from OS(s) to use, mainly relevant for Sandy Bridge iGPUs or systems with faulty memory.

Note:
For 15 and 16h Systems, this section requires no modification and will remain untouched.


Quirks
The required Quirks for 15 and 16h Systems includes:


OptionsValueNotes
RequestBootVarRootingYES
  • Redirects AptioMemoryFix from EFI_GLOBAL_VARIABLE_GUID to OC_VENDOR_VARIABLE_GUID.
  • This quirk is required for using the Startup Disk preference pane in firmwares that is not compatible with macOS boot entries.
  • It's recommended to enable this quirk on all systems.
UnblockFsConnectNO
  • Some types of firmware block partition handles by opening them in By Driver mode, resulting in being unable to install File System protocols.
  • If you're using an HP Motherboard, you'll need to enable this quirk.
DuplicateBootOrderYES
  • Remove duplicate entries in BootOrder variable in EFI_GLOBAL_VARIABLE_GUID.
  • This quirk fixes duplicate boot order in Boot Menu.
 
Last edited:

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
2,696
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
11.0.x
Bootloader
  1. OpenCore
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
How to create a config.plist for booting macOS on AMD Desktops [OpenCore]

AMD 17 and 19h


SupportCompatibility
macOSmacOS High Sierra and above
APU SupportNo APU is supported
Supported Chipsets970, 990X, 990FX


ACPI

This section is for loading, blocking and patching the ACPI tables. The sub-sections are explained below.

Add
This section is for adding the DSDT and SSDT files for your system. This basically includes USB and CPU Power Management SSDT.

The required SSDTs for 17 and 19h Systems includes:

Path*ValueNotes
SSDT-ECUSBXYES
  • This SSDT is required for EC and USB Power.
  • This SSDT is required for proper USB Power.
  • This SSDT fixes EC and USB Power.
SSDT-CPURYES
  • This SSDT re-declares processor in DSDT as ProcessorObj
  • If you're using B550 or A520 Motherboards, you'll need to use this SSDT.
  • Do NOT use this SSDT unless if you're using B550 or A520 Motherboards.
SSDT-PLUGYES
  • This SSDT enables Power Management function.
  • It can fix potential issues such as sleep/wake function and performance.
  • This SSDT is required for a proper CPU and GPU Power Management.
  • If you're using NVIDIA GPU, it's advised to enable NVIDIA discrete GPU Power Management.

Note:
You can add your add-on DSDT or SSDTs here when performing Post-Install.


Delete

This section allows to block the ACPI tables from loading.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Patch

This section is used for device renames such as USB, Graphics and Audio. You can implement the necessary ACPI patches for optimising the ACPI system components with DSDT and SSDT. This section is important when doing Hot-patch.

The common renames for 17 and 19h Systems includes:

Table Signature*FindReplaceCommentEnabledNotes
DSDT5045475047465830Rename PEGP to GFX0 (Graphics)YES
  • Renames PEGP to GFX0 for a better power management.
  • This rename is required for implementing discrete GPU Power Management.
DSDT4844415348444546Rename HDAS to HDEF (Audio)YES
  • Renames HDAS to HDEF for Audio.
  • This rename is required for implementing Audio Function.
  • For Branded Systems, you may need to patch your DSDT. For more information on Audio implementation, read here.


Quirks
This section allows to apply certain ACPI quirks.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Booter


This section is used for booting and provides firmware fixes in relation to boot.efi. The sub-sections are explained below.

MmioWhitelist
Designed to be filled with plist dict values, describing addresses critical for particular firmware functioning when DevirtualiseMmio quirk is in use.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Quirks
This section allows to apply certain Booter quirks.

The common Booter Quirks for 17 and 19h Systems includes:

OuirksValueNotes
AvoidRunTimeDefragYES
  • Fixes certain UEFI runtime services such as date time, NVRAM, power control, etc.
  • Apart from Apple and VMware, this quirk is required by rest of the firmwares
EnableSafeModeSlideYES
  • Patch bootloader to have KASLR enabled in safe mode.
  • This quirk requires ProvideCustomSlide to be enabled.
  • This quirk can be helpful if you're unable to boot into safe mode.
EnableWriteUnprotectorYES
  • Allows write access to UEFI runtime services code.
  • This quirk may potentially weaken firmware security, please use RebuildAppleMemoryMap if the firmware supports memory attributes table (MAT)
ProvideCustomSlideYES
  • Provide custom KASLR slide on low memory.
  • This option forces macOS to use a pseudo random value among the available ones.
SetupVirtualMapYES
  • Setup virtual memory at SetVirtualAddresses.
  • Fixes several virtual address issues and tends to fix early Kernel Panics.
  • The necessity of this quirk is determined by early boot failures. Currently, new firmware with memory protection support (such as OVMF) do not support this quirk.
  • If you're using B550, A520 or TRX40 Motherboard, you'll need to disable this quirk.
RebuildAppleMemoryMapYES
  • Generates Memory Map which is compatible with macOS.
  • Since several types of firmware come with incorrect memory protection tables, this quirk often comes paired with SyncRuntimePermissions.
SyncRuntimePermissionsYES
  • Update memory permissions for runtime environment.
  • The need for this quirk is indicated by early boot failures. Only firmware released after 2017 is typically affected.
ProvideMaxSlide0
  • Provide maximum KASLR slide when higher ones are unavailable.

Note:
The values which have been not discussed above, that will remain disabled.


DeviceProperties


This section is used for adding device properties. This includes PCI Devices information such as Graphics, Audio, WiFi, Ethernet and other controllers.

The common Device properties for 17 and 19h Systems includes:

DevicesKeyValueTypeNotes
  • PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)*
  • PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x2)/Pci(0x4,0x0)/Pci(0x0,0x0)*
  • PciRoot(0x0)/Pci(0x1,0x3)/Pci(0x0,0x0)*
built-in01000000DATA
  • Fixes Internal Drive (NVMe) shown as External
  • PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x2)/Pci(0x9,0x0)/Pci(0x0,0x0)
device-idF2150000DATA
  • Enables Intel's I225-V 2.5Gb onboard Ethernet.
  • To Enable Intel's I225-V Ethernet, you'll also need to install "FakePCIID.kext" and "FakePCIID_Intel_I225-V.kext."
  • If your Motherboard doesn't have this specific Ethernet Controller, do not add this entry.

Note:
*The above PCI path are the common paths for NVMe controllers. If issue isn't fixed, probably, your path is different.


To check your PCI path, follow the guide below.


Kernel

This section is for adding and blocking kexts. The sub-sections are explained below.

Add
This section is used to add kexts, in what order to load and defines the architecture of each kext(s).

The required kexts for 17 and 19h Systems includes:

ArchBundlePath*ExecutablePathPlistPathEnabledNotes
AnyLilu.kext**Contents/MacOS/LiluContents/Info.plistYES
  • Provides arbitrary patching.
AnyVirtualSMC.kext**Contents/MacOS/VirtualSMCContents/Info.plistYES
  • Emulates Apple hardware.
  • VirtualSMC is a successor of FakeSMC.
  • This kext requires Lilu.kext to function.
AnyWhateverGreen.kext**Contents/MacOS/WhateverGreenContents/Info.plistYES
  • Provides GPU patching on macOS.
  • This kext requires Lilu.kext to function.
AnyAppleALC.kext**Contents/MacOS/AppleALCContents/Info.plistYES
  • Enables onboard/built-in Audio.
  • This kext requires Lilu.kext to function.
AnyFakePCIID.kextContents/MacOS/FakePCIIDContents/Info.plistNO
  • Provides Fake ID support.
AnyFakePCIID_Intel_I225-V.kextContents/Info.plistNO
  • Enables Intel's I225-V 2.5Gb onboard Ethernet.
  • This kext requires FakePCIID.kext to function.
  • If your Motherboard has Intel I255-V Ethernet Controller, you'll need to use this kext.

Notes:
  • All the plugins must load after loading it's dependencies otherwise the kext will no longer function even when loaded in OS X/macOS.
  • The mandatory kexts must be loaded in sorted order as shown in the above table.
  • *Indicates BundlePath i.e. Name of the Kext
  • **Indicates mandatory kexts.
  • All the added kexts must exists in the EFI/OC/Kexts directory.
  • The options which have been not discussed above, that will remain untouched.
To find the Executable Path and Plist path of kexts, follow the guide below

Block
This section allows to block kexts from loading.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Force

This section allows to force kexts from loading.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Patch
This section allows patching for Kernel and Kexts. This is where AMD Kernel patching takes place which provides support for booting macOS unofficially.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Kernel</key>
    <dict>
        <key>Patch</key>
        <array>
            <dict>
                <key>Arch</key>
                <string>x86_64</string>
                <key>Base</key>
                <string>_i386_switch_lbrs</string>
                <key>Comment</key>
                <string>algrey - Disable _i386_switch_lbrs</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.1.0</string>
                <key>Replace</key>
                <data>
                ww==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>x86_64</string>
                <key>Base</key>
                <string>_i386_lbr_init</string>
                <key>Comment</key>
                <string>algrey - Disable _i386_lbr_init</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.1.0</string>
                <key>Replace</key>
                <data>
                ww==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>x86_64</string>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - _i386_init_slave - Remove wrmsr 0x1c8</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uAEAAAC5yAEAADHSDzA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.1.0</string>
                <key>Replace</key>
                <data>
                Zg8fhAAAAAAADx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Arch</key>
                <string>x86_64</string>
                <key>Base</key>
                <string>_i386_lbr_native_state_to_mach_thread_state</string>
                <key>Comment</key>
                <string>algrey - Disable _i386_lbr_native_state_to_mach_thread_state</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.1.0</string>
                <key>Replace</key>
                <data>
                ww==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - commpage_populate -remove rdmsr</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uaABAAAPMg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx+AAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpu_topology_sort</string>
                <key>Comment</key>
                <string>algrey - cpu_topology_sort -disable _x86_validate_topology</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6AAA//8=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /wAA//8=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 0 - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                McAx2zHJMdIPokGJxgAAAAAAAAB0
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////////////wAAAAAA////
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIAx2zHJMdIPokGJxg8fQADr
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 0 - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                McAx2zHJMdIPokGJxkGJ0QAAAAAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////////////////wAAAAAA//8=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIAx2zHJMdIPokGJxkGJ0escZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - cpuid 0x8000001D instead 4</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uAQAAABEifFEiQ==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uB0AAIBEifFEiQ==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cache_info - don't set cpuid_cores_per_package</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                weAa/8A=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //D///A=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx8A6wY=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>NoOne - skip cpuid_cores_per_package test - 10.15/10.16</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAA8AAAAAAIsAvA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8AAAAA//8A/w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                AAAAAAAAAQAAAAAAAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                AAAAAAAADwAAAAAAAAAAAA==
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - skip cpuid_cores_per_package test - 10.13/10.14</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQAi128
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8A////
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                AAAAAAAAAQAAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                AAAAAAAADwAAAAAA
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - remove wrmsr</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uYsAAAAxwDHSDzA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fhAAAAAAAZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - set microcode=186</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uYsAAAAPMg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uroAAABmkA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - set flag=1</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uRcAAAAPMsHqEoDiBw==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                sgFmDx+EAAAAAABmkA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_generic_info - disable check to allow leaf7</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                ADoPgg==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                AAAPgg==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - GenuineIntel to AuthenticAMD</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                R2VudWluZUludGVsAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                QXV0aGVudGljQU1EAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                MduAPQAAAAAGdQA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////wAAAP///wA=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                u7xP6njpXQAAAJA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - jmp to calculations and set cpuid_cores_per_package - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                dXHoAAAAAEiLBQAAAABIiQUAAAAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////AAAAAP///wAAAAD///8AAAAA
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                dE4AAAAAAJCJDQAAAADpfgAAAGaQ
                </data>
                <key>ReplaceMask</key>
                <data>
                //8AAAAAAP///wAAAAD/////////
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - cores and threads calculations - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uTUAAAAPMkjB4iCJwUgJ0bkBAAEAD0XID7fBwekQg+EP
                6x65NQAAAA8ySMHiIInBSAnRuQEAAQAPRcgPt8HB6RA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                uAgAAIAx2zHJMdIPokGJzkUPtvZB/8a4HgAAgDHbMckx
                0g+iD7b3/8ZEifEx0onI9/aJwUSJ8Ol8////Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 1 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6xa5NQAAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                6yK5NQAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 1 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                6zi5NQAAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                6xK5NQAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 2 - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uTUAAAAPMkjB4iAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAA=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                QYnOuB4AAIAx2zHJMdIPog+29//GRInxMdKJyPf2ZpA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 3 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                iQUAAAAAiRUAAAAAhcB1GA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD///8AAAD//////w==
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Dx+EAAAAAAAPH4QAAAAAAA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 3 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                hcB0
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                ZpDr
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 4 - 10.13</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                iwUAAAAAiQAAAAAAiwU=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD//wAAAAD///8=
                </data>
                <key>MaxKernel</key>
                <string>17.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                iQAAAAAAAAAAAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                /wAAAAAAAAAAAAAAAAA=
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_cpuid_set_info</string>
                <key>Comment</key>
                <string>algrey - cpuid_set_info - ryzen cores and logicals count - part 4 - 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                SIsFAAAAAEiJBQAAAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////AAAA/////wAAAP8=
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                kIkAAAAAAJAAAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                //8AAAAAAP8AAAAAAAA=
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - i386_init - remove rdmsr (x3)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uZkBAAAPMkjB4iCJxkgJ1rmYAQAADzJIweIgicBICcK/
                WAIxBTHJRTHA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fhAAAAAAAZg8fhAAAAAAAZg8fhAAAAAAAZg8fhAAA
                AAAAZg8fRAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - remove Penryn check to execute default case 10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gfm8T+p4D4TFAQAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>Replace</key>
                <data>
                ZmZmDx+EAAAAAACQ
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - remove Penryn check to execute default case</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                PbxP6ngPhAABAAA=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                /////////wD///8=
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                ZmZmDx+EAAAAAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - tsc_init - grab DID and VID from MSR</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                uZQBAAAPMonDuc4AAAAPMg+2zokNAAAAAA+2xIkFAAAA
                AA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////////////////////////////AAAA////////AAAA
                /w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uWQAAcAPMg+2yInGwe4Ig+Y/RTH/MdJIichI9/ZIAcBm
                kA==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_tsc_init</string>
                <key>Comment</key>
                <string>algrey - tsc_init - skip msr_flex_ratio test and go grab FSBFrequency from EFI</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                98MAAAEAdA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                Zg8fRAAA6w==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_init - remove version check and panic - 10.15</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                g/gTdl4=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>19.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                Dx9EAAA=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>NoOne - lapic_init - remove version check and panic - 10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                g/gTD4aBAAAA
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>20.0.0</string>
                <key>Replace</key>
                <data>
                kJCQkJCQkJCQ
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_init - remove version check and panic - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                JfwAAACD+BM=
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                JfAAAADrI5A=
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>algrey - lapic_interrupt - skip checks and prevent panic - 10.15/10.16</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQO
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                //8AAAD/////
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>
                6zkPH4AAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string>_lapic_interrupt</string>
                <key>Comment</key>
                <string>algrey - lapic_interrupt - skip checks and prevent panic - 10.13/10.14</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                gz0AAAAAAHQK
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>250</integer>
                <key>Mask</key>
                <data>
                //8AAAD/////
                </data>
                <key>MaxKernel</key>
                <string>18.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                60gPH4AAAAAA
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Base</key>
                <string></string>
                <key>Comment</key>
                <string>Shaneee - mtrr_update_action - fix PAT</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>
                icCB4v//AP+BygAAAQC5dwIAAA==
                </data>
                <key>Identifier</key>
                <string>kernel</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data>
                ////////D////////////////w==
                </data>
                <key>MaxKernel</key>
                <string>20.99.99</string>
                <key>MinKernel</key>
                <string>17.0.0</string>
                <key>Replace</key>
                <data>
                uXcCAAC4BgYGBroGBgYGDzAPCQ==
                </data>
                <key>ReplaceMask</key>
                <data>
                </data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
        </array>
    </dict>
</dict>
</plist>

Notes:
  • Without the above Kernel patches, macOS will fail to boot as AMD is not officially supported by Apple yet.
  • As of now, there are 38 patches in total. Once you merge the patches, make sure to verify the number of patches.

Emulate
This section allows to spoof your CPU ID if you're using any unsupported CPU.

OptionValueNotes
OptionValueNotes
DummyPowerManagementYES
  • Disables AppleIntelCpuPowerManagement
  • Provides Dummy Power Management. Equivalent to NullCPUPowerManagement.
  • This option is for CPUs without native power management driver in macOS.
  • This option is required for all AMD based systems as there is no any native Power Management.
  • If you disable this option, you'll get kernel Panic for AppleIntelCPUPowerMangement.kext.
  • It's recommended to set this option to "enabled."

Scheme
This section allows settings related to Kernel. These settings are relevant for older Mac Operating Systems.

The required settings for 17 and 19h Systems includes:

OptionsValueNotes
FuzzyMatchYES
  • Enables checksum ignore with kernel cache instead of using latest cache available.
  • This setting allows matching the latest kernel cache with a suitable architecture when the kernel cache without suffix is unavailable, improving macOS 10.6 boot performance on several platforms.
  • This option is required for macOS Big Sur.
KernelArchAuto
  • Determines Kernel Architecture.
  • It's recommended to set this option to "Auto" and let OS X/macOS decide the Kernel Architecture.
KernelCacheAuto
  • Determines Kernel Cache.
  • It's recommended to set this option as Auto.

Quirks
This section allows to apply certain Kernel quirks. It provides settings related to Kernel and several other options related to BIOS/UEFI and USB ports.

The required quirks for 17 and 19h Systems includes:

QuirksValueNotes
CustomBIOSGuidNO
  • Performs GUID patching for UpdateSMBIOSMode Custom mode.
  • If you're having a Dell Motherboard, it's recommended to use CustomBIOSGuid quirk.
  • When using this option, you must set UpdateSMBIOSMode to Custom in PlatformInfo section.
LapicKernelPanicNO
  • Disables kernel panic on AP core lapic interrupt.
  • Equivalent to Clover's Kernel LAPIC.
  • If you're using an HP Motherboard, you'll need to enable this quirk.
PanicKNoextDumpYES
  • Prevent kernel from printing kext dump in the panic log preventing from observing panic details.
PowerTimeoutKernelPanicYES
  • Disables kernel panic on setPowerState timeout.
  • Fixes kernel panics related to power changes with Apple drivers in macOS Catalina, most notably with digital audio.
XhciPortLimitYES
  • Enables 15 port limit patch.
  • This quirk is a temporary solution and is advised to map your USB ports during post-installation.
DisableLinkeditJettisonYES
  • Disables __LINKEDIT jettison code.
  • Provides more reliable performance without keepsyms=1
  • This quirk is required for macOS Big Sur.


Misc

This section provides settings related to GUI, drive entries and debug.

Boot
This section mainly provide functions for OpenCore GUI.

The required settings for 17 and 19h Systems includes:

OptionsValueNotes
Picker Mode
  • Builtin
  • External
  • Apple
  • Sets Boot Picker Mode used for Boot Management
Builtin
  • Sets text only user interface for OpenCore menu.
External
  • Enables external theme.
  • If you have Themes installed, set this option to External.
Apple
  • Sets Apple Boot Theme, if available
Picker Attributes0
  • Sets specific attributes for picker

Debug
This section allows debug functions for boot.

The required settings for 17 and 19h Systems includes:

OptionsValueNotes
Target
  • 0
  • 67
  • A bitmask (sum) of enabled logging targets. By default all the logging output is hidden, so this option is required to be set when debugging is necessary.
0
  • If you're using RELEASE version of OpenCore, set this option to 0.
67
  • Enables logging and provides more debug information.
  • Using this option requires Debug version of OpenCore.
Disable WatchDogYES
  • Some types of firmware may not succeed in booting the operating system quickly, especially in debug mode, which results in the watchdog timer aborting the process.
  • This option turns off the watchdog timer.
  • This option also fixes Kernel Panic due to watchdog timeout.
  • It's recommended to set this option to "enabled."
AppleDebugYES
  • Enables boot.efi logging to OpenCore log, useful for debugging.
  • This option only applies to 10.15.4 and newer.
ApplePanicYES
  • Saves Kernel Panic log to OpenCore partition.


Security
This section controls security related settings such as FileVault, Boot Protect and Secure Boot functions.

The required settings for 17 and 19h Systems includes:

OptionsValueNotes
Scan Policy0
  • Define operating system detection policy.
0
  • Enables all drive at OpenCore menu.
Vault
  • Optional
  • Basic
  • Secure
  • Provides File Vault function.
Optional
  • Requires nothing, no vault is enforced, insecure.
  • It's recommended to set this option to Optional.
Basic
  • Requires vault.plist file present in OC directory.
  • This provides basic filesystem integrity verification and may protect from unintentional filesystem corruption.
Secure
  • Requires vault.sig signature file for vault.plist in OC directory.
  • This includes Basic integrity checking but also attempts to build a trusted boot chain.
BootProtect
  • None
  • Boostrap
  • Attempt to provide bootloader persistence
None
  • Enables usage of Bootstrap.efi in the directory EFI/OC/Bootstrap instead of BOOTx64.efi.
  • This setting is helpful for users using rEFInd to boot or avoid BOOTx64.efi overwrites from Windows.
Bootstrap
  • For this option to work RequestBootVarRouting is required to be enabled.
  • Use of Bootstrap option will also enable "OpenCore" instead of UEFI: OS followed by your drive name in Boot Menu.
DmgLoading
  • Disabled
  • Signed
  • Any
  • Define Disk Image (DMG) loading policy used for macOS Recovery.
Disabled
  • Disables loading of DMG images.
  • Disabled policy will still let macOS Recovery to load in most cases as there usually are boot.efi files compatible with Apple Secure Boot.
  • Manually downloaded DMG images stored in com.apple.recovery.boot directories will not load.
Signed
  • Enables only Apple-signed DMG images will load. Due to Apple Secure Boot design Signed policy will let any Apple-signed macOS Recovery to load regardless of Apple Secure Boot state, which may not always be desired.
  • It's recommended to set this option to "Signed" to avoid issues.
Any
  • Enables any DMG images will mount as normal filesystems.
  • Any policy is strongly not recommended and will cause a boot failure when Apple Secure Boot is activated.
SecureBootModel
  • Default
  • Disabled
  • Defines Apple Secure Boot hardware model.
  • Sets Apple Secure Boot hardware model and policy.
  • Specifying this value defines which operating systems will be bootable.
  • Operating systems shipped before the specified model was released will not boot.

Default
  • Enables Default Secure Boot.
  • Recent available model, currently set to j137
Disabled
  • Disables Secure Boot.
  • It's advised to set this option as "Disabled" to avoid booting issues.
AllowNvramResetYES
  • Enables NVRAM reset when pressing Command+Option+P+R
  • Enables NVRAM Reset entry in boot picker.
  • It's recommended to set this option to "Enabled."
AllowSetDefaultYES
  • Allows to set default boot device in the boot picker using CTRL+Enter and CTRL+Index.


Bless Overrides
This section is used for adding custom scanning paths through bless model.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Entries

This section is used to create boot entries when having multi boot and OpenCore fails to recognise it.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Tools
This section is used for running debugging tools such as UEFI Shell.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.



NVRAM


This section is for adding NVRAM properties, boot args and configuring SIP. The sub-sections are explained below.

Add
This section has various settings including UI, boot args, keyboard input, NVRAM settings and System Integrity Protection.

The required NVRAM properties for 17 and 19h Systems includes:

UUIDKeyValueTypeNotes
7C436110-AB2A-4BBB-A880-FE41995C9F82boot-args
  • -v
  • npci=0x2000
  • alcid=xx
  • agdpmod=pikera
  • debug=0x100
  • keepsyms=1
STRING
  • Adds boot args which provides several functions.
-v
  • Enables verbose mode. Helpful to track the installation progress or when booting.
  • We recommend to use this boot arg.
npci=0x2000
  • Disables PCI debugging related to kIOPCIConfiguratorPFM64.
  • This issue can also fix stuck on "PCI Start Configuration Begin" as there are IRQ conflicts relating to PCI lanes.

alcid=xx
  • Sets Layout ID for AppleALC.
  • The xx represents the layout ID for your codec.

agdpmod=pikera
  • Fixes Black Screen at boot for NAVI GPUs.
  • If you're using and AMD NAVI based GPU, you'll need to use this boot arg.

debug=0x100
  • This disables macOS's watchdog which helps prevents a reboot on a kernel panic.
keepsyms=1
  • This is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic.
  • This can give some more helpful insight as to what's causing the panic itself.
nvda_drv31DATA
  • Enables NVIDIA WebDrivers.
  • Equivalent to Clover's NVIDIAWeb option in System Parameters.
  • If you're using an NVIDIA GPU, you'll need to use this key.
csr-active-config
  • 00000000
DATA
  • Defines SIP type.
00000000
  • Enables SIP completely. (0x0)
  • It's advised to configure SIP via recovery using "csrutil."
  • For more information on SIP, check the SIP disabling guide.
prev-lang:kbden-US:0STRING
  • Sets Keyboard language.

Note:
  • If "npci=0x2000", doesn't works, use "npci=0x3000."
  • Do not use "npci=0x2000" with "npci=0x3000". Use only one. Never both.

Delete
Removes NVRAM variables from a map (plist dict) of GUIDs to an array (plist array) of variable names in plist string format.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


LegacySchema
This section is used for assigning NVRAM variables, used with LegacyEnable set to YES.
Enables loading of NVRAM variable file named nvram.plist from EFI volume root

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


OptionsValueNotes
OptionsValueComment
WriteFlashYES
  • Enables writing off added Variables to flash memory
  • It is recommended to have this value enabled on most types of firmware but it is left configurable for firmware that may have issues with NVRAM variable storage garbage collection or similar.


PlatformInfo

This section allows to set SMBIOS. It's an important section and has various impact on your system. The sub-sections are explained below.

DatHub - Generic - PlatformNVRAM

DataHub

OptionValueNotes
Add this section in config.plistYESAdds DataHub field

Generic

The required NVRAM properties for 17 and 19h Systems includes:


OptionsValueNotes
Add this section in config.plistYESAdds Generic field
from SMBIOSYES
ProcessorType0
  • Sets SMBIOS Processor Type.
  • This will override your actual CPU type.
  • It's recommended to set this option to "0" to detect the original CPU by macOS instead of using SMBIOS CPU Type.
SystemMemoryStatusAuto
  • Indicates whether system memory is upgradable in PlatformFeature. This controls the visibility of the Memory tab in About This Mac.
Auto
  • Use the original PlatformFeature value.
  • It's recommended to set this option to "Auto."
Upgradable
  • Explicitly unset PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
Soldered
  • explicitly set PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
SpoofVendorYESSets SMBIOS vendor fields to Acidanthera

PlatformNVRAM

OptionValueNote
Add this section in config.plistYESAdds PlatformNVRAM field

Memory
This section allows to configure settings for your RAM.

To configure your memory settings, a separate thread is available


SMBIOS

OptionValueNote
Add this section in config.plistYESAdd SMBIOS field.

System

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.

BIOS

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Chassis

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Board



OptionsValueNotes
AutomaticYES
  • Generate PlatformInfo based on Generic section instead of using values from DataHub, NVRAM, and SMBIOS sections.
UpdateDatHubYES
  • Update Data Hub fields. These fields are read from Generic or DataHub sections depending on Automatic value.
UpdateNVRAMYES
  • Update NVRAM fields related to platform information.
UpdateSMBIOSYES
  • Update SMBIOS fields. These fields are read from Generic or SMBIOS sections depending on Automatic value.
UpdateSMBIOSMode
  • Auto
  • Create
  • Overwrite
  • Custom
  • Update SMBIOS fields approach
Auto
  • Sets SMBIOS Mode to Auto
Create
  • Sets SMBIOS Mode to Create
Overwrite
  • Sets SMBIOS Mode to Overwrite
Custom
  • Sets SMBIOS Mode to Custom
If you're having a Dell Motherboard, it's advised to use Custom option.
When using this option, you must set CustomSMBIOSGuid quirk in Kernel section.
CustomMemoryNO
  • Use custom memory configuration defined in the Memory section. This completely replaces any existing memory configuration in SMBIOS, and is only active when UpdateSMBIOS is set to true.


UEFI

This section is for adding UEFI drivers and related settings.

APFS
Provides APFS settings for APFS Driver.

The required settings for 17 and 19h Systems includes:

OptionsValueNotes
JumpStartHotplugNO
  • Load APFS drivers for newly connected devices.
  • Enables Hot plug of APFS drives in boot picker.
  • It's advised to disable this option unless required.


Audio
Provides Audio related settings for Audiodxe Driver and Boot Chime.

Notes:
  • The Audio section in UEFI section is unrelated to Audio function on Mac.
  • This setting is important for Boot Chime. It's advised to setup this section during Post-Installation.
To enable Boot chime, follow the guide below.


Drivers
This section is for adding .efi drivers.

The required drivers for 17 and 19h Systems includes:

DriversValueNotes
AudioDxe.efiYES
  • Provides Boot Chime support
  • If you want to use Boot Chime, you need this driver.
OpenCanopy.efi*YES
  • Provides GUI functionality for OpenCore Boot screen.
  • This driver is required if you need GUI or theme for OpenCore.
OpenRuntime.efi*YES
  • Runtime driver including several other drivers merged such as ApfsDriverLoader.
  • OpenRuntime.efi is a replacement for AptioMemoryFix.efi driver.
HFSPlus.efi*YES
  • Provides reading of HFS+ Volumes/drives in OpenCore Boot Picker.
  • Without HFSPlus.efi driver, you won't be able to see any HFS+ volumes including your USB installer and installation drive for macOS Sierra and prior in OpenCore boot picker.

Notes:
  • *Indicates Mandatory Drivers.
  • All the added drivers must exists in the EFI/OC/Drivers directory.

OptionValueComment
Connect DriversYES
  • Specifies and adds the drivers for booting.

Input
This section provides settings for FileVault and Hotkey support for Keyboard passthrough.

Notes:
  • Normally, this section requires no modification and will remain untouched.
If you want to enable FileVault, follow the guide below.

Output
This section provides settings for OpenCore GUI.

Note:
Normally, this section requires no modification and will remain untouched.


ProtocolsOverride

This section provides settings for Virtual machines, legacy Macs and FileVault users.

Note:
Normally, this section requires no modification and will remain untouched.

If you want to enable FileVault, follow the guide below.


ReservedMemory
This section is used for exempting certain memory regions from OS(s) to use, mainly relevant for Sandy Bridge iGPUs or systems with faulty memory.

Note:
For 17 and 19h Systems, this section requires no modification and will remain untouched.


Quirks
The required Quirks for 15 and 16h Systems includes:


OptionsValueNotes
RequestBootVarRootingYES
  • Redirects AptioMemoryFix from EFI_GLOBAL_VARIABLE_GUID to OC_VENDOR_VARIABLE_GUID.
  • This quirk is required for using the Startup Disk preference pane in firmwares that is not compatible with macOS boot entries.
  • It's recommended to enable this quirk on all systems.
UnblockFsConnectNO
  • Some types of firmware block partition handles by opening them in By Driver mode, resulting in being unable to install File System protocols.
  • If you're using an HP Motherboard, you'll need to enable this quirk.
DuplicateBootOrderYES
  • Remove duplicate entries in BootOrder variable in EFI_GLOBAL_VARIABLE_GUID.
  • This quirk fixes duplicate boot order in Boot Menu.
 
Last edited:

Similar threads

Trending Threads

Latest posts

Forum statistics

Threads
553
Messages
5,564
Members
4,944
Latest member
Melgio