drm/radeon: initially clear page tables
authorChristian König <christian.koenig@amd.com>
Tue, 29 Oct 2013 19:14:50 +0000 (20:14 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 1 Nov 2013 19:25:53 +0000 (15:25 -0400)
Clear page tables after allocating them in case
we don't completely fill them later.

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_gart.c

index f6947dd2a992a5a4827d3cdb4d38840f283b0be4..fd109d3cae66a469607f797f06c7613822ab9eb5 100644 (file)
@@ -995,6 +995,10 @@ retry:
                                radeon_asic_vm_set_page(rdev, ib, last_pde,
                                                        last_pt, count, incr,
                                                        R600_PTE_VALID);
+
+                               count *= RADEON_VM_PTE_COUNT;
+                               radeon_asic_vm_set_page(rdev, ib, last_pt, 0,
+                                                       count, 0, 0);
                        }
 
                        count = 1;
@@ -1009,6 +1013,9 @@ retry:
                radeon_asic_vm_set_page(rdev, ib, last_pde, last_pt, count,
                                        incr, R600_PTE_VALID);
 
+               count *= RADEON_VM_PTE_COUNT;
+               radeon_asic_vm_set_page(rdev, ib, last_pt, 0,
+                                       count, 0, 0);
        }
 
        return 0;
@@ -1170,6 +1177,9 @@ int radeon_vm_bo_update_pte(struct radeon_device *rdev,
        /* reserve space for pde addresses */
        ndw += npdes * 2;
 
+       /* reserve space for clearing new page tables */
+       ndw += npdes * 2 * RADEON_VM_PTE_COUNT;
+
        /* update too big for an IB */
        if (ndw > 0xfffff)
                return -ENOMEM;