[PATCH Resend] drm/amd/pm: only check sriov vf flag once when creating hwmon sysfs

Wang, Yang(Kevin) KevinYang.Wang at amd.com
Mon Oct 30 06:23:23 UTC 2023


[AMD Official Use Only - General]

The driver already has similar code in hwmon_attributes_visible(),
So, what issue you have now ?

        /* under multi-vf mode, the hwmon attributes are all not supported */
        if (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev))
                return 0;

Best Regards,
Kevin

-----Original Message-----
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Ma, Jun
Sent: Monday, October 30, 2023 2:10 PM
To: Ma, Jun <Jun.Ma2 at amd.com>; amd-gfx at lists.freedesktop.org; Feng, Kenneth <Kenneth.Feng at amd.com>; Deucher, Alexander <Alexander.Deucher at amd.com>
Subject: Re: [PATCH Resend] drm/amd/pm: only check sriov vf flag once when creating hwmon sysfs

ping...

On 10/26/2023 10:50 AM, Ma Jun wrote:
> The current code checks sriov vf flag multiple times when creating
> hwmon sysfs. So fix it.
>
> Signed-off-by: Ma Jun <Jun.Ma2 at amd.com>
> ---
>  drivers/gpu/drm/amd/pm/amdgpu_pm.c | 27 ++++++++++++++-------------
>  1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> index 358bb5e485f2..ee46d04549e6 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -3288,10 +3288,6 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
>       uint32_t gc_ver = amdgpu_ip_version(adev, GC_HWIP, 0);
>       uint32_t tmp;
>
> -     /* under multi-vf mode, the hwmon attributes are all not supported */
> -     if (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev))
> -             return 0;
> -
>       /* under pp one vf mode manage of hwmon attributes is not supported */
>       if (amdgpu_sriov_is_pp_one_vf(adev))
>               effective_mode &= ~S_IWUSR;
> @@ -4162,6 +4158,7 @@ static int amdgpu_od_set_init(struct
> amdgpu_device *adev)
>
>  int amdgpu_pm_sysfs_init(struct amdgpu_device *adev)  {
> +     enum amdgpu_sriov_vf_mode mode;
>       uint32_t mask = 0;
>       int ret;
>
> @@ -4173,17 +4170,21 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev)
>       if (adev->pm.dpm_enabled == 0)
>               return 0;
>
> -     adev->pm.int_hwmon_dev = hwmon_device_register_with_groups(adev->dev,
> -                                                                DRIVER_NAME, adev,
> -                                                                hwmon_groups);
> -     if (IS_ERR(adev->pm.int_hwmon_dev)) {
> -             ret = PTR_ERR(adev->pm.int_hwmon_dev);
> -             dev_err(adev->dev,
> -                     "Unable to register hwmon device: %d\n", ret);
> -             return ret;
> +     mode = amdgpu_virt_get_sriov_vf_mode(adev);
> +
> +     /* under multi-vf mode, the hwmon attributes are all not supported */
> +     if (mode != SRIOV_VF_MODE_MULTI_VF) {
> +             adev->pm.int_hwmon_dev = hwmon_device_register_with_groups(adev->dev,
> +                                                                                                             DRIVER_NAME, adev,
> +                                                                                                             hwmon_groups);
> +             if (IS_ERR(adev->pm.int_hwmon_dev)) {
> +                     ret = PTR_ERR(adev->pm.int_hwmon_dev);
> +                     dev_err(adev->dev, "Unable to register hwmon device: %d\n", ret);
> +                     return ret;
> +             }
>       }
>
> -     switch (amdgpu_virt_get_sriov_vf_mode(adev)) {
> +     switch (mode) {
>       case SRIOV_VF_MODE_ONE_VF:
>               mask = ATTR_FLAG_ONEVF;
>               break;


More information about the amd-gfx mailing list