Commit a35ebc8c authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: only bind VM shadows after validation v2



No need to do this on every CS.

v2: remove all other bind, reorder code

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Acked-by: default avatarChunming Zhou <david1.zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b6369225
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -165,6 +165,14 @@ static int amdgpu_vm_validate_level(struct amdgpu_vm_pt *parent,
	unsigned i;
	int r;

	if (parent->bo->shadow) {
		struct amdgpu_bo *shadow = parent->bo->shadow;

		r = amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
		if (r)
			return r;
	}

	if (use_cpu_for_update) {
		r = amdgpu_bo_kmap(parent->bo, NULL);
		if (r)
@@ -1038,11 +1046,6 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,

		params.func = amdgpu_vm_cpu_set_ptes;
	} else {
		if (shadow) {
			r = amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
			if (r)
				return r;
		}
		ring = container_of(vm->entity.sched, struct amdgpu_ring,
				    sched);

@@ -1078,15 +1081,6 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
		if (bo == NULL)
			continue;

		if (bo->shadow) {
			struct amdgpu_bo *pt_shadow = bo->shadow;

			r = amdgpu_ttm_bind(&pt_shadow->tbo,
					    &pt_shadow->tbo.mem);
			if (r)
				return r;
		}

		pt = amdgpu_bo_gpu_offset(bo);
		pt = amdgpu_gart_get_vm_pde(adev, pt);
		if (parent->entries[pt_idx].addr == pt ||