Am 31.07.2017 um 17:24 schrieb Felix Kuehling:
Hi Christian,

If I'm reading this correctly, now you're only binding page directories,
but not the leaf page tables. Is that intentional?

You are not reading this correctly I think.

Leave page tables don have parent->entries==NULL and we check for that condition after the bind as far as I can see.

Regards,
Christian.


Regards,
   Felix


On 17-07-29 07:32 AM, Christian König wrote:
From: Christian König <[email protected]>

No need to do this on every CS.

v2: remove all other bind, reorder code

Signed-off-by: Christian König <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 22 ++++++++--------------
  1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index a375135..0308bb4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -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)
@@ -1030,11 +1038,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);
@@ -1070,15 +1073,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 ||


_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to