diff options
author | Huisong Li <lihuisong@huawei.com> | 2025-02-20 11:08:32 +0800 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2025-03-02 10:31:26 -0800 |
commit | 0ea627381eb527a0ebd262c690c3992085b87ff4 (patch) | |
tree | 0792801190760de3e31ec524b98a9780e10af46a | |
parent | 9fee7d19bab635f89223cc40dfd2c8797fdc4988 (diff) |
hwmon: (acpi_power_meter) Fix the fake power alarm reporting
We encountered a problem that a fake power alarm is reported to
user on the platform unsupported notifications at the second step
below:
1> Query 'power1_alarm' attribute when the power capping occurs.
2> Query 'power1_alarm' attribute when the power capping is over
and the current average power is less then power cap value.
The root cause is that the resource->power_alarm is set to true
at the first step. And power meter use this old value to show
the power alarm state instead of the current the comparison value.
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Link: https://lore.kernel.org/r/20250220030832.2976-1-lihuisong@huawei.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r-- | drivers/hwmon/acpi_power_meter.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c index 44afb07409a4..f05986e4f379 100644 --- a/drivers/hwmon/acpi_power_meter.c +++ b/drivers/hwmon/acpi_power_meter.c @@ -437,9 +437,13 @@ static ssize_t show_val(struct device *dev, ret = update_cap(resource); if (ret) return ret; + resource->power_alarm = resource->power > resource->cap; + val = resource->power_alarm; + } else { + val = resource->power_alarm || + resource->power > resource->cap; + resource->power_alarm = resource->power > resource->cap; } - val = resource->power_alarm || resource->power > resource->cap; - resource->power_alarm = resource->power > resource->cap; break; case 7: case 8: |