[PATCH v2] drm/amdgpu: enable pp_od_clk_voltage for gfx 9.4.3 SRIOV
Lazar, Lijo
lijo.lazar at amd.com
Wed Feb 28 06:46:49 UTC 2024
On 2/28/2024 12:08 PM, Yang Wang wrote:
> v1:
> enabel pp_od_clk_voltage node for gfx 9.4.3 SRIOV and BM.
>
> v2:
> add onevf check for gfx 9.4.3
>
> Signed-off-by: Yang Wang <kevinyang.wang at amd.com>
> ---
> drivers/gpu/drm/amd/pm/amdgpu_pm.c | 35 +++++++++++++++++++++++++-----
> 1 file changed, 30 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> index 087d57850304..7e5f00530769 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -2034,6 +2034,34 @@ static int ss_bias_attr_update(struct amdgpu_device *adev, struct amdgpu_device_
> return 0;
> }
>
> +static int pp_od_clk_voltage_attr_update(struct amdgpu_device *adev, struct amdgpu_device_attr *attr,
> + uint32_t mask, enum amdgpu_device_attr_states *states)
> +{
> + uint32_t gc_ver = amdgpu_ip_version(adev, GC_HWIP, 0);
> +
> + *states = ATTR_STATE_UNSUPPORTED;
> +
> + /* Enable pp_od_clk_voltage node for gc 9.4.3 SRIOV/BM support */
> + if (gc_ver == IP_VERSION(9, 4, 3)) {
> + if (!amdgpu_dpm_is_overdrive_supported(adev) ||
A reorder may better work for readability -
Move the !amdgpu_dpm_is_overdrive_supported(adev) check first, and then
for 9.4.3/SMU 13.0.6, only do one-VF check.
Thanks,
Lijo
> + (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev)))
> + *states = ATTR_STATE_UNSUPPORTED;
> + else
> + *states = ATTR_STATE_SUPPORTED;
> + return 0;
> + }
> +
> + if (!(attr->flags & mask)) {
> + *states = ATTR_STATE_UNSUPPORTED;
> + return 0;
> + }
> +
> + if (amdgpu_dpm_is_overdrive_supported(adev))
> + *states = ATTR_STATE_SUPPORTED;
> +
> + return 0;
> +}
> +
> /* Following items will be read out to indicate current plpd policy:
> * - -1: none
> * - 0: disallow
> @@ -2118,7 +2146,8 @@ static struct amdgpu_device_attr amdgpu_device_attrs[] = {
> AMDGPU_DEVICE_ATTR_RW(pp_sclk_od, ATTR_FLAG_BASIC),
> AMDGPU_DEVICE_ATTR_RW(pp_mclk_od, ATTR_FLAG_BASIC),
> AMDGPU_DEVICE_ATTR_RW(pp_power_profile_mode, ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
> - AMDGPU_DEVICE_ATTR_RW(pp_od_clk_voltage, ATTR_FLAG_BASIC),
> + AMDGPU_DEVICE_ATTR_RW(pp_od_clk_voltage, ATTR_FLAG_BASIC,
> + .attr_update = pp_od_clk_voltage_attr_update),
> AMDGPU_DEVICE_ATTR_RO(gpu_busy_percent, ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
> AMDGPU_DEVICE_ATTR_RO(mem_busy_percent, ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
> AMDGPU_DEVICE_ATTR_RO(pcie_bw, ATTR_FLAG_BASIC),
> @@ -2163,10 +2192,6 @@ static int default_attr_update(struct amdgpu_device *adev, struct amdgpu_device_
> } else if (DEVICE_ATTR_IS(pp_dpm_fclk)) {
> if (mp1_ver < IP_VERSION(10, 0, 0))
> *states = ATTR_STATE_UNSUPPORTED;
> - } else if (DEVICE_ATTR_IS(pp_od_clk_voltage)) {
> - *states = ATTR_STATE_UNSUPPORTED;
> - if (amdgpu_dpm_is_overdrive_supported(adev))
> - *states = ATTR_STATE_SUPPORTED;
> } else if (DEVICE_ATTR_IS(mem_busy_percent)) {
> if ((adev->flags & AMD_IS_APU &&
> gc_ver != IP_VERSION(9, 4, 3)) ||
More information about the amd-gfx
mailing list