@@ -44,7 +44,7 @@ static inline struct v11_sdma_mqd *get_sdma_mqd(void *mqd)
4444static void update_cu_mask (struct mqd_manager * mm , void * mqd ,
4545 struct mqd_update_info * minfo )
4646{
47- struct v11_compute_mqd * m ;
47+ volatile struct v11_compute_mqd * m ;
4848 uint32_t se_mask [KFD_MAX_NUM_SE ] = {0 };
4949 bool has_wa_flag = minfo && (minfo -> update_flag & (UPDATE_FLAG_DBG_WA_ENABLE |
5050 UPDATE_FLAG_DBG_WA_DISABLE ));
@@ -125,7 +125,7 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
125125 struct queue_properties * q )
126126{
127127 uint64_t addr ;
128- struct v11_compute_mqd * m ;
128+ volatile struct v11_compute_mqd * m ;
129129 int size ;
130130 uint32_t wa_mask = q -> is_dbg_wa ? 0xffff : 0xffffffff ;
131131
@@ -137,7 +137,7 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
137137 else
138138 size = sizeof (struct v11_compute_mqd );
139139
140- memset (m , 0 , size );
140+ memset_io (m , 0 , size );
141141
142142 m -> header = 0xC0310800 ;
143143 m -> compute_pipelinestat_enable = 1 ;
@@ -219,7 +219,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
219219 struct queue_properties * q ,
220220 struct mqd_update_info * minfo )
221221{
222- struct v11_compute_mqd * m ;
222+ volatile struct v11_compute_mqd * m ;
223223
224224 m = get_mqd (mqd );
225225
@@ -281,7 +281,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
281281
282282static bool check_preemption_failed (struct mqd_manager * mm , void * mqd )
283283{
284- struct v11_compute_mqd * m = (struct v11_compute_mqd * )mqd ;
284+ volatile struct v11_compute_mqd * m = (struct v11_compute_mqd * )mqd ;
285285
286286 return kfd_check_hiq_mqd_doorbell_id (mm -> dev , m -> queue_doorbell_id0 , 0 );
287287}
@@ -292,7 +292,7 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,
292292 u32 * ctl_stack_used_size ,
293293 u32 * save_area_used_size )
294294{
295- struct v11_compute_mqd * m ;
295+ volatile struct v11_compute_mqd * m ;
296296 struct kfd_context_save_area_header header ;
297297
298298 m = get_mqd (mqd );
@@ -325,11 +325,11 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,
325325
326326static void checkpoint_mqd (struct mqd_manager * mm , void * mqd , void * mqd_dst , void * ctl_stack_dst )
327327{
328- struct v11_compute_mqd * m ;
328+ volatile struct v11_compute_mqd * m ;
329329
330330 m = get_mqd (mqd );
331331
332- memcpy (mqd_dst , m , sizeof (struct v11_compute_mqd ));
332+ memcpy_fromio (mqd_dst , m , sizeof (struct v11_compute_mqd ));
333333}
334334
335335static void restore_mqd (struct mqd_manager * mm , void * * mqd ,
@@ -339,12 +339,12 @@ static void restore_mqd(struct mqd_manager *mm, void **mqd,
339339 const void * ctl_stack_src , const u32 ctl_stack_size )
340340{
341341 uint64_t addr ;
342- struct v11_compute_mqd * m ;
342+ volatile struct v11_compute_mqd * m ;
343343
344344 m = (struct v11_compute_mqd * ) mqd_mem_obj -> cpu_ptr ;
345345 addr = mqd_mem_obj -> gpu_addr ;
346346
347- memcpy (m , mqd_src , sizeof (* m ));
347+ memcpy_toio (m , mqd_src , sizeof (* m ));
348348
349349 * mqd = m ;
350350 if (gart_addr )
@@ -364,7 +364,7 @@ static void init_mqd_hiq(struct mqd_manager *mm, void **mqd,
364364 struct kfd_mem_obj * mqd_mem_obj , uint64_t * gart_addr ,
365365 struct queue_properties * q )
366366{
367- struct v11_compute_mqd * m ;
367+ volatile struct v11_compute_mqd * m ;
368368
369369 init_mqd (mm , mqd , mqd_mem_obj , gart_addr , q );
370370
@@ -379,7 +379,7 @@ static int destroy_hiq_mqd(struct mqd_manager *mm, void *mqd,
379379 uint32_t pipe_id , uint32_t queue_id )
380380{
381381 int err ;
382- struct v11_compute_mqd * m ;
382+ volatile struct v11_compute_mqd * m ;
383383 u32 doorbell_off ;
384384
385385 m = get_mqd (mqd );
@@ -408,7 +408,7 @@ static void init_mqd_sdma(struct mqd_manager *mm, void **mqd,
408408 else
409409 size = sizeof (struct v11_sdma_mqd );
410410
411- memset (m , 0 , size );
411+ memset_io (m , 0 , size );
412412 * mqd = m ;
413413 if (gart_addr )
414414 * gart_addr = mqd_mem_obj -> gpu_addr ;
0 commit comments