sysmodule: replace ipc with dynamic buffers to fix memory issues
This commit is contained in:
@@ -134,10 +134,13 @@ Result IpcService::ServiceHandlerFunc(void* arg, const IpcServerRequest* r, u8*
|
||||
break;
|
||||
|
||||
case SysClkIpcCmd_GetProfiles:
|
||||
if(r->data.size >= sizeof(std::uint64_t))
|
||||
if(r->data.size >= sizeof(std::uint64_t) && r->hipc.meta.num_recv_buffers >= 1)
|
||||
{
|
||||
*out_dataSize = sizeof(SysClkTitleProfileList);
|
||||
return ipcSrv->GetProfiles((std::uint64_t*)r->data.ptr, (SysClkTitleProfileList*)out_data);
|
||||
size_t bufSize = hipcGetBufferSize(r->hipc.data.recv_buffers);
|
||||
if(bufSize >= sizeof(SysClkTitleProfileList))
|
||||
{
|
||||
return ipcSrv->GetProfiles((std::uint64_t*)r->data.ptr, (SysClkTitleProfileList*)hipcGetBufferAddress(r->hipc.data.recv_buffers));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -163,13 +166,24 @@ Result IpcService::ServiceHandlerFunc(void* arg, const IpcServerRequest* r, u8*
|
||||
break;
|
||||
|
||||
case SysClkIpcCmd_GetConfigValues:
|
||||
*out_dataSize = sizeof(SysClkConfigValueList); // bug in stock sys-clk. really stupid bug :skull:
|
||||
return ipcSrv->GetConfigValues((SysClkConfigValueList*)out_data);
|
||||
if(r->hipc.meta.num_recv_buffers >= 1)
|
||||
{
|
||||
size_t bufSize = hipcGetBufferSize(r->hipc.data.recv_buffers);
|
||||
if(bufSize >= sizeof(SysClkConfigValueList))
|
||||
{
|
||||
return ipcSrv->GetConfigValues((SysClkConfigValueList*)hipcGetBufferAddress(r->hipc.data.recv_buffers));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SysClkIpcCmd_SetConfigValues:
|
||||
if(r->data.size >= sizeof(SysClkConfigValueList))
|
||||
if(r->hipc.meta.num_send_buffers >= 1)
|
||||
{
|
||||
return ipcSrv->SetConfigValues((SysClkConfigValueList*)r->data.ptr);
|
||||
size_t bufSize = hipcGetBufferSize(r->hipc.data.send_buffers);
|
||||
if(bufSize >= sizeof(SysClkConfigValueList))
|
||||
{
|
||||
return ipcSrv->SetConfigValues((SysClkConfigValueList*)hipcGetBufferAddress(r->hipc.data.send_buffers));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SysClkIpcCmd_GetFreqList:
|
||||
|
||||
@@ -196,6 +196,7 @@ bool KipHandler::writeKip() {
|
||||
|
||||
writeU32(data.custRev);
|
||||
writeU32(data.mtcConf);
|
||||
writeU32(data.hpMode);
|
||||
writeU32(data.commonCpuBoostClock);
|
||||
writeU32(data.commonEmcMemVolt);
|
||||
writeU32(data.eristaCpuMaxVolt);
|
||||
@@ -230,6 +231,8 @@ bool KipHandler::writeKip() {
|
||||
writeU32(data.marikoGpuVmin);
|
||||
writeU32(data.marikoGpuVmax);
|
||||
|
||||
writeU32(data.marikoGpuFullUnlock);
|
||||
|
||||
// GPU voltages Mariko
|
||||
writeU32(data.g_volt_76800);
|
||||
writeU32(data.g_volt_153600);
|
||||
|
||||
Reference in New Issue
Block a user