2024-05-08 04:47:34

by Zhang, Rui

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] thermal: intel: hfi: Shorten the thermal netlink event delay to 100ms

On Tue, 2024-05-07 at 20:43 -0700, Ricardo Neri wrote:
> The delay between an HFI interrupt and its corresponding thermal
> netlink
> event has so far been hard-coded to CONFIG_HZ jiffies (1 second).
> This
> delay is too long for hardware that generates updates every tens of
> milliseconds.
>
> The HFI driver uses a delayed workqueue to send thermal netlink
> events. No
> subsequent events will be sent if there is pending work.
>
> As a result, much of the information of consecutive hardware updates
> will
> be lost if the workqueue delay is too long. User space entities may
> act on
> obsolete data. If the delay is too short, multiple events may
> overwhelm
> listeners.
>
> Set the delay to 100ms to strike a balance between too many and too
> few
> events. Use milliseconds instead of jiffies to improve readability.
>
> Signed-off-by: Ricardo Neri <[email protected]>

Acked-by: Zhang Rui <[email protected]>

-rui
> ---
> Cc: Len Brown <[email protected]>
> Cc: Srinivas Pandruvada <[email protected]>
> Cc: Stanislaw Gruszka <[email protected]>
> Cc: Zhang Rui <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> ---
> Changes since v1:
>  * Dropped the debugfs interface. Instead, updated the delay from 1s
> to
>    100ms.
> ---
>  drivers/thermal/intel/intel_hfi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/intel/intel_hfi.c
> b/drivers/thermal/intel/intel_hfi.c
> index e2b82d71ab6b..d82b8788b0f8 100644
> --- a/drivers/thermal/intel/intel_hfi.c
> +++ b/drivers/thermal/intel/intel_hfi.c
> @@ -166,7 +166,7 @@ static struct hfi_features hfi_features;
>  static DEFINE_MUTEX(hfi_instance_lock);
>  
>  static struct workqueue_struct *hfi_updates_wq;
> -#define HFI_UPDATE_DELAY               HZ
> +#define HFI_UPDATE_DELAY_MS            100
>  #define HFI_MAX_THERM_NOTIFY_COUNT     16
>  
>  static void get_hfi_caps(struct hfi_instance *hfi_instance,
> @@ -322,7 +322,7 @@ void intel_hfi_process_event(__u64
> pkg_therm_status_msr_val)
>         raw_spin_unlock(&hfi_instance->event_lock);
>  
>         queue_delayed_work(hfi_updates_wq, &hfi_instance-
> >update_work,
> -                          HFI_UPDATE_DELAY);
> +                          msecs_to_jiffies(HFI_UPDATE_DELAY_MS));
>  }
>  
>  static void init_hfi_cpu_index(struct hfi_cpu_info *info)