From: "Lazar, Lijo" <lijo.lazar@amd.com>
To: Yang Wang <kevinyang.wang@amd.com>, amd-gfx@lists.freedesktop.org
Cc: hawking.zhang@amd.com, alexander.deucher@amd.com
Subject: Re: [PATCH] drm/amdgpu: make amdgpu device attr_update() function more efficient
Date: Wed, 27 Mar 2024 11:51:38 +0530 [thread overview]
Message-ID: <2c6fe582-abb3-40dd-8591-5040697eadf3@amd.com> (raw)
In-Reply-To: <20240326090255.77211-1-kevinyang.wang@amd.com>
On 3/26/2024 2:32 PM, Yang Wang wrote:
> add a new enumeration type to identify device attribute node,
> this method is relatively more efficient compared with 'strcmp' in
> update_attr() function.
>
> Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
> ---
> drivers/gpu/drm/amd/pm/amdgpu_pm.c | 4 +--
> drivers/gpu/drm/amd/pm/inc/amdgpu_pm.h | 41 ++++++++++++++++++++++++++
> 2 files changed, 43 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> index 85e935556d7d..04f53f2667fe 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -2226,16 +2226,16 @@ static int default_attr_update(struct amdgpu_device *adev, struct amdgpu_device_
> uint32_t mask, enum amdgpu_device_attr_states *states)
> {
> struct device_attribute *dev_attr = &attr->dev_attr;
> + enum amdgpu_device_attr_type type = attr->type;
> uint32_t mp1_ver = amdgpu_ip_version(adev, MP1_HWIP, 0);
> uint32_t gc_ver = amdgpu_ip_version(adev, GC_HWIP, 0);
> - const char *attr_name = dev_attr->attr.name;
>
> if (!(attr->flags & mask)) {
> *states = ATTR_STATE_UNSUPPORTED;
> return 0;
> }
>
> -#define DEVICE_ATTR_IS(_name) (!strcmp(attr_name, #_name))
> +#define DEVICE_ATTR_IS(_name) (type == device_attr_type__##_name)
>
> if (DEVICE_ATTR_IS(pp_dpm_socclk)) {
> if (gc_ver < IP_VERSION(9, 0, 0))
> diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_pm.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_pm.h
> index eec816f0cbf9..157330c379be 100644
> --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_pm.h
> +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_pm.h
> @@ -43,8 +43,48 @@ enum amdgpu_device_attr_states {
> ATTR_STATE_SUPPORTED,
> };
>
> +enum amdgpu_device_attr_type {
Prefer id instead of type. That aside,
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Thanks,
Lijo
> + device_attr_type__unknown = -1,
> + device_attr_type__power_dpm_state = 0,
> + device_attr_type__power_dpm_force_performance_level,
> + device_attr_type__pp_num_states,
> + device_attr_type__pp_cur_state,
> + device_attr_type__pp_force_state,
> + device_attr_type__pp_table,
> + device_attr_type__pp_dpm_sclk,
> + device_attr_type__pp_dpm_mclk,
> + device_attr_type__pp_dpm_socclk,
> + device_attr_type__pp_dpm_fclk,
> + device_attr_type__pp_dpm_vclk,
> + device_attr_type__pp_dpm_vclk1,
> + device_attr_type__pp_dpm_dclk,
> + device_attr_type__pp_dpm_dclk1,
> + device_attr_type__pp_dpm_dcefclk,
> + device_attr_type__pp_dpm_pcie,
> + device_attr_type__pp_sclk_od,
> + device_attr_type__pp_mclk_od,
> + device_attr_type__pp_power_profile_mode,
> + device_attr_type__pp_od_clk_voltage,
> + device_attr_type__gpu_busy_percent,
> + device_attr_type__mem_busy_percent,
> + device_attr_type__vcn_busy_percent,
> + device_attr_type__pcie_bw,
> + device_attr_type__pp_features,
> + device_attr_type__unique_id,
> + device_attr_type__thermal_throttling_logging,
> + device_attr_type__apu_thermal_cap,
> + device_attr_type__gpu_metrics,
> + device_attr_type__smartshift_apu_power,
> + device_attr_type__smartshift_dgpu_power,
> + device_attr_type__smartshift_bias,
> + device_attr_type__xgmi_plpd_policy,
> + device_attr_type__pm_metrics,
> + device_attr_type__count,
> +};
> +
> struct amdgpu_device_attr {
> struct device_attribute dev_attr;
> + enum amdgpu_device_attr_type type;
> enum amdgpu_device_attr_flags flags;
> int (*attr_update)(struct amdgpu_device *adev, struct amdgpu_device_attr *attr,
> uint32_t mask, enum amdgpu_device_attr_states *states);
> @@ -61,6 +101,7 @@ struct amdgpu_device_attr_entry {
>
> #define __AMDGPU_DEVICE_ATTR(_name, _mode, _show, _store, _flags, ...) \
> { .dev_attr = __ATTR(_name, _mode, _show, _store), \
> + .type = device_attr_type__##_name, \
> .flags = _flags, \
> ##__VA_ARGS__, }
>
next prev parent reply other threads:[~2024-03-27 6:21 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-26 9:02 [PATCH] drm/amdgpu: make amdgpu device attr_update() function more efficient Yang Wang
2024-03-27 6:13 ` Ma, Jun
2024-03-27 6:21 ` Lazar, Lijo [this message]
2024-03-27 6:25 ` Wang, Yang(Kevin)
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=2c6fe582-abb3-40dd-8591-5040697eadf3@amd.com \
--to=lijo.lazar@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=hawking.zhang@amd.com \
--cc=kevinyang.wang@amd.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.