Re: [PATCH] drm/amdgpu: Fix no irq process when evict vram
Yintian, Any plans to commit this? Alex On Wed, Dec 13, 2017 at 11:36 AM, Deucher, Alexander wrote: > This seems like a good thing to do in general even with Monk's fix. > > > Acked-by: Alex Deucher > > > From: amd-gfx on behalf of Yintian > Tao > Sent: Tuesday, December 12, 2017 10:37:43 PM > To: amd-gfx@lists.freedesktop.org > Cc: Tao, Yintian > Subject: [PATCH] drm/amdgpu: Fix no irq process when evict vram > > 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 > --- > 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 > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > > ___ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amdgpu: Fix no irq process when evict vram
This seems like a good thing to do in general even with Monk's fix. Acked-by: Alex Deucher From: amd-gfx on behalf of Yintian Tao Sent: Tuesday, December 12, 2017 10:37:43 PM To: amd-gfx@lists.freedesktop.org Cc: Tao, Yintian Subject: [PATCH] drm/amdgpu: Fix no irq process when evict vram 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 --- 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 amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amdgpu: Fix no irq process when evict vram
I'm hoping this fixes the slow shutdown time of my laptop, which seems to switch the card back on right before switching off It's been an issue since the introduction of KIQ (around the same time) On Wed, 13 Dec 2017 at 12:07 Tao, Yintian wrote: > 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:m...@fireburn.co.uk] > *Sent:* Wednesday, December 13, 2017 7:23 PM > *To:* Tao, Yintian > *Cc:* amd-gfx@lists.freedesktop.org > *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 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 > --- > 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 > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
RE: [PATCH] drm/amdgpu: Fix no irq process when evict vram
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:m...@fireburn.co.uk] Sent: Wednesday, December 13, 2017 7:23 PM To: Tao, Yintian Cc: amd-gfx@lists.freedesktop.org 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 mailto:yt...@amd.com>> 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 mailto:yt...@amd.com>> --- 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 amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org> https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
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 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 > --- > 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 > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH] drm/amdgpu: Fix no irq process when evict vram
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 --- 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 amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx