From: Alex Deucher <[email protected]>

Call the new userq reset helper.

Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
index 380ba062134e..b3f1bbf3fc13 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
@@ -5009,15 +5009,19 @@ static int gfx_v12_0_set_priv_inst_fault_state(struct 
amdgpu_device *adev,
 static void gfx_v12_0_handle_priv_fault(struct amdgpu_device *adev,
                                        struct amdgpu_iv_entry *entry)
 {
-       u8 me_id, pipe_id, queue_id;
-       struct amdgpu_ring *ring;
-       int i;
+       u32 doorbell_offset = entry->src_data[0];
 
-       me_id = (entry->ring_id & 0x0c) >> 2;
-       pipe_id = (entry->ring_id & 0x03) >> 0;
-       queue_id = (entry->ring_id & 0x70) >> 4;
+       if (adev->enable_mes && doorbell_offset) {
+               amdgpu_userq_process_reset_irq(adev, doorbell_offset);
+       } else if (!adev->gfx.disable_kq) {
+               u8 me_id, pipe_id, queue_id;
+               struct amdgpu_ring *ring;
+               int i;
+
+               me_id = (entry->ring_id & 0x0c) >> 2;
+               pipe_id = (entry->ring_id & 0x03) >> 0;
+               queue_id = (entry->ring_id & 0x70) >> 4;
 
-       if (!adev->gfx.disable_kq) {
                switch (me_id) {
                case 0:
                        for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
-- 
2.49.0

Reply via email to