diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 20 | 
1 files changed, 14 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index be6f76a30ac6..3b4c19412625 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -1798,18 +1798,26 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)  	DRM_INFO("amdgpu: %uM of VRAM memory ready\n",  		 (unsigned) (adev->gmc.real_vram_size / (1024 * 1024))); -	/* Compute GTT size, either bsaed on 3/4th the size of RAM size +	/* Compute GTT size, either based on 1/2 the size of RAM size  	 * or whatever the user passed on module init */  	if (amdgpu_gtt_size == -1) {  		struct sysinfo si;  		si_meminfo(&si); -		gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20), -			       adev->gmc.mc_vram_size), -			       ((uint64_t)si.totalram * si.mem_unit * 3/4)); -	} -	else +		/* Certain GL unit tests for large textures can cause problems +		 * with the OOM killer since there is no way to link this memory +		 * to a process.  This was originally mitigated (but not necessarily +		 * eliminated) by limiting the GTT size.  The problem is this limit +		 * is often too low for many modern games so just make the limit 1/2 +		 * of system memory which aligns with TTM. The OOM accounting needs +		 * to be addressed, but we shouldn't prevent common 3D applications +		 * from being usable just to potentially mitigate that corner case. +		 */ +		gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20), +			       (u64)si.totalram * si.mem_unit / 2); +	} else {  		gtt_size = (uint64_t)amdgpu_gtt_size << 20; +	}  	/* Initialize GTT memory pool */  	r = amdgpu_gtt_mgr_init(adev, gtt_size); | 
