Skip to content

Commit 5cb1cfd

Browse files
committed
drm/amdgpu/discovery: populate additional GC info
From the GC info table to the gfx config structure in the driver. The driver will use this data to configure the card correctly. Acked-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 0058352 commit 5cb1cfd

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,6 +1154,8 @@ void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev)
11541154

11551155
union gc_info {
11561156
struct gc_info_v1_0 v1;
1157+
struct gc_info_v1_1 v1_1;
1158+
struct gc_info_v1_2 v1_2;
11571159
struct gc_info_v2_0 v2;
11581160
};
11591161

@@ -1190,6 +1192,21 @@ int amdgpu_discovery_get_gfx_info(struct amdgpu_device *adev)
11901192
adev->gfx.config.num_sc_per_sh = le32_to_cpu(gc_info->v1.gc_num_sc_per_se) /
11911193
le32_to_cpu(gc_info->v1.gc_num_sa_per_se);
11921194
adev->gfx.config.num_packer_per_sc = le32_to_cpu(gc_info->v1.gc_num_packer_per_sc);
1195+
if (gc_info->v1.header.version_minor >= 1) {
1196+
adev->gfx.config.gc_num_tcp_per_sa = le32_to_cpu(gc_info->v1_1.gc_num_tcp_per_sa);
1197+
adev->gfx.config.gc_num_sdp_interface = le32_to_cpu(gc_info->v1_1.gc_num_sdp_interface);
1198+
adev->gfx.config.gc_num_tcps = le32_to_cpu(gc_info->v1_1.gc_num_tcps);
1199+
}
1200+
if (gc_info->v1.header.version_minor >= 2) {
1201+
adev->gfx.config.gc_num_tcp_per_wpg = le32_to_cpu(gc_info->v1_2.gc_num_tcp_per_wpg);
1202+
adev->gfx.config.gc_tcp_l1_size = le32_to_cpu(gc_info->v1_2.gc_tcp_l1_size);
1203+
adev->gfx.config.gc_num_sqc_per_wgp = le32_to_cpu(gc_info->v1_2.gc_num_sqc_per_wgp);
1204+
adev->gfx.config.gc_l1_instruction_cache_size_per_sqc = le32_to_cpu(gc_info->v1_2.gc_l1_instruction_cache_size_per_sqc);
1205+
adev->gfx.config.gc_l1_data_cache_size_per_sqc = le32_to_cpu(gc_info->v1_2.gc_l1_data_cache_size_per_sqc);
1206+
adev->gfx.config.gc_gl1c_per_sa = le32_to_cpu(gc_info->v1_2.gc_gl1c_per_sa);
1207+
adev->gfx.config.gc_gl1c_size_per_instance = le32_to_cpu(gc_info->v1_2.gc_gl1c_size_per_instance);
1208+
adev->gfx.config.gc_gl2c_per_gpu = le32_to_cpu(gc_info->v1_2.gc_gl2c_per_gpu);
1209+
}
11931210
break;
11941211
case 2:
11951212
adev->gfx.config.max_shader_engines = le32_to_cpu(gc_info->v2.gc_num_se);

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,17 @@ struct amdgpu_gfx_config {
183183
uint32_t num_packer_per_sc;
184184
uint32_t pa_sc_tile_steering_override;
185185
uint64_t tcc_disabled_mask;
186+
uint32_t gc_num_tcp_per_sa;
187+
uint32_t gc_num_sdp_interface;
188+
uint32_t gc_num_tcps;
189+
uint32_t gc_num_tcp_per_wpg;
190+
uint32_t gc_tcp_l1_size;
191+
uint32_t gc_num_sqc_per_wgp;
192+
uint32_t gc_l1_instruction_cache_size_per_sqc;
193+
uint32_t gc_l1_data_cache_size_per_sqc;
194+
uint32_t gc_gl1c_per_sa;
195+
uint32_t gc_gl1c_size_per_instance;
196+
uint32_t gc_gl2c_per_gpu;
186197
};
187198

188199
struct amdgpu_cu_info {

0 commit comments

Comments
 (0)