lkml.org 
[lkml]   [2023]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] firmware: arm_scmi: Fix freq/power truncation in the perf protocol
    Date
    Fix frequency and power truncation seen in the performance protocol by
    casting it with the correct type.

    Fixes: a9e3fbfaa0ff ("firmware: arm_scmi: add initial support for performance protocol")
    Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
    ---
    drivers/firmware/arm_scmi/perf.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c
    index a648521e04a3..3344ce3a2026 100644
    --- a/drivers/firmware/arm_scmi/perf.c
    +++ b/drivers/firmware/arm_scmi/perf.c
    @@ -804,9 +804,9 @@ static int scmi_dvfs_device_opps_add(const struct scmi_protocol_handle *ph,

    for (idx = 0; idx < dom->opp_count; idx++) {
    if (!dom->level_indexing_mode)
    - freq = dom->opp[idx].perf * dom->mult_factor;
    + freq = (unsigned long)dom->opp[idx].perf * dom->mult_factor;
    else
    - freq = dom->opp[idx].indicative_freq * 1000;
    + freq = (unsigned long)dom->opp[idx].indicative_freq * 1000;

    data.level = dom->opp[idx].perf;
    data.freq = freq;
    @@ -879,7 +879,7 @@ static int scmi_dvfs_freq_get(const struct scmi_protocol_handle *ph, u32 domain,
    return ret;

    if (!dom->level_indexing_mode) {
    - *freq = level * dom->mult_factor;
    + *freq = (unsigned long)level * dom->mult_factor;
    } else {
    struct scmi_opp *opp;

    @@ -887,7 +887,7 @@ static int scmi_dvfs_freq_get(const struct scmi_protocol_handle *ph, u32 domain,
    if (!opp)
    return -EIO;

    - *freq = opp->indicative_freq * 1000;
    + *freq = (unsigned long)opp->indicative_freq * 1000;
    }

    return ret;
    @@ -908,9 +908,9 @@ static int scmi_dvfs_est_power_get(const struct scmi_protocol_handle *ph,

    for (opp = dom->opp, idx = 0; idx < dom->opp_count; idx++, opp++) {
    if (!dom->level_indexing_mode)
    - opp_freq = opp->perf * dom->mult_factor;
    + opp_freq = (unsigned long)opp->perf * dom->mult_factor;
    else
    - opp_freq = opp->indicative_freq * 1000;
    + opp_freq = (unsigned long)opp->indicative_freq * 1000;

    if (opp_freq < *freq)
    continue;
    --
    2.17.1
    \
     
     \ /
      Last update: 2023-11-29 07:59    [W:3.239 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site