drm/amdgpu: resume kiq access debugfs
authorYintian Tao <yttao@amd.com>
Mon, 13 Apr 2020 06:31:27 +0000 (14:31 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 13 Apr 2020 16:01:56 +0000 (12:01 -0400)
If there is no GPU hang, user still can access
debugfs through kiq.

Signed-off-by: Yintian Tao <yttao@amd.com>
Reviewed-by: Monk Liu <Monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

index 6a81c2ee7c7b892a23ba12b672e3f4531e19b5f2..8c10084f44ef618f1b769409c861343d8129537e 100644 (file)
@@ -335,17 +335,23 @@ void amdgpu_detect_virtualization(struct amdgpu_device *adev)
        }
 }
 
-bool amdgpu_virt_can_access_debugfs(struct amdgpu_device *adev)
+bool amdgpu_virt_access_debugfs_is_mmio(struct amdgpu_device *adev)
 {
        return amdgpu_sriov_is_debug(adev) ? true : false;
 }
 
+bool amdgpu_virt_access_debugfs_is_kiq(struct amdgpu_device *adev)
+{
+       return amdgpu_sriov_is_normal(adev) ? true : false;
+}
+
 int amdgpu_virt_enable_access_debugfs(struct amdgpu_device *adev)
 {
-       if (!amdgpu_sriov_vf(adev))
+       if (!amdgpu_sriov_vf(adev) ||
+           amdgpu_virt_access_debugfs_is_kiq(adev))
                return 0;
 
-       if (amdgpu_virt_can_access_debugfs(adev))
+       if (amdgpu_virt_access_debugfs_is_mmio(adev))
                adev->virt.caps &= ~AMDGPU_SRIOV_CAPS_RUNTIME;
        else
                return -EPERM;
index 8f20e6dbd7a941885c4fc16a25b0be955f678f77..de27308802c92fd9220aa862bf3b1918a4764048 100644 (file)
@@ -299,6 +299,8 @@ static inline bool is_virtual_machine(void)
        ((adev)->virt.gim_feature & AMDGIM_FEATURE_PP_ONE_VF)
 #define amdgpu_sriov_is_debug(adev) \
        ((!adev->in_gpu_reset) && adev->virt.tdr_debug)
+#define amdgpu_sriov_is_normal(adev) \
+       ((!adev->in_gpu_reset) && (!adev->virt.tdr_debug))
 
 bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev);
 void amdgpu_virt_init_setting(struct amdgpu_device *adev);