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 0x41, 0x83, 0x00, 0x0F,
749 0xFF, 0xFF, 0x00, 0xFF,
757 0x00, 0x00, 0x00, 0x3F,
765 0x00, 0x00, 0x00, 0xFF,
773 .Comment = DEBUG_POINTER (
"RemoveUsbLimitIoP1 part 2"),
774 .Base =
"__ZN16AppleUSBHostPort15setPortLocationEj",
799 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping port patch IOUSBHostFamily on %u\n",
KernelVersion));
803 if (Patcher == NULL) {
804 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
805 return EFI_NOT_FOUND;
809 if (EFI_ERROR (Status)) {
810 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply port patch com.apple.iokit.IOUSBHostFamily part 1 - %r\n", Status));
812 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success port com.apple.iokit.IOUSBHostFamily part 1\n"));
819 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping port patch com.apple.iokit.IOUSBHostFamily part 2 on %u\n",
KernelVersion));
824 if (EFI_ERROR (Status)) {
825 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply port patch com.apple.iokit.IOUSBHostFamily part 2 - %r\n", Status));
827 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success port com.apple.iokit.IOUSBHostFamily part 2\n"));
843 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping modern port patch AppleUSBXHCI on %u\n",
KernelVersion));
847 if (Patcher == NULL) {
848 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
849 return EFI_NOT_FOUND;
874 if (!EFI_ERROR (Status)) {
879 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.usb.AppleUSBXHCI\n"));
881 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.usb.AppleUSBXHCI - %r\n", Status));
887 if ( EFI_ERROR (Status)
890 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for AppleUSBXHCI on %u\n",
KernelVersion));
907 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping legacy port patch AppleUSBXHCIPCI on %u\n",
KernelVersion));
911 if (Patcher == NULL) {
912 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
913 return EFI_NOT_FOUND;
920 if (EFI_ERROR (Status)) {
921 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy port patch AppleUSBXHCIPCI - %r\n", Status));
923 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success apply legacy port AppleUSBXHCIPCI\n"));
929 if ( EFI_ERROR (Status)
932 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for legacy port AppleUSBXHCIPCI on %u\n",
KernelVersion));
942 0x41, 0x50, 0x50, 0x4C, 0x45, 0x20, 0x53, 0x53, 0x44, 0x00
948 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
954 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorageV1"),
968 0x41, 0x50, 0x50, 0x4C, 0x45, 0x00
974 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
980 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorageV2"),
994 0x48, 0x8D, 0x3D, 0x00, 0x00, 0x00, 0x00,
995 0xBA, 0x09, 0x00, 0x00, 0x00
1001 0x48, 0x8D, 0x3D, 0x00, 0x00, 0x00, 0x00,
1002 0xBA, 0x05, 0x00, 0x00, 0x00
1008 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1009 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1015 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1016 0xBA, 0x00, 0x00, 0x00, 0x00
1022 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1023 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1029 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 13.3+ part 1"),
1030 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1044 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 13.3+ part 2"),
1045 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1059 0x4C, 0x8D, 0x2D, 0x00, 0x00, 0x00, 0x00,
1061 0xE8, 0x00, 0x00, 0x00, 0x00,
1068 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1070 0xFF, 0x00, 0x00, 0x00, 0x00,
1077 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1079 0x31, 0xC0, 0x90, 0x90, 0x90,
1086 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1088 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1095 .Comment = DEBUG_POINTER (
"IOAHCIBlockStorage trim 14.4+"),
1096 .Base =
"__ZN24IOAHCIBlockStorageDriver23DetermineDeviceFeaturesEPt",
1116 if (Patcher == NULL) {
1117 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1118 return EFI_NOT_FOUND;
1126 if (EFI_ERROR (Status)) {
1127 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 14.4+ com.apple.iokit.IOAHCIBlockStorage - %r\n", Status));
1129 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 14.4+ com.apple.iokit.IOAHCIBlockStorage\n"));
1140 if (EFI_ERROR (Status)) {
1141 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 13.3+ com.apple.iokit.IOAHCIBlockStorage part 1 - %r\n", Status));
1144 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 13.3+ com.apple.iokit.IOAHCIBlockStorage part 1\n"));
1148 if (EFI_ERROR (Status)) {
1149 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch 13.3+ com.apple.iokit.IOAHCIBlockStorage part 2 - %r\n", Status));
1151 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success 13.3+ com.apple.iokit.IOAHCIBlockStorage part 2\n"));
1158 if (EFI_ERROR (Status)) {
1159 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch legacy com.apple.iokit.IOAHCIBlockStorage V1 - %r\n", Status));
1161 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOAHCIBlockStorage V1\n"));
1166 if (EFI_ERROR (Status)) {
1167 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch legacy com.apple.iokit.IOAHCIBlockStorage V2 - %r\n", Status));
1169 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOAHCIBlockStorage V2\n"));
1172 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping IOAHCIBlockStorage legacy V2 on %u\n",
KernelVersion));
1179 if ( EFI_ERROR (Status)
1182 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Assuming success for legacy IOAHCIBlockStorage on %u\n",
KernelVersion));
1192 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C
1198 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C
1204 .Comment = DEBUG_POINTER (
"IOAHCIPort"),
1209 .ReplaceMask = NULL,
1224 if (Patcher == NULL) {
1225 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1226 return EFI_NOT_FOUND;
1239 if (EFI_ERROR (Status)) {
1240 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.AppleAHCIPort - %r\n", Status));
1242 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.AppleAHCIPort\n"));
1251 0x44, 0x4D, 0x41, 0x52, 0x00
1257 0x52, 0x41, 0x4D, 0x44, 0x00
1263 .Comment = DEBUG_POINTER (
"AppleIoMapper"),
1268 .ReplaceMask = NULL,
1284 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping AppleIoMapper patch on %u\n",
KernelVersion));
1288 if (Patcher == NULL) {
1289 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1290 return EFI_NOT_FOUND;
1294 if (EFI_ERROR (Status)) {
1295 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily AppleIoMapper - %r\n", Status));
1297 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily AppleIoMapper\n"));
1312 .Comment = DEBUG_POINTER (
"AppleIoMapperMapping"),
1313 .Base =
"__ZN8AppleVTD14addMemoryRangeEyy",
1317 .ReplaceMask = NULL,
1336 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping AppleIoMapperMapping patch on %u\n",
KernelVersion));
1340 if (Patcher == NULL) {
1341 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1342 return EFI_NOT_FOUND;
1346 if (EFI_ERROR (Status)) {
1347 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily AppleIoMapperMapping - %r\n", Status));
1349 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily AppleIoMapperMapping\n"));
1358 0xB8, 0x01, 0x00, 0x00, 0x00,
1365 .Comment = DEBUG_POINTER (
"DummyCpuPm"),
1366 .Base =
"__ZN28AppleIntelCPUPowerManagement5startEP9IOService",
1370 .ReplaceMask = NULL,
1386 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping dummy AppleIntelCPUPowerManagement patch on %u\n",
KernelVersion));
1390 if (Patcher == NULL) {
1391 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1392 return EFI_NOT_FOUND;
1396 if (EFI_ERROR (Status)) {
1397 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch dummy AppleIntelCPUPowerManagement - %r\n", Status));
1399 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success dummy AppleIntelCPUPowerManagement\n"));
1408 0x00, 0x00, 0x00, 0x40
1414 0x00, 0x00, 0x00, 0x80
1420 .Comment = DEBUG_POINTER (
"IncreasePciBarSize"),
1421 .Base =
"__ZN17IOPCIConfigurator24probeBaseAddressRegisterEP16IOPCIConfigEntryjj",
1425 .ReplaceMask = NULL,
1435 0x01, 0x00, 0x00, 0x40
1441 0x01, 0x00, 0x00, 0x80
1447 .Comment = DEBUG_POINTER (
"IncreasePciBarSizeLegacy"),
1448 .Base =
"__ZN17IOPCIConfigurator24probeBaseAddressRegisterEP16IOPCIConfigEntryjj",
1452 .ReplaceMask = NULL,
1469 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping com.apple.iokit.IOPCIFamily IncreasePciBarSize on %u\n",
KernelVersion));
1473 if (Patcher == NULL) {
1474 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1475 return EFI_NOT_FOUND;
1479 if (EFI_ERROR (Status)) {
1480 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r, trying legacy patch\n", Status));
1482 if (EFI_ERROR (Status)) {
1483 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r\n", Status));
1485 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy com.apple.iokit.IOPCIFamily IncreasePciBarSize\n"));
1488 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.iokit.IOPCIFamily IncreasePciBarSize\n"));
1497 0x66, 0xBA, 0xF8, 0x03
1514 IN UINTN RegisterBase,
1515 IN UINT32 RegisterStride
1521 if (RegisterBase <= MAX_UINT16) {
1522 DEBUG ((DEBUG_INFO,
"OCAK: Registering PCI serial device PMIO port 0x%04X\n", RegisterBase));
1525 DEBUG ((DEBUG_INFO,
"OCAK: Registering PCI serial device register stride %u\n", RegisterStride));
1528 DEBUG ((DEBUG_INFO,
"OCAK: NOT registering unsupported PCI serial device register base 0x%X", RegisterBase));
1552 ASSERT (Patcher != NULL);
1558 while (Walker < WalkerEnd) {
1566 "OCAK: Matched PMIO serial register base <%02X %02X %02X %02X>\n",
1572 WalkerPmio = &Walker[2];
1575 while (Walker < WalkerTmp) {
1579 if ((*Walker == 0xEC) || (*Walker == 0xEE)) {
1582 "OCAK: Matched PMIO serial register base context %a <%02X>, patching register base\n",
1583 *Walker == 0xEC ?
"in" :
"out",
1590 DEBUG ((DEBUG_VERBOSE,
"OCAK: Before register base patch <%02X %02X>\n", WalkerPmio[0], WalkerPmio[1]));
1592 WalkerPmio[0] = Pmio & 0xFFU;
1593 WalkerPmio[1] = (Pmio >> 8U) & 0xFFU;
1594 DEBUG ((DEBUG_VERBOSE,
"OCAK: After register base patch <%02X %02X>\n", WalkerPmio[0], WalkerPmio[1]));
1611 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patched CustomPciSerialDevice PMIO port %u times\n", Count));
1615 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to patch CustomPciSerialDevice PMIO port!\n"));
1616 return EFI_NOT_FOUND;
1631 ASSERT (Patcher != NULL);
1633 Status = EFI_INVALID_PARAMETER;
1644 if (EFI_ERROR (Status)) {
1645 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch CustomPciSerialDevice - %r\n"));
1647 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success CustomPciSerialDevice\n"));
1656 0x45, 0x42, 0x39, 0x44, 0x32, 0x44, 0x33, 0x31
1662 0x45, 0x42, 0x39, 0x44, 0x32, 0x44, 0x33, 0x35
1668 .Comment = DEBUG_POINTER (
"CustomSmbiosGuid"),
1673 .ReplaceMask = NULL,
1688 if (Patcher == NULL) {
1689 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
1690 return EFI_NOT_FOUND;
1694 if (!EFI_ERROR (Status)) {
1695 DEBUG ((DEBUG_INFO,
"OCAK: [OK] SMBIOS Patch success\n"));
1697 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply SMBIOS patch - %r\n", Status));
1706 0x00, 0x25, 0x2E, 0x2A, 0x73, 0x00
1712 0x00, 0x00, 0x2E, 0x2A, 0x73, 0x00
1718 .Comment = DEBUG_POINTER (
"PanicKextDump"),
1723 .ReplaceMask = NULL,
1743 ASSERT (Patcher != NULL);
1746 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping PanicKextDump on %u\n",
KernelVersion));
1758 "__ZN6OSKext19printKextPanicListsEPFiPKczE",
1761 if (EFI_ERROR (Status) || (Record >= Last)) {
1762 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate printKextPanicLists (%p) - %r\n", Record, Status));
1763 return EFI_NOT_FOUND;
1773 if (EFI_ERROR (Status)) {
1774 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply kext dump patch - %r\n", Status));
1776 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success kext dump\n"));
1785 0x65, 0x8B, 0x04, 0x25, 0x00, 0x00, 0x00, 0x00,
1786 0x3B, 0x05, 0x00, 0x00, 0x00, 0x00
1792 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF,
1793 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
1800 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
1806 .Comment = DEBUG_POINTER (
"LapicKernelPanic"),
1807 .Base =
"_lapic_interrupt",
1811 .ReplaceMask = NULL,
1821 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1827 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF
1834 0x90, 0x90, 0x90, 0x90, 0x90
1840 .Comment = DEBUG_POINTER (
"LapicKernelPanicMaster"),
1841 .Base =
"_lapic_interrupt",
1845 .ReplaceMask = NULL,
1862 if (EFI_ERROR (Status)) {
1863 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply modern lapic patch - %r, trying legacy\n", Status));
1867 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success lapic\n"));
1873 if (EFI_ERROR (Status)) {
1874 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended modern lapic patch - %r\n", Status));
1876 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended modern lapic\n"));
1885 0x65, 0x8B, 0x04, 0x25, 0x14, 0x00, 0x00, 0x00,
1886 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1893 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF,
1894 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1902 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
1908 .Comment = DEBUG_POINTER (
"LapicKernelPanicLegacy"),
1909 .Base =
"_lapic_interrupt",
1913 .ReplaceMask = NULL,
1923 0x48, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00,
1925 0x74, 0x00, 0x83, 0x00
1931 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
1933 0xFF, 0x00, 0xFF, 0x00
1940 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
1941 0x00, 0x00, 0x00, 0x00
1948 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1949 0x00, 0x00,0x00, 0x00
1955 .Comment = DEBUG_POINTER (
"LapicKernelPanicMasterLegacy v1"),
1956 .Base =
"_lapic_interrupt",
1970 0x48, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00,
1979 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1989 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
1997 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2004 .Comment = DEBUG_POINTER (
"LapicKernelPanicMasterLegacy v2"),
2005 .Base =
"_lapic_interrupt",
2026 if (EFI_ERROR (Status)) {
2027 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply legacy lapic patch - %r\n", Status));
2031 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success legacy lapic\n"));
2037 if (!EFI_ERROR (Status)) {
2038 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended legacy lapic v1\n"));
2042 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended legacy lapic patch v1 - %r, trying legacy v2\n", Status));
2044 if (!EFI_ERROR (Status)) {
2045 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success extended legacy lapic v2\n"));
2047 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply extended legacy lapic patch v2 - %r\n", Status));
2065 ASSERT (Patcher != NULL);
2068 if (!EFI_ERROR (Status)) {
2079 0x63, 0x6F, 0x6D, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x65, 0x00
2086 0x6E, 0x6F, 0x74, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x65, 0x00
2092 .Comment = DEBUG_POINTER (
"PowerStateTimeout"),
2097 .ReplaceMask = NULL,
2107 0x80, 0x00, 0x01, 0x6F,
2109 0x80, 0x00, 0x02, 0x6D,
2116 0xFF, 0x00, 0xFF, 0xFF,
2118 0xFF, 0x00, 0xFF, 0xFF,
2125 0x80, 0x00, 0x01, 0x6E,
2127 0x80, 0x00, 0x02, 0x6D,
2134 .Comment = DEBUG_POINTER (
"PowerStateTimeout"),
2135 .Base =
"__ZN9IOService12ackTimerTickEv",
2158 ASSERT (Patcher != NULL);
2161 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping power state patch on %u\n",
KernelVersion));
2166 if (!EFI_ERROR (Status)) {
2167 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success inline power state\n"));
2171 DEBUG ((DEBUG_INFO,
"OCAK: No inline power state patch - %r, trying fallback\n", Status));
2174 if (EFI_ERROR (Status)) {
2175 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply power state patch - %r\n", Status));
2177 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success power state\n"));
2200 0xC7, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00
2206 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF
2212 0xC7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
2218 0xBE, 0x58, 0x00, 0x00, 0x00
2224 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
2230 0xBE, 0xFF, 0xFF, 0x00, 0x00
2236 .Comment = DEBUG_POINTER (
"DisableRtcChecksum32"),
2251 .Comment = DEBUG_POINTER (
"DisableRtcChecksum64"),
2256 .ReplaceMask = NULL,
2272 if (Patcher == NULL) {
2273 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2274 return EFI_NOT_FOUND;
2278 if (EFI_ERROR (Status)) {
2279 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch com.apple.driver.AppleRTC DisableRtcChecksum - %r\n", Status));
2281 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success com.apple.driver.AppleRTC DisableRtcChecksum\n"));
2297 UINT8 *CurrFreeCall;
2307 ASSERT (Patcher != NULL);
2310 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping SegmentJettison on %u\n",
KernelVersion));
2318 if (EFI_ERROR (Status) || (RemoveBs > Last)) {
2319 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing removeKextBootstrap - %r\n", Status));
2320 return EFI_NOT_FOUND;
2324 if (EFI_ERROR (Status) || (StaticMfree > Last)) {
2325 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing ml_static_mfree - %r\n", Status));
2326 return EFI_NOT_FOUND;
2329 if (RemoveBs - StaticMfree > MAX_INT32) {
2330 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] ml_static_mfree %p removeKextBootstrap %p are too far\n", StaticMfree, RemoveBs));
2331 return EFI_UNSUPPORTED;
2339 Diff = (UINT32)((UINTN)StaticMfree - (UINTN)RemoveBs - 5);
2341 CurrFreeCall = NULL;
2342 for (Index = 0; Index < EFI_PAGE_SIZE; ++Index) {
2343 if ( (RemoveBs[0] == 0xE8)
2344 && (
CompareMem (&RemoveBs[1], &Diff,
sizeof (Diff)) == 0))
2346 CurrFreeCall = RemoveBs;
2349 "OCAK: CurrFreeCall %02X %02X %02X %02X %02X %X\n",
2357 }
else if ( (CurrFreeCall != NULL)
2358 && (RemoveBs[0] == 0x48) && (RemoveBs[1] == 0x8D) && (RemoveBs[2] == 0x15))
2363 CopyMem (&Diff2, &RemoveBs[3],
sizeof (Diff2));
2364 Jettisoning = (CHAR8 *)RemoveBs + Diff2 + 7;
2365 if ( ((UINT8 *)Jettisoning <= Last)
2366 && (AsciiStrnCmp (Jettisoning,
"Jettisoning fileset",
L_STR_LEN (
"Jettisoning fileset")) == 0))
2368 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Found jettisoning fileset\n"));
2369 SetMem (CurrFreeCall, 5, 0x90);
2378 DEBUG ((DEBUG_INFO,
"OCAK: Failed to find jettisoning fileset - %p\n", CurrFreeCall));
2380 return EFI_NOT_FOUND;
2393 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV1"),
2394 .Base =
"__ZN25IOBluetoothHostController25SetControllerFeatureFlagsEj",
2398 .ReplaceMask = NULL,
2407 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV2"),
2408 .Base =
"__ZN24IOBluetoothHCIController25SetControllerFeatureFlagsEj",
2412 .ReplaceMask = NULL,
2421 .Comment = DEBUG_POINTER (
"BTFeatureFlagsV3"),
2422 .Base =
"__ZN17IOBluetoothDevice25setDeviceSupportedFeatureEj",
2426 .ReplaceMask = NULL,
2442 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping BTFeatureFlags on %u\n",
KernelVersion));
2446 if (Patcher == NULL) {
2447 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2448 return EFI_NOT_FOUND;
2452 if (EFI_ERROR (Status)) {
2453 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v1 - %r, trying v2\n", Status));
2455 if (EFI_ERROR (Status)) {
2456 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v2 - %r, trying v3\n", Status));
2458 if (EFI_ERROR (Status)) {
2459 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find BT FeatureFlags symbol v3 - %r\n", Status));
2461 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v3\n"));
2464 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v2\n"));
2467 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Success BT FeatureFlags patch v1\n"));
2530#define COMM_PAGE_BCOPY 0xFFFF0780
2531#define kHasSupplementalSSE3 0x00000100
2549 UINT8 *CommpageRoutines;
2555 UINT32 CommpageCodeLength;
2556 UINT32 CommpageAddress;
2557 UINT32 CommpageMustHave;
2562 ASSERT (Patcher != NULL);
2571 if (EFI_ERROR (Status) || (CommpageRoutines >= Last)) {
2572 DEBUG ((DEBUG_WARN,
"OCAK: [FAIL] Failed to locate _commpage_64_routines (%p) - %r\n", CommpageRoutines, Status));
2573 return EFI_NOT_FOUND;
2579 Address = Patcher->Is32Bit ? *((UINT32 *)CommpageRoutines) : *((UINT64 *)CommpageRoutines);
2580 while (Address > 0) {
2582 if ( (Commpage == NULL)
2600 "OCAK: Found 64-bit _COMM_PAGE_BCOPY function @ 0x%llx (0x%X bytes)\n",
2606 if ( (Target == NULL)
2614 if (Patcher->Is32Bit) {
2625 CommpageRoutines += Patcher->Is32Bit ?
sizeof (UINT32) :
sizeof (UINT64);
2626 if (CommpageRoutines >= Last) {
2630 Address = Patcher->Is32Bit ? *((UINT32 *)CommpageRoutines) : *((UINT64 *)CommpageRoutines);
2633 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to find 64-bit _COMM_PAGE_BCOPY function\n"));
2635 return EFI_NOT_FOUND;
2642 0xE8, 0x00, 0x00, 0x00, 0x00,
2643 0x83, 0x7D, 0x00, 0x00,
2644 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00
2651 0xFF, 0x00,0x00, 0x00, 0x00,
2652 0xFF, 0xFF,0x00, 0x00,
2653 0xFF, 0xFF,0x00, 0x00, 0x00, 0x00
2660 0x00, 0x00,0x00, 0x00, 0x00,
2661 0x00, 0x00,0x00, 0x00,
2662 0x90, 0x90,0x90, 0x90, 0x90, 0x90,
2669 0x00, 0x00,0x00, 0x00, 0x00,
2670 0x00, 0x00,0x00, 0x00,
2671 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF
2677 .Comment = DEBUG_POINTER (
"ForceAquantiaEthernetShikumo"),
2678 .Base =
"__ZN27AppleEthernetAquantiaAqtion5startEP9IOService",
2691 0x41, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2698 0x41, 0xC7, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
2705 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
2712 .Comment = DEBUG_POINTER (
"ForceAquantiaEthernetMieze"),
2736 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping patching AquantiaEthernet on %u\n",
KernelVersion));
2740 if (Patcher == NULL) {
2741 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2742 return EFI_NOT_FOUND;
2750 if (!EFI_ERROR (Status)) {
2751 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success Aquantia Ethernet Shikumo\n"));
2758 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply Aquantia Ethernet patch Shikumo - %r, trying Mieze\n", Status));
2760 if (EFI_ERROR (Status)) {
2761 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply Aquantia Ethernet patch Mieze - %r\n", Status));
2763 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success Aquantia Ethernet Mieze\n"));
2783 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping sb scheme on %u\n",
KernelVersion));
2787 if (Patcher == NULL) {
2788 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2789 return EFI_NOT_FOUND;
2811 if (EFI_ERROR (Status) || (SelectAp > Last)) {
2812 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing _img4_chip_select_effective_ap - %r\n", Status));
2813 return EFI_NOT_FOUND;
2817 if (EFI_ERROR (Status) || (HybridAp > Last)) {
2818 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Missing __img4_chip_x86 - %r\n", Status));
2819 return EFI_NOT_FOUND;
2822 DEBUG ((DEBUG_INFO,
"OCAK: Forcing sb scheme on %u\n",
KernelVersion));
2827 Diff = (UINT32)(HybridAp - SelectAp - 7);
2828 CopyMem (&SelectAp[3], &Diff,
sizeof (Diff));
2836 0x48, 0x3D, 0x7F, 0x96, 0x98, 0x00
2843 0x48, 0x3D, 0x00, 0x00, 0x00, 0x00
2850 .Comment = DEBUG_POINTER (
"ApfsTimeout"),
2851 .Base =
"_nx_mount_trim_thread",
2855 .ReplaceMask = NULL,
2870 DEBUG ((DEBUG_INFO,
"OCAK: Registering %u APFS timeout\n", Timeout));
2884 .Comment = DEBUG_POINTER (
"ApfsTimeout disable trim"),
2885 .Base =
"_spaceman_iterate_free_extents_internal",
2889 .ReplaceMask = NULL,
2906 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping apfs timeout on %u\n",
KernelVersion));
2910 if (Patcher == NULL) {
2911 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Skipping %a on NULL Patcher on %u\n", __func__,
KernelVersion));
2912 return EFI_NOT_FOUND;
2920 if (EFI_ERROR (Status)) {
2921 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch ApfsDisableTrim - %r\n", Status));
2923 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success ApfsDisableTrim\n"));
2935 if (EFI_ERROR (Status)) {
2936 DEBUG ((DEBUG_INFO,
"OCAK: [FAIL] Failed to apply patch SetApfsTrimTimeout - %r\n", Status));
2938 DEBUG ((DEBUG_INFO,
"OCAK: [OK] Patch success SetApfsTrimTimeout\n"));
2944 DEBUG ((DEBUG_INFO,
"OCAK: Skipping SetApfsTrimTimeout on macOS 12.0+\n"));
2991 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 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
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