Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: update remove after reset flag for MES remove queue

Remove queue after reset flag is required to remove a queue that has
been successfully reset to clean up the MES' internal state.

Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Jonathan Kim and committed by
Alex Deucher
72ea12f6 ace232ef

+13 -2
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
··· 239 239 struct mes_remove_queue_input { 240 240 uint32_t doorbell_offset; 241 241 uint64_t gang_context_addr; 242 + bool remove_queue_after_reset; 242 243 }; 243 244 244 245 struct mes_map_legacy_queue_input {
+4
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
··· 369 369 struct mes_remove_queue_input *input) 370 370 { 371 371 union MESAPI__REMOVE_QUEUE mes_remove_queue_pkt; 372 + uint32_t mes_rev = mes->sched_version & AMDGPU_MES_VERSION_MASK; 372 373 373 374 memset(&mes_remove_queue_pkt, 0, sizeof(mes_remove_queue_pkt)); 374 375 ··· 379 378 380 379 mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset; 381 380 mes_remove_queue_pkt.gang_context_addr = input->gang_context_addr; 381 + 382 + if (mes_rev >= 0x60) 383 + mes_remove_queue_pkt.remove_queue_after_reset = input->remove_queue_after_reset; 382 384 383 385 return mes_v11_0_submit_pkt_and_poll_completion(mes, 384 386 &mes_remove_queue_pkt, sizeof(mes_remove_queue_pkt),
+4
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
··· 361 361 struct mes_remove_queue_input *input) 362 362 { 363 363 union MESAPI__REMOVE_QUEUE mes_remove_queue_pkt; 364 + uint32_t mes_rev = mes->sched_version & AMDGPU_MES_VERSION_MASK; 364 365 365 366 memset(&mes_remove_queue_pkt, 0, sizeof(mes_remove_queue_pkt)); 366 367 ··· 371 370 372 371 mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset; 373 372 mes_remove_queue_pkt.gang_context_addr = input->gang_context_addr; 373 + 374 + if (mes_rev >= 0x5a) 375 + mes_remove_queue_pkt.remove_queue_after_reset = input->remove_queue_after_reset; 374 376 375 377 return mes_v12_0_submit_pkt_and_poll_completion(mes, 376 378 AMDGPU_MES_SCHED_PIPE,
+2 -1
drivers/gpu/drm/amd/include/mes_v11_api_def.h
··· 345 345 uint32_t unmap_kiq_utility_queue : 1; 346 346 uint32_t preempt_legacy_gfx_queue : 1; 347 347 uint32_t unmap_legacy_queue : 1; 348 - uint32_t reserved : 28; 348 + uint32_t remove_queue_after_reset : 1; 349 + uint32_t reserved : 27; 349 350 }; 350 351 struct MES_API_STATUS api_status; 351 352
+2 -1
drivers/gpu/drm/amd/include/mes_v12_api_def.h
··· 399 399 uint32_t unmap_kiq_utility_queue : 1; 400 400 uint32_t preempt_legacy_gfx_queue : 1; 401 401 uint32_t unmap_legacy_queue : 1; 402 - uint32_t reserved : 28; 402 + uint32_t remove_queue_after_reset : 1; 403 + uint32_t reserved : 27; 403 404 }; 404 405 struct MES_API_STATUS api_status; 405 406