drm/amdgpu: add feature version for RLC and MEC v2
Expose feature version to user space for RLC/MEC/MEC2 ucode as well v2: fix coding style Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
Родитель
0fd6429103
Коммит
351643d7dd
|
@ -1130,6 +1130,9 @@ struct amdgpu_gfx {
|
|||
uint32_t me_feature_version;
|
||||
uint32_t ce_feature_version;
|
||||
uint32_t pfp_feature_version;
|
||||
uint32_t rlc_feature_version;
|
||||
uint32_t mec_feature_version;
|
||||
uint32_t mec2_feature_version;
|
||||
struct amdgpu_ring gfx_ring[AMDGPU_MAX_GFX_RINGS];
|
||||
unsigned num_gfx_rings;
|
||||
struct amdgpu_ring compute_ring[AMDGPU_MAX_COMPUTE_RINGS];
|
||||
|
|
|
@ -317,16 +317,17 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
|
|||
break;
|
||||
case AMDGPU_INFO_FW_GFX_RLC:
|
||||
fw_info.ver = adev->gfx.rlc_fw_version;
|
||||
fw_info.feature = 0;
|
||||
fw_info.feature = adev->gfx.rlc_feature_version;
|
||||
break;
|
||||
case AMDGPU_INFO_FW_GFX_MEC:
|
||||
if (info->query_fw.index == 0)
|
||||
if (info->query_fw.index == 0) {
|
||||
fw_info.ver = adev->gfx.mec_fw_version;
|
||||
else if (info->query_fw.index == 1)
|
||||
fw_info.feature = adev->gfx.mec_feature_version;
|
||||
} else if (info->query_fw.index == 1) {
|
||||
fw_info.ver = adev->gfx.mec2_fw_version;
|
||||
else
|
||||
fw_info.feature = adev->gfx.mec2_feature_version;
|
||||
} else
|
||||
return -EINVAL;
|
||||
fw_info.feature = 0;
|
||||
break;
|
||||
case AMDGPU_INFO_FW_SMC:
|
||||
fw_info.ver = adev->pm.fw_version;
|
||||
|
|
|
@ -3080,6 +3080,8 @@ static int gfx_v7_0_cp_compute_load_microcode(struct amdgpu_device *adev)
|
|||
mec_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->data;
|
||||
amdgpu_ucode_print_gfx_hdr(&mec_hdr->header);
|
||||
adev->gfx.mec_fw_version = le32_to_cpu(mec_hdr->header.ucode_version);
|
||||
adev->gfx.mec_feature_version = le32_to_cpu(
|
||||
mec_hdr->ucode_feature_version);
|
||||
|
||||
gfx_v7_0_cp_compute_enable(adev, false);
|
||||
|
||||
|
@ -3102,6 +3104,8 @@ static int gfx_v7_0_cp_compute_load_microcode(struct amdgpu_device *adev)
|
|||
mec2_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec2_fw->data;
|
||||
amdgpu_ucode_print_gfx_hdr(&mec2_hdr->header);
|
||||
adev->gfx.mec2_fw_version = le32_to_cpu(mec2_hdr->header.ucode_version);
|
||||
adev->gfx.mec2_feature_version = le32_to_cpu(
|
||||
mec2_hdr->ucode_feature_version);
|
||||
|
||||
/* MEC2 */
|
||||
fw_data = (const __le32 *)
|
||||
|
@ -4066,6 +4070,8 @@ static int gfx_v7_0_rlc_resume(struct amdgpu_device *adev)
|
|||
hdr = (const struct rlc_firmware_header_v1_0 *)adev->gfx.rlc_fw->data;
|
||||
amdgpu_ucode_print_rlc_hdr(&hdr->header);
|
||||
adev->gfx.rlc_fw_version = le32_to_cpu(hdr->header.ucode_version);
|
||||
adev->gfx.rlc_feature_version = le32_to_cpu(
|
||||
hdr->ucode_feature_version);
|
||||
|
||||
gfx_v7_0_rlc_stop(adev);
|
||||
|
||||
|
|
|
@ -2273,6 +2273,8 @@ static int gfx_v8_0_rlc_load_microcode(struct amdgpu_device *adev)
|
|||
hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data;
|
||||
amdgpu_ucode_print_rlc_hdr(&hdr->header);
|
||||
adev->gfx.rlc_fw_version = le32_to_cpu(hdr->header.ucode_version);
|
||||
adev->gfx.rlc_feature_version = le32_to_cpu(
|
||||
hdr->ucode_feature_version);
|
||||
|
||||
fw_data = (const __le32 *)(adev->gfx.rlc_fw->data +
|
||||
le32_to_cpu(hdr->header.ucode_array_offset_bytes));
|
||||
|
@ -2620,6 +2622,8 @@ static int gfx_v8_0_cp_compute_load_microcode(struct amdgpu_device *adev)
|
|||
mec_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->data;
|
||||
amdgpu_ucode_print_gfx_hdr(&mec_hdr->header);
|
||||
adev->gfx.mec_fw_version = le32_to_cpu(mec_hdr->header.ucode_version);
|
||||
adev->gfx.mec_feature_version = le32_to_cpu(
|
||||
mec_hdr->ucode_feature_version);
|
||||
|
||||
fw_data = (const __le32 *)
|
||||
(adev->gfx.mec_fw->data +
|
||||
|
@ -2639,6 +2643,8 @@ static int gfx_v8_0_cp_compute_load_microcode(struct amdgpu_device *adev)
|
|||
mec2_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec2_fw->data;
|
||||
amdgpu_ucode_print_gfx_hdr(&mec2_hdr->header);
|
||||
adev->gfx.mec2_fw_version = le32_to_cpu(mec2_hdr->header.ucode_version);
|
||||
adev->gfx.mec2_feature_version = le32_to_cpu(
|
||||
mec2_hdr->ucode_feature_version);
|
||||
|
||||
fw_data = (const __le32 *)
|
||||
(adev->gfx.mec2_fw->data +
|
||||
|
|
Загрузка…
Ссылка в новой задаче