]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Add uniras version in sysfs
authorJinzhou Su <jinzhou.su@amd.com>
Tue, 21 Oct 2025 01:31:11 +0000 (09:31 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 28 Oct 2025 13:47:49 +0000 (09:47 -0400)
Display uniras version in sysfs version interface
when uniras enable.

v2: display ras version detail info

Signed-off-by: Jinzhou Su <jinzhou.su@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index b22ce0a567f2c2eca025c13690f65494850be3b3..7f899d3e1bfae512ce807e2e693c5e4882c132db 100644 (file)
@@ -1950,12 +1950,42 @@ static ssize_t amdgpu_ras_sysfs_features_read(struct device *dev,
        return sysfs_emit(buf, "feature mask: 0x%x\n", con->features);
 }
 
+static bool amdgpu_ras_get_version_info(struct amdgpu_device *adev, u32 *major,
+                       u32 *minor, u32 *rev)
+{
+       int i;
+
+       if (!adev || !major || !minor || !rev || !amdgpu_uniras_enabled(adev))
+               return false;
+
+       for (i = 0; i < adev->num_ip_blocks; i++) {
+               if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_RAS) {
+                       *major = adev->ip_blocks[i].version->major;
+                       *minor = adev->ip_blocks[i].version->minor;
+                       *rev = adev->ip_blocks[i].version->rev;
+                       return true;
+               }
+       }
+
+       return false;
+}
+
 static ssize_t amdgpu_ras_sysfs_version_show(struct device *dev,
                struct device_attribute *attr, char *buf)
 {
        struct amdgpu_ras *con =
                container_of(attr, struct amdgpu_ras, version_attr);
-       return sysfs_emit(buf, "table version: 0x%x\n", con->eeprom_control.tbl_hdr.version);
+       u32 major, minor, rev;
+       ssize_t size = 0;
+
+       size += sysfs_emit_at(buf, size, "table version: 0x%x\n",
+                       con->eeprom_control.tbl_hdr.version);
+
+       if (amdgpu_ras_get_version_info(con->adev, &major, &minor, &rev))
+               size += sysfs_emit_at(buf, size, "ras version: %u.%u.%u\n",
+                       major, minor, rev);
+
+       return size;
 }
 
 static ssize_t amdgpu_ras_sysfs_schema_show(struct device *dev,