[PATCH] drm/amdgpu: fix gart.bo pin_count leak
Christian König
ckoenig.leichtzumerken at gmail.com
Thu Sep 23 08:49:50 UTC 2021
Am 23.09.21 um 10:16 schrieb Leslie Shi:
> gmc_v{9,10}_0_gart_disable() isn't called matched with
> correspoding gart_enbale function in SRIOV case. This will
> lead to gart.bo pin_count leak on driver unload.
>
> Cc: Hawking Zhang <Hawking.Zhang at amd.com>
> Signed-off-by: Leslie Shi <Yuliang.Shi at amd.com>
> Signed-off-by: Guchun Chen <guchun.chen at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 3 ++-
> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index 41c3a0d70b7c..e47104a1f559 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -1098,6 +1098,8 @@ static int gmc_v10_0_hw_fini(void *handle)
> {
> struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>
> + gmc_v10_0_gart_disable(adev);
> +
> if (amdgpu_sriov_vf(adev)) {
> /* full access mode, so don't touch any GMC register */
> DRM_DEBUG("For SRIOV client, shouldn't do anything.\n");
> @@ -1106,7 +1108,6 @@ static int gmc_v10_0_hw_fini(void *handle)
>
> amdgpu_irq_put(adev, &adev->gmc.ecc_irq, 0);
> amdgpu_irq_put(adev, &adev->gmc.vm_fault, 0);
> - gmc_v10_0_gart_disable(adev);
>
> return 0;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index d90c16a6b2b8..5551359d5dfd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1794,6 +1794,8 @@ static int gmc_v9_0_hw_fini(void *handle)
> {
> struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>
> + gmc_v9_0_gart_disable(adev);
> +
> if (amdgpu_sriov_vf(adev)) {
> /* full access mode, so don't touch any GMC register */
> DRM_DEBUG("For SRIOV client, shouldn't do anything.\n");
> @@ -1802,7 +1804,6 @@ static int gmc_v9_0_hw_fini(void *handle)
>
> amdgpu_irq_put(adev, &adev->gmc.ecc_irq, 0);
> amdgpu_irq_put(adev, &adev->gmc.vm_fault, 0);
> - gmc_v9_0_gart_disable(adev);
>
> return 0;
> }
More information about the amd-gfx
mailing list