diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c index a35e6d87e537..477d0dde19c5 100644 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c @@ -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);  |