aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
diff options
context:
space:
mode:
authorAndrey Grodzovsky <andrey.grodzovsky@amd.com>2018-06-18 11:15:10 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-07-05 17:38:26 -0400
commitd9e222b460b195a47b30fd9057fbb131fcbd7bac (patch)
treec012badb8f330fef569e575cad7d23aacb906869 /drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
parentb374d82dca4721c534eb940b599dd4d45ba3a18f (diff)
drm/amdgpu: Polish SQ IH.
Switch to using reg fields defines istead of magic values. Add SH_ID and PRIV fields reading for instr. and err cases. Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 807ee0dd623c..1d99a4205958 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -6961,10 +6961,11 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,
6961{ 6961{
6962 u8 enc, se_id; 6962 u8 enc, se_id;
6963 char type[20]; 6963 char type[20];
6964 unsigned ih_data = entry->src_data[0];
6964 6965
6965 /* Parse all fields according to SQ_INTERRUPT* registers */ 6966
6966 enc = (entry->src_data[0] >> 26) & 0x3; 6967 enc = REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_CMN, ENCODING);
6967 se_id = (entry->src_data[0] >> 24) & 0x3; 6968 se_id = REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_CMN, SE_ID);
6968 6969
6969 switch (enc) { 6970 switch (enc) {
6970 case 0: 6971 case 0:
@@ -6974,14 +6975,14 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,
6974 "reg_timestamp %d, thread_trace_buff_full %d," 6975 "reg_timestamp %d, thread_trace_buff_full %d,"
6975 "wlt %d, thread_trace %d.\n", 6976 "wlt %d, thread_trace %d.\n",
6976 se_id, 6977 se_id,
6977 (entry->src_data[0] >> 7) & 0x1, 6978 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, IMMED_OVERFLOW),
6978 (entry->src_data[0] >> 6) & 0x1, 6979 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, HOST_REG_OVERFLOW),
6979 (entry->src_data[0] >> 5) & 0x1, 6980 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, HOST_CMD_OVERFLOW),
6980 (entry->src_data[0] >> 4) & 0x1, 6981 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, CMD_TIMESTAMP),
6981 (entry->src_data[0] >> 3) & 0x1, 6982 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, REG_TIMESTAMP),
6982 (entry->src_data[0] >> 2) & 0x1, 6983 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, THREAD_TRACE_BUF_FULL),
6983 (entry->src_data[0] >> 1) & 0x1, 6984 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, WLT),
6984 entry->src_data[0] & 0x1 6985 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, THREAD_TRACE)
6985 ); 6986 );
6986 break; 6987 break;
6987 case 1: 6988 case 1:
@@ -6994,12 +6995,15 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,
6994 6995
6995 DRM_INFO( 6996 DRM_INFO(
6996 "SQ %s detected: " 6997 "SQ %s detected: "
6997 "se_id %d, cu_id %d, simd_id %d, wave_id %d, vm_id %d\n", 6998 "se_id %d, cu_id %d, simd_id %d, wave_id %d, vm_id %d\n"
6999 "trap %s, sh_id %d. ",
6998 type, se_id, 7000 type, se_id,
6999 (entry->src_data[0] >> 20) & 0xf, 7001 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, CU_ID),
7000 (entry->src_data[0] >> 18) & 0x3, 7002 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, SIMD_ID),
7001 (entry->src_data[0] >> 14) & 0xf, 7003 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, WAVE_ID),
7002 (entry->src_data[0] >> 10) & 0xf 7004 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, VM_ID),
7005 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, PRIV) ? "true" : "false",
7006 REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, SH_ID)
7003 ); 7007 );
7004 break; 7008 break;
7005 default: 7009 default: