Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "drm/amdgpu: use the kernel zone memory size as the max remote memory in amdgpu"

This reverts commit a693e050edfe794fea81d7cfe72429a406aa380b.

This breaks on systems with huge amounts of system memory as we do not have
enough vram to store the page tables. Additionally, this is less of an issue
with the recent gtt manager changes.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+8 -27
-2
drivers/gpu/drm/amd/amdgpu/amdgpu.h
··· 1679 1679 void amdgpu_vram_location(struct amdgpu_device *adev, struct amdgpu_mc *mc, u64 base); 1680 1680 void amdgpu_gtt_location(struct amdgpu_device *adev, struct amdgpu_mc *mc); 1681 1681 void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size); 1682 - u64 amdgpu_ttm_get_gtt_mem_size(struct amdgpu_device *adev); 1683 - int amdgpu_ttm_global_init(struct amdgpu_device *adev); 1684 1682 int amdgpu_ttm_init(struct amdgpu_device *adev); 1685 1683 void amdgpu_ttm_fini(struct amdgpu_device *adev); 1686 1684 void amdgpu_program_register_sequence(struct amdgpu_device *adev,
+5 -7
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
··· 34 34 #include <ttm/ttm_placement.h> 35 35 #include <ttm/ttm_module.h> 36 36 #include <ttm/ttm_page_alloc.h> 37 - #include <ttm/ttm_memory.h> 38 37 #include <drm/drmP.h> 39 38 #include <drm/amdgpu_drm.h> 40 39 #include <linux/seq_file.h> ··· 64 65 ttm_mem_global_release(ref->object); 65 66 } 66 67 67 - int amdgpu_ttm_global_init(struct amdgpu_device *adev) 68 + static int amdgpu_ttm_global_init(struct amdgpu_device *adev) 68 69 { 69 70 struct drm_global_reference *global_ref; 70 71 struct amdgpu_ring *ring; ··· 1150 1151 unsigned i, j; 1151 1152 int r; 1152 1153 1154 + r = amdgpu_ttm_global_init(adev); 1155 + if (r) { 1156 + return r; 1157 + } 1153 1158 /* No others user of address space so set it to 0 */ 1154 1159 r = ttm_bo_device_init(&adev->mman.bdev, 1155 1160 adev->mman.bo_global_ref.ref.object, ··· 1652 1649 #endif 1653 1650 1654 1651 #endif 1655 - } 1656 - 1657 - u64 amdgpu_ttm_get_gtt_mem_size(struct amdgpu_device *adev) 1658 - { 1659 - return ttm_get_kernel_zone_memory_size(adev->mman.mem_global_ref.object); 1660 1652 }
+1 -6
drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
··· 335 335 * size equal to the 1024 or vram, whichever is larger. 336 336 */ 337 337 if (amdgpu_gart_size == -1) 338 - adev->mc.gtt_size = amdgpu_ttm_get_gtt_mem_size(adev); 338 + adev->mc.gtt_size = max((1024ULL << 20), adev->mc.mc_vram_size); 339 339 else 340 340 adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20; 341 341 ··· 792 792 r = gmc_v6_0_init_microcode(adev); 793 793 if (r) { 794 794 dev_err(adev->dev, "Failed to load mc firmware!\n"); 795 - return r; 796 - } 797 - 798 - r = amdgpu_ttm_global_init(adev); 799 - if (r) { 800 795 return r; 801 796 } 802 797
+1 -6
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
··· 385 385 * size equal to the 1024 or vram, whichever is larger. 386 386 */ 387 387 if (amdgpu_gart_size == -1) 388 - adev->mc.gtt_size = amdgpu_ttm_get_gtt_mem_size(adev); 388 + adev->mc.gtt_size = max((1024ULL << 20), adev->mc.mc_vram_size); 389 389 else 390 390 adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20; 391 391 ··· 942 942 r = gmc_v7_0_init_microcode(adev); 943 943 if (r) { 944 944 DRM_ERROR("Failed to load mc firmware!\n"); 945 - return r; 946 - } 947 - 948 - r = amdgpu_ttm_global_init(adev); 949 - if (r) { 950 945 return r; 951 946 } 952 947
+1 -6
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
··· 472 472 * size equal to the 1024 or vram, whichever is larger. 473 473 */ 474 474 if (amdgpu_gart_size == -1) 475 - adev->mc.gtt_size = amdgpu_ttm_get_gtt_mem_size(adev); 475 + adev->mc.gtt_size = max((1024ULL << 20), adev->mc.mc_vram_size); 476 476 else 477 477 adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20; 478 478 ··· 949 949 r = gmc_v8_0_init_microcode(adev); 950 950 if (r) { 951 951 DRM_ERROR("Failed to load mc firmware!\n"); 952 - return r; 953 - } 954 - 955 - r = amdgpu_ttm_global_init(adev); 956 - if (r) { 957 952 return r; 958 953 } 959 954