diff options
author | Monk Liu <Monk.Liu@amd.com> | 2017-10-24 03:10:11 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-04 16:41:32 -0500 |
commit | 34a4d2bf06b3ab92024b8e26d6049411369d1f1a (patch) | |
tree | 9b0fecc4102e6b9b53798a2fdf87cc16c3461435 /drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | |
parent | 77a3c96b1bcb5f69367df79f964367dd7f086dcc (diff) |
drm/amdgpu:fix random missing of FLR NOTIFY
Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c index c32d0b0868e8..d31259e5bb45 100644 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | |||
@@ -282,9 +282,17 @@ static int xgpu_ai_mailbox_rcv_irq(struct amdgpu_device *adev, | |||
282 | /* see what event we get */ | 282 | /* see what event we get */ |
283 | r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION); | 283 | r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION); |
284 | 284 | ||
285 | /* only handle FLR_NOTIFY now */ | 285 | /* sometimes the interrupt is delayed to inject to VM, so under such case |
286 | if (!r) | 286 | * the IDH_FLR_NOTIFICATION is overwritten by VF FLR from GIM side, thus |
287 | schedule_work(&adev->virt.flr_work); | 287 | * above recieve message could be failed, we should schedule the flr_work |
288 | * anyway | ||
289 | */ | ||
290 | if (r) { | ||
291 | DRM_ERROR("FLR_NOTIFICATION is missed\n"); | ||
292 | xgpu_ai_mailbox_send_ack(adev); | ||
293 | } | ||
294 | |||
295 | schedule_work(&adev->virt.flr_work); | ||
288 | } | 296 | } |
289 | 297 | ||
290 | return 0; | 298 | return 0; |