Commit 0d81101c authored by Le Ma's avatar Le Ma Committed by Alex Deucher
Browse files

drm/amdgpu: complement the IH node_id table for multiple AIDs



With different node_id, the SDMA interrupt from multiple AIDs can be
distinguished by sw driver.

Signed-off-by: default avatarLe Ma <le.ma@amd.com>
Acked-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ed42f2cc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -100,12 +100,16 @@ const char *soc15_ih_clientid_name[] = {
};

const int node_id_to_phys_map[NODEID_MAX] = {
	[AID0_NODEID] = 0,
	[XCD0_NODEID] = 0,
	[XCD1_NODEID] = 1,
	[AID1_NODEID] = 1,
	[XCD2_NODEID] = 2,
	[XCD3_NODEID] = 3,
	[AID2_NODEID] = 2,
	[XCD4_NODEID] = 4,
	[XCD5_NODEID] = 5,
	[AID3_NODEID] = 3,
	[XCD6_NODEID] = 6,
	[XCD7_NODEID] = 7,
};
+5 −1
Original line number Diff line number Diff line
@@ -102,13 +102,17 @@ struct amdgpu_irq {
	bool                            retry_cam_enabled;
};

enum interrupt_node_id_per_xcp {
enum interrupt_node_id_per_aid {
	AID0_NODEID = 0,
	XCD0_NODEID = 1,
	XCD1_NODEID = 2,
	AID1_NODEID = 4,
	XCD2_NODEID = 5,
	XCD3_NODEID = 6,
	AID2_NODEID = 8,
	XCD4_NODEID = 9,
	XCD5_NODEID = 10,
	AID3_NODEID = 12,
	XCD6_NODEID = 13,
	XCD7_NODEID = 14,
	NODEID_MAX,
+3 −0
Original line number Diff line number Diff line
@@ -1492,6 +1492,9 @@ static int sdma_v4_4_2_process_trap_irq(struct amdgpu_device *adev,

	DRM_DEBUG("IH: SDMA trap\n");
	instance = sdma_v4_4_2_irq_id_to_seq(entry->client_id);
	instance += node_id_to_phys_map[entry->node_id] *
			adev->sdma.num_inst_per_aid;

	switch (entry->ring_id) {
	case 0:
		amdgpu_fence_process(&adev->sdma.instance[instance].ring);