| From foo@baz Fri Mar 16 15:43:17 CET 2018 |
| From: Monk Liu <Monk.Liu@amd.com> |
| Date: Tue, 24 Oct 2017 15:10:11 +0800 |
| Subject: drm/amdgpu:fix random missing of FLR NOTIFY |
| |
| From: Monk Liu <Monk.Liu@amd.com> |
| |
| |
| [ Upstream commit 34a4d2bf06b3ab92024b8e26d6049411369d1f1a ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 14 +++++++++++--- |
| 1 file changed, 11 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c |
| +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c |
| @@ -276,9 +276,17 @@ static int xgpu_ai_mailbox_rcv_irq(struc |
| /* 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; |