@@ -1922,7 +1922,7 @@ int kfd_topology_add_device(struct kfd_node *gpu)
1922
1922
{
1923
1923
uint32_t gpu_id ;
1924
1924
struct kfd_topology_device * dev ;
1925
- struct kfd_cu_info cu_info ;
1925
+ struct kfd_cu_info * cu_info ;
1926
1926
int res = 0 ;
1927
1927
int i ;
1928
1928
const char * asic_name = amdgpu_asic_name [gpu -> adev -> asic_type ];
@@ -1963,8 +1963,11 @@ int kfd_topology_add_device(struct kfd_node *gpu)
1963
1963
/* Fill-in additional information that is not available in CRAT but
1964
1964
* needed for the topology
1965
1965
*/
1966
+ cu_info = kzalloc (sizeof (struct kfd_cu_info ), GFP_KERNEL );
1967
+ if (!cu_info )
1968
+ return - ENOMEM ;
1966
1969
1967
- amdgpu_amdkfd_get_cu_info (dev -> gpu -> adev , & cu_info );
1970
+ amdgpu_amdkfd_get_cu_info (dev -> gpu -> adev , cu_info );
1968
1971
1969
1972
for (i = 0 ; i < KFD_TOPOLOGY_PUBLIC_NAME_SIZE - 1 ; i ++ ) {
1970
1973
dev -> node_props .name [i ] = __tolower (asic_name [i ]);
@@ -1974,7 +1977,7 @@ int kfd_topology_add_device(struct kfd_node *gpu)
1974
1977
dev -> node_props .name [i ] = '\0' ;
1975
1978
1976
1979
dev -> node_props .simd_arrays_per_engine =
1977
- cu_info . num_shader_arrays_per_engine ;
1980
+ cu_info -> num_shader_arrays_per_engine ;
1978
1981
1979
1982
dev -> node_props .gfx_target_version =
1980
1983
gpu -> kfd -> device_info .gfx_target_version ;
@@ -2055,7 +2058,7 @@ int kfd_topology_add_device(struct kfd_node *gpu)
2055
2058
*/
2056
2059
if (dev -> gpu -> adev -> asic_type == CHIP_CARRIZO ) {
2057
2060
dev -> node_props .simd_count =
2058
- cu_info . simd_per_cu * cu_info . cu_active_number ;
2061
+ cu_info -> simd_per_cu * cu_info -> cu_active_number ;
2059
2062
dev -> node_props .max_waves_per_simd = 10 ;
2060
2063
}
2061
2064
@@ -2082,6 +2085,8 @@ int kfd_topology_add_device(struct kfd_node *gpu)
2082
2085
2083
2086
kfd_notify_gpu_change (gpu_id , 1 );
2084
2087
2088
+ kfree (cu_info );
2089
+
2085
2090
return 0 ;
2086
2091
}
2087
2092
0 commit comments