From: Jack Xiao Date: Wed, 22 Jun 2022 04:45:24 +0000 (+0800) Subject: drm/amdgpu/mes11: fix to unmap legacy queue X-Git-Tag: v6.0-rc1~138^2~7^2~89 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7acd7ab0297a37e44df928378f53d4260b25fd2b;p=thirdparty%2Flinux.git drm/amdgpu/mes11: fix to unmap legacy queue MES fw updated to support unmapping legacy gfx/compute queue. Signed-off-by: Jack Xiao Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c index 5bdc2babb070b..6b07a8b23d671 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c @@ -216,7 +216,7 @@ static int mes_v11_0_unmap_legacy_queue(struct amdgpu_mes *mes, mes_remove_queue_pkt.header.opcode = MES_SCH_API_REMOVE_QUEUE; mes_remove_queue_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS; - mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset << 2; + mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset; mes_remove_queue_pkt.gang_context_addr = 0; mes_remove_queue_pkt.pipe_id = input->pipe_id; @@ -228,10 +228,9 @@ static int mes_v11_0_unmap_legacy_queue(struct amdgpu_mes *mes, mes_remove_queue_pkt.tf_data = lower_32_bits(input->trail_fence_data); } else { - if (input->queue_type == AMDGPU_RING_TYPE_GFX) - mes_remove_queue_pkt.unmap_legacy_gfx_queue = 1; - else - mes_remove_queue_pkt.unmap_kiq_utility_queue = 1; + mes_remove_queue_pkt.unmap_legacy_queue = 1; + mes_remove_queue_pkt.queue_type = + convert_to_mes_queue_type(input->queue_type); } mes_remove_queue_pkt.api_status.api_completion_fence_addr = diff --git a/drivers/gpu/drm/amd/include/mes_v11_api_def.h b/drivers/gpu/drm/amd/include/mes_v11_api_def.h index 1d37ec2cd7377..80dab1146439e 100644 --- a/drivers/gpu/drm/amd/include/mes_v11_api_def.h +++ b/drivers/gpu/drm/amd/include/mes_v11_api_def.h @@ -227,6 +227,7 @@ union MESAPI_SET_HW_RESOURCES { uint32_t uint32_t_all; }; uint32_t oversubscription_timer; + uint64_t doorbell_info; }; uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; @@ -286,7 +287,8 @@ union MESAPI__REMOVE_QUEUE { uint32_t unmap_legacy_gfx_queue : 1; uint32_t unmap_kiq_utility_queue : 1; uint32_t preempt_legacy_gfx_queue : 1; - uint32_t reserved : 29; + uint32_t unmap_legacy_queue : 1; + uint32_t reserved : 28; }; struct MES_API_STATUS api_status; @@ -295,6 +297,8 @@ union MESAPI__REMOVE_QUEUE { uint64_t tf_addr; uint32_t tf_data; + + enum MES_QUEUE_TYPE queue_type; }; uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS];