• John Brooks's avatar
    drm/amdgpu: Throttle visible VRAM moves separately · 00f06b24
    John Brooks authored
    The BO move throttling code is designed to allow VRAM to fill quickly if it
    is relatively empty. However, this does not take into account situations
    where the visible VRAM is smaller than total VRAM, and total VRAM may not
    be close to full but the visible VRAM segment is under pressure. In such
    situations, visible VRAM would experience unrestricted swapping and
    performance would drop.
    
    Add a separate counter specifically for moves involving visible VRAM, and
    check it before moving BOs there.
    
    v2: Only perform calculations for separate counter if visible VRAM is
        smaller than total VRAM. (Michel Dänzer)
    v3: [Michel Dänzer]
    * Use BO's location rather than the AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED
      flag to determine whether to account a move for visible VRAM in most
      cases.
    * Use a single
    
    	if (adev->mc.visible_vram_size < adev->mc.real_vram_size) {
    
      block in amdgpu_cs_get_threshold_for_moves.
    
    Fixes: 95844d20 (drm/amdgpu: throttle buffer migrations at CS using a fixed MBps limit (v2))
    Signed-off-by: default avatarJohn Brooks <john@fastquake.com>
    Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
    Signed-off-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    00f06b24
amdgpu_cs.c 37.8 KB