From: Hawking Zhang <[email protected]>

On A + A platform, sysvm aperture is used for both
vram and gart access. In sysvm aperture, vram starts
at 0, and gart starts right after vram.

Signed-off-by: Hawking Zhang <[email protected]>
Reviewed-by: Le Ma <[email protected]>
Reviewed-by: Feifei Xu <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
index da4a0cf4aad0c..a68a398afebec 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
@@ -691,12 +691,15 @@ static void gmc_v12_0_vram_gtt_location(struct 
amdgpu_device *adev,
 
        base = adev->mmhub.funcs->get_fb_location(adev);
 
-       amdgpu_gmc_set_agp_default(adev, mc);
-       amdgpu_gmc_vram_location(adev, &adev->gmc, base);
-       amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_LOW);
-       if (!amdgpu_sriov_vf(adev) && (amdgpu_agp == 1))
-               amdgpu_gmc_agp_location(adev, mc);
-
+       if (amdgpu_gmc_is_pdb0_enabled(adev)) {
+               amdgpu_gmc_sysvm_location(adev, mc);
+       } else {
+               amdgpu_gmc_set_agp_default(adev, mc);
+               amdgpu_gmc_vram_location(adev, &adev->gmc, base);
+               amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_LOW);
+               if (!amdgpu_sriov_vf(adev) && (amdgpu_agp == 1))
+                       amdgpu_gmc_agp_location(adev, mc);
+       }
        /* base offset of vram pages */
        if (amdgpu_sriov_vf(adev))
                adev->vm_manager.vram_base_offset = 0;
-- 
2.53.0

Reply via email to