Enable the userq callback for setting up gang submission. Signed-off-by: Alex Deucher <alexander.deuc...@amd.com> --- drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c index 650fdb68db127..98d08bda5dbc7 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c @@ -367,10 +367,36 @@ static int mes_userq_reset(struct amdgpu_userq_mgr *uq_mgr, return r; } +static int mes_set_gang(struct amdgpu_userq_mgr *uq_mgr, + struct amdgpu_usermode_queue *primary_queue, + struct amdgpu_usermode_queue *secondary_queue) +{ + struct amdgpu_userq_obj *primary_ctx = &primary_queue->fw_obj; + struct amdgpu_userq_obj *secondary_ctx = &secondary_queue->fw_obj; + struct amdgpu_device *adev = uq_mgr->adev; + struct mes_set_gang_submit_input input; + int r; + + memset(&input, 0x0, sizeof(struct mes_set_gang_submit_input)); + + input.primary_gang_context_addr = + primary_ctx->gpu_addr + AMDGPU_USERQ_PROC_CTX_SZ; + input.secondary_gang_context_addr = + secondary_ctx->gpu_addr + AMDGPU_USERQ_PROC_CTX_SZ; + + amdgpu_mes_lock(&adev->mes); + r = adev->mes.funcs->set_gang_submit(&adev->mes, &input); + amdgpu_mes_unlock(&adev->mes); + if (r) + dev_err(adev->dev, "Failed to set gang submit, err (%d)\n", r); + return r; +} + const struct amdgpu_userq_funcs userq_mes_funcs = { .mqd_create = mes_userq_mqd_create, .mqd_destroy = mes_userq_mqd_destroy, .unmap = mes_userq_unmap, .map = mes_userq_map, .reset = mes_userq_reset, + .set_gang = mes_set_gang, }; -- 2.49.0