lkml.org 
[lkml]   [2022]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 120/188] drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV
    Date
    From: Jingwen Chen <Jingwen.Chen2@amd.com>

    [ Upstream commit 948e7ce01413b71395723aaf846015062aea3a43 ]

    [Why]
    gmc bo will be pinned during loading amdgpu and reset in SRIOV while
    only unpinned in unload amdgpu

    [How]
    add amdgpu_in_reset and sriov judgement to skip pin bo

    v2: fix wrong judgement

    Signed-off-by: Jingwen Chen <Jingwen.Chen2@amd.com>
    Reviewed-by: Horace Chen <horace.chen@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 4 ++++
    drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 4 ++++
    2 files changed, 8 insertions(+)

    diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
    index e47104a1f5596..3c01be6610144 100644
    --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
    +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
    @@ -1021,10 +1021,14 @@ static int gmc_v10_0_gart_enable(struct amdgpu_device *adev)
    return -EINVAL;
    }

    + if (amdgpu_sriov_vf(adev) && amdgpu_in_reset(adev))
    + goto skip_pin_bo;
    +
    r = amdgpu_gart_table_vram_pin(adev);
    if (r)
    return r;

    +skip_pin_bo:
    r = adev->gfxhub.funcs->gart_enable(adev);
    if (r)
    return r;
    diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
    index 5551359d5dfdc..b5d93247237b1 100644
    --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
    +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
    @@ -1708,10 +1708,14 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)
    return -EINVAL;
    }

    + if (amdgpu_sriov_vf(adev) && amdgpu_in_reset(adev))
    + goto skip_pin_bo;
    +
    r = amdgpu_gart_table_vram_pin(adev);
    if (r)
    return r;

    +skip_pin_bo:
    r = adev->gfxhub.funcs->gart_enable(adev);
    if (r)
    return r;
    --
    2.34.1
    \
     
     \ /
      Last update: 2022-01-18 04:10    [W:4.107 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site