From efcc9b275b992cab7b9abe13984e9718dd303ef6 Mon Sep 17 00:00:00 2001 From: Xiaogang Chen Date: Tue, 7 Feb 2023 01:55:06 -0600 Subject: [PATCH] libhsakmt: Correct reporting of Shader Engines number. The Shader Engines number should be shadder array_count divided by simd_arrays_per_engine not array_count. Signed-off-by: Xiaogang Chen Change-Id: I808d1fedd6b9843500719e902ecf759f5668a7d1 --- src/topology.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/topology.c b/src/topology.c index 7e99ec10d5..0f5c0f9706 100644 --- a/src/topology.c +++ b/src/topology.c @@ -1067,6 +1067,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, uint32_t sys_node_id; uint32_t gfxv = 0; uint8_t gfxv_major, gfxv_minor, gfxv_stepping; + uint32_t simd_arrays_count; HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; @@ -1140,7 +1141,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, else if (strcmp(prop_name, "wave_front_size") == 0) props->WaveFrontSize = (uint32_t)prop_val; else if (strcmp(prop_name, "array_count") == 0) - props->NumShaderBanks = (uint32_t)prop_val; + simd_arrays_count = (uint32_t)prop_val; else if (strcmp(prop_name, "simd_arrays_per_engine") == 0) props->NumArrays = (uint32_t)prop_val; else if (strcmp(prop_name, "cu_per_simd_array") == 0) @@ -1191,6 +1192,9 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, if (props->NumCPUCores) goto err; + if (props->NumArrays != 0) + props->NumShaderBanks = simd_arrays_count/props->NumArrays; + gfxv_major = HSA_GET_GFX_VERSION_MAJOR(gfxv); gfxv_minor = HSA_GET_GFX_VERSION_MINOR(gfxv); gfxv_stepping = HSA_GET_GFX_VERSION_STEP(gfxv);