diff mbox series

clk: qcom: clk-rpmh: Fix overflow in BCM vote

Message ID 20240808-clk-rpmh-bcm-vote-fix-v1-1-109bd1d76189@quicinc.com (mailing list archive)
State Superseded
Headers show
Series clk: qcom: clk-rpmh: Fix overflow in BCM vote | expand

Commit Message

Imran Shaik Aug. 8, 2024, 7:05 a.m. UTC
From: Mike Tipton <quic_mdtipton@quicinc.com>

Valid frequencies may result in BCM votes that exceed the max HW value.
Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't
truncated, which can result in lower frequencies than desired.

Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support")
Cc: stable@vger.kernel.org
Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com>
---
 drivers/clk/qcom/clk-rpmh.c | 3 +++
 1 file changed, 3 insertions(+)


---
base-commit: 222a3380f92b8791d4eeedf7cd750513ff428adf
change-id: 20240808-clk-rpmh-bcm-vote-fix-c344e213c9bb

Best regards,

Comments

Taniya Das Aug. 8, 2024, 7:27 a.m. UTC | #1
On 8/8/2024 12:35 PM, Imran Shaik wrote:
> From: Mike Tipton <quic_mdtipton@quicinc.com>
> 
> Valid frequencies may result in BCM votes that exceed the max HW value.
> Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't
> truncated, which can result in lower frequencies than desired.
> 
> Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support")
> Cc: stable@vger.kernel.org
> Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
> Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com>
> ---
>   drivers/clk/qcom/clk-rpmh.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
> index bb82abeed88f..233ccd365a37 100644
> --- a/drivers/clk/qcom/clk-rpmh.c
> +++ b/drivers/clk/qcom/clk-rpmh.c
> @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable)
>   		cmd_state = 0;
>   	}
>   
> +	if (cmd_state > BCM_TCS_CMD_VOTE_MASK)
> +		cmd_state = BCM_TCS_CMD_VOTE_MASK;
> +
>   	if (c->last_sent_aggr_state != cmd_state) {
>   		cmd.addr = c->res_addr;
>   		cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state);
> 


Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
Stephen Boyd Aug. 8, 2024, 7:43 p.m. UTC | #2
Quoting Imran Shaik (2024-08-08 00:05:02)
> From: Mike Tipton <quic_mdtipton@quicinc.com>
> 
> Valid frequencies may result in BCM votes that exceed the max HW value.
> Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't
> truncated, which can result in lower frequencies than desired.
> 
> Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support")
> Cc: stable@vger.kernel.org
> Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
> Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com>
> ---
>  drivers/clk/qcom/clk-rpmh.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
> index bb82abeed88f..233ccd365a37 100644
> --- a/drivers/clk/qcom/clk-rpmh.c
> +++ b/drivers/clk/qcom/clk-rpmh.c
> @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable)
>                 cmd_state = 0;
>         }
>  
> +       if (cmd_state > BCM_TCS_CMD_VOTE_MASK)
> +               cmd_state = BCM_TCS_CMD_VOTE_MASK;
> +

This is

	cmd_state = min(cmd_state, BCM_TCS_CMD_VOTE_MASK);
Imran Shaik Aug. 9, 2024, 5:18 a.m. UTC | #3
On 8/9/2024 1:13 AM, Stephen Boyd wrote:
> Quoting Imran Shaik (2024-08-08 00:05:02)
>> From: Mike Tipton <quic_mdtipton@quicinc.com>
>>
>> Valid frequencies may result in BCM votes that exceed the max HW value.
>> Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't
>> truncated, which can result in lower frequencies than desired.
>>
>> Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
>> Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com>
>> ---
>>   drivers/clk/qcom/clk-rpmh.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
>> index bb82abeed88f..233ccd365a37 100644
>> --- a/drivers/clk/qcom/clk-rpmh.c
>> +++ b/drivers/clk/qcom/clk-rpmh.c
>> @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable)
>>                  cmd_state = 0;
>>          }
>>   
>> +       if (cmd_state > BCM_TCS_CMD_VOTE_MASK)
>> +               cmd_state = BCM_TCS_CMD_VOTE_MASK;
>> +
> 
> This is
> 
> 	cmd_state = min(cmd_state, BCM_TCS_CMD_VOTE_MASK);

Sure, I will update this logic and post another series.

Thanks,
Imran
diff mbox series

Patch

diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
index bb82abeed88f..233ccd365a37 100644
--- a/drivers/clk/qcom/clk-rpmh.c
+++ b/drivers/clk/qcom/clk-rpmh.c
@@ -263,6 +263,9 @@  static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable)
 		cmd_state = 0;
 	}
 
+	if (cmd_state > BCM_TCS_CMD_VOTE_MASK)
+		cmd_state = BCM_TCS_CMD_VOTE_MASK;
+
 	if (c->last_sent_aggr_state != cmd_state) {
 		cmd.addr = c->res_addr;
 		cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state);