From patchwork Thu Apr 14 20:10:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Moritz_K=C3=BChner?= X-Patchwork-Id: 8843911 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 33B3FC0553 for ; Fri, 15 Apr 2016 00:23:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 593C02034C for ; Fri, 15 Apr 2016 00:23:41 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 6B699202FF for ; Fri, 15 Apr 2016 00:23:40 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A020C6EB52; Fri, 15 Apr 2016 00:23:34 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 651CC6EB07 for ; Thu, 14 Apr 2016 20:11:08 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id l6so777775wml.3 for ; Thu, 14 Apr 2016 13:11:08 -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; bh=glmGC9rMpVWGdcBvhdPanrGFA+VJwtwgkh8U6E8aeYI=; b=VJ+WhTezfNhtwsDqNAk0XLXv+X/T0zI+We/3RjcRBevcDSyVqmCx9jCf1i7z97a/sj mpx2wDcknLRBOmzFgXhYUl5m+0ups2k1Wo3VzArXuCOPO0jz8YITRTdDNi6cE4N56LL1 YAD38vMzJkiFiEq9cWojXKnWTldwQDLVndqeqOHAJf8Rz/I6l6744fIkuFiquJVAIDq3 v+vZPIXJkq9vPmBhDqgoT2NSOClAEnYO4QeVrr7/SG/uEP4Cxf7KVIzWsvqOg8EBIC5K +8qf+WCyaZomtNX2vPtXWQU8Bmex5QchPjjJrruSDEQK2sxvFoqrrmxwQm4PPz5Plicv dWYw== 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; bh=glmGC9rMpVWGdcBvhdPanrGFA+VJwtwgkh8U6E8aeYI=; b=Uh1/1i1YL5dVtvhaNZjIhQRQrp+//zzLZoBZoBIkTSnnEyHrPBjGoERnX+oB8q/yA4 3DYzKFTYGfkhiqw6ER9QSmnev08yA0LHL8cidTMHaxSXPSYV4oKSa7dmI8MgY1Ccsq/d Azy2+a66SimmAE/i7BiZSEXkGo4gPa10k6WBSlt8x4rVAb1h9HrBxMzhOCEeY23jUCQ2 5mBdBinFlUzJJTrZyGimKZDvZLUwi486qreNnlx2mu3QQMIUv9zWCQWRh5HFuc0B+56T vZ0Tdkrj2d8poPWjlgpBzYTMQllUKdXKedmK+9EsM7cyf3M5RFf81UjtAWRIZ3FCSa8k H8yA== X-Gm-Message-State: AOPr4FVIaVN9A/NYfNcGTWI41EZDh15y0Ww7gHK6my8z7SxT5ZBcQzPpiwXAxKhOm9xSXw== X-Received: by 10.194.92.163 with SMTP id cn3mr18030706wjb.3.1460664667067; Thu, 14 Apr 2016 13:11:07 -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 k139sm8134653wmg.24.2016.04.14.13.11.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 14 Apr 2016 13:11:06 -0700 (PDT) From: =?UTF-8?q?Moritz=20K=C3=BChner?= To: dri-devel@lists.freedesktop.org Subject: [PATCH 2/2] drm/amd/powerplay/hwmgr: don't add invalid voltage Date: Thu, 14 Apr 2016 22:10:28 +0200 Message-Id: <1460664628-14623-3-git-send-email-kuehner.moritz@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1460664628-14623-1-git-send-email-kuehner.moritz@gmail.com> References: <1460664628-14623-1-git-send-email-kuehner.moritz@gmail.com> X-Mailman-Approved-At: Fri, 15 Apr 2016 00:23:33 +0000 Cc: alexander.deucher@amd.com, =?UTF-8?q?Moritz=20K=C3=BChner?= 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: , MIME-Version: 1.0 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. --- 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..9a5d10a 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 + { + printk("%s\n", "Error retrieving EVV voltage value!"); } } } 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 + { + printk("%s\n", "Error retrieving EVV voltage value!"); } } }