Commit 72ea12f6 authored by Jonathan Kim's avatar Jonathan Kim Committed by Alex Deucher
Browse files

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: default avatarJonathan Kim <jonathan.kim@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ace232ef
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 {
+4 −0
Original line number Diff line number Diff line
@@ -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));
+4 −0
Original line number Diff line number Diff line
@@ -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),
+2 −1
Original line number Diff line number Diff line
@@ -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;

+2 −1
Original line number Diff line number Diff line
@@ -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;