From 39e7ba6b75ce7f93d9fceb68c6bf3cb85caa8c4c Mon Sep 17 00:00:00 2001 From: Lightos1 <124387232+Lightos1@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:56:25 +0200 Subject: [PATCH] ldr: move R_SKIP after verifying mtc table to avoid triggering patch validations --- .../stratosphere/loader/source/oc/pcv/pcv_mariko.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp index 7122b2b3..f333e085 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp @@ -734,12 +734,7 @@ namespace ams::ldr::hoc::pcv::mariko { } } - bool patchedMtc = false; Result MemFreqMtcTable(u32 *ptr) { - if (C.marikoEmcMaxClock <= EmcClkOSLimit || patchedMtc) { - R_SKIP(); - } - static const DramId dramId = [] { DramId id = GetDramId(); return id; @@ -763,6 +758,10 @@ namespace ams::ldr::hoc::pcv::mariko { MarikoMtcTable *table = reinterpret_cast(startPtr + mtcOffset); R_UNLESS(R_SUCCEEDED(MtcValidateAllTables(table, EmcListDefault, EmcListSizeDefault)), ldr::ResultInvalidMtcTable()); + if (C.marikoEmcMaxClock <= EmcClkOSLimit) { + R_SKIP(); + } + PrepareMtcMemoryRegion(startPtr, table); table = reinterpret_cast(startPtr); @@ -781,7 +780,6 @@ namespace ams::ldr::hoc::pcv::mariko { MemMtcPllmbDivisor(&table[i]); } - patchedMtc = true; R_SUCCEED(); }