From dc85832c35d1c347d1d57aefcdb780b9050fda0f Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Mon, 22 Apr 2024 12:09:24 -0400 Subject: [PATCH] ac/gpu_info: Fix broken UVD firmware query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UVD and VCE are separated engines, and not co-exist with VCNs Fixes: c34cfc1a3b9 (ac/gpu_info: update multimedia info) Signed-off-by: Leo Liu Reviewed-by: Boyuan Zhang Tested-by: Dieter Nützel Part-of: --- src/amd/common/ac_gpu_info.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index b7f80dd5cf0..ff16585ab80 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -760,20 +760,24 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, info->vcn_enc_major_version = (vidip_fw_version & 0x00F00000) >> 20; info->vcn_enc_minor_version = (vidip_fw_version & 0x000FF000) >> 12; } - } else if (info->ip[AMD_IP_VCE].num_queues) { - r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_VCE, 0, 0, &vidip_fw_version, &vidip_fw_feature); - if (r) { - fprintf(stderr, "amdgpu: amdgpu_query_firmware_version(vce) failed.\n"); - return false; - } else - info->vce_fw_version = vidip_fw_version; - } else if (info->ip[AMD_IP_UVD].num_queues) { - r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_UVD, 0, 0, &vidip_fw_version, &vidip_fw_feature); - if (r) { - fprintf(stderr, "amdgpu: amdgpu_query_firmware_version(uvd) failed.\n"); - return false; - } else - info->uvd_fw_version = vidip_fw_version; + } else { + if (info->ip[AMD_IP_VCE].num_queues) { + r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_VCE, 0, 0, &vidip_fw_version, &vidip_fw_feature); + if (r) { + fprintf(stderr, "amdgpu: amdgpu_query_firmware_version(vce) failed.\n"); + return false; + } else + info->vce_fw_version = vidip_fw_version; + } + + if (info->ip[AMD_IP_UVD].num_queues) { + r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_UVD, 0, 0, &vidip_fw_version, &vidip_fw_feature); + if (r) { + fprintf(stderr, "amdgpu: amdgpu_query_firmware_version(uvd) failed.\n"); + return false; + } else + info->uvd_fw_version = vidip_fw_version; + } } r = amdgpu_query_sw_info(dev, amdgpu_sw_info_address32_hi, &info->address32_hi);