Commit f6b80c04 authored by Tao Zhou's avatar Tao Zhou Committed by Alex Deucher

drm/amdkfd: add reset parameter for unmap queues

So we can set reset mode for unmap operation, no functional change.
Signed-off-by: default avatarTao Zhou <tao.zhou1@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Acked-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f4409ee8
...@@ -47,7 +47,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm, ...@@ -47,7 +47,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm,
uint32_t filter_param); uint32_t filter_param);
static int unmap_queues_cpsch(struct device_queue_manager *dqm, static int unmap_queues_cpsch(struct device_queue_manager *dqm,
enum kfd_unmap_queues_filter filter, enum kfd_unmap_queues_filter filter,
uint32_t filter_param); uint32_t filter_param, bool reset);
static int map_queues_cpsch(struct device_queue_manager *dqm); static int map_queues_cpsch(struct device_queue_manager *dqm);
...@@ -570,7 +570,7 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q, ...@@ -570,7 +570,7 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q,
/* Make sure the queue is unmapped before updating the MQD */ /* Make sure the queue is unmapped before updating the MQD */
if (dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) { if (dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) {
retval = unmap_queues_cpsch(dqm, retval = unmap_queues_cpsch(dqm,
KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0); KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0, false);
if (retval) { if (retval) {
pr_err("unmap queue failed\n"); pr_err("unmap queue failed\n");
goto out_unlock; goto out_unlock;
...@@ -1223,7 +1223,7 @@ static int stop_cpsch(struct device_queue_manager *dqm) ...@@ -1223,7 +1223,7 @@ static int stop_cpsch(struct device_queue_manager *dqm)
} }
if (!dqm->is_hws_hang) if (!dqm->is_hws_hang)
unmap_queues_cpsch(dqm, KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0); unmap_queues_cpsch(dqm, KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0, false);
hanging = dqm->is_hws_hang || dqm->is_resetting; hanging = dqm->is_hws_hang || dqm->is_resetting;
dqm->sched_running = false; dqm->sched_running = false;
...@@ -1419,7 +1419,7 @@ static int map_queues_cpsch(struct device_queue_manager *dqm) ...@@ -1419,7 +1419,7 @@ static int map_queues_cpsch(struct device_queue_manager *dqm)
/* dqm->lock mutex has to be locked before calling this function */ /* dqm->lock mutex has to be locked before calling this function */
static int unmap_queues_cpsch(struct device_queue_manager *dqm, static int unmap_queues_cpsch(struct device_queue_manager *dqm,
enum kfd_unmap_queues_filter filter, enum kfd_unmap_queues_filter filter,
uint32_t filter_param) uint32_t filter_param, bool reset)
{ {
int retval = 0; int retval = 0;
struct mqd_manager *mqd_mgr; struct mqd_manager *mqd_mgr;
...@@ -1432,7 +1432,7 @@ static int unmap_queues_cpsch(struct device_queue_manager *dqm, ...@@ -1432,7 +1432,7 @@ static int unmap_queues_cpsch(struct device_queue_manager *dqm,
return retval; return retval;
retval = pm_send_unmap_queue(&dqm->packet_mgr, KFD_QUEUE_TYPE_COMPUTE, retval = pm_send_unmap_queue(&dqm->packet_mgr, KFD_QUEUE_TYPE_COMPUTE,
filter, filter_param, false, 0); filter, filter_param, reset, 0);
if (retval) if (retval)
return retval; return retval;
...@@ -1485,7 +1485,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm, ...@@ -1485,7 +1485,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm,
if (dqm->is_hws_hang) if (dqm->is_hws_hang)
return -EIO; return -EIO;
retval = unmap_queues_cpsch(dqm, filter, filter_param); retval = unmap_queues_cpsch(dqm, filter, filter_param, false);
if (retval) if (retval)
return retval; return retval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment