drm/amdgpu/gmc9: set vram_width properly for SR-IOV
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 17 May 2019 14:31:43 +0000 (09:31 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 20 May 2019 17:49:10 +0000 (12:49 -0500)
For SR-IOV, vram_width can't be read from ATOM as
RAVEN, and DF related registers is not readable, so hardcord
is the only way to set the correct vram_width.

Reviewed-by: Yintian Tao <yttao@amd.com>
Signed-off-by: Trigger Huang <Trigger.Huang@amd.com>
Signed-off-by: Yintian Tao <yttao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c

index 4e6fcaeb13037cc8db89b502999d975a0e6168aa..3b7370d914a53ab8a5c93aa3b0d82403d3730092 100644 (file)
@@ -813,8 +813,16 @@ static int gmc_v9_0_mc_init(struct amdgpu_device *adev)
        int chansize, numchan;
        int r;
 
-       if (amdgpu_emu_mode != 1)
+       if (amdgpu_sriov_vf(adev)) {
+               /* For Vega10 SR-IOV, vram_width can't be read from ATOM as RAVEN,
+                * and DF related registers is not readable, seems hardcord is the
+                * only way to set the correct vram_width
+                */
+               adev->gmc.vram_width = 2048;
+       } else if (amdgpu_emu_mode != 1) {
                adev->gmc.vram_width = amdgpu_atomfirmware_get_vram_width(adev);
+       }
+
        if (!adev->gmc.vram_width) {
                /* hbm memory channel size */
                if (adev->flags & AMD_IS_APU)