From 252aa89fa61ef0b7a8a3b2abc8cfc64fce2654e5 Mon Sep 17 00:00:00 2001 From: Marc Di Luzio Date: Sun, 3 Feb 2019 15:31:10 +0000 Subject: [PATCH] Sanity check the config values These values are up for debate, perhaps AMD or NV give nice limits --- daemon/gamemode-gpu.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/daemon/gamemode-gpu.c b/daemon/gamemode-gpu.c index c3ce02c..1ffa634 100644 --- a/daemon/gamemode-gpu.c +++ b/daemon/gamemode-gpu.c @@ -95,24 +95,46 @@ int game_mode_initialise_gpu(GameModeConfig *config, GameModeGPUInfo **info) return -1; } - /* Load the config based on GPU */ + /* Load the config based on GPU and also verify the values are sane */ switch (new_info->vendor) { case Vendor_NVIDIA: config_get_nv_core_clock_mhz_offset(config, &new_info->core); config_get_nv_mem_clock_mhz_offset(config, &new_info->mem); + + /* Reject values over some guessed values + * If a user wants to go into very unsafe levels they can recompile + */ + const int nv_core_hard_limit = 200; + const int nv_mem_hard_limit = 2000; + if( new_info->core > nv_core_hard_limit || new_info->mem > nv_mem_hard_limit ) { + LOG_ERROR("ERROR NVIDIA Overclock value above safety levels of +%d (core) +%d (mem), will not overclock!\n", nv_core_hard_limit, nv_mem_hard_limit ); + LOG_ERROR("nv_core_clock_mhz_offset:%ld nv_mem_clock_mhz_offset:%ld\n", new_info->core, new_info->mem ); + free(new_info); + return -1; + } + break; case Vendor_AMD: config_get_amd_core_clock_percentage(config, &new_info->core); config_get_amd_mem_clock_percentage(config, &new_info->mem); + + /* Reject values over 25% + * If a user wants to go into very unsafe levels they can recompile + */ + const int amd_hard_limit = 25; + if( new_info->core > amd_hard_limit || new_info->mem > amd_hard_limit ) { + LOG_ERROR("ERROR AMD Overclock value above safety level of %d%%, will not overclock!\n", amd_hard_limit ); + LOG_ERROR("amd_core_clock_percentage:%ld amd_mem_clock_percentage:%ld\n", new_info->core, new_info->mem ); + free(new_info); + return -1; + } break; default: break; } - /* TODO : Sanity check these values */ /* Give back the new gpu info */ *info = new_info; - return status; }