18#include <Library/BaseMemoryLib.h>
21#include <Library/PrintLib.h>
24#include <Library/UefiLib.h>
29 0xB9, 0xE2, 0x00, 0x00, 0x00
36 0x66, 0xB9, 0xE2, 0x00
69 if (Patcher == NULL) {
70 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on kernel version %u\n", __func__,
KernelVersion));
81 while (Walker < WalkerEnd) {
92 }
else if ( (Walker[0] ==
mMovCxE2[0])
105 while (Walker < WalkerTmp) {
106 if ( (Walker[0] ==
mWrmsr[0])
107 && (Walker[1] ==
mWrmsr[1]))
118 if ( ((Walker[0] == 0xC9) && (Walker[1] == 0xC3))
119 || ((Walker[0] == 0x5D) && (Walker[1] == 0xC3)))
128 if ( ((Walker[0] == 0xB9) && (Walker[3] == 0) && (Walker[4] == 0))
129 || ((Walker[0] == 0x66) && (Walker[1] == 0xB9) && (Walker[3] == 0)))
148 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success AppleCpuPmCfgLock patch\n"));
152 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply AppleCpuPmCfgLock patch\n"));
153 return EFI_NOT_FOUND;
176 0xB9, 0xE2, 0x00, 0x00, 0x00,
183 0xB9, 0xE2, 0x00, 0x00, 0x00,
190 .Comment = DEBUG_POINTER (
"XcpmCfgLockRel"),
191 .Base =
"_xcpm_idle",
205 0xBF, 0xE2, 0x00, 0x00, 0x00,
220 .Comment = DEBUG_POINTER (
"XcpmCfgLockDbg"),
221 .Base =
"_xcpm_cst_control_evaluate",
254 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping XcpmCfgLock on %u\n",
KernelVersion));
264 if (EFI_ERROR (Status)) {
265 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate _xcpm_core_scope_msrs for XcpmCfgLock patch - %r\n", Status));
266 return EFI_NOT_FOUND;
269 while (Record < Last) {
276 "OCAK: Zeroing _xcpm_core_scope_msrs 0x%X applicable CPUs (%u)\n",
290 if (EFI_ERROR (Status)) {
291 DEBUG ((DEBUG_INFO,
"OCAK: Failed to apply _xcpm_idle release patch - %r, trying dbg\n", Status));
293 if (EFI_ERROR (Status)) {
294 DEBUG ((DEBUG_WARN,
"OCAK: Failed to apply dbg _xcpm_cst_control_evaluate patches - %r\n", Status));
298 if ((Replacements > 0) && !EFI_ERROR (Status)) {
299 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success XcpmCfgLock patch\n"));
303 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply XcpmCfgLock patch\n"));
304 return EFI_NOT_FOUND;
310 0xB9, 0xAA, 0x01, 0x00, 0x00,
317 0xB9, 0xAA, 0x01, 0x00, 0x00,
324 .Comment = DEBUG_POINTER (
"MiscPwrMgmtRel"),
339 0xB9, 0xAA, 0x01, 0x00, 0x00,
349 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
359 0x00, 0x00, 0x00, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x00, 0x00,
379 .Comment = DEBUG_POINTER (
"MiscPwrMgmtRel Sequoia"),
394 0xBF, 0xAA, 0x01, 0x00, 0x00,
409 .Comment = DEBUG_POINTER (
"MiscPwrMgmtDbg"),
442 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping XcpmExtraMsrs on %u\n",
KernelVersion));
452 if (EFI_ERROR (Status)) {
453 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate _xcpm_pkg_scope_msrs for XcpmExtraMsrs patch - %r\n", Status));
454 return EFI_NOT_FOUND;
457 while (Record < Last) {
469 "OCAK: Zeroing _xcpm_pkg_scope_msrs 0x%X applicable CPUs (%u)\n",
480 if (EFI_ERROR (Status)) {
481 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate _xcpm_SMT_scope_msrs for XcpmExtraMsrs patch - %r\n", Status));
482 return EFI_NOT_FOUND;
485 while (Record < Last) {
492 "OCAK: Zeroing _xcpm_SMT_scope_msrs data 0x%X applicable CPUs (%u)\n",
510 if (EFI_ERROR (Status)) {
511 DEBUG ((DEBUG_WARN,
"OCAK: Failed to patch writes to XcpmExtraMsrs MSR_MISC_PWR_MGMT macOS 15+ - %r\n", Status));
515 if (EFI_ERROR (Status)) {
516 DEBUG ((DEBUG_INFO,
"OCAK: Failed to patch writes to XcpmExtraMsrs MSR_MISC_PWR_MGMT old - %r, trying dbg\n", Status));
518 if (EFI_ERROR (Status)) {
519 DEBUG ((DEBUG_WARN,
"OCAK: Failed to patch writes to XcpmExtraMsrs MSR_MISC_PWR_MGMT old - %r\n", Status));
524 if ((Replacements > 0) && !EFI_ERROR (Status)) {
525 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success XcpmExtraMsrs patch\n"));
529 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply XcpmExtraMsrs patch\n"));
530 return EFI_NOT_FOUND;
536 0xB9, 0x99, 0x01, 0x00, 0x00,
543 0xB9, 0x99, 0x01, 0x00, 0x00,
551 0xB9, 0x99, 0x01, 0x00, 0x00,
559 0xB9, 0x99, 0x01, 0x00, 0x00,
567 0xB9, 0x99, 0x01, 0x00, 0x00,
569 0xB8, 0x00, 0xFF, 0x00, 0x00,
594 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping XcpmForceBoost on %u\n",
KernelVersion));
600 Start += EFI_PAGE_SIZE;
603 while (Current < Last) {
624 if (Current == Last) {
625 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate MSR_IA32_PERF_CONTROL write for XcpmForceBoost patch\n"));
626 return EFI_NOT_FOUND;
629 Start = Current - EFI_PAGE_SIZE;
632 while (Current >=
Start) {
636 if ( (Current[0] == 0x55)
637 && (Current[1] == 0x48)
638 && (Current[2] == 0x89)
639 && (Current[3] == 0xE5))
647 if (Current <
Start) {
648 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate MSR_IA32_PERF_CONTROL prologue for XcpmForceBoost patch\n"));
649 return EFI_NOT_FOUND;
652 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch write max to MSR_IA32_PERF_CONTROL for XcpmForceBoost patch\n"));
672 .Comment = DEBUG_POINTER (
"RemoveUsbLimitV1"),
673 .Base =
"__ZN15AppleUSBXHCIPCI11createPortsEv",
699 .Comment = DEBUG_POINTER (
"RemoveUsbLimitV2"),
700 .Base =
"__ZN12AppleUSBXHCI11createPortsEv",
726 .Comment = DEBUG_POINTER (
"RemoveUsbLimitIoP1 part 1"),
727 .Base =
"__ZN16AppleUSBHostPort15setPortLocationEj",
741 .Comment = DEBUG_POINTER (
"RemoveUsbLimitIoP1 part 1"),
742 .Base =
"__ZN16AppleUSBHostPort15setPortLocationEv",
756 0x41, 0x83, 0x00, 0x0F,
764 0xFF, 0xFF, 0x00, 0xFF,
772 0x00, 0x00, 0x00, 0x3F,
780 0x00, 0x00, 0x00, 0xFF,
788 .Comment = DEBUG_POINTER (
"RemoveUsbLimitIoP1 part 2"),
789 .Base =
"__ZN16AppleUSBHostPort15setPortLocationEj",
814 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping port patch IOUSBHostFamily on %u\n",
KernelVersion));
818 if (Patcher == NULL) {
819 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
820 return EFI_NOT_FOUND;
829 if (EFI_ERROR (Status)) {
830 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply Tahoe port patch com.apple.iokit.IOUSBHostFamily part 1 - %r\n", Status));
832 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success Tahoe port com.apple.iokit.IOUSBHostFamily part 1\n"));
836 if (EFI_ERROR (Status)) {
837 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply pre-Tahoe port patch com.apple.iokit.IOUSBHostFamily part 1 - %r\n", Status));
839 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success pre-Tahoe port com.apple.iokit.IOUSBHostFamily part 1\n"));
847 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping port patch com.apple.iokit.IOUSBHostFamily part 2 on %u\n",
KernelVersion));
852 if (EFI_ERROR (Status)) {
853 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply port patch com.apple.iokit.IOUSBHostFamily part 2 - %r\n", Status));
855 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success port com.apple.iokit.IOUSBHostFamily part 2\n"));
871 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping modern port patch AppleUSBXHCI on %u\n",
KernelVersion));
875 if (Patcher == NULL) {
876 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
877 return EFI_NOT_FOUND;
902 if (!EFI_ERROR (Status)) {
907 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.usb.AppleUSBXHCI\n"));
909 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.usb.AppleUSBXHCI - %r\n", Status));
915 if ( EFI_ERROR (Status)
918 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for AppleUSBXHCI on %u\n",
KernelVersion));
935 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping legacy port patch AppleUSBXHCIPCI on %u\n",
KernelVersion));
939 if (Patcher == NULL) {
940 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
941 return EFI_NOT_FOUND;
948 if (EFI_ERROR (Status)) {
949 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy port patch AppleUSBXHCIPCI - %r\n", Status));
951 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success apply legacy port AppleUSBXHCIPCI\n"));
957 if ( EFI_ERROR (Status)
960 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for legacy port AppleUSBXHCIPCI on %u\n",
KernelVersion));
970 0x41, 0x50, 0x50, 0x4C, 0x45, 0x20, 0x53, 0x53, 0x44, 0x00
976 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
982 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorageV1"),
996 0x41, 0x50, 0x50, 0x4C, 0x45, 0x00
1002 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1008 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorageV2"),
1013 .ReplaceMask = NULL,
1022 0x48, 0x8D, 0x3D, 0x00, 0x00, 0x00, 0x00,
1023 0xBA, 0x09, 0x00, 0x00, 0x00
1029 0x48, 0x8D, 0x3D, 0x00, 0x00, 0x00, 0x00,
1030 0xBA, 0x05, 0x00, 0x00, 0x00
1036 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1037 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1043 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1044 0xBA, 0x00, 0x00, 0x00, 0x00
1050 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1051 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1057 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 13.3+ part 1"),
1058 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1072 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 13.3+ part 2"),
1073 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1087 0x4C, 0x8D, 0x2D, 0x00, 0x00, 0x00, 0x00,
1089 0xE8, 0x00, 0x00, 0x00, 0x00,
1096 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1098 0xFF, 0x00, 0x00, 0x00, 0x00,
1105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1107 0x31, 0xC0, 0x90, 0x90, 0x90,
1114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1116 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1123 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 14.4+"),
1124 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1144 if (Patcher == NULL) {
1145 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1146 return EFI_NOT_FOUND;
1154 if (EFI_ERROR (Status)) {
1155 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 14.4+ com.apple.iokit.IOAHCIBlockStorage - %r\n", Status));
1157 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 14.4+ com.apple.iokit.IOAHCIBlockStorage\n"));
1168 if (EFI_ERROR (Status)) {
1169 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 13.3+ com.apple.iokit.IOAHCIBlockStorage part 1 - %r\n", Status));
1172 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 13.3+ com.apple.iokit.IOAHCIBlockStorage part 1\n"));
1176 if (EFI_ERROR (Status)) {
1177 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 13.3+ com.apple.iokit.IOAHCIBlockStorage part 2 - %r\n", Status));
1179 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 13.3+ com.apple.iokit.IOAHCIBlockStorage part 2\n"));
1186 if (EFI_ERROR (Status)) {
1187 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch legacy com.apple.iokit.IOAHCIBlockStorage V1 - %r\n", Status));
1189 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOAHCIBlockStorage V1\n"));
1194 if (EFI_ERROR (Status)) {
1195 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch legacy com.apple.iokit.IOAHCIBlockStorage V2 - %r\n", Status));
1197 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOAHCIBlockStorage V2\n"));
1200 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping IOAHCIBlockStorage legacy V2 on %u\n",
KernelVersion));
1207 if ( EFI_ERROR (Status)
1210 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for legacy IOAHCIBlockStorage on %u\n",
KernelVersion));
1220 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C
1226 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C
1232 .Comment = DEBUG_POINTER (
"IOAHCIPort"),
1237 .ReplaceMask = NULL,
1252 if (Patcher == NULL) {
1253 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1254 return EFI_NOT_FOUND;
1267 if (EFI_ERROR (Status)) {
1268 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.AppleAHCIPort - %r\n", Status));
1270 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.AppleAHCIPort\n"));
1279 0x44, 0x4D, 0x41, 0x52, 0x00
1285 0x52, 0x41, 0x4D, 0x44, 0x00
1291 .Comment = DEBUG_POINTER (
"AppleIoMapper"),
1296 .ReplaceMask = NULL,
1312 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping AppleIoMapper patch on %u\n",
KernelVersion));
1316 if (Patcher == NULL) {
1317 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1318 return EFI_NOT_FOUND;
1322 if (EFI_ERROR (Status)) {
1323 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily AppleIoMapper - %r\n", Status));
1325 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily AppleIoMapper\n"));
1340 .Comment = DEBUG_POINTER (
"AppleIoMapperMapping"),
1341 .Base =
"__ZN8AppleVTD14addMemoryRangeEyy",
1345 .ReplaceMask = NULL,
1364 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping AppleIoMapperMapping patch on %u\n",
KernelVersion));
1368 if (Patcher == NULL) {
1369 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1370 return EFI_NOT_FOUND;
1374 if (EFI_ERROR (Status)) {
1375 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily AppleIoMapperMapping - %r\n", Status));
1377 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily AppleIoMapperMapping\n"));
1386 0xB8, 0x01, 0x00, 0x00, 0x00,
1393 .Comment = DEBUG_POINTER (
"DummyCpuPm"),
1394 .Base =
"__ZN28AppleIntelCPUPowerManagement5startEP9IOService",
1398 .ReplaceMask = NULL,
1414 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping dummy AppleIntelCPUPowerManagement patch on %u\n",
KernelVersion));
1418 if (Patcher == NULL) {
1419 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1420 return EFI_NOT_FOUND;
1424 if (EFI_ERROR (Status)) {
1425 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch dummy AppleIntelCPUPowerManagement - %r\n", Status));
1427 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success dummy AppleIntelCPUPowerManagement\n"));
1436 0x00, 0x00, 0x00, 0x40
1442 0x00, 0x00, 0x00, 0x80
1448 .Comment = DEBUG_POINTER (
"IncreasePciBarSize"),
1449 .Base =
"__ZN17IOPCIConfigurator24probeBaseAddressRegisterEP16IOPCIConfigEntryjj",
1453 .ReplaceMask = NULL,
1463 0x01, 0x00, 0x00, 0x40
1469 0x01, 0x00, 0x00, 0x80
1475 .Comment = DEBUG_POINTER (
"IncreasePciBarSizeLegacy"),
1476 .Base =
"__ZN17IOPCIConfigurator24probeBaseAddressRegisterEP16IOPCIConfigEntryjj",
1480 .ReplaceMask = NULL,
1497 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping com.apple.iokit.IOPCIFamily IncreasePciBarSize on %u\n",
KernelVersion));
1501 if (Patcher == NULL) {
1502 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1503 return EFI_NOT_FOUND;
1507 if (EFI_ERROR (Status)) {
1508 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r, trying legacy patch\n", Status));
1510 if (EFI_ERROR (Status)) {
1511 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r\n", Status));
1513 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOPCIFamily IncreasePciBarSize\n"));
1516 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily IncreasePciBarSize\n"));
1525 0x66, 0xBA, 0xF8, 0x03
1542 IN UINTN RegisterBase,
1543 IN UINT32 RegisterStride
1549 if (RegisterBase <= MAX_UINT16) {
1550 DEBUG ((DEBUG_INFO,
"OCAK: Registering PCI serial device PMIO port 0x%04X\n", RegisterBase));
1553 DEBUG ((DEBUG_INFO,
"OCAK: Registering PCI serial device register stride %u\n", RegisterStride));
1556 DEBUG ((DEBUG_INFO,
"OCAK: NOT registering unsupported PCI serial device register base 0x%X", RegisterBase));
1580 ASSERT (Patcher != NULL);
1586 while (Walker < WalkerEnd) {
1594 "OCAK: Matched PMIO serial register base <%02X %02X %02X %02X>\n",
1600 WalkerPmio = &Walker[2];
1603 while (Walker < WalkerTmp) {
1607 if ((*Walker == 0xEC) || (*Walker == 0xEE)) {
1610 "OCAK: Matched PMIO serial register base context %a <%02X>, patching register base\n",
1611 *Walker == 0xEC ?
"in" :
"out",
1618 DEBUG ((DEBUG_VERBOSE,
"OCAK: Before register base patch <%02X %02X>\n", WalkerPmio[0], WalkerPmio[1]));
1620 WalkerPmio[0] = Pmio & 0xFFU;
1621 WalkerPmio[1] = (Pmio >> 8U) & 0xFFU;
1622 DEBUG ((DEBUG_VERBOSE,
"OCAK: After register base patch <%02X %02X>\n", WalkerPmio[0], WalkerPmio[1]));
1639 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patched CustomPciSerialDevice PMIO port %u times\n", Count));
1643 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to patch CustomPciSerialDevice PMIO port!\n"));
1644 return EFI_NOT_FOUND;
1659 ASSERT (Patcher != NULL);
1661 Status = EFI_INVALID_PARAMETER;
1672 if (EFI_ERROR (Status)) {
1673 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch CustomPciSerialDevice - %r\n"));
1675 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success CustomPciSerialDevice\n"));
1684 0x45, 0x42, 0x39, 0x44, 0x32, 0x44, 0x33, 0x31
1690 0x45, 0x42, 0x39, 0x44, 0x32, 0x44, 0x33, 0x35
1696 .Comment = DEBUG_POINTER (
"CustomSmbiosGuid"),
1701 .ReplaceMask = NULL,
1716 if (Patcher == NULL) {
1717 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1718 return EFI_NOT_FOUND;
1722 if (!EFI_ERROR (Status)) {
1723 DEBUG ((DEBUG_INFO,
"OCAK: [OK] SMBIOS Patch success\n"));
1725 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply SMBIOS patch - %r\n", Status));
1734 0x00, 0x25, 0x2E, 0x2A, 0x73, 0x00
1740 0x00, 0x00, 0x2E, 0x2A, 0x73, 0x00
1746 .Comment = DEBUG_POINTER (
"PanicKextDump"),
1751 .ReplaceMask = NULL,
1771 ASSERT (Patcher != NULL);
1774 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping PanicKextDump on %u\n",
KernelVersion));
1786 "__ZN6OSKext19printKextPanicListsEPFiPKczE",
1789 if (EFI_ERROR (Status) || (Record >= Last)) {
1790 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate printKextPanicLists (%p) - %r\n", Record, Status));
1791 return EFI_NOT_FOUND;
1801 if (EFI_ERROR (Status)) {
1802 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply kext dump patch - %r\n", Status));
1804 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success kext dump\n"));
1813 0x65, 0x8B, 0x04, 0x25, 0x00, 0x00, 0x00, 0x00,
1814 0x3B, 0x05, 0x00, 0x00, 0x00, 0x00
1820 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF,
1821 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
1828 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
1834 .Comment = DEBUG_POINTER (
"LapicKernelPanic"),
1835 .Base =
"_lapic_interrupt",
1839 .ReplaceMask = NULL,
1849 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1855 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF
1862 0x90, 0x90, 0x90, 0x90, 0x90
1868 .Comment = DEBUG_POINTER (
"LapicKernelPanicMaster"),
1869 .Base =
"_lapic_interrupt",
1873 .ReplaceMask = NULL,
1890 if (EFI_ERROR (Status)) {
1891 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply modern lapic patch - %r, trying legacy\n", Status));
1895 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success lapic\n"));
1901 if (EFI_ERROR (Status)) {
1902 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended modern lapic patch - %r\n", Status));
1904 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended modern lapic\n"));
1913 0x65, 0x8B, 0x04, 0x25, 0x14, 0x00, 0x00, 0x00,
1914 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1921 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF,
1922 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1930 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
1936 .Comment = DEBUG_POINTER (
"LapicKernelPanicLegacy"),
1937 .Base =
"_lapic_interrupt",
1941 .ReplaceMask = NULL,
1951 0x48, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00,
1953 0x74, 0x00, 0x83, 0x00
1959 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
1961 0xFF, 0x00, 0xFF, 0x00
1968 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
1969 0x00, 0x00, 0x00, 0x00
1976 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1977 0x00, 0x00,0x00, 0x00
1983 .Comment = DEBUG_POINTER (
"LapicKernelPanicMasterLegacy v1"),
1984 .Base =
"_lapic_interrupt",
1998 0x48, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00,
2007 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
2017 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
2025 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2032 .Comment = DEBUG_POINTER (
"LapicKernelPanicMasterLegacy v2"),
2033 .Base =
"_lapic_interrupt",
2054 if (EFI_ERROR (Status)) {
2055 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy lapic patch - %r\n", Status));
2059 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy lapic\n"));
2065 if (!EFI_ERROR (Status)) {
2066 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended legacy lapic v1\n"));
2070 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended legacy lapic patch v1 - %r, trying legacy v2\n", Status));
2072 if (!EFI_ERROR (Status)) {
2073 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended legacy lapic v2\n"));
2075 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended legacy lapic patch v2 - %r\n", Status));
2093 ASSERT (Patcher != NULL);
2096 if (!EFI_ERROR (Status)) {
2107 0x63, 0x6F, 0x6D, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x65, 0x00
2114 0x6E, 0x6F, 0x74, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x65, 0x00
2120 .Comment = DEBUG_POINTER (
"PowerStateTimeout"),
2125 .ReplaceMask = NULL,
2135 0x80, 0x00, 0x01, 0x6F,
2137 0x80, 0x00, 0x02, 0x6D,
2144 0xFF, 0x00, 0xFF, 0xFF,
2146 0xFF, 0x00, 0xFF, 0xFF,
2153 0x80, 0x00, 0x01, 0x6E,
2155 0x80, 0x00, 0x02, 0x6D,
2162 .Comment = DEBUG_POINTER (
"PowerStateTimeout"),
2163 .Base =
"__ZN9IOService12ackTimerTickEv",
2186 ASSERT (Patcher != NULL);
2189 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping power state patch on %u\n",
KernelVersion));
2194 if (!EFI_ERROR (Status)) {
2195 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success inline power state\n"));
2199 DEBUG ((DEBUG_INFO,
"OCAK: No inline power state patch - %r, trying fallback\n", Status));
2202 if (EFI_ERROR (Status)) {
2203 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply power state patch - %r\n", Status));
2205 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success power state\n"));
2228 0xC7, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00
2234 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF
2240 0xC7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
2246 0xBE, 0x58, 0x00, 0x00, 0x00
2252 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
2258 0xBE, 0xFF, 0xFF, 0x00, 0x00
2264 .Comment = DEBUG_POINTER (
"DisableRtcChecksum32"),
2279 .Comment = DEBUG_POINTER (
"DisableRtcChecksum64"),
2284 .ReplaceMask = NULL,
2300 if (Patcher == NULL) {
2301 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2302 return EFI_NOT_FOUND;
2306 if (EFI_ERROR (Status)) {
2307 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.AppleRTC DisableRtcChecksum - %r\n", Status));
2309 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.AppleRTC DisableRtcChecksum\n"));
2325 UINT8 *CurrFreeCall;
2335 ASSERT (Patcher != NULL);
2338 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping SegmentJettison on %u\n",
KernelVersion));
2346 if (EFI_ERROR (Status) || (RemoveBs > Last)) {
2347 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing removeKextBootstrap - %r\n", Status));
2348 return EFI_NOT_FOUND;
2352 if (EFI_ERROR (Status) || (StaticMfree > Last)) {
2353 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing ml_static_mfree - %r\n", Status));
2354 return EFI_NOT_FOUND;
2357 if (RemoveBs - StaticMfree > MAX_INT32) {
2358 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] ml_static_mfree %p removeKextBootstrap %p are too far\n", StaticMfree, RemoveBs));
2359 return EFI_UNSUPPORTED;
2367 Diff = (UINT32)((UINTN)StaticMfree - (UINTN)RemoveBs - 5);
2369 CurrFreeCall = NULL;
2370 for (Index = 0; Index < EFI_PAGE_SIZE; ++Index) {
2371 if ( (RemoveBs[0] == 0xE8)
2372 && (
CompareMem (&RemoveBs[1], &Diff,
sizeof (Diff)) == 0))
2374 CurrFreeCall = RemoveBs;
2377 "OCAK: CurrFreeCall %02X %02X %02X %02X %02X %X\n",
2385 }
else if ( (CurrFreeCall != NULL)
2386 && (RemoveBs[0] == 0x48) && (RemoveBs[1] == 0x8D) && (RemoveBs[2] == 0x15))
2391 CopyMem (&Diff2, &RemoveBs[3],
sizeof (Diff2));
2392 Jettisoning = (CHAR8 *)RemoveBs + Diff2 + 7;
2393 if ( ((UINT8 *)Jettisoning <= Last)
2394 && (AsciiStrnCmp (Jettisoning,
"Jettisoning fileset",
L_STR_LEN (
"Jettisoning fileset")) == 0))
2396 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Found jettisoning fileset\n"));
2397 SetMem (CurrFreeCall, 5, 0x90);
2406 DEBUG ((DEBUG_INFO,
"OCAK: Failed to find jettisoning fileset - %p\n", CurrFreeCall));
2408 return EFI_NOT_FOUND;
2421 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV1"),
2422 .Base =
"__ZN25IOBluetoothHostController25SetControllerFeatureFlagsEj",
2426 .ReplaceMask = NULL,
2435 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV2"),
2436 .Base =
"__ZN24IOBluetoothHCIController25SetControllerFeatureFlagsEj",
2440 .ReplaceMask = NULL,
2449 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV3"),
2450 .Base =
"__ZN17IOBluetoothDevice25setDeviceSupportedFeatureEj",
2454 .ReplaceMask = NULL,
2470 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping BTFeatureFlags on %u\n",
KernelVersion));
2474 if (Patcher == NULL) {
2475 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2476 return EFI_NOT_FOUND;
2480 if (EFI_ERROR (Status)) {
2481 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v1 - %r, trying v2\n", Status));
2483 if (EFI_ERROR (Status)) {
2484 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v2 - %r, trying v3\n", Status));
2486 if (EFI_ERROR (Status)) {
2487 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v3 - %r\n", Status));
2489 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v3\n"));
2492 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v2\n"));
2495 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v1\n"));
2558#define COMM_PAGE_BCOPY 0xFFFF0780
2559#define kHasSupplementalSSE3 0x00000100
2577 UINT8 *CommpageRoutines;
2583 UINT32 CommpageCodeLength;
2584 UINT32 CommpageAddress;
2585 UINT32 CommpageMustHave;
2590 ASSERT (Patcher != NULL);
2599 if (EFI_ERROR (Status) || (CommpageRoutines >= Last)) {
2600 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate _commpage_64_routines (%p) - %r\n", CommpageRoutines, Status));
2601 return EFI_NOT_FOUND;
2607 Address = Patcher->Is32Bit ? *((UINT32 *)CommpageRoutines) : *((UINT64 *)CommpageRoutines);
2608 while (Address > 0) {
2610 if ( (Commpage == NULL)
2628 "OCAK: Found 64-bit _COMM_PAGE_BCOPY function @ 0x%llx (0x%X bytes)\n",
2634 if ( (Target == NULL)
2642 if (Patcher->Is32Bit) {
2653 CommpageRoutines += Patcher->Is32Bit ?
sizeof (UINT32) :
sizeof (UINT64);
2654 if (CommpageRoutines >= Last) {
2658 Address = Patcher->Is32Bit ? *((UINT32 *)CommpageRoutines) : *((UINT64 *)CommpageRoutines);
2661 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find 64-bit _COMM_PAGE_BCOPY function\n"));
2663 return EFI_NOT_FOUND;
2670 0xE8, 0x00, 0x00, 0x00, 0x00,
2671 0x83, 0x7D, 0x00, 0x00,
2672 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00
2679 0xFF, 0x00,0x00, 0x00, 0x00,
2680 0xFF, 0xFF,0x00, 0x00,
2681 0xFF, 0xFF,0x00, 0x00, 0x00, 0x00
2688 0x00, 0x00,0x00, 0x00, 0x00,
2689 0x00, 0x00,0x00, 0x00,
2690 0x90, 0x90,0x90, 0x90, 0x90, 0x90,
2697 0x00, 0x00,0x00, 0x00, 0x00,
2698 0x00, 0x00,0x00, 0x00,
2699 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF
2705 .Comment = DEBUG_POINTER (
"ForceAquantiaEthernetShikumo"),
2706 .Base =
"__ZN27AppleEthernetAquantiaAqtion5startEP9IOService",
2719 0x41, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2726 0x41, 0xC7, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
2733 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
2740 .Comment = DEBUG_POINTER (
"ForceAquantiaEthernetMieze"),
2764 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping patching AquantiaEthernet on %u\n",
KernelVersion));
2768 if (Patcher == NULL) {
2769 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2770 return EFI_NOT_FOUND;
2778 if (!EFI_ERROR (Status)) {
2779 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success Aquantia Ethernet Shikumo\n"));
2786 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply Aquantia Ethernet patch Shikumo - %r, trying Mieze\n", Status));
2788 if (EFI_ERROR (Status)) {
2789 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply Aquantia Ethernet patch Mieze - %r\n", Status));
2791 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success Aquantia Ethernet Mieze\n"));
2811 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping sb scheme on %u\n",
KernelVersion));
2815 if (Patcher == NULL) {
2816 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2817 return EFI_NOT_FOUND;
2839 if (EFI_ERROR (Status) || (SelectAp > Last)) {
2840 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing _img4_chip_select_effective_ap - %r\n", Status));
2841 return EFI_NOT_FOUND;
2845 if (EFI_ERROR (Status) || (HybridAp > Last)) {
2846 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing __img4_chip_x86 - %r\n", Status));
2847 return EFI_NOT_FOUND;
2850 DEBUG ((DEBUG_INFO,
"OCAK: Forcing sb scheme on %u\n",
KernelVersion));
2855 Diff = (UINT32)(HybridAp - SelectAp - 7);
2856 CopyMem (&SelectAp[3], &Diff,
sizeof (Diff));
2864 0x48, 0x3D, 0x7F, 0x96, 0x98, 0x00
2871 0x48, 0x3D, 0x00, 0x00, 0x00, 0x00
2878 .Comment = DEBUG_POINTER (
"ApfsTimeout"),
2879 .Base =
"_nx_mount_trim_thread",
2883 .ReplaceMask = NULL,
2898 DEBUG ((DEBUG_INFO,
"OCAK: Registering %u APFS timeout\n", Timeout));
2912 .Comment = DEBUG_POINTER (
"ApfsTimeout disable trim"),
2913 .Base =
"_spaceman_iterate_free_extents_internal",
2917 .ReplaceMask = NULL,
2934 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping apfs timeout on %u\n",
KernelVersion));
2938 if (Patcher == NULL) {
2939 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2940 return EFI_NOT_FOUND;
2948 if (EFI_ERROR (Status)) {
2949 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch ApfsDisableTrim - %r\n", Status));
2951 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success ApfsDisableTrim\n"));
2963 if (EFI_ERROR (Status)) {
2964 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch SetApfsTrimTimeout - %r\n", Status));
2966 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success SetApfsTrimTimeout\n"));
2972 DEBUG ((DEBUG_INFO,
"OCAK: Skipping SetApfsTrimTimeout on macOS 12.0+\n"));
3019 ASSERT (Patcher != NULL);
STATIC CONST UINT8 mIOAHCIBlockStoragePatch144FindMask[]
STATIC EFI_STATUS PatchBTFeatureFlags(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mIOAHCIBlockStoragePatchV2
STATIC UINTN mPmioRegisterBase
To be set by PatchSetPciSerialDevice()
STATIC CONST UINT8 mAquantiaEthernetPatchFindMaskShikumo[]
struct XCPM_MSR_RECORD_ XCPM_MSR_RECORD
STATIC EFI_STATUS PatchAppleRtcChecksum(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC EFI_STATUS PatchSegmentJettison(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mMovCxE2[]
STATIC CONST UINT8 mIncreasePciBarSizePatchLegacyReplace[]
STATIC PATCHER_GENERIC_PATCH mAquantiaEthernetPatchShikumo
STATIC CONST UINT8 mBTFeatureFlagsReplace[]
STATIC PATCHER_GENERIC_PATCH mIOAHCIBlockStoragePatchV1
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyFind1[]
STATIC CONST UINT8 mPowerStateTimeoutPanicFind[]
STATIC CONST UINT8 mAppleRtcChecksumPatchMask32[]
STATIC EFI_STATUS PatchAppleXcpmCfgLock(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mBTFeatureFlagsPatchV2
STATIC PATCHER_GENERIC_PATCH mPowerStateTimeoutPanicInlinePatch
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyReplaceMask2[]
STATIC PATCHER_GENERIC_PATCH mIOAHCIBlockStoragePatch133Part1
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyReplaceMask1[]
VOID PatchSetApfsTimeout(IN UINT32 Timeout)
STATIC CONST UINT8 mRemoveUsbLimitIoP1Mask2[]
STATIC CONST UINT8 mLapicKernelPanicMasterPatchFind[]
STATIC CONST UINT8 mAppleIoMapperPatchFind[]
STATIC PATCHER_GENERIC_PATCH mLapicKernelPanicMasterLegacyPatch2
STATIC CONST UINT8 mMiscPwrMgmtDbgFind[]
STATIC EFI_STATUS PatchUsbXhciPortLimit3(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mRemoveUsbLimitIoP1Replace2[]
STATIC PATCHER_GENERIC_PATCH mLapicKernelPanicMasterLegacyPatch1
STATIC PATCHER_GENERIC_PATCH mApfsDisableTrimPatch
STATIC CONST UINT8 mAppleRtcChecksumPatchReplace32[]
STATIC PATCHER_GENERIC_PATCH mAppleIoMapperPatch
STATIC CONST UINT8 mPerfCtrlFind1[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatch133Find2[]
STATIC CONST UINT8 mIncreasePciBarSizePatchReplace[]
STATIC CONST UINT8 mPerfCtrlFind3[]
STATIC PATCHER_GENERIC_PATCH mPowerStateTimeoutPanicMasterPatch
STATIC CONST UINT8 mSerialDevicePmioFind[]
STATIC CONST UINT8 mAsmLegacyBcopy64[]
STATIC PATCHER_GENERIC_PATCH mApfsTimeoutPatch
STATIC UINT8 mApfsTimeoutFind[]
STATIC PATCHER_GENERIC_PATCH mIOAHCIPortPatch
EFI_STATUS KernelApplyQuirk(IN KERNEL_QUIRK_NAME Name, IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mAppleDummyCpuPmPatchReplace[]
STATIC CONST UINT8 mPerfCtrlFind4[]
STATIC CONST UINT8 mXcpmCfgLockRelFind[]
STATIC CONST UINT8 mRemoveUsbLimitIoP1Find2[]
STATIC CONST UINT8 mLapicKernelPanicMasterPatchMask[]
STATIC CONST UINT8 mXcpmCfgLockDbgReplace[]
STATIC EFI_STATUS PatchAppleIoMapperMapping(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC EFI_STATUS PatchIncreasePciBarSize(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC EFI_STATUS PatchUsbXhciPortLimit1(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mRemoveUsbLimitV2Replace[]
VOID PatchSetPciSerialDevice(IN UINTN RegisterBase, IN UINT32 RegisterStride)
STATIC CONST UINT8 mIOAHCIBlockStoragePatch133Find1[]
STATIC_ASSERT(sizeof(mMovEcxE2)==5, "Unsupported mMovEcxE2")
STATIC CONST UINT8 mAquantiaEthernetPatchMaskMieze[]
STATIC CONST UINT8 mMiscPwrMgmtDbgReplace[]
STATIC CONST UINT8 mIOAHCIPortPatchFind[]
STATIC PATCHER_GENERIC_PATCH mMiscPwrMgmtDbgPatch
STATIC CONST UINT8 mIncreasePciBarSizePatchFind[]
STATIC CONST UINT8 mPanicKextDumpPatchReplace[]
STATIC CONST UINT8 mMiscPwrMgmtRelMask15[]
STATIC CONST UINT8 mAquantiaEthernetPatchReplaceShikumo[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatch144Find[]
STATIC CONST UINT8 mRemoveUsbLimitV2Find[]
STATIC EFI_STATUS PatchLapicKernel(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mAppleIoMapperPatchReplace[]
STATIC PATCHER_GENERIC_PATCH mAppleRtcChecksumPatch32
STATIC CONST UINT8 mMiscPwrMgmtRelReplaceMask15[]
STATIC CONST UINT8 mRemoveUsbLimitIoP1Replace1[]
STATIC CONST UINT8 mLapicKernelPanicPatchMask[]
STATIC CONST UINT8 mAquantiaEthernetPatchReplaceMieze[]
STATIC PATCHER_GENERIC_PATCH mXcpmCfgLockDbgPatch
STATIC CONST UINT8 mLapicKernelPanicPatchLegacyFind[]
STATIC EFI_STATUS PatchForceSecureBootScheme(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mAppleIoMapperMappingPatch
STATIC CONST UINT8 mPerfCtrlMax[]
STATIC CONST UINT8 mMiscPwrMgmtRelFind[]
STATIC PATCHER_GENERIC_PATCH mLapicKernelPanicPatch
STATIC CONST UINT8 mRemoveUsbLimitIoP1Find1[]
STATIC CONST UINT8 mAppleRtcChecksumPatchReplace64[]
STATIC PATCHER_GENERIC_PATCH mPanicKextDumpPatch
STATIC CONST UINT8 mMiscPwrMgmtRelFind15[]
STATIC CONST UINT8 mPowerStateTimeoutPanicInlineReplace[]
STATIC CONST UINT8 mAquantiaEthernetPatchFindMieze[]
STATIC EFI_STATUS PatchCustomPciSerialPmio(IN OUT PATCHER_CONTEXT *Patcher)
STATIC CONST UINT8 mAquantiaEthernetPatchReplaceMaskShikumo[]
STATIC EFI_STATUS PatchAppleIoMapperSupport(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mIOAHCIBlockStoragePatchV1Find[]
STATIC PATCHER_GENERIC_PATCH mBTFeatureFlagsPatchV3
STATIC CONST UINT8 mXcpmCfgLockRelReplace[]
STATIC CONST UINT8 mLapicKernelPanicPatchLegacyReplace[]
STATIC CONST UINT8 mMovEcxE2[]
KERNEL_QUIRK gKernelQuirks[]
STATIC PATCHER_GENERIC_PATCH mXcpmCfgLockRelPatch
STATIC CONST UINT8 mIOAHCIBlockStoragePatch133Replace[]
STATIC EFI_STATUS PatchSetApfsTrimTimeout(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mRemoveUsbLimitIoP1Patch2
STATIC EFI_STATUS PatchCustomSmbiosGuid(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC EFI_STATUS PatchAppleCpuPmCfgLock(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mLapicKernelPanicMasterPatchReplace[]
STATIC UINT8 mApfsDisableTrimReplace[]
STATIC EFI_STATUS PatchPanicKextDump(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mAquantiaEthernetPatchMieze
STATIC PATCHER_GENERIC_PATCH mLapicKernelPanicLegacyPatch
STATIC EFI_STATUS PatchThirdPartyDriveSupport(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mIOAHCIBlockStoragePatchV1Replace[]
STATIC PATCHER_GENERIC_PATCH mMiscPwrMgmtRelPatch
STATIC CONST UINT8 mRemoveUsbLimitV1Replace[]
STATIC PATCHER_GENERIC_PATCH mCustomSmbiosGuidPatch
STATIC CONST UINT8 mAppleRtcChecksumPatchFind64[]
STATIC PATCHER_GENERIC_PATCH mIOAHCIBlockStoragePatch144
STATIC PATCHER_GENERIC_PATCH mMiscPwrMgmtRel15Patch
STATIC PATCHER_GENERIC_PATCH mRemoveUsbLimitIoP1Patch1Tahoe
STATIC CONST UINT8 mAppleRtcChecksumPatchMask64[]
STATIC CONST UINT8 mAquantiaEthernetPatchFindShikumo[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatchV2Find[]
STATIC EFI_STATUS PatchAquantiaEthernet(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mIOAHCIBlockStoragePatch133FindMask[]
STATIC PATCHER_GENERIC_PATCH mIncreasePciBarSizeLegacyPatch
STATIC PATCHER_GENERIC_PATCH mAppleRtcChecksumPatch64
STATIC CONST UINT8 mPanicKextDumpPatchFind[]
STATIC CONST UINT8 mPowerStateTimeoutPanicInlineFind[]
STATIC EFI_STATUS PatchLapicKernelLegacy(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mAppleRtcChecksumPatchFind32[]
STATIC EFI_STATUS PatchForceInternalDiskIcons(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mLapicKernelPanicMasterPatch
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyReplace2[]
STATIC EFI_STATUS PatchLapicKernelPanic(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mIOAHCIBlockStoragePatch133Part2
STATIC CONST UINT8 mXcpmCfgLockDbgFind[]
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyMask1[]
STATIC UINT32 mPmioRegisterStride
To be set by PatchSetPciSerialDevice()
STATIC EFI_STATUS PatchLegacyCommpage(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC PATCHER_GENERIC_PATCH mBTFeatureFlagsPatchV1
STATIC EFI_STATUS PatchCustomPciSerialDevice(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mMiscPwrMgmtRelReplace[]
STATIC CONST UINTN mWrmsrMaxDistance
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyFind2[]
STATIC CONST UINT8 mPowerStateTimeoutPanicInlineMask[]
STATIC CONST UINT8 mIOAHCIPortPatchReplace[]
#define kHasSupplementalSSE3
STATIC CONST UINT8 mAppleIoMapperMappingPatchReplace[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatch144ReplaceMask[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatch133ReplaceMask[]
STATIC CONST UINT8 mRemoveUsbLimitV1Find[]
STATIC EFI_STATUS PatchAppleXcpmExtraMsrs(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyReplace1[]
STATIC CONST UINT8 mIncreasePciBarSizePatchLegacyFind[]
STATIC PATCHER_GENERIC_PATCH mRemoveUsbLimitIoP1Patch1
STATIC CONST UINT8 mLapicKernelPanicPatchLegacyMask[]
STATIC CONST UINT8 mRemoveUsbLimitIoP1ReplaceMask2[]
STATIC EFI_STATUS PatchUsbXhciPortLimit2(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mCustomSmbiosGuidPatchReplace[]
STATIC PATCHER_GENERIC_PATCH mRemoveUsbLimitV1Patch
STATIC EFI_STATUS PatchPowerStateTimeout(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mLapicKernelPanicPatchReplace[]
STATIC EFI_STATUS PatchAppleXcpmForceBoost(IN OUT PATCHER_CONTEXT *Patcher, IN UINT32 KernelVersion)
STATIC CONST UINT8 mIOAHCIBlockStoragePatchV2Replace[]
STATIC CONST UINTN mInOutMaxDistance
STATIC EFI_STATUS PatchDummyPowerManagement(IN OUT PATCHER_CONTEXT *Patcher OPTIONAL, IN UINT32 KernelVersion)
STATIC CONST UINT8 mCustomSmbiosGuidPatchFind[]
STATIC CONST UINT8 mPowerStateTimeoutPanicReplace[]
STATIC UINT8 mApfsTimeoutReplace[]
STATIC CONST UINT8 mLapicKernelPanicPatchFind[]
STATIC CONST UINT8 mIOAHCIBlockStoragePatch144Replace[]
STATIC CONST UINT8 mLapicKernelPanicMasterPatchLegacyMask2[]
STATIC PATCHER_GENERIC_PATCH mAppleDummyCpuPmPatch
STATIC CONST UINT8 mMiscPwrMgmtRelReplace15[]
STATIC PATCHER_GENERIC_PATCH mIncreasePciBarSizePatch
STATIC PATCHER_GENERIC_PATCH mRemoveUsbLimitV2Patch
STATIC CONST UINT8 mPerfCtrlFind2[]
STATIC CONST UINT8 mWrmsr[]
STATIC UINT32 KernelVersion
#define KERNEL_VERSION_SNOW_LEOPARD_MIN
#define KERNEL_VERSION_MONTEREY_MIN
#define KERNEL_VERSION_MOJAVE
#define KERNEL_VERSION_HIGH_SIERRA_MIN
#define KERNEL_VERSION_VENTURA
#define KERNEL_VERSION_MOUNTAIN_LION_MIN
EFI_STATUS PatcherGetSymbolAddress(IN OUT PATCHER_CONTEXT *Context, IN CONST CHAR8 *Name, IN OUT UINT8 **Address)
#define KERNEL_VERSION_YOSEMITE_MIN
#define KERNEL_VERSION_CATALINA_MIN
#define KERNEL_VERSION_VENTURA_MIN
#define KERNEL_VERSION_SNOW_LEOPARD_MAX
BOOLEAN OcMatchDarwinVersion(IN UINT32 CurrentVersion OPTIONAL, IN UINT32 MinVersion OPTIONAL, IN UINT32 MaxVersion OPTIONAL)
#define KERNEL_VERSION(A, B, C)
#define KERNEL_VERSION_BIG_SUR
#define KERNEL_VERSION_TAHOE_MIN
EFI_STATUS PatcherApplyGenericPatch(IN OUT PATCHER_CONTEXT *Context, IN PATCHER_GENERIC_PATCH *Patch)
#define KERNEL_VERSION_HIGH_SIERRA_MAX
#define KERNEL_VERSION_MOUNTAIN_LION
#define KERNEL_VERSION_CATALINA
#define KERNEL_VERSION_SEQUOIA_MIN
#define KERNEL_VERSION_MOJAVE_MIN
@ KernelQuirkDisableRtcChecksum
@ KernelQuirkPanicNoKextDump
@ KernelQuirkCustomSmbiosGuid1
@ KernelQuirkForceSecureBootScheme
@ KernelQuirkPowerTimeoutKernelPanic
@ KernelQuirkLapicKernelPanic
@ KernelQuirkCustomSmbiosGuid2
@ KernelQuirkAppleCpuPmCfgLock
@ KernelQuirkAppleXcpmExtraMsrs
@ KernelQuirkAppleXcpmForceBoost
@ KernelQuirkXhciPortLimit2
@ KernelQuirkSetApfsTrimTimeout
@ KernelQuirkThirdPartyDrives
@ KernelQuirkDisableIoMapperMapping
@ KernelQuirkAppleXcpmCfgLock
@ KernelQuirkDummyPowerManagement
@ KernelQuirkDisableIoMapper
@ KernelQuirkLegacyCommpage
@ KernelQuirkExternalDiskIcons
@ KernelQuirkXhciPortLimit1
@ KernelQuirkExtendBTFeatureFlags
@ KernelQuirkForceAquantiaEthernet
@ KernelQuirkXhciPortLimit3
@ KernelQuirkSegmentJettison
@ KernelQuirkIncreasePciBarSize
@ KernelQuirkCustomPciSerialDevice
#define KERNEL_VERSION_SONOMA
#define KERNEL_VERSION_BIG_SUR_MIN
#define KERNEL_VERSION_EL_CAPITAN_MIN
UINT32 MachoGetInnerSize(IN OUT OC_MACHO_CONTEXT *Context)
VOID * MachoGetFilePointerByAddress(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT UINT32 *MaxSize OPTIONAL)
MACH_HEADER_ANY * MachoGetMachHeader(IN OUT OC_MACHO_CONTEXT *Context)
#define L_STR_LEN(String)
INTN EFIAPI CompareMem(IN CONST VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI SetMem(OUT VOID *Buffer, IN UINTN Length, IN UINT8 Value)
BOOLEAN EFIAPI IsZeroBuffer(IN CONST VOID *Buffer, IN UINTN Length)
KERNEL_QUIRK_PATCH_FUNCTION * PatchFunction
UINT64 xcpm_msr_bits_clear
UINT32 xcpm_msr_applicable_cpus
UINT64 xcpm_msr_initial_value
COMMPAGE_DESCRIPTOR_64 Desc64
COMMPAGE_DESCRIPTOR Desc32