From: Monk Liu <[email protected]>

[ Upstream commit 34a4d2bf06b3ab92024b8e26d6049411369d1f1a ]

Signed-off-by: Monk Liu <[email protected]>
Acked-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 14 +++++++++++---
 1 file 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 2812d88a8bdd..9b7b01333fc0 100644
--- 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(struct amdgpu_device 
*adev,
                /* 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;
-- 
2.14.1

Reply via email to