Skip to content

Commit ceb12c0

Browse files
vskvortskentrussell
authored andcommitted
drm/amdgpu: Skip err_count sysfs creation on VF unsupported RAS blocks
VFs are not able to query error counts for all RAS blocks. Rather than returning error for queries on these blocks, skip sysfs the creation all together. Signed-off-by: Victor Skvortsov <[email protected]> Reviewed-by: Hawking Zhang <[email protected]> (cherry picked from commit 1c4c6b3a430745900ed16751c809ae20cde3ca5a) Change-Id: Ie5a0e0ccc14c7acb7a2750f995cba71e77abfec1
1 parent dcd14e3 commit ceb12c0

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,6 +1863,9 @@ int amdgpu_ras_sysfs_create(struct amdgpu_device *adev,
18631863
if (!obj || obj->attr_inuse)
18641864
return -EINVAL;
18651865

1866+
if (amdgpu_sriov_vf(adev) && !amdgpu_virt_ras_telemetry_block_en(adev, head->block))
1867+
return 0;
1868+
18661869
get_obj(obj);
18671870

18681871
snprintf(obj->fs_data.sysfs_name, sizeof(obj->fs_data.sysfs_name),

drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1246,7 +1246,8 @@ amdgpu_ras_block_to_sriov(struct amdgpu_device *adev, enum amdgpu_ras_block bloc
12461246
case AMDGPU_RAS_BLOCK__MPIO:
12471247
return RAS_TELEMETRY_GPU_BLOCK_MPIO;
12481248
default:
1249-
dev_err(adev->dev, "Unsupported SRIOV RAS telemetry block 0x%x\n", block);
1249+
DRM_WARN_ONCE("Unsupported SRIOV RAS telemetry block 0x%x\n",
1250+
block);
12501251
return RAS_TELEMETRY_GPU_BLOCK_COUNT;
12511252
}
12521253
}
@@ -1333,3 +1334,17 @@ int amdgpu_virt_ras_telemetry_post_reset(struct amdgpu_device *adev)
13331334

13341335
return 0;
13351336
}
1337+
1338+
bool amdgpu_virt_ras_telemetry_block_en(struct amdgpu_device *adev,
1339+
enum amdgpu_ras_block block)
1340+
{
1341+
enum amd_sriov_ras_telemetry_gpu_block sriov_block;
1342+
1343+
sriov_block = amdgpu_ras_block_to_sriov(adev, block);
1344+
1345+
if (sriov_block >= RAS_TELEMETRY_GPU_BLOCK_COUNT ||
1346+
!amdgpu_sriov_ras_telemetry_block_en(adev, sriov_block))
1347+
return false;
1348+
1349+
return true;
1350+
}

drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,4 +406,6 @@ bool amdgpu_virt_get_ras_capability(struct amdgpu_device *adev);
406406
int amdgpu_virt_req_ras_err_count(struct amdgpu_device *adev, enum amdgpu_ras_block block,
407407
struct ras_err_data *err_data);
408408
int amdgpu_virt_ras_telemetry_post_reset(struct amdgpu_device *adev);
409+
bool amdgpu_virt_ras_telemetry_block_en(struct amdgpu_device *adev,
410+
enum amdgpu_ras_block block);
409411
#endif

0 commit comments

Comments
 (0)