diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/1042-drm-amd-powerplay-hwmgr-don-t-add-invalid-voltage.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/1042-drm-amd-powerplay-hwmgr-don-t-add-invalid-voltage.patch | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/common/recipes-kernel/linux/files/1042-drm-amd-powerplay-hwmgr-don-t-add-invalid-voltage.patch b/common/recipes-kernel/linux/files/1042-drm-amd-powerplay-hwmgr-don-t-add-invalid-voltage.patch deleted file mode 100644 index 1fe6b6e0..00000000 --- a/common/recipes-kernel/linux/files/1042-drm-amd-powerplay-hwmgr-don-t-add-invalid-voltage.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 636cb506132bcc77950d73d0e0aa7e2694e4d373 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Moritz=20K=C3=BChner?= <kuehner.moritz@gmail.com> -Date: Sun, 17 Apr 2016 16:15:24 +0200 -Subject: [PATCH 1042/1110] drm/amd/powerplay/hwmgr: don't add invalid voltage -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -if atomctrl_get_voltage_evv_on_sclk returns non zero (fail) in the expansion -of the PP_ASSERT_WITH_CODE macro the continue will actually do nothing -(The macro uses a do ... while(0) as scope, which eats the continue). -Based on the code I don't think this was the intent. -Unfortunately fixing this requires rewriting the control flow and -removing the macros. - -v2: added signed of by -fixed error message print - -v3: agd: drop DRM_ERROR - -Signed-off-by: Moritz Kühner <kuehner.moritz@gmail.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c | 54 ++++++++++++----------- - 1 file changed, 28 insertions(+), 26 deletions(-) - -diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -index 59dd78c..9aaf194 100644 ---- a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c -@@ -432,19 +432,20 @@ int tonga_get_evv_voltage(struct pp_hwmgr *hwmgr) - } - } - } -- PP_ASSERT_WITH_CODE(0 == atomctrl_get_voltage_evv_on_sclk -- (hwmgr, VOLTAGE_TYPE_VDDGFX, sclk, -- virtual_voltage_id, &vddgfx), -- "Error retrieving EVV voltage value!", continue); -- -- /* need to make sure vddgfx is less than 2v or else, it could burn the ASIC. */ -- PP_ASSERT_WITH_CODE((vddgfx < 2000 && vddgfx != 0), "Invalid VDDGFX value!", return -1); -- -- /* the voltage should not be zero nor equal to leakage ID */ -- if (vddgfx != 0 && vddgfx != virtual_voltage_id) { -- data->vddcgfx_leakage.actual_voltage[data->vddcgfx_leakage.count] = vddgfx; -- data->vddcgfx_leakage.leakage_id[data->vddcgfx_leakage.count] = virtual_voltage_id; -- data->vddcgfx_leakage.count++; -+ if (0 == atomctrl_get_voltage_evv_on_sclk -+ (hwmgr, VOLTAGE_TYPE_VDDGFX, sclk, -+ virtual_voltage_id, &vddgfx)) { -+ /* need to make sure vddgfx is less than 2v or else, it could burn the ASIC. */ -+ PP_ASSERT_WITH_CODE((vddgfx < 2000 && vddgfx != 0), "Invalid VDDGFX value!", return -1); -+ -+ /* the voltage should not be zero nor equal to leakage ID */ -+ if (vddgfx != 0 && vddgfx != virtual_voltage_id) { -+ data->vddcgfx_leakage.actual_voltage[data->vddcgfx_leakage.count] = vddgfx; -+ data->vddcgfx_leakage.leakage_id[data->vddcgfx_leakage.count] = virtual_voltage_id; -+ data->vddcgfx_leakage.count++; -+ } -+ } else { -+ printk("Error retrieving EVV voltage value!\n"); - } - } - } else { -@@ -452,19 +453,20 @@ int tonga_get_evv_voltage(struct pp_hwmgr *hwmgr) - if (0 == tonga_get_sclk_for_voltage_evv(hwmgr, - pptable_info->vddc_lookup_table, - virtual_voltage_id, &sclk)) { -- PP_ASSERT_WITH_CODE(0 == atomctrl_get_voltage_evv_on_sclk -- (hwmgr, VOLTAGE_TYPE_VDDC, sclk, -- virtual_voltage_id, &vddc), -- "Error retrieving EVV voltage value!", continue); -- -- /* need to make sure vddc is less than 2v or else, it could burn the ASIC. */ -- PP_ASSERT_WITH_CODE(vddc < 2000, "Invalid VDDC value!", return -1); -- -- /* the voltage should not be zero nor equal to leakage ID */ -- if (vddc != 0 && vddc != virtual_voltage_id) { -- data->vddc_leakage.actual_voltage[data->vddc_leakage.count] = vddc; -- data->vddc_leakage.leakage_id[data->vddc_leakage.count] = virtual_voltage_id; -- data->vddc_leakage.count++; -+ if (0 == atomctrl_get_voltage_evv_on_sclk -+ (hwmgr, VOLTAGE_TYPE_VDDC, sclk, -+ virtual_voltage_id, &vddc)) { -+ /* need to make sure vddc is less than 2v or else, it could burn the ASIC. */ -+ PP_ASSERT_WITH_CODE(vddc < 2000, "Invalid VDDC value!", return -1); -+ -+ /* the voltage should not be zero nor equal to leakage ID */ -+ if (vddc != 0 && vddc != virtual_voltage_id) { -+ data->vddc_leakage.actual_voltage[data->vddc_leakage.count] = vddc; -+ data->vddc_leakage.leakage_id[data->vddc_leakage.count] = virtual_voltage_id; -+ data->vddc_leakage.count++; -+ } -+ } else { -+ printk("Error retrieving EVV voltage value!\n"); - } - } - } --- -2.7.4 - |