drm/amdgpu: cleanup visible vram size handling
authorChristian König <christian.koenig@amd.com>
Fri, 4 Feb 2022 15:17:47 +0000 (16:17 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 3 Jan 2023 21:50:14 +0000 (16:50 -0500)
Centralize the limit handling and validation in one place instead
of spreading that around in different hw generations.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Luben Tuikov <luben.tuikov@amd.com>
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c

index 02a4c93..7eb3447 100644 (file)
@@ -201,6 +201,7 @@ uint64_t amdgpu_gmc_agp_addr(struct ttm_buffer_object *bo)
 void amdgpu_gmc_vram_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc,
                              u64 base)
 {
+       uint64_t vis_limit = (uint64_t)amdgpu_vis_vram_limit << 20;
        uint64_t limit = (uint64_t)amdgpu_vram_limit << 20;
 
        mc->vram_start = base;
@@ -208,6 +209,12 @@ void amdgpu_gmc_vram_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc,
        if (limit && limit < mc->real_vram_size)
                mc->real_vram_size = limit;
 
+       if (vis_limit && vis_limit < mc->visible_vram_size)
+               mc->visible_vram_size = vis_limit;
+
+       if (mc->real_vram_size < mc->visible_vram_size)
+               mc->visible_vram_size = mc->real_vram_size;
+
        if (mc->xgmi.num_physical_nodes == 0) {
                mc->fb_start = mc->vram_start;
                mc->fb_end = mc->vram_end;
index 3c16dcc..ce34b73 100644 (file)
@@ -1718,7 +1718,6 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 {
        uint64_t gtt_size;
        int r;
-       u64 vis_vram_limit;
 
        mutex_init(&adev->mman.gtt_window_lock);
 
@@ -1741,12 +1740,6 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
                return r;
        }
 
-       /* Reduce size of CPU-visible VRAM if requested */
-       vis_vram_limit = (u64)amdgpu_vis_vram_limit * 1024 * 1024;
-       if (amdgpu_vis_vram_limit > 0 &&
-           vis_vram_limit <= adev->gmc.visible_vram_size)
-               adev->gmc.visible_vram_size = vis_vram_limit;
-
        /* Change the size here instead of the init above so only lpfn is affected */
        amdgpu_ttm_set_buffer_funcs_status(adev, false);
 #ifdef CONFIG_64BIT
index 8084888..7db1f1a 100644 (file)
@@ -847,10 +847,7 @@ static int gmc_v10_0_mc_init(struct amdgpu_device *adev)
        }
 #endif
 
-       /* In case the PCI BAR is larger than the actual amount of vram */
        adev->gmc.visible_vram_size = adev->gmc.aper_size;
-       if (adev->gmc.visible_vram_size > adev->gmc.real_vram_size)
-               adev->gmc.visible_vram_size = adev->gmc.real_vram_size;
 
        /* set the gart size */
        if (amdgpu_gart_size == -1) {
index b309f3a..0b95afe 100644 (file)
@@ -389,10 +389,7 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)
        }
 #endif
 
-       /* In case the PCI BAR is larger than the actual amount of vram */
        adev->gmc.visible_vram_size = adev->gmc.aper_size;
-       if (adev->gmc.visible_vram_size > adev->gmc.real_vram_size)
-               adev->gmc.visible_vram_size = adev->gmc.real_vram_size;
 
        /* set the gart size */
        if (amdgpu_gart_size == -1) {
index 24a256c..8256795 100644 (file)
@@ -587,10 +587,7 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)
        }
 #endif
 
-       /* In case the PCI BAR is larger than the actual amount of vram */
        adev->gmc.visible_vram_size = adev->gmc.aper_size;
-       if (adev->gmc.visible_vram_size > adev->gmc.real_vram_size)
-               adev->gmc.visible_vram_size = adev->gmc.real_vram_size;
 
        /* set the gart size */
        if (amdgpu_gart_size == -1) {
index 8f7fa46..d65c6ce 100644 (file)
@@ -1552,10 +1552,7 @@ static int gmc_v9_0_mc_init(struct amdgpu_device *adev)
        }
 
 #endif
-       /* In case the PCI BAR is larger than the actual amount of vram */
        adev->gmc.visible_vram_size = adev->gmc.aper_size;
-       if (adev->gmc.visible_vram_size > adev->gmc.real_vram_size)
-               adev->gmc.visible_vram_size = adev->gmc.real_vram_size;
 
        /* set the gart size */
        if (amdgpu_gart_size == -1) {