mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
committed by
Alex Deucher
parent
ace232eff5
commit
72ea12f6be
@@ -239,6 +239,7 @@ struct mes_add_queue_input {
|
||||
struct mes_remove_queue_input {
|
||||
uint32_t doorbell_offset;
|
||||
uint64_t gang_context_addr;
|
||||
bool remove_queue_after_reset;
|
||||
};
|
||||
|
||||
struct mes_map_legacy_queue_input {
|
||||
|
||||
@@ -369,6 +369,7 @@ static int mes_v11_0_remove_hw_queue(struct amdgpu_mes *mes,
|
||||
struct mes_remove_queue_input *input)
|
||||
{
|
||||
union MESAPI__REMOVE_QUEUE mes_remove_queue_pkt;
|
||||
uint32_t mes_rev = mes->sched_version & AMDGPU_MES_VERSION_MASK;
|
||||
|
||||
memset(&mes_remove_queue_pkt, 0, sizeof(mes_remove_queue_pkt));
|
||||
|
||||
@@ -379,6 +380,9 @@ static int mes_v11_0_remove_hw_queue(struct amdgpu_mes *mes,
|
||||
mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset;
|
||||
mes_remove_queue_pkt.gang_context_addr = input->gang_context_addr;
|
||||
|
||||
if (mes_rev >= 0x60)
|
||||
mes_remove_queue_pkt.remove_queue_after_reset = input->remove_queue_after_reset;
|
||||
|
||||
return mes_v11_0_submit_pkt_and_poll_completion(mes,
|
||||
&mes_remove_queue_pkt, sizeof(mes_remove_queue_pkt),
|
||||
offsetof(union MESAPI__REMOVE_QUEUE, api_status));
|
||||
|
||||
@@ -361,6 +361,7 @@ static int mes_v12_0_remove_hw_queue(struct amdgpu_mes *mes,
|
||||
struct mes_remove_queue_input *input)
|
||||
{
|
||||
union MESAPI__REMOVE_QUEUE mes_remove_queue_pkt;
|
||||
uint32_t mes_rev = mes->sched_version & AMDGPU_MES_VERSION_MASK;
|
||||
|
||||
memset(&mes_remove_queue_pkt, 0, sizeof(mes_remove_queue_pkt));
|
||||
|
||||
@@ -371,6 +372,9 @@ static int mes_v12_0_remove_hw_queue(struct amdgpu_mes *mes,
|
||||
mes_remove_queue_pkt.doorbell_offset = input->doorbell_offset;
|
||||
mes_remove_queue_pkt.gang_context_addr = input->gang_context_addr;
|
||||
|
||||
if (mes_rev >= 0x5a)
|
||||
mes_remove_queue_pkt.remove_queue_after_reset = input->remove_queue_after_reset;
|
||||
|
||||
return mes_v12_0_submit_pkt_and_poll_completion(mes,
|
||||
AMDGPU_MES_SCHED_PIPE,
|
||||
&mes_remove_queue_pkt, sizeof(mes_remove_queue_pkt),
|
||||
|
||||
@@ -345,7 +345,8 @@ union MESAPI__REMOVE_QUEUE {
|
||||
uint32_t unmap_kiq_utility_queue : 1;
|
||||
uint32_t preempt_legacy_gfx_queue : 1;
|
||||
uint32_t unmap_legacy_queue : 1;
|
||||
uint32_t reserved : 28;
|
||||
uint32_t remove_queue_after_reset : 1;
|
||||
uint32_t reserved : 27;
|
||||
};
|
||||
struct MES_API_STATUS api_status;
|
||||
|
||||
|
||||
@@ -399,7 +399,8 @@ union MESAPI__REMOVE_QUEUE {
|
||||
uint32_t unmap_kiq_utility_queue : 1;
|
||||
uint32_t preempt_legacy_gfx_queue : 1;
|
||||
uint32_t unmap_legacy_queue : 1;
|
||||
uint32_t reserved : 28;
|
||||
uint32_t remove_queue_after_reset : 1;
|
||||
uint32_t reserved : 27;
|
||||
};
|
||||
struct MES_API_STATUS api_status;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user