drm/amdgpu: improve error handling in pcie_bw
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 19 May 2020 20:54:55 +0000 (16:54 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 21 May 2020 22:00:00 +0000 (18:00 -0400)
1. Initialize the counters to 0 in case the callback
   fails to initialize them.
2. The counters don't exist on APUs so return an error
   for them.
3. Return an error if the callback doesn't exist.

Reviewed-by: Yong Zhao <Yong.Zhao@amd.com>
Reviewed-By: Kent Russell <kent.russell@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c

index 17bc7f5..2fc51f8 100644 (file)
@@ -1646,9 +1646,15 @@ static ssize_t amdgpu_get_pcie_bw(struct device *dev,
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
        struct amdgpu_device *adev = ddev->dev_private;
-       uint64_t count0, count1;
+       uint64_t count0 = 0, count1 = 0;
        int ret;
 
+       if (adev->flags & AMD_IS_APU)
+               return -ENODATA;
+
+       if (!adev->asic_funcs->get_pcie_usage)
+               return -ENODATA;
+
        ret = pm_runtime_get_sync(ddev->dev);
        if (ret < 0)
                return ret;