[PATCH] ACPI: CPPC: fix bug that causes the value written in cpc register to be wrong.

Lifeng Zheng posted 1 patch 1 year, 2 months ago
drivers/acpi/cppc_acpi.c | 1 -
1 file changed, 1 deletion(-)
[PATCH] ACPI: CPPC: fix bug that causes the value written in cpc register to be wrong.
Posted by Lifeng Zheng 1 year, 2 months ago
With these codes, the value written in cpc register will be the result of
the OR operatiion on input value and prev_val. This will causes the value
to be wrong.

Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
---
 drivers/acpi/cppc_acpi.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 01192fd047a6..f69ef7cc0caf 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -1146,7 +1146,6 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
 			return -EFAULT;
 		}
 		val = MASK_VAL_WRITE(reg, prev_val, val);
-		val |= prev_val;
 	}
 
 	switch (size) {
-- 
2.33.0
Re: [PATCH] ACPI: CPPC: fix bug that causes the value written in cpc register to be wrong.
Posted by Clément Léger 1 year, 2 months ago

On 13/11/2024 03:49, Lifeng Zheng wrote:
> With these codes, the value written in cpc register will be the result of
> the OR operatiion on input value and prev_val. This will causes the value
> to be wrong.
> 
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/acpi/cppc_acpi.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> index 01192fd047a6..f69ef7cc0caf 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> @@ -1146,7 +1146,6 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
>  			return -EFAULT;
>  		}
>  		val = MASK_VAL_WRITE(reg, prev_val, val);
> -		val |= prev_val;

Hi Lifeng,

Indeed, MASK_VAL_WRITE() already takes care of ORing prev_val with the
register mask. You can also add a Fixes:

Fixes: 60949b7b8054 ("ACPI: CPPC: Fix MASK_VAL() usage")

Thanks,

Clément

>  	}
>  
>  	switch (size) {

Re: [PATCH] ACPI: CPPC: fix bug that causes the value written in cpc register to be wrong.
Posted by zhenglifeng (A) 1 year, 2 months ago

On 2024/11/13 15:05, Clément Léger wrote:
> 
> 
> On 13/11/2024 03:49, Lifeng Zheng wrote:
>> With these codes, the value written in cpc register will be the result of
>> the OR operatiion on input value and prev_val. This will causes the value
>> to be wrong.
>>
>> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
>> ---
>>  drivers/acpi/cppc_acpi.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
>> index 01192fd047a6..f69ef7cc0caf 100644
>> --- a/drivers/acpi/cppc_acpi.c
>> +++ b/drivers/acpi/cppc_acpi.c
>> @@ -1146,7 +1146,6 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
>>  			return -EFAULT;
>>  		}
>>  		val = MASK_VAL_WRITE(reg, prev_val, val);
>> -		val |= prev_val;
> 
> Hi Lifeng,
> 
> Indeed, MASK_VAL_WRITE() already takes care of ORing prev_val with the
> register mask. You can also add a Fixes:
> 
> Fixes: 60949b7b8054 ("ACPI: CPPC: Fix MASK_VAL() usage")
> 
> Thanks,
> 
> Clément
> 
>>  	}
>>  
>>  	switch (size) {
> 

Thanks for reminder. I'll add this Fixes and resend this patch.