mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Zhang, Rui" <rui.zhang@intel.com>
To: "ricardo.neri-calderon@linux.intel.com"
	<ricardo.neri-calderon@linux.intel.com>,
	"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>
Cc: "srinivas.pandruvada@linux.intel.com"
	<srinivas.pandruvada@linux.intel.com>,
	"Brown, Len" <len.brown@intel.com>,
	"stanislaw.gruszka@linux.intel.com"
	<stanislaw.gruszka@linux.intel.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Neri, Ricardo" <ricardo.neri@intel.com>
Subject: Re: [PATCH 4/4] thermal: intel: hfi: Tune the number of CPU capabilities per netlink event
Date: Tue, 30 Apr 2024 05:07:54 +0000	[thread overview]
Message-ID: <849b5bd75707433c6a7d9b854f8e3b5fd17dcba0.camel@intel.com> (raw)
In-Reply-To: <20240429234152.16230-5-ricardo.neri-calderon@linux.intel.com>

On Mon, 2024-04-29 at 16:41 -0700, Ricardo Neri wrote:
> The number of updated CPU capabilities per netlink event is hard-
> coded to
> 16. On systems with more than 16 it takes more than one thermal
> netlink
> event to relay all the new capabilities when processing an HFI
> interrupt.
> This adds unnecessary overhead.
> 
> Make the number of updated capabilities per event tuneable via
> debugfs.
> Users can then experiment with different values.
> 
Is there a limitation about the number of CPUs supported in one netlink
event?

IMO, we still have to use a fixed number here because debugfs can be
changed by someone else, and userspace application like intel-lpmd
cannot make assumption that the netlink message follows what it set.

or can we append one magic item in the end of one update?
userspace can just check the magic item no matter the number of CPU per
netlink event.

thanks,
rui

> We already take the hfi_instance_lock when submitting thermal netlink
> updates. Use it to serialize debugfs accesses to
> hfi_therm_notify_count.
> 
> Suggested-by: Srinivas Pandruvada
> <srinivas.pandruvada@linux.intel.com>
> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
> ---
> 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 | 34 ++++++++++++++++++++++++++---
> --
>  1 file changed, 29 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/thermal/intel/intel_hfi.c
> b/drivers/thermal/intel/intel_hfi.c
> index d6d3544509fc..d5163b9766c0 100644
> --- a/drivers/thermal/intel/intel_hfi.c
> +++ b/drivers/thermal/intel/intel_hfi.c
> @@ -175,6 +175,7 @@ static struct workqueue_struct *hfi_updates_wq;
>  
>  /* Keep this variable 8-byte aligned to get atomic accesses. */
>  static unsigned long hfi_update_delay = HFI_UPDATE_DELAY;
> +static int hfi_thermnl_caps_per_event = HFI_THERMNL_CAPS_PER_EVENT;
>  
>  #ifdef CONFIG_DEBUG_FS
>  static int hfi_update_delay_get(void *data, u64 *val)
> @@ -205,6 +206,25 @@ static int hfi_update_delay_set(void *data, u64
> val)
>  DEFINE_DEBUGFS_ATTRIBUTE(hfi_update_delay_fops,
> hfi_update_delay_get,
>                          hfi_update_delay_set, "%llu\n");
>  
> +static int hfi_thermnl_caps_per_event_get(void *data, u64 *val)
> +{
> +       mutex_lock(&hfi_instance_lock);
> +       *val = hfi_thermnl_caps_per_event;
> +       mutex_unlock(&hfi_instance_lock);
> +       return 0;
> +}
> +
> +static int hfi_thermnl_caps_per_event_set(void *data, u64 val)
> +{
> +       mutex_lock(&hfi_instance_lock);
> +       hfi_thermnl_caps_per_event = val;
> +       mutex_unlock(&hfi_instance_lock);
> +       return 0;
> +}
> +
> +DEFINE_DEBUGFS_ATTRIBUTE(hfi_thermnl_caps_per_event_fops,
> +                        hfi_thermnl_caps_per_event_get,
> +                        hfi_thermnl_caps_per_event_set, "%llu\n");
>  static struct dentry *hfi_debugfs_dir;
>  
>  static void hfi_debugfs_unregister(void)
> @@ -226,6 +246,11 @@ static void hfi_debugfs_register(void)
>         if (!f)
>                 goto err;
>  
> +       f = debugfs_create_file("thermnl_caps_per_event", 0644,
> hfi_debugfs_dir,
> +                               NULL,
> &hfi_thermnl_caps_per_event_fops);
> +       if (!f)
> +               goto err;
> +
>         return;
>  err:
>         hfi_debugfs_unregister();
> @@ -286,16 +311,15 @@ static void update_capabilities(struct
> hfi_instance *hfi_instance)
>  
>         get_hfi_caps(hfi_instance, cpu_caps);
>  
> -       if (cpu_count < HFI_THERMNL_CAPS_PER_EVENT)
> +       if (cpu_count < hfi_thermnl_caps_per_event)
>                 goto last_cmd;
>  
>         /* Process complete chunks of HFI_THERMNL_CAPS_PER_EVENT
> capabilities. */
>         for (i = 0;
> -            (i + HFI_THERMNL_CAPS_PER_EVENT) <= cpu_count;
> -            i += HFI_THERMNL_CAPS_PER_EVENT)
> -
>                thermal_genl_cpu_capability_event(HFI_THERMNL_CAPS_PER_
> EVENT,
> +            (i + hfi_thermnl_caps_per_event) <= cpu_count;
> +            i += hfi_thermnl_caps_per_event)
> +               thermal_genl_cpu_capability_event(hfi_thermnl_caps_pe
> r_event,
>                                                   &cpu_caps[i]);
> -
>         cpu_count = cpu_count - i;
>  
>  last_cmd:


  reply	other threads:[~2024-04-30  5:08 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-29 23:41 [PATCH 0/4] intel: thermal: hfi: Add debugfs files for tuning Ricardo Neri
2024-04-29 23:41 ` [PATCH 1/4] thermal: intel: hfi: Rename HFI_UPDATE_INTERVAL Ricardo Neri
2024-04-30  4:50   ` Zhang, Rui
2024-04-29 23:41 ` [PATCH 2/4] thermal: intel: hfi: Tune the HFI thermal netlink event delay via debugfs Ricardo Neri
2024-04-30  4:52   ` Zhang, Rui
2024-05-01  0:59     ` Ricardo Neri
2024-04-29 23:41 ` [PATCH 3/4] thermal: intel: hfi: Rename HFI_MAX_THERM_NOTIFY_COUNT Ricardo Neri
2024-04-29 23:41 ` [PATCH 4/4] thermal: intel: hfi: Tune the number of CPU capabilities per netlink event Ricardo Neri
2024-04-30  5:07   ` Zhang, Rui [this message]
2024-05-01  1:16     ` Ricardo Neri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=849b5bd75707433c6a7d9b854f8e3b5fd17dcba0.camel@intel.com \
    --to=rui.zhang@intel.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=ricardo.neri-calderon@linux.intel.com \
    --cc=ricardo.neri@intel.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=stanislaw.gruszka@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®