From patchwork Sun Apr 17 14:15:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Moritz_K=C3=BChner?= X-Patchwork-Id: 8864131 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 94E079F1C1 for ; Mon, 18 Apr 2016 00:56:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id AEB94201E4 for ; Mon, 18 Apr 2016 00:56:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id D0681201CD for ; Mon, 18 Apr 2016 00:56:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 825586E41F; Mon, 18 Apr 2016 00:55:52 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C5056E334 for ; Sun, 17 Apr 2016 14:15:39 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id a140so17869947wma.2 for ; Sun, 17 Apr 2016 07:15:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1Zo9uRtCLqPxdgGvfL20EEIc6FuiVZU09Gqh2X8PyHk=; b=VguB6u0weDO70Simcv1TQrfxbBWLDa7eHH7RSFjnd7H6UKARpYRxoLBWaNBEZchOEr VfLIsQV7oMdEZ2t0vUZCPpKk6S1j3mxnC6uZJABdNFTxbPTNivkvu5RpCgbX9mgD4hfM PNgQRHl+g4+ifqloycmnNytUQofYn3DLcWFfn0F43hHXuU4am5KzRvL4Jr/taXoh04WJ WJFx5hMaGYpkMKOGp9gInRmd7ITh0Ak95vrkCWR94frVVCwJZ0SJ/MHIh8/+YPq/bIxA r75VkiUZJI9O1oy1OdNnjgEA1SeJun9gDatuDeFoc8o6XL4joSOc0jDOmZ6oI0viahvw 9LTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1Zo9uRtCLqPxdgGvfL20EEIc6FuiVZU09Gqh2X8PyHk=; b=lWgPFe9BMEBTcPi1k1c8GS7D1/7duIaj+1lr9DE11jQR5/K4RRYBjbKamMhnS4jcdA +jltU3spaXQ9U2rvjtznLLtBde3ts+ZM5ilKNcYP+rpD0myAMDo/YH0goedODyZN1r0n waA1oYCeNWKlIopG4JJ9q+7dou/LTNdaJQVBKM3Dr6ndWQgfaiMN2UMInwEOPLLUxRp5 JU3kvDmvSamqq+018Fr0hzYTzPJJGCXNH9D5lX6zsoH1cio8fQeyNK3y8WSFzO4KCjRt pNT3ao0JLvK1Grl7le2lj7HW+LJ/tHBzxHNf5R4sgCOjTHrbjlNTeonRHLiAsudMKF3n OUaw== X-Gm-Message-State: AOPr4FWRvb9q+cwQBSDJ0M/nXq65Ui/ujLHkmKMC1oWq0hgOoE2xRiPrUlCNO3BVPjyBGg== X-Received: by 10.28.46.69 with SMTP id u66mr14025984wmu.98.1460902537578; Sun, 17 Apr 2016 07:15:37 -0700 (PDT) Received: from max-Pc.local (HSI-KBW-091-089-090-118.hsi2.kabelbw.de. [91.89.90.118]) by smtp.gmail.com with ESMTPSA id o1sm52641732wjm.11.2016.04.17.07.15.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 17 Apr 2016 07:15:36 -0700 (PDT) From: =?UTF-8?q?Moritz=20K=C3=BChner?= To: dri-devel@lists.freedesktop.org Subject: [PATCH 2/2 v2] drm/amd/powerplay/hwmgr: don't add invalid voltage Date: Sun, 17 Apr 2016 16:15:24 +0200 Message-Id: <1460902524-12866-3-git-send-email-kuehner.moritz@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1460902524-12866-1-git-send-email-kuehner.moritz@gmail.com> References: <1460902524-12866-1-git-send-email-kuehner.moritz@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 18 Apr 2016 00:55:49 +0000 Cc: alexander.deucher@amd.com, =?UTF-8?q?Moritz=20K=C3=BChner?= , christian.koenig@amd.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 Signed-off-by: Moritz Kühner --- drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c | 54 +++++++++++++---------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c index 50afb02..0f264c4 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c @@ -429,19 +429,22 @@ int tonga_get_evv_voltage(struct pp_hwmgr *hwmgr) } } } - PP_ASSERT_WITH_CODE(0 == atomctrl_get_voltage_evv_on_sclk + if(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++; + 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 + { + DRM_ERROR("Error retrieving EVV voltage value!\n"); } } } else { @@ -449,19 +452,22 @@ 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 + if(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++; + 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 + { + DRM_ERROR("Error retrieving EVV voltage value!\n"); } } }