From fa929990d1c3e0d72bc5e9f97fc02f735785462c Mon Sep 17 00:00:00 2001 From: Visual Ehrmanntraut <30368284+VisualEhrmanntraut@users.noreply.github.com> Date: Sat, 3 Feb 2024 10:34:32 +0200 Subject: [PATCH] Add psp_cmd_km_submit pattern for macOS 14.4 Signed-off-by: Visual Ehrmanntraut <30368284+VisualEhrmanntraut@users.noreply.github.com> --- NootRX/HWLibs.cpp | 13 ++++++++++--- NootRX/HWLibs.hpp | 7 +++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/NootRX/HWLibs.cpp b/NootRX/HWLibs.cpp index 55c6648..4f291bc 100644 --- a/NootRX/HWLibs.cpp +++ b/NootRX/HWLibs.cpp @@ -78,9 +78,16 @@ bool HWLibs::processKext(KernelPatcher &patcher, size_t id, mach_vm_address_t sl SolveRequestPlus solveRequest {"_CAILAsicCapsInitTable", orgCapsInitTable, kCAILAsicCapsInitTablePattern}; solveRequest.solve(patcher, id, slide, size); - RouteRequestPlus request = {"_psp_cmd_km_submit", wrapPspCmdKmSubmit, this->orgPspCmdKmSubmit, - kPspCmdKmSubmitPattern, kPspCmdKmSubmitMask}; - PANIC_COND(!request.route(patcher, id, slide, size), "HWLibs", "Failed to route psp_cmd_km_submit"); + if (getKernelVersion() > KernelVersion::Sonoma || + (getKernelVersion() == KernelVersion::Sonoma && getKernelMinorVersion() >= 4)) { + RouteRequestPlus request = {"_psp_cmd_km_submit", wrapPspCmdKmSubmit, this->orgPspCmdKmSubmit, + kPspCmdKmSubmitPattern14_4, kPspCmdKmSubmitMask14_4}; + PANIC_COND(!request.route(patcher, id, slide, size), "HWLibs", "Failed to route psp_cmd_km_submit (14.4+)"); + } else { + RouteRequestPlus request = {"_psp_cmd_km_submit", wrapPspCmdKmSubmit, this->orgPspCmdKmSubmit, + kPspCmdKmSubmitPattern, kPspCmdKmSubmitMask}; + PANIC_COND(!request.route(patcher, id, slide, size), "HWLibs", "Failed to route psp_cmd_km_submit"); + } if (NootRXMain::callback->chipType == ChipType::Navi22) { RouteRequestPlus request = {"_smu_11_0_7_send_message_with_parameter", wrapSmu1107SendMessageWithParameter, diff --git a/NootRX/HWLibs.hpp b/NootRX/HWLibs.hpp index 16706ad..7044dc8 100644 --- a/NootRX/HWLibs.hpp +++ b/NootRX/HWLibs.hpp @@ -46,6 +46,13 @@ static const UInt8 kPspCmdKmSubmitMask[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00}; +static const UInt8 kPspCmdKmSubmitPattern14_4[] = {0x55, 0x48, 0x89, 0xE5, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, + 0x54, 0x53, 0x48, 0x83, 0xEC, 0x18, 0x49, 0x89, 0xCD, 0x49, 0x89, 0xD7, 0x49, 0x89, 0xF4, 0x49, 0x89, 0xFE, 0x48, + 0x8D, 0x75, 0xD0, 0xC7, 0x06, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x00}; +static const UInt8 kPspCmdKmSubmitMask14_4[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00}; + static const UInt8 kSmu1107SendMessageWithParameterPattern[] = {0x55, 0x48, 0x89, 0xE5, 0x41, 0x57, 0x41, 0x56, 0x41, 0x54, 0x53, 0x41, 0x89, 0xD6, 0x41, 0x89, 0xF7, 0x48, 0x89, 0xFB, 0x8B, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x35};