queue_input.wptr_addr = qprops->wptr_gpu_addr;
queue_input.queue_type = qprops->queue_type;
queue_input.paging = qprops->paging;
+ queue_input.is_kfd_process = 0;
r = adev->mes.funcs->add_hw_queue(&adev->mes, &queue_input);
if (r) {
uint32_t gws_size;
uint64_t tba_addr;
uint64_t tma_addr;
+ uint32_t is_kfd_process;
};
struct mes_remove_queue_input {
mes_add_queue_pkt.gws_size = input->gws_size;
mes_add_queue_pkt.trap_handler_addr = input->tba_addr;
mes_add_queue_pkt.tma_addr = input->tma_addr;
+ mes_add_queue_pkt.is_kfd_process = input->is_kfd_process;
mes_add_queue_pkt.api_status.api_completion_fence_addr =
mes->ring.fence_drv.gpu_addr;
mes_set_hw_res_pkt.disable_reset = 1;
mes_set_hw_res_pkt.disable_mes_log = 1;
mes_set_hw_res_pkt.use_different_vmid_compute = 1;
+ mes_set_hw_res_pkt.oversubscription_timer = 50;
mes_set_hw_res_pkt.api_status.api_completion_fence_addr =
mes->ring.fence_drv.gpu_addr;
} else
queue_input.wptr_addr = (uint64_t)q->properties.write_ptr;
+ queue_input.is_kfd_process = 1;
+
queue_input.paging = false;
queue_input.tba_addr = qpd->tba_addr;
queue_input.tma_addr = qpd->tma_addr;
};
uint32_t uint32_t_all;
};
+ uint32_t oversubscription_timer;
};
uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS];
uint32_t is_gang_suspended : 1;
uint32_t is_tmz_queue : 1;
uint32_t map_kiq_utility_queue : 1;
- uint32_t reserved : 23;
+ uint32_t is_kfd_process : 1;
+ uint32_t reserved : 22;
};
struct MES_API_STATUS api_status;
uint64_t tma_addr;