Skip to content
Snippets Groups Projects
Commit eee82da0 authored by David Arcari's avatar David Arcari
Browse files

thermal: int3400: Fix reading of current_uuid for active policy

JIRA: https://issues.redhat.com/browse/RHEL-79821



commit 7082503622986537f57bdb5ef23e69e70cfad881
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Thu Nov 14 12:02:13 2024 -0800

    thermal: int3400: Fix reading of current_uuid for active policy

    When the current_uuid attribute is set to the active policy UUID,
    reading back the same attribute is returning "INVALID" instead of
    the active policy UUID on some platforms before Ice Lake.

    In platforms before Ice Lake, firmware provides a list of supported
    thermal policies. In this case, user space can select any of the
    supported thermal policies via a write to attribute "current_uuid".

    In commit c7ff29763989 ("thermal: int340x: Update OS policy capability
    handshake")', the OS policy handshake was updated to support Ice Lake
    and later platforms and it treated priv->current_uuid_index=0 as
    invalid. However, priv->current_uuid_index=0 is for the active policy,
    only priv->current_uuid_index=-1 is invalid.

    Fix this issue by updating the priv->current_uuid_index check.

    Fixes: c7ff29763989 ("thermal: int340x: Update OS policy capability handshake")
Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: 5.18+ <stable@vger.kernel.org> # 5.18+
    Link: https://patch.msgid.link/20241114200213.422303-1-srinivas.pandruvada@linux.intel.com


    [ rjw: Subject and changelog edits ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>

Signed-off-by: default avatarDavid Arcari <darcari@redhat.com>
parent 2edd5114
No related branches found
No related tags found
No related merge requests found
......@@ -144,7 +144,7 @@ static ssize_t current_uuid_show(struct device *dev,
struct int3400_thermal_priv *priv = dev_get_drvdata(dev);
int i, length = 0;
if (priv->current_uuid_index > 0)
if (priv->current_uuid_index >= 0)
return sprintf(buf, "%s\n",
int3400_thermal_uuids[priv->current_uuid_index]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment