Hi  Lothian

First of all, thanks for your review.

No, it is the patch which achieve the same function for the issue. But it is 
the root cause of fence timeout.
The patch 
b9141cd3<https://cgit.freedesktop.org/~agd5f/linux/commit/?h=drm-next-4.16-wip&id=b9141cd3930e390f156739829ca9589fda7926e4>
 is the word-around for the issue. And I think the varible “shutdown” 
assignment is better to be located after amdgpu_fini() to ensure no irq miss.

Best Regards
Yintian Tao


From: Mike Lothian [mailto:[email protected]]
Sent: Wednesday, December 13, 2017 7:23 PM
To: Tao, Yintian <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH] drm/amdgpu: Fix no irq process when evict vram

Is this a follow on to 
https://cgit.freedesktop.org/~agd5f/linux/commit/?h=drm-next-4.16-wip&id=b9141cd3930e390f156739829ca9589fda7926e4

On Wed, 13 Dec 2017 at 07:11 Yintian Tao <[email protected]<mailto:[email protected]>> 
wrote:
When unload amdgpu driver we use sdma to evict vram but there is no
irq process after sdma completed work which raises that waiting for the
fence costs 2s which will trigger VFLR under SRIOV and at last make
unload driver failed.The reason is that the shutdown varible in adev
is set to true before evict vram, it cause ISR directly return without
processing.Therefore, we need set the varible after evict vram.

Change-Id: I7bf75481aa0744b99c41672b49670adc70b478bd
Signed-off-by: Yintian Tao <[email protected]<mailto:[email protected]>>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index a269bbc..80934ee 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2458,7 +2458,6 @@ void amdgpu_device_fini(struct amdgpu_device *adev)
        int r;

        DRM_INFO("amdgpu: finishing device.\n");
-       adev->shutdown = true;
        if (adev->mode_info.mode_config_initialized)
                drm_crtc_force_disable_all(adev->ddev);

@@ -2466,6 +2465,7 @@ void amdgpu_device_fini(struct amdgpu_device *adev)
        amdgpu_fence_driver_fini(adev);
        amdgpu_fbdev_fini(adev);
        r = amdgpu_fini(adev);
+       adev->shutdown = true;
        if (adev->firmware.gpu_info_fw) {
                release_firmware(adev->firmware.gpu_info_fw);
                adev->firmware.gpu_info_fw = NULL;
--
2.7.4

_______________________________________________
amd-gfx mailing list
[email protected]<mailto:[email protected]>
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to