From d827c6c152c8dd52463f82ef11ccdfc66083a9db Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Wed, 15 Mar 2023 18:33:32 -0400 Subject: Correct a sign-extension issue in libsmctrl_get_gpc_info() This function would previously would yield invalid results for GPUs with more than 31 TPCs. --- libsmctrl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libsmctrl.c') diff --git a/libsmctrl.c b/libsmctrl.c index 69b19a1..640001a 100644 --- a/libsmctrl.c +++ b/libsmctrl.c @@ -281,6 +281,7 @@ static int read_int_procfile(char* filename, uint64_t* out) { } static uint64_t tpc_mask_per_gpc_per_dev[16][12]; +// Output mask is vtpc-indexed (virtual TPC) int libsmctrl_get_gpc_info(uint32_t* num_enabled_gpcs, uint64_t** tpcs_for_gpc, int dev) { uint32_t i, j, vtpc_idx = 0; uint64_t gpc_mask, num_tpc_per_gpc, max_gpcs, gpc_tpc_mask; @@ -322,7 +323,7 @@ int libsmctrl_get_gpc_info(uint32_t* num_enabled_gpcs, uint64_t** tpcs_for_gpc, // Skip disabled TPCs if ((1 << j) & gpc_tpc_mask) continue; - *tpc_mask |= (1 << vtpc_idx); + *tpc_mask |= (1ull << vtpc_idx); vtpc_idx++; } } -- cgit v1.2.2