Module Name:    src
Committed By:   riastradh
Date:           Sat Jul 26 05:23:11 UTC 2014

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/radeon: radeon_gart.c

Log Message:
Fix little arithmetic mistakes in radeon_gart.c.

Unlikely to fix the failing ring tests on boot, though.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
    src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.3 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.3	Thu Jul 17 17:29:39 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c	Sat Jul 26 05:23:11 2014
@@ -262,9 +262,14 @@ radeon_gart_pre_update(struct radeon_dev
     unsigned gpu_npages)
 {
 
-	if (rdev->gart.rg_table_map != NULL)
+	if (rdev->gart.rg_table_map != NULL) {
+		const unsigned entsize =
+		    rdev->gart.table_size / rdev->gart.num_gpu_pages;
+
 		bus_dmamap_sync(rdev->ddev->dmat, rdev->gart.rg_table_map,
-		    gpu_pgstart*4, gpu_npages*4, BUS_DMASYNC_PREWRITE);
+		    gpu_pgstart*entsize, gpu_npages*entsize,
+		    BUS_DMASYNC_PREWRITE);
+	}
 }
 
 static void
@@ -273,9 +278,14 @@ radeon_gart_post_update(struct radeon_de
 {
 
 	membar_sync();		/* XXX overkill */
-	if (rdev->gart.rg_table_map != NULL)
+	if (rdev->gart.rg_table_map != NULL) {
+		const unsigned entsize =
+		    rdev->gart.table_size / rdev->gart.num_gpu_pages;
+
 		bus_dmamap_sync(rdev->ddev->dmat, rdev->gart.rg_table_map,
-		    gpu_pgstart*4, gpu_npages*4, BUS_DMASYNC_POSTWRITE);
+		    gpu_pgstart*entsize, gpu_npages*entsize,
+		    BUS_DMASYNC_POSTWRITE);
+	}
 	radeon_gart_tlb_flush(rdev);
 }
 #endif
@@ -289,7 +299,7 @@ radeon_gart_unbind(struct radeon_device 
     unsigned npages)
 {
 	const unsigned gpu_per_cpu = (PAGE_SIZE / RADEON_GPU_PAGE_SIZE);
-	const unsigned gpu_npages = (npages / gpu_per_cpu);
+	const unsigned gpu_npages = (npages * gpu_per_cpu);
 	const unsigned gpu_pgstart = (gpu_start / RADEON_GPU_PAGE_SIZE);
 	const unsigned pgstart = (gpu_pgstart / gpu_per_cpu);
 	unsigned pgno, gpu_pgno;
@@ -367,7 +377,7 @@ radeon_gart_bind(struct radeon_device *r
     unsigned npages, struct page **pages, bus_dmamap_t dmamap)
 {
 	const unsigned gpu_per_cpu = (PAGE_SIZE / RADEON_GPU_PAGE_SIZE);
-	const unsigned gpu_npages = (npages / gpu_per_cpu);
+	const unsigned gpu_npages = (npages * gpu_per_cpu);
 	const unsigned gpu_pgstart = (gpu_start / RADEON_GPU_PAGE_SIZE);
 	const unsigned pgstart = (gpu_pgstart / gpu_per_cpu);
 	unsigned pgno, gpu_pgno;

Reply via email to