Re: [PATCH] asus-wmi: Increase FAN_CURVE_BUF_LEN to 32

From: Guenter Roeck
Date: Mon Aug 29 2022 - 09:36:33 EST


On Sun, Aug 28, 2022 at 07:46:38PM +1200, Luke D. Jones wrote:
> Fix for TUF laptops returning with an -ENOSPC on calling
> asus_wmi_evaluate_method_buf() when fetching default curves. The TUF method
> requires at least 32 bytes space.
>
> This also moves and changes the pr_debug() in fan_curve_check_present() to
> pr_warn() in fan_curve_get_factory_default() so that there is at least some
> indication in logs of why it fails.
>
> Signed-off-by: Luke D. Jones <luke@xxxxxxxxxx>
> ---
> drivers/platform/x86/asus-wmi.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
> index 3d9fd58573f9..11203213e00d 100644
> --- a/drivers/platform/x86/asus-wmi.c
> +++ b/drivers/platform/x86/asus-wmi.c
> @@ -108,7 +108,7 @@ module_param(fnlock_default, bool, 0444);
> #define WMI_EVENT_MASK 0xFFFF
>
> #define FAN_CURVE_POINTS 8
> -#define FAN_CURVE_BUF_LEN (FAN_CURVE_POINTS * 2)
> +#define FAN_CURVE_BUF_LEN 32
> #define FAN_CURVE_DEV_CPU 0x00
> #define FAN_CURVE_DEV_GPU 0x01
> /* Mask to determine if setting temperature or percentage */
> @@ -2383,8 +2383,10 @@ static int fan_curve_get_factory_default(struct asus_wmi *asus, u32 fan_dev)
> curves = &asus->custom_fan_curves[fan_idx];
> err = asus_wmi_evaluate_method_buf(asus->dsts_id, fan_dev, mode, buf,
> FAN_CURVE_BUF_LEN);
> - if (err)
> + if (err) {
> + pr_warn("%s (0x%08x) failed: %d\n", __func__, fan_dev, err);
> return err;
> + }
>
> fan_curve_copy_from_buf(curves, buf);
> curves->device_id = fan_dev;
> @@ -2402,9 +2404,6 @@ static int fan_curve_check_present(struct asus_wmi *asus, bool *available,
>
> err = fan_curve_get_factory_default(asus, fan_dev);
> if (err) {
> - pr_debug("fan_curve_get_factory_default(0x%08x) failed: %d\n",
> - fan_dev, err);
> - /* Don't cause probe to fail on devices without fan-curves */

The pr_warn() should be here. If you want to have a message from the call
in fan_curve_enable_store(), add dev_err() there.

Guenter

> return 0;
> }
>