mbox series

[0/4] intel: thermal: hfi: Add debugfs files for tuning

Message ID 20240429234152.16230-1-ricardo.neri-calderon@linux.intel.com
Headers show
Series intel: thermal: hfi: Add debugfs files for tuning | expand

Message

Ricardo Neri April 29, 2024, 11:41 p.m. UTC
Hi,

HFI uses thermal netlink to relay updated CPU capabilities to user space.
The delay between an HFI interrupt and its corresponding thermal netlink
event as well as the number of capabilities updated per event (its payload)
have been so far hard-coded in intel_hfi.c.

These hard-coded values may not suit all hardware configurations or
listeners. If the delay is too long, much of the information from
consecutive hardware updates will be lost. If the delay is too short,
listeners may be overwhelmed with notifications.

The payload size may cause unnecessary overhead if it is too small, as
single HFI update is broken up into several thermal netlink events.

Listeners are better placed to decide the value of these parameters. They
know how quickly they can act on notifications and know better how to
handle them.

Add a debugfs interface to let listeners experiment with and tune these
parameters.

These patches apply cleanly on top of the testing branch of Rafael's
linux-pm.

Thanks and BR,
Ricardo

Ricardo Neri (4):
  thermal: intel: hfi: Rename HFI_UPDATE_INTERVAL
  thermal: intel: hfi: Tune the HFI thermal netlink event delay via
    debugfs
  thermal: intel: hfi: Rename HFI_MAX_THERM_NOTIFY_COUNT
  thermal: intel: hfi: Tune the number of CPU capabilities per netlink
    event

 drivers/thermal/intel/intel_hfi.c | 117 +++++++++++++++++++++++++++---
 1 file changed, 108 insertions(+), 9 deletions(-)

Comments

Zhang Rui April 30, 2024, 4:50 a.m. UTC | #1
On Mon, 2024-04-29 at 16:41 -0700, Ricardo Neri wrote:
> The name of the constant HFI_UPDATE_INTERVAL is misleading. It is not
> a
> periodic interval at which HFI updates are processed. It is the delay
> in
> the processing of an HFI update after the arrival of an HFI
> interrupt.
> 
> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>

Acked-by: Zhang Rui <rui.zhang@intel.com>

-rui
> ---
> Cc: Len Brown <len.brown@intel.com>
> Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> Cc: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> Cc: Zhang Rui <rui.zhang@intel.com>
> Cc: linux-pm@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  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 fbc7f0cd83d7..e2b82d71ab6b 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_INTERVAL            HZ
> +#define HFI_UPDATE_DELAY               HZ
>  #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_INTERVAL);
> +                          HFI_UPDATE_DELAY);
>  }
>  
>  static void init_hfi_cpu_index(struct hfi_cpu_info *info)