From: Lijo Lazar <[email protected]> Add cwsr parameters to userqueue ioctl. User should pass the GPU virtual address for save/restore buffer, and size allocated. They are supported only for user compute queues.
Signed-off-by: Lijo Lazar <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Change-Id: Ie866128243c426bf4423c01aff136fc046e84870 --- drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 13 +++++++++---- include/uapi/drm/amdgpu_drm.h | 11 +++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c index 3b7a1479fbf7..5311e1ad0201 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c @@ -461,11 +461,9 @@ static int mes_userq_mqd_create(struct amdgpu_usermode_queue *queue, num_xcc = amdgpu_xcp_get_num_xcc(adev->xcp_mgr, fpriv->xcp_id); cwsr_params.ctx_save_area_address = - userq_props->ctx_save_area_addr; + compute_mqd->ctx_save_area_va; cwsr_params.cwsr_sz = - userq_props->ctx_save_area_size; - userq_props->ctl_stack_size = - adev->cwsr_info->xcc_ctl_stack_sz * num_xcc; + compute_mqd->ctx_save_area_size; r = amdgpu_bo_reserve(queue->vm->root.bo, false); if (r) { @@ -480,6 +478,13 @@ static int mes_userq_mqd_create(struct amdgpu_usermode_queue *queue, kfree(compute_mqd); goto free_mqd; } + + userq_props->ctx_save_area_addr = + compute_mqd->ctx_save_area_va; + userq_props->ctx_save_area_size = + compute_mqd->ctx_save_area_size; + userq_props->ctl_stack_size = + adev->cwsr_info->xcc_ctl_stack_sz * num_xcc; } kfree(compute_mqd); diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h index 527199e4de9b..9317018330ec 100644 --- a/include/uapi/drm/amdgpu_drm.h +++ b/include/uapi/drm/amdgpu_drm.h @@ -470,6 +470,17 @@ struct drm_amdgpu_userq_mqd_compute_gfx11 { * to get the size. */ __u64 eop_va; + /** + * @ctx_save_area_va: Virtual address of the GPU memory for save/restore buffer. + * This must be from a separate GPU object, and use AMDGPU_INFO IOCTL + * to get the size. This includes control stack, wave context and debugger memory. + */ + __u64 ctx_save_area_va; + /** + * @ctx_save_area_size: Total size (in bytes) allocated for save/restore buffer. + * Use AMDGPU_INFO IOCTL to get the size. + */ + __u32 ctx_save_area_size; }; /* userq signal/wait ioctl */ -- 2.34.1
