drm/amdgpu: SRIOV flr_work should use down_write
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdgpu / mxgpu_nv.c
index a35e6d8..477d0dd 100644 (file)
@@ -281,11 +281,12 @@ static void xgpu_nv_mailbox_flr_work(struct work_struct *work)
         * otherwise the mailbox msg will be ruined/reseted by
         * the VF FLR.
         */
-       if (!down_write_trylock(&adev->reset_sem))
+       if (atomic_cmpxchg(&adev->in_gpu_reset, 0, 1) != 0)
                return;
 
+       down_write(&adev->reset_sem);
+
        amdgpu_virt_fini_data_exchange(adev);
-       atomic_set(&adev->in_gpu_reset, 1);
 
        xgpu_nv_mailbox_trans_msg(adev, IDH_READY_TO_RESET, 0, 0, 0);