Re: [PATCH] drm/amdgpu: enable pp_od_clk_voltage for gfx 9.4.3 SRIOV

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2/28/2024 11:28 AM, Yang Wang wrote:
> enabel pp_od_clk_voltage node for gfx 9.4.3 SRIOV and BM.
> 
> Signed-off-by: Yang Wang <kevinyang.wang@xxxxxxx>
> ---
>  drivers/gpu/drm/amd/pm/amdgpu_pm.c | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 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..233b562950a7 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -2034,6 +2034,28 @@ 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);
> +
> +	/* Enable pp_od_clk_voltage node for gc 9.4.3 SRIOV/BM support */
> +	if (gc_ver == IP_VERSION(9, 4, 3)) {
> +		*states = ATTR_STATE_SUPPORTED;

For VF, need an additional check to support this only in one-VF mode.

Thanks,
Lijo

> +		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 +2140,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 +2186,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)) ||



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux