<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Series is:</p>
<p style="margin-top:0;margin-bottom:0">Acked-by: Alex Deucher <alexander.deucher@amd.com><br>
</p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Andrey Grodzovsky <andrey.grodzovsky@amd.com><br>
<b>Sent:</b> Wednesday, June 20, 2018 2:17:22 PM<br>
<b>To:</b> amd-gfx@lists.freedesktop.org; ckoenig.leichtzumerken@gmail.com<br>
<b>Cc:</b> Panariti, David; Haehnle, Nicolai; Grodzovsky, Andrey<br>
<b>Subject:</b> [PATCH v3 1/2] drm/amdgpu: Polish SQ IH.</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Switch to using reg fields defines istead of magic values.<br>
Add SH_ID and PRIV fields reading for instr. and err cases.<br>
<br>
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com><br>
Acked-by: Christian König <christian.koenig@amd.com><br>
---<br>
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 36 +++++++++++++++++++----------------<br>
 1 file changed, 20 insertions(+), 16 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
index 15e61e1..93904a7 100644<br>
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
@@ -6958,10 +6958,11 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,<br>
 {<br>
         u8 enc, se_id;<br>
         char type[20];<br>
+       unsigned ih_data = entry->src_data[0];<br>
 <br>
-       /* Parse all fields according to SQ_INTERRUPT* registers */<br>
-       enc = (entry->src_data[0] >> 26) & 0x3;<br>
-       se_id = (entry->src_data[0] >> 24) & 0x3;<br>
+<br>
+       enc = REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_CMN, ENCODING);<br>
+       se_id = REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_CMN, SE_ID);<br>
 <br>
         switch (enc) {<br>
                 case 0:<br>
@@ -6971,14 +6972,14 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,<br>
                                         "reg_timestamp %d, thread_trace_buff_full %d,"<br>
                                         "wlt %d, thread_trace %d.\n",<br>
                                         se_id,<br>
-                                       (entry->src_data[0] >> 7) & 0x1,<br>
-                                       (entry->src_data[0] >> 6) & 0x1,<br>
-                                       (entry->src_data[0] >> 5) & 0x1,<br>
-                                       (entry->src_data[0] >> 4) & 0x1,<br>
-                                       (entry->src_data[0] >> 3) & 0x1,<br>
-                                       (entry->src_data[0] >> 2) & 0x1,<br>
-                                       (entry->src_data[0] >> 1) & 0x1,<br>
-                                       entry->src_data[0] & 0x1<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, IMMED_OVERFLOW),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, HOST_REG_OVERFLOW),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, HOST_CMD_OVERFLOW),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, CMD_TIMESTAMP),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, REG_TIMESTAMP),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, THREAD_TRACE_BUF_FULL),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, WLT),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_AUTO, THREAD_TRACE)<br>
                                         );<br>
                         break;<br>
                 case 1:<br>
@@ -6991,12 +6992,15 @@ static int gfx_v8_0_sq_irq(struct amdgpu_device *adev,<br>
 <br>
                         DRM_INFO(<br>
                                 "SQ %s detected: "<br>
-                                       "se_id %d, cu_id %d, simd_id %d, wave_id %d, vm_id %d\n",<br>
+                                       "se_id %d, cu_id %d, simd_id %d, wave_id %d, vm_id %d\n"<br>
+                                       "trap %s, sh_id %d. ",<br>
                                         type, se_id,<br>
-                                       (entry->src_data[0] >> 20) & 0xf,<br>
-                                       (entry->src_data[0] >> 18) & 0x3,<br>
-                                       (entry->src_data[0] >> 14) & 0xf,<br>
-                                       (entry->src_data[0] >> 10) & 0xf<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, CU_ID),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, SIMD_ID),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, WAVE_ID),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, VM_ID),<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, PRIV) ? "true" : "false",<br>
+                                       REG_GET_FIELD(ih_data, SQ_INTERRUPT_WORD_WAVE, SH_ID)<br>
                                         );<br>
                         break;<br>
                 default:<br>
-- <br>
2.7.4<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
amd-gfx@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font></div>
</body>
</html>