From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: <zhaoguohan@kylinos.cn>, Karthik Poosa <karthik.poosa@intel.com>,
"Riana Tauro" <riana.tauro@intel.com>
Cc: <lucas.demarchi@intel.com>, <thomas.hellstrom@linux.intel.com>,
<airlied@gmail.com>, <simona@ffwll.ch>,
<intel-xe@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RESEND][PATCH] drm/xe/hwmon: Return early on power limit read failure
Date: Tue, 12 Aug 2025 09:51:15 -0400 [thread overview]
Message-ID: <aJtG0xmBBgwnTANg@intel.com> (raw)
In-Reply-To: <20250812065930.15847-1-zhaoguohan@kylinos.cn>
On Tue, Aug 12, 2025 at 02:59:30PM +0800, zhaoguohan@kylinos.cn wrote:
> From: GuoHan Zhao <zhaoguohan@kylinos.cn>
>
> In xe_hwmon_pcode_rmw_power_limit(), when xe_pcode_read() fails,
> the function logs the error but continues to execute the subsequent
> logic. This can result in undefined behavior as the values val0 and
> val1 may contain invalid data.
>
> Fix this by adding an early return after logging the read failure,
> ensuring that we don't proceed with potentially corrupted data.
>
Fixes: 8aa7306631f0 ("drm/xe/hwmon: Fix xe_hwmon_power_max_write")
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Karthik Poosa <karthik.poosa@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
It looks like the original idea was to try to write even if the
read failed, but it was not a RMW function. Then, when it got
moved to RMW this ignored error was forgotten.
> Signed-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>
> ---
> drivers/gpu/drm/xe/xe_hwmon.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index f08fc4377d25..eb410c5293e7 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -190,9 +190,11 @@ static int xe_hwmon_pcode_rmw_power_limit(const struct xe_hwmon *hwmon, u32 attr
> READ_PL_FROM_PCODE : READ_PL_FROM_FW),
> &val0, &val1);
>
> - if (ret)
> + if (ret) {
> drm_dbg(&hwmon->xe->drm, "read failed ch %d val0 0x%08x, val1 0x%08x, ret %d\n",
> channel, val0, val1, ret);
> + return ret;
Please change this to drm_err. Now this is an error that needs to be visible.
But also, I believe this error needs to be propagated up to the caller so anyone
using hwmon will have a clear indication that the write failed.
> + }
>
> if (attr == PL1_HWMON_ATTR)
> val0 = (val0 & ~clr) | set;
> --
> 2.43.0
>
next prev parent reply other threads:[~2025-08-12 13:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-12 6:59 [RESEND][PATCH] drm/xe/hwmon: Return early on power limit read failure zhaoguohan
2025-08-12 13:51 ` Rodrigo Vivi [this message]
2025-08-12 15:12 ` ✓ CI.KUnit: success for drm/xe/hwmon: Return early on power limit read failure (rev2) Patchwork
2025-08-12 16:12 ` ✓ Xe.CI.BAT: " Patchwork
2025-08-12 18:03 ` ✗ Xe.CI.Full: failure " Patchwork
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=aJtG0xmBBgwnTANg@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=karthik.poosa@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lucas.demarchi@intel.com \
--cc=riana.tauro@intel.com \
--cc=simona@ffwll.ch \
--cc=thomas.hellstrom@linux.intel.com \
--cc=zhaoguohan@kylinos.cn \
/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.