drm/amdgpu/sriov: workaround on rev_id for Navi12 under sriov
authorTiecheng Zhou <Tiecheng.Zhou@amd.com>
Wed, 8 Jan 2020 05:44:29 +0000 (13:44 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 14 Jan 2020 15:18:09 +0000 (10:18 -0500)
guest vm gets 0xffffffff when reading RCC_DEV0_EPF0_STRAP0,
as a consequence, the rev_id and external_rev_id are wrong.

workaround it by hardcoding the rev_id to 0, which is the default value.

v2. add comment in the code

Signed-off-by: Tiecheng Zhou <Tiecheng.Zhou@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nv.c

index 42ede3aa6dbd9b433386fd60dd8b301da7130894..2e0f8933410e656034dffb96bac8b827d3be21e4 100644 (file)
@@ -726,6 +726,12 @@ static int nv_common_early_init(void *handle)
                        AMD_PG_SUPPORT_VCN_DPG |
                        AMD_PG_SUPPORT_JPEG |
                        AMD_PG_SUPPORT_ATHUB;
+               /* guest vm gets 0xffffffff when reading RCC_DEV0_EPF0_STRAP0,
+                * as a consequence, the rev_id and external_rev_id are wrong.
+                * workaround it by hardcoding rev_id to 0 (default value).
+                */
+               if (amdgpu_sriov_vf(adev))
+                       adev->rev_id = 0;
                adev->external_rev_id = adev->rev_id + 0xa;
                break;
        default: