drm/amdgpu: fix AGP location with VRAM at 0x0
authorChristian König <christian.koenig@amd.com>
Thu, 4 Oct 2018 08:27:48 +0000 (10:27 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 9 Oct 2018 22:06:58 +0000 (17:06 -0500)
That also simplifies handling quite a bit.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c

index 9a5b252784a136c3160bac5be759df0a965fa688..999e159453552b41bc046420958a20d0be900b10 100644 (file)
@@ -200,16 +200,13 @@ void amdgpu_gmc_agp_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc)
        }
 
        if (size_bf > size_af) {
-               mc->agp_start = mc->fb_start > mc->gart_start ?
-                       mc->gart_end + 1 : 0;
+               mc->agp_start = (mc->fb_start - size_bf) & sixteen_gb_mask;
                mc->agp_size = size_bf;
        } else {
-               mc->agp_start = (mc->fb_start > mc->gart_start ?
-                       mc->fb_end : mc->gart_end) + 1,
+               mc->agp_start = ALIGN(mc->fb_end + 1, sixteen_gb);
                mc->agp_size = size_af;
        }
 
-       mc->agp_start = ALIGN(mc->agp_start, sixteen_gb);
        mc->agp_end = mc->agp_start + mc->agp_size - 1;
        dev_info(adev->dev, "AGP: %lluM 0x%016llX - 0x%016llX\n",
                        mc->agp_size >> 20, mc->agp_start, mc->agp_end);