- Add TinyMemBenchNX, a simple memory benchmark program based on [tinymembench](https://github.com/ssvb/tinymembench)
- Sys-clk Fix: Ignore RAM clock values in config, or sys-clk will stuck in a loop of resetting RAM clocks (generating huge log file and degrading performance) - Fix: Temporary frequency override in sys-clk overlay/manager
This commit is contained in:
@@ -214,7 +214,7 @@ void ClockManager::Tick()
|
||||
{
|
||||
std::uint32_t hz = 0;
|
||||
std::uint32_t hzForceOverride = 0;
|
||||
for (unsigned int module = 0; module < SysClkModule_EnumMax; module++)
|
||||
for (unsigned int module = 0; module < SysClkModule_EnumMax - 1; module++)
|
||||
{
|
||||
hz = this->context->overrideFreqs[module];
|
||||
|
||||
@@ -456,6 +456,15 @@ bool ClockManager::RefreshContext()
|
||||
for (unsigned int module = 0; module < SysClkModule_EnumMax; module++)
|
||||
{
|
||||
hz = Clocks::GetCurrentHz((SysClkModule)module);
|
||||
|
||||
// Skip MEM freq check
|
||||
if (module == SysClkModule_MEM)
|
||||
{
|
||||
this->context->freqs[module] = hz;
|
||||
break;
|
||||
}
|
||||
|
||||
// Round to MHz
|
||||
uint32_t cur_mhz = hz/1000'000;
|
||||
uint32_t be4_mhz = this->context->freqs[module]/1000'000;
|
||||
if (hz != 0 && cur_mhz != be4_mhz)
|
||||
@@ -475,6 +484,7 @@ bool ClockManager::RefreshContext()
|
||||
else
|
||||
{
|
||||
FileUtils::LogLine("[mgr] %s override disabled", Clocks::GetModuleName((SysClkModule)module, true));
|
||||
Clocks::ResetToStock(module);
|
||||
}
|
||||
this->context->overrideFreqs[module] = hz;
|
||||
hasChanged = true;
|
||||
|
||||
@@ -167,7 +167,7 @@ PcvModuleId Clocks::GetPcvModuleId(SysClkModule sysclkModule)
|
||||
return pcvModuleId;
|
||||
}
|
||||
|
||||
void Clocks::ResetToStock()
|
||||
void Clocks::ResetToStock(unsigned int module)
|
||||
{
|
||||
Result rc = 0;
|
||||
if(hosversionAtLeast(9,0,0))
|
||||
@@ -191,8 +191,14 @@ void Clocks::ResetToStock()
|
||||
ERROR_THROW("Unknown apm configuration: %x", confId);
|
||||
}
|
||||
|
||||
Clocks::SetHz(SysClkModule_CPU, apmConfiguration->cpu_hz);
|
||||
Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz);
|
||||
if (module == SysClkModule_EnumMax || module == SysClkModule_CPU)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_CPU, apmConfiguration->cpu_hz);
|
||||
}
|
||||
if (module == SysClkModule_EnumMax || module == SysClkModule_GPU)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz);
|
||||
}
|
||||
// We don't need to set MEM freqs any more
|
||||
//Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class Clocks
|
||||
static bool isMariko;
|
||||
static void Exit();
|
||||
static void Initialize();
|
||||
static void ResetToStock();
|
||||
static void ResetToStock(unsigned int module = SysClkModule_EnumMax);
|
||||
static SysClkProfile GetCurrentProfile();
|
||||
static std::uint32_t GetCurrentHz(SysClkModule module);
|
||||
static void SetHz(SysClkModule module, std::uint32_t hz);
|
||||
|
||||
Reference in New Issue
Block a user