To avoid the following issue, it requires skipping
userq_notify_unmap during gpu reset.

[  356.185682] CPU: 13 UID: 0 PID: 599 Comm: kworker/13:2 Tainted: G        W  
OE       7.1.0-custom #40 PREEMPT(lazy)
[  356.185690] Tainted: [W]=WARN, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
[  356.185694] Hardware name: AMD Majolica-RN/Majolica-RN, BIOS RMJ1009A 
06/13/2021
[  356.185699] Workqueue: events amdgpu_mes_userq_notify_unmap_work_handler 
[amdgpu]
[  356.185952] RIP: 0010:amdgpu_device_skip_hw_access+0x73/0x90 [amdgpu]
[  356.186156] Code: 85 c0 75 2a 8b 05 71 56 d7 dc 85 c0 74 d3 48 8b bb d0 e7 
07 00 be ff ff ff ff 48 81 c7 88 00 00 00 e8 f1 50 79 db 85 c0 75 b7 <0f> 0b eb 
b3 48 8b bb d0 e7 07 00 48 83 c7 18 e8 39 fe 76 da eb a1
[  356.186161] RSP: 0018:ffffd39142dbfa58 EFLAGS: 00010046
[  356.186168] RAX: 0000000000000000 RBX: ffff8bfc09d00000 RCX: 0000000000000003
[  356.186172] RDX: 0000000000000000 RSI: ffff8bfc04e00c88 RDI: ffff8bfc0b93df50
[  356.186176] RBP: ffffd39142dbfa68 R08: 0000000000000000 R09: 0000000000000000
[  356.186180] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[  356.186184] R13: 0000000000000680 R14: ffff8bfc09d67288 R15: 0000000000000000
[  356.186188] FS:  0000000000000000(0000) GS:ffff8bffb057d000(0000) 
knlGS:0000000000000000
[  356.186192] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  356.186197] CR2: 00007fbd3797c000 CR3: 0000000150642000 CR4: 0000000000350ef0
[  356.186201] Call Trace:
[  356.186205]  <TASK>
[  356.186214]  amdgpu_mm_wdoorbell64+0x20/0x70 [amdgpu]
[  356.186425]  mes_v11_0_ring_set_wptr+0x71/0x80 [amdgpu]
[  356.186670]  amdgpu_ring_commit+0x5b/0xa0 [amdgpu]
[  356.186885]  
mes_v11_0_submit_pkt_and_poll_completion.constprop.0+0x207/0x4a0 [amdgpu]
[  356.187181]  mes_v11_0_misc_op+0x8b/0x240 [amdgpu]
[  356.187462]  amdgpu_mes_notify_unmap_queue+0xa3/0x110 [amdgpu]
[  356.187713]  amdgpu_mes_userq_notify_unmap_work_handler+0x24/0x70 [amdgpu]
[  356.187954]  process_one_work+0x23e/0x6f0
[  356.187984]  worker_thread+0x1c4/0x380
[  356.187998]  kthread+0x10c/0x150
[  356.188004]  ? __pfx_worker_thread+0x10/0x10
[  356.188010]  ? __pfx_kthread+0x10/0x10
[  356.188021]  ret_from_fork+0x314/0x390
[  356.188027]  ? __pfx_kthread+0x10/0x10
[  356.188036]  ret_from_fork_asm+0x1a/0x30
[  356.188069]  </TASK>

Signed-off-by: Prike Liang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
index e0e38d6bcafc..dbf535adb1b7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
@@ -1192,6 +1192,9 @@ static void 
amdgpu_mes_userq_notify_unmap_work_handler(struct work_struct *work)
                                               userq_notify_unmap_work.work);
        struct amdgpu_device *adev = mes->adev;
 
+       if (amdgpu_in_reset(adev))
+               return;
+
        amdgpu_mes_notify_unmap_queue(adev);
 
        /* Re-arm if still oversubscribed */
-- 
2.34.1

Reply via email to