All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gustavo Padovan <gustavo@padovan.org>
To: "Moritz Kühner" <kuehner.moritz@gmail.com>
Cc: alexander.deucher@amd.com, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/amd/powerplay/hwmgr: don't add invalid voltage
Date: Thu, 14 Apr 2016 17:34:12 -0700	[thread overview]
Message-ID: <20160415003412.GD3312@joana> (raw)
In-Reply-To: <1460664628-14623-3-git-send-email-kuehner.moritz@gmail.com>

Hi Moritz,

2016-04-14 Moritz Kühner <kuehner.moritz@gmail.com>:

> 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!");

Use DRM_ERROR here. And no need to for %s on this format string. I think
you want something like this:

	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
> +				{
> +					printk("%s\n", "Error retrieving EVV voltage value!");

same here.

	Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

      reply	other threads:[~2016-04-15  0:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14 20:10 [PATCH 0/2] tonga_get_evv_voltage error handling fixes Moritz Kühner
2016-04-14 20:10 ` [PATCH 1/2] drm/amd/powerplay/hwmgr: prevent VDDC from exceeding 2V Moritz Kühner
2016-04-14 20:10 ` [PATCH 2/2] drm/amd/powerplay/hwmgr: don't add invalid voltage Moritz Kühner
2016-04-15  0:34   ` Gustavo Padovan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160415003412.GD3312@joana \
    --to=gustavo@padovan.org \
    --cc=alexander.deucher@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kuehner.moritz@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.