mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-15 03:46:28 +10:00
Add SurPlus patch
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
- `CSR_ALLOW_UNAUTHENTICATED_ROOT`
|
||||
- Fix Kepler DisplayPort output
|
||||
- Apply `agdpmod=vit9696` patch
|
||||
- Add Syncretic's SurPlus 11.3+ Race Condition Patch
|
||||
- [Source](https://github.com/reenigneorcim/SurPlus)
|
||||
|
||||
## 0.2.5
|
||||
|
||||
|
||||
+9
-5
@@ -55,14 +55,15 @@ class OpenCoreLegacyPatcher:
|
||||
parser.add_argument("--moderate_smbios", help="Moderate SMBIOS Patching", action="store_true", required=False)
|
||||
parser.add_argument("--moj_cat_accel", help="Allow Root Patching on Mojave and Catalina", action="store_true", required=False)
|
||||
parser.add_argument("--disable_thunderbolt", help="Disable Thunderbolt on 2013-2014 MacBook Pros", action="store_true", required=False)
|
||||
parser.add_argument("--force_surplus", help="Force SurPlus in all newer OSes", action="store_true", required=False)
|
||||
|
||||
# Building args requiring value values (ie. --model iMac12,2)
|
||||
parser.add_argument("--model", action="store", help="Set custom model", required=False)
|
||||
parser.add_argument("--disk", action="store", help="Specifies disk to install to", required=False)
|
||||
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
|
||||
parser.add_argument("--lb_delay", action="store", help="Set Latebloom delay in ms", required=False)
|
||||
parser.add_argument("--lb_range", action="store", help="Set Latebloom range in ms", required=False)
|
||||
parser.add_argument("--lb_debug", action="store", help="Set Latebloom debug", required=False)
|
||||
# parser.add_argument("--lb_delay", action="store", help="Set Latebloom delay in ms", required=False)
|
||||
# parser.add_argument("--lb_range", action="store", help="Set Latebloom range in ms", required=False)
|
||||
# parser.add_argument("--lb_debug", action="store", help="Set Latebloom debug", required=False)
|
||||
|
||||
# SysPatch args
|
||||
parser.add_argument("--patch_sys_vol", help="Patches root volume", action="store_true", required=False)
|
||||
@@ -127,6 +128,9 @@ class OpenCoreLegacyPatcher:
|
||||
if args.disable_thunderbolt:
|
||||
print("- Set Disable Thunderbolt configuration")
|
||||
self.constants.disable_thunderbolt = True
|
||||
if args.force_surplus:
|
||||
print("- Forcing SurPlus override configuration")
|
||||
self.constants.force_surplus = True
|
||||
if args.moderate_smbios:
|
||||
print("- Set Moderate SMBIOS Patching configuration")
|
||||
self.constants.serial_settings = "Moderate"
|
||||
@@ -238,8 +242,8 @@ If you plan to create the USB for another machine, please select the "Change Mod
|
||||
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
|
||||
self.constants.serial_settings == "Moderate"
|
||||
|
||||
if self.constants.latebloom_delay == 0:
|
||||
self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||
# if self.constants.latebloom_delay == 0:
|
||||
# self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||
|
||||
if Utilities.get_nvram("gpu-power-prefs", "FA4CE28D-B62F-4C99-9CC3-6815686E30F9", decode=True):
|
||||
self.constants.allow_ts2_accel = False
|
||||
|
||||
@@ -89,8 +89,8 @@ class OpenCoreLegacyPatcher:
|
||||
# users can override this in settings
|
||||
self.constants.allow_ts2_accel = False
|
||||
|
||||
if self.constants.latebloom_delay == 0:
|
||||
self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||
# if self.constants.latebloom_delay == 0:
|
||||
# self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||
|
||||
# Check if running in RecoveryOS
|
||||
self.constants.recovery_status = Utilities.check_recovery()
|
||||
@@ -164,10 +164,7 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
|
||||
[f"Enable Kext DEBUG:\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_kext],
|
||||
] + (
|
||||
[
|
||||
[
|
||||
f"Set Latebloom args:\t\tDelay {self.constants.latebloom_delay}, Range {self.constants.latebloom_range}, Debug {self.constants.latebloom_debug}",
|
||||
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).latebloom_settings,
|
||||
]
|
||||
[f"Set SurPlus Settings:\tCurrently {self.constants.force_surplus}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_surplus]
|
||||
]
|
||||
if ((self.constants.custom_model or self.computer.real_model) in ModelArray.PCIRaceCondition)
|
||||
else []
|
||||
|
||||
+17
-6
@@ -172,7 +172,7 @@ class BuildOpenCore:
|
||||
# Misc
|
||||
("FeatureUnlock.kext", self.constants.featureunlock_version, self.constants.featureunlock_path, lambda: self.model in ModelArray.FeatureUnlockSupport),
|
||||
("DebugEnhancer.kext", self.constants.debugenhancer_version, self.constants.debugenhancer_path, lambda: self.constants.kext_debug is True),
|
||||
("latebloom.kext", self.constants.latebloom_version, self.constants.latebloom_path, lambda: self.model in ModelArray.PCIRaceCondition),
|
||||
# ("latebloom.kext", self.constants.latebloom_version, self.constants.latebloom_path, lambda: self.model in ModelArray.PCIRaceCondition),
|
||||
("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path, lambda: self.model in ["MacBook4,1", "MacBook5,2"]),
|
||||
]:
|
||||
self.enable_kext(name, version, path, check)
|
||||
@@ -180,11 +180,22 @@ class BuildOpenCore:
|
||||
if self.constants.allow_oc_everywhere is False:
|
||||
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.driver.AppleSMC")["Enabled"] = True
|
||||
|
||||
if self.get_kext_by_bundle_path("latebloom.kext")["Enabled"] is True:
|
||||
print(f"- Setting latebloom delay of {self.constants.latebloom_delay}ms, range {self.constants.latebloom_range}ms, debug {bool(self.constants.latebloom_debug)}")
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"][
|
||||
"boot-args"
|
||||
] += f" latebloom={self.constants.latebloom_delay} lb_range={self.constants.latebloom_range} lb_debug={self.constants.latebloom_debug}"
|
||||
# if self.get_kext_by_bundle_path("latebloom.kext")["Enabled"] is True:
|
||||
# print(f"- Setting latebloom delay of {self.constants.latebloom_delay}ms, range {self.constants.latebloom_range}ms, debug {bool(self.constants.latebloom_debug)}")
|
||||
# self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"][
|
||||
# "boot-args"
|
||||
# ] += f" latebloom={self.constants.latebloom_delay} lb_range={self.constants.latebloom_range} lb_debug={self.constants.latebloom_debug}"
|
||||
if self.model in ModelArray.PCIRaceCondition:
|
||||
# Ref: https://github.com/reenigneorcim/SurPlus
|
||||
print("- Adding SurPlus Patch for Race Condition")
|
||||
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "SurPlus v1 - PART 1 of 2 - Patch read_erandom (inlined in _early_random)")["Enabled"] = True
|
||||
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "SurPlus v1 - PART 2 of 2 - Patch register_and_init_prng")["Enabled"] = True
|
||||
if self.constants.force_surplus is True:
|
||||
# Syncretic forces SurPlus to only run on Beta 7 and older by default for saftey reasons
|
||||
# If users desires, allow forcing in newer OSes
|
||||
print("- Allowing SurPlus on all newer OSes")
|
||||
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "SurPlus v1 - PART 1 of 2 - Patch read_erandom (inlined in _early_random)")["MaxKernel"] = ""
|
||||
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "SurPlus v1 - PART 2 of 2 - Patch register_and_init_prng")["MaxKernel"] = ""
|
||||
|
||||
if not self.constants.custom_model and (self.constants.allow_oc_everywhere is True or self.model in ModelArray.MacPro):
|
||||
# Use Innie's same logic:
|
||||
|
||||
@@ -676,3 +676,29 @@ for Windows may prefer to only work with the dGPU and eGPU active.
|
||||
print("Returning to previous menu")
|
||||
else:
|
||||
self.dGPU_switch_support()
|
||||
|
||||
def set_surplus(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Override SurPlus MaxKernel"])
|
||||
print(
|
||||
"""
|
||||
By default OCLP will only allow SurPlus to be used on kernels 21.1.0
|
||||
and older (ie. Monterey beta 7 and older). This is for saftey reasons
|
||||
in the event newer OSes may break compatibility and result in boot loops.
|
||||
|
||||
Enabling this option will allow SurPlus to have no MaxKernel set, and
|
||||
therefore allow it to run on anything newer than 11.2.3. However if you
|
||||
do toggle this setting, ensure you have a known-good OS to return to in
|
||||
the event there's issues.
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Force SurPlus on all newer OSes?(y/n/q): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.force_surplus = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.force_surplus = False
|
||||
elif change_menu in {"q", "Q", "Quit", "quit"}:
|
||||
print("Returning to previous menu")
|
||||
else:
|
||||
self.set_surplus()
|
||||
|
||||
@@ -143,6 +143,7 @@ class Constants:
|
||||
self.disable_thunderbolt = False # Disable Thunderbolt Controller
|
||||
self.set_alc_usage = True # Set AppleALC usage
|
||||
self.dGPU_switch = True # Set Display GPU Switching for Windows
|
||||
self.force_surplus = False # Force SurPlus patch in newer OSes
|
||||
|
||||
# OS Versions
|
||||
## Based off Major Kernel Version
|
||||
|
||||
@@ -1110,6 +1110,78 @@
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Base</key>
|
||||
<string>_early_random</string>
|
||||
<key>Comment</key>
|
||||
<string>SurPlus v1 - PART 1 of 2 - Patch read_erandom (inlined in _early_random)</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Find</key>
|
||||
<data>
|
||||
AHQjSIs=
|
||||
</data>
|
||||
<key>Identifier</key>
|
||||
<string>kernel</string>
|
||||
<key>Limit</key>
|
||||
<integer>800</integer>
|
||||
<key>Mask</key>
|
||||
<data>
|
||||
</data>
|
||||
<key>MaxKernel</key>
|
||||
<string>21.1.0</string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.4.0</string>
|
||||
<key>Replace</key>
|
||||
<data>
|
||||
AOsjSIs=
|
||||
</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>_register_and_init_prng</string>
|
||||
<key>Comment</key>
|
||||
<string>SurPlus v1 - PART 2 of 2 - Patch register_and_init_prng</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Find</key>
|
||||
<data>
|
||||
ukgBAAAx9g==
|
||||
</data>
|
||||
<key>Identifier</key>
|
||||
<string>kernel</string>
|
||||
<key>Limit</key>
|
||||
<integer>256</integer>
|
||||
<key>Mask</key>
|
||||
<data>
|
||||
</data>
|
||||
<key>MaxKernel</key>
|
||||
<string>21.1.0</string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.4.0</string>
|
||||
<key>Replace</key>
|
||||
<data>
|
||||
ukgBAADrBQ==
|
||||
</data>
|
||||
<key>ReplaceMask</key>
|
||||
<data>
|
||||
</data>
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Quirks</key>
|
||||
<dict>
|
||||
|
||||
Reference in New Issue
Block a user