@@ -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 ;
@@ -217,7 +217,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
217217 struct queue_properties * q ,
218218 struct mqd_update_info * minfo )
219219{
220- struct v11_compute_mqd * m ;
220+ volatile struct v11_compute_mqd * m ;
221221
222222 m = get_mqd (mqd );
223223
@@ -280,7 +280,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
280280
281281static uint32_t read_doorbell_id (void * mqd )
282282{
283- struct v11_compute_mqd * m = (struct v11_compute_mqd * )mqd ;
283+ volatile struct v11_compute_mqd * m = (struct v11_compute_mqd * )mqd ;
284284
285285 return m -> queue_doorbell_id0 ;
286286}
@@ -291,7 +291,7 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,
291291 u32 * ctl_stack_used_size ,
292292 u32 * save_area_used_size )
293293{
294- struct v11_compute_mqd * m ;
294+ volatile struct v11_compute_mqd * m ;
295295 struct kfd_context_save_area_header header ;
296296
297297 m = get_mqd (mqd );
@@ -324,11 +324,11 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,
324324
325325static void checkpoint_mqd (struct mqd_manager * mm , void * mqd , void * mqd_dst , void * ctl_stack_dst )
326326{
327- struct v11_compute_mqd * m ;
327+ volatile struct v11_compute_mqd * m ;
328328
329329 m = get_mqd (mqd );
330330
331- memcpy (mqd_dst , m , sizeof (struct v11_compute_mqd ));
331+ memcpy_fromio (mqd_dst , m , sizeof (struct v11_compute_mqd ));
332332}
333333
334334static void restore_mqd (struct mqd_manager * mm , void * * mqd ,
@@ -338,12 +338,12 @@ static void restore_mqd(struct mqd_manager *mm, void **mqd,
338338 const void * ctl_stack_src , const u32 ctl_stack_size )
339339{
340340 uint64_t addr ;
341- struct v11_compute_mqd * m ;
341+ volatile struct v11_compute_mqd * m ;
342342
343343 m = (struct v11_compute_mqd * ) mqd_mem_obj -> cpu_ptr ;
344344 addr = mqd_mem_obj -> gpu_addr ;
345345
346- memcpy (m , mqd_src , sizeof (* m ));
346+ memcpy_toio (m , mqd_src , sizeof (* m ));
347347
348348 * mqd = m ;
349349 if (gart_addr )
@@ -363,7 +363,7 @@ static void init_mqd_hiq(struct mqd_manager *mm, void **mqd,
363363 struct kfd_mem_obj * mqd_mem_obj , uint64_t * gart_addr ,
364364 struct queue_properties * q )
365365{
366- struct v11_compute_mqd * m ;
366+ volatile struct v11_compute_mqd * m ;
367367
368368 init_mqd (mm , mqd , mqd_mem_obj , gart_addr , q );
369369
@@ -378,7 +378,7 @@ static int destroy_hiq_mqd(struct mqd_manager *mm, void *mqd,
378378 uint32_t pipe_id , uint32_t queue_id )
379379{
380380 int err ;
381- struct v11_compute_mqd * m ;
381+ volatile struct v11_compute_mqd * m ;
382382 u32 doorbell_off ;
383383
384384 m = get_mqd (mqd );
@@ -407,7 +407,7 @@ static void init_mqd_sdma(struct mqd_manager *mm, void **mqd,
407407 else
408408 size = sizeof (struct v11_sdma_mqd );
409409
410- memset (m , 0 , size );
410+ memset_io (m , 0 , size );
411411 * mqd = m ;
412412 if (gart_addr )
413413 * gart_addr = mqd_mem_obj -> gpu_addr ;
0 commit comments