diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 28 | 
1 files changed, 18 insertions, 10 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c index b4906d2f30d3..271452d3999a 100644 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c @@ -22,11 +22,10 @@   */  #include "amdgpu.h" -#include "vega10/soc15ip.h" -#include "vega10/NBIO/nbio_6_1_offset.h" -#include "vega10/NBIO/nbio_6_1_sh_mask.h" -#include "vega10/GC/gc_9_0_offset.h" -#include "vega10/GC/gc_9_0_sh_mask.h" +#include "nbio/nbio_6_1_offset.h" +#include "nbio/nbio_6_1_sh_mask.h" +#include "gc/gc_9_0_offset.h" +#include "gc/gc_9_0_sh_mask.h"  #include "soc15.h"  #include "vega10_ih.h"  #include "soc15_common.h" @@ -254,7 +253,7 @@ static void xgpu_ai_mailbox_flr_work(struct work_struct *work)  	}  	/* Trigger recovery due to world switch failure */ -	amdgpu_sriov_gpu_reset(adev, NULL); +	amdgpu_device_gpu_recover(adev, NULL, false);  }  static int xgpu_ai_set_mailbox_rcv_irq(struct amdgpu_device *adev, @@ -278,13 +277,21 @@ static int xgpu_ai_mailbox_rcv_irq(struct amdgpu_device *adev,  	int r;  	/* trigger gpu-reset by hypervisor only if TDR disbaled */ -	if (amdgpu_lockup_timeout == 0) { +	if (!amdgpu_gpu_recovery) {  		/* see what event we get */  		r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION); -		/* only handle FLR_NOTIFY now */ -		if (!r) -			schedule_work(&adev->virt.flr_work); +		/* sometimes the interrupt is delayed to inject to VM, so under such case +		 * the IDH_FLR_NOTIFICATION is overwritten by VF FLR from GIM side, thus +		 * above recieve message could be failed, we should schedule the flr_work +		 * anyway +		 */ +		if (r) { +			DRM_ERROR("FLR_NOTIFICATION is missed\n"); +			xgpu_ai_mailbox_send_ack(adev); +		} + +		schedule_work(&adev->virt.flr_work);  	}  	return 0; @@ -353,5 +360,6 @@ const struct amdgpu_virt_ops xgpu_ai_virt_ops = {  	.req_full_gpu	= xgpu_ai_request_full_gpu_access,  	.rel_full_gpu	= xgpu_ai_release_full_gpu_access,  	.reset_gpu = xgpu_ai_request_reset, +	.wait_reset = NULL,  	.trans_msg = xgpu_ai_mailbox_trans_msg,  }; |