Blob Blame History Raw
From: Alex Deucher <alexander.deucher@amd.com>
Date: Thu, 11 May 2017 19:09:49 -0400
Subject: drm/amdgpu: properly byteswap gpu_info firmware
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: b5ab16bf64347ebc9dbdc51a4f603511babda1e6
Patch-mainline: v4.13-rc1
References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166

It's stored in LE format.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1458,19 +1458,19 @@ static int amdgpu_device_parse_gpu_info_
 			(const struct gpu_info_firmware_v1_0 *)(fw->data +
 								le32_to_cpu(hdr->header.ucode_array_offset_bytes));
 
-		adev->gfx.config.max_shader_engines = gpu_info_fw->gc_num_se;
-		adev->gfx.config.max_cu_per_sh = gpu_info_fw->gc_num_cu_per_sh;
-		adev->gfx.config.max_sh_per_se = gpu_info_fw->gc_num_sh_per_se;
-		adev->gfx.config.max_backends_per_se = gpu_info_fw->gc_num_rb_per_se;
+		adev->gfx.config.max_shader_engines = le32_to_cpu(gpu_info_fw->gc_num_se);
+		adev->gfx.config.max_cu_per_sh = le32_to_cpu(gpu_info_fw->gc_num_cu_per_sh);
+		adev->gfx.config.max_sh_per_se = le32_to_cpu(gpu_info_fw->gc_num_sh_per_se);
+		adev->gfx.config.max_backends_per_se = le32_to_cpu(gpu_info_fw->gc_num_rb_per_se);
 		adev->gfx.config.max_texture_channel_caches =
-			gpu_info_fw->gc_num_tccs;
-		adev->gfx.config.max_gprs = gpu_info_fw->gc_num_gprs;
-		adev->gfx.config.max_gs_threads = gpu_info_fw->gc_num_max_gs_thds;
-		adev->gfx.config.gs_vgt_table_depth = gpu_info_fw->gc_gs_table_depth;
-		adev->gfx.config.gs_prim_buffer_depth = gpu_info_fw->gc_gsprim_buff_depth;
+			le32_to_cpu(gpu_info_fw->gc_num_tccs);
+		adev->gfx.config.max_gprs = le32_to_cpu(gpu_info_fw->gc_num_gprs);
+		adev->gfx.config.max_gs_threads = le32_to_cpu(gpu_info_fw->gc_num_max_gs_thds);
+		adev->gfx.config.gs_vgt_table_depth = le32_to_cpu(gpu_info_fw->gc_gs_table_depth);
+		adev->gfx.config.gs_prim_buffer_depth = le32_to_cpu(gpu_info_fw->gc_gsprim_buff_depth);
 		adev->gfx.config.double_offchip_lds_buf =
-			gpu_info_fw->gc_double_offchip_lds_buffer;
-		adev->gfx.cu_info.wave_front_size = gpu_info_fw->gc_wave_size;
+			le32_to_cpu(gpu_info_fw->gc_double_offchip_lds_buffer);
+		adev->gfx.cu_info.wave_front_size = le32_to_cpu(gpu_info_fw->gc_wave_size);
 		break;
 	}
 	default: