drm/amdgpu:read VRAMLOST from gim
authorMonk Liu <Monk.Liu@amd.com>
Mon, 30 Oct 2017 12:11:54 +0000 (20:11 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 4 Dec 2017 21:41:45 +0000 (16:41 -0500)
Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

index 05087eda0b712198faf84fc4e6e03f5e2ebed7b8..57267ac265f004bf04eb094e7c1e1bd40720bffc 100644 (file)
@@ -3037,11 +3037,10 @@ error:
        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;
index 733c64cbd1c84160bfc0a0652f1ad1e0a7f89a09..663bf35cdce9e86253f8b08ccdac7f36cae60bcd 100644 (file)
@@ -334,6 +334,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) {
index e3f78f5edc0032e0e969f93e2f1ad1691606cd1a..f77d116c7a1cf4a1c98f8c94c362f5abf07f30fc 100644 (file)
@@ -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)