@@ -60,7 +60,7 @@ static inline struct v9_sdma_mqd *get_sdma_mqd(void *mqd)
6060}
6161
6262static void update_cu_mask (struct mqd_manager * mm , void * mqd ,
63- struct mqd_update_info * minfo )
63+ struct mqd_update_info * minfo , uint32_t inst )
6464{
6565 struct v9_mqd * m ;
6666 uint32_t se_mask [KFD_MAX_NUM_SE ] = {0 };
@@ -69,27 +69,36 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
6969 return ;
7070
7171 mqd_symmetrically_map_cu_mask (mm ,
72- minfo -> cu_mask .ptr , minfo -> cu_mask .count , se_mask );
72+ minfo -> cu_mask .ptr , minfo -> cu_mask .count , se_mask , inst );
7373
7474 m = get_mqd (mqd );
75+
7576 m -> compute_static_thread_mgmt_se0 = se_mask [0 ];
7677 m -> compute_static_thread_mgmt_se1 = se_mask [1 ];
7778 m -> compute_static_thread_mgmt_se2 = se_mask [2 ];
7879 m -> compute_static_thread_mgmt_se3 = se_mask [3 ];
79- m -> compute_static_thread_mgmt_se4 = se_mask [4 ];
80- m -> compute_static_thread_mgmt_se5 = se_mask [5 ];
81- m -> compute_static_thread_mgmt_se6 = se_mask [6 ];
82- m -> compute_static_thread_mgmt_se7 = se_mask [7 ];
83-
84- pr_debug ("update cu mask to %#x %#x %#x %#x %#x %#x %#x %#x\n" ,
85- m -> compute_static_thread_mgmt_se0 ,
86- m -> compute_static_thread_mgmt_se1 ,
87- m -> compute_static_thread_mgmt_se2 ,
88- m -> compute_static_thread_mgmt_se3 ,
89- m -> compute_static_thread_mgmt_se4 ,
90- m -> compute_static_thread_mgmt_se5 ,
91- m -> compute_static_thread_mgmt_se6 ,
92- m -> compute_static_thread_mgmt_se7 );
80+ if (KFD_GC_VERSION (mm -> dev ) != IP_VERSION (9 , 4 , 3 )) {
81+ m -> compute_static_thread_mgmt_se4 = se_mask [4 ];
82+ m -> compute_static_thread_mgmt_se5 = se_mask [5 ];
83+ m -> compute_static_thread_mgmt_se6 = se_mask [6 ];
84+ m -> compute_static_thread_mgmt_se7 = se_mask [7 ];
85+
86+ pr_debug ("update cu mask to %#x %#x %#x %#x %#x %#x %#x %#x\n" ,
87+ m -> compute_static_thread_mgmt_se0 ,
88+ m -> compute_static_thread_mgmt_se1 ,
89+ m -> compute_static_thread_mgmt_se2 ,
90+ m -> compute_static_thread_mgmt_se3 ,
91+ m -> compute_static_thread_mgmt_se4 ,
92+ m -> compute_static_thread_mgmt_se5 ,
93+ m -> compute_static_thread_mgmt_se6 ,
94+ m -> compute_static_thread_mgmt_se7 );
95+ } else {
96+ pr_debug ("inst: %u, update cu mask to %#x %#x %#x %#x\n" ,
97+ inst , m -> compute_static_thread_mgmt_se0 ,
98+ m -> compute_static_thread_mgmt_se1 ,
99+ m -> compute_static_thread_mgmt_se2 ,
100+ m -> compute_static_thread_mgmt_se3 );
101+ }
93102}
94103
95104static void set_priority (struct v9_mqd * m , struct queue_properties * q )
@@ -290,7 +299,8 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
290299 if (mm -> dev -> kfd -> cwsr_enabled && q -> ctx_save_restore_area_address )
291300 m -> cp_hqd_ctx_save_control = 0 ;
292301
293- update_cu_mask (mm , mqd , minfo );
302+ if (KFD_GC_VERSION (mm -> dev ) != IP_VERSION (9 , 4 , 3 ))
303+ update_cu_mask (mm , mqd , minfo , 0 );
294304 set_priority (m , q );
295305
296306 q -> is_active = QUEUE_IS_ACTIVE (* q );
@@ -676,6 +686,8 @@ static void update_mqd_v9_4_3(struct mqd_manager *mm, void *mqd,
676686 m = get_mqd (mqd + size * xcc );
677687 update_mqd (mm , m , q , minfo );
678688
689+ update_cu_mask (mm , mqd , minfo , xcc );
690+
679691 if (q -> format == KFD_QUEUE_FORMAT_AQL ) {
680692 switch (xcc ) {
681693 case 0 :
0 commit comments