|
@@ -31,6 +31,7 @@
|
|
|
#include <drm/drm_syncobj.h>
|
|
|
#include "amdgpu.h"
|
|
|
#include "amdgpu_trace.h"
|
|
|
+#include "amdgpu_gmc.h"
|
|
|
|
|
|
static int amdgpu_cs_user_fence_chunk(struct amdgpu_cs_parser *p,
|
|
|
struct drm_amdgpu_cs_chunk_fence *data,
|
|
@@ -302,7 +303,7 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev,
|
|
|
*max_bytes = us_to_bytes(adev, adev->mm_stats.accum_us);
|
|
|
|
|
|
/* Do the same for visible VRAM if half of it is free */
|
|
|
- if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size) {
|
|
|
+ if (!amdgpu_gmc_vram_full_visible(&adev->gmc)) {
|
|
|
u64 total_vis_vram = adev->gmc.visible_vram_size;
|
|
|
u64 used_vis_vram =
|
|
|
amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]);
|
|
@@ -359,7 +360,7 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
|
|
|
* to move it. Don't move anything if the threshold is zero.
|
|
|
*/
|
|
|
if (p->bytes_moved < p->bytes_moved_threshold) {
|
|
|
- if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
|
|
|
+ if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
|
|
|
(bo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)) {
|
|
|
/* And don't move a CPU_ACCESS_REQUIRED BO to limited
|
|
|
* visible VRAM if we've depleted our allowance to do
|
|
@@ -381,7 +382,7 @@ retry:
|
|
|
r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
|
|
|
|
|
|
p->bytes_moved += ctx.bytes_moved;
|
|
|
- if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
|
|
|
+ if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
|
|
|
amdgpu_bo_in_cpu_visible_vram(bo))
|
|
|
p->bytes_moved_vis += ctx.bytes_moved;
|
|
|
|
|
@@ -434,8 +435,8 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
|
|
|
|
|
|
/* Good we can try to move this BO somewhere else */
|
|
|
update_bytes_moved_vis =
|
|
|
- adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
|
|
|
- amdgpu_bo_in_cpu_visible_vram(bo);
|
|
|
+ !amdgpu_gmc_vram_full_visible(&adev->gmc) &&
|
|
|
+ amdgpu_bo_in_cpu_visible_vram(bo);
|
|
|
amdgpu_ttm_placement_from_domain(bo, other);
|
|
|
r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
|
|
|
p->bytes_moved += ctx.bytes_moved;
|