[PATCH] drm/amdgpu:read VRAMLOST from gim

Alex Deucher alexdeucher at gmail.com
Wed Nov 1 15:10:01 UTC 2017


On Tue, Oct 31, 2017 at 11:45 PM, Monk Liu <Monk.Liu at amd.com> wrote:
> Change-Id: I6a268903465004d6e8f65f135734094772b9f614
> Signed-off-by: Monk Liu <Monk.Liu at amd.com>

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 ++++-----
>  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c   | 1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h   | 3 +++
>  3 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 068b56a..eccb3fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2953,11 +2953,10 @@ static int amdgpu_reset_sriov(struct amdgpu_device *adev, uint64_t *reset_flags,
>         amdgpu_virt_release_full_gpu(adev, true);
>
>         if (reset_flags) {
> -               /* will get vram_lost from GIM in future, now all
> -                * reset request considered VRAM LOST
> -                */
> -               (*reset_flags) |= ~AMDGPU_RESET_INFO_VRAM_LOST;
> -               atomic_inc(&adev->vram_lost_counter);
> +               if (adev->virt.gim_feature & AMDGIM_FEATURE_GIM_FLR_VRAMLOST) {
> +                       (*reset_flags) |= AMDGPU_RESET_INFO_VRAM_LOST;
> +                       atomic_inc(&adev->vram_lost_counter);
> +               }
>
>                 /* VF FLR or hotlink reset is always full-reset */
>                 (*reset_flags) |= AMDGPU_RESET_INFO_FULLRESET;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> index f791518..9cd030a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> @@ -332,6 +332,7 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev)
>                 pf2vf_ver = adev->virt.fw_reserve.p_pf2vf->version;
>                 AMDGPU_FW_VRAM_PF2VF_READ(adev, header.size, &pf2vf_size);
>                 AMDGPU_FW_VRAM_PF2VF_READ(adev, checksum, &checksum);
> +               AMDGPU_FW_VRAM_PF2VF_READ(adev, feature_flags, &adev->virt.gim_feature);
>
>                 /* pf2vf message must be in 4K */
>                 if (pf2vf_size > 0 && pf2vf_size < 4096) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
> index e3f78f5..f77d116 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
> @@ -81,6 +81,8 @@ enum AMDGIM_FEATURE_FLAG {
>         AMDGIM_FEATURE_ERROR_LOG_COLLECT = 0x1,
>         /* GIM supports feature of loading uCodes */
>         AMDGIM_FEATURE_GIM_LOAD_UCODES   = 0x2,
> +       /* VRAM LOST by GIM */
> +       AMDGIM_FEATURE_GIM_FLR_VRAMLOST = 0x4,
>  };
>
>  struct amdgim_pf2vf_info_header {
> @@ -246,6 +248,7 @@ struct amdgpu_virt {
>         const struct amdgpu_virt_ops    *ops;
>         struct amdgpu_vf_error_buffer   vf_errors;
>         struct amdgpu_virt_fw_reserve   fw_reserve;
> +       uint32_t gim_feature;
>  };
>
>  #define AMDGPU_CSA_SIZE    (8 * 1024)
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list