Title: [7963] trunk/arch/blackfin/kernel/cplb-nompu/cplbinit.c: blackfin: nompu: unify and cleanup <1MB uncached data handling
Revision
7963
Author
vapier
Date
2009-12-09 21:10:17 -0500 (Wed, 09 Dec 2009)

Log Message

blackfin: nompu: unify and cleanup <1MB uncached data handling

Modified Paths


Diff

Modified: trunk/arch/blackfin/kernel/cplb-nompu/cplbinit.c (7962 => 7963)


--- trunk/arch/blackfin/kernel/cplb-nompu/cplbinit.c	2009-12-10 01:29:56 UTC (rev 7962)
+++ trunk/arch/blackfin/kernel/cplb-nompu/cplbinit.c	2009-12-10 02:10:17 UTC (rev 7963)
@@ -89,25 +89,25 @@
 
 void __init generate_cplb_tables_all(void)
 {
+	unsigned long uncached_end;
 	int i_d, i_i;
 
 	i_d = 0;
 	/* Normal RAM, including MTD FS.  */
 #ifdef CONFIG_MTD_UCLINUX
-	if ((DMA_UNCACHED_REGION >= 1 * 1024 * 1024) || (!DMA_UNCACHED_REGION) ||
-		(_ramend - (memory_mtd_start + mtd_size)) >= 1 * 1024 * 1024)
-		dcplb_bounds[i_d].eaddr = memory_mtd_start + mtd_size;
-	/* if DMA uncache size is less than 1MB, let the whole 1MB from normal_memory_end & 0xfffff uncached */
-	else
-		dcplb_bounds[i_d].eaddr = (memory_mtd_start + mtd_size) & ~(1 * 1024 * 1024);
+	uncached_end = memory_mtd_start + mtd_size;
 #else
-	if ((DMA_UNCACHED_REGION >= 1 * 1024 * 1024) || (!DMA_UNCACHED_REGION) ||
-		((_ramend - memory_end) >= 1 * 1024 * 1024))
-		dcplb_bounds[i_d].eaddr = memory_end;
-	/* if DMA uncache size is less than 1MB, let the whole 1MB from normal_memory_end & 0xfffff uncached */
+	uncached_end = memory_end;
+#endif
+	/*
+	 * if DMA uncached is less than 1MB, mark the 1MB chunk as uncached
+	 * so that we don't have to use 4kB pages and cause CPLB thrashing
+	 */
+	if ((DMA_UNCACHED_REGION >= 1 * 1024 * 1024) || !DMA_UNCACHED_REGION ||
+	    ((_ramend - uncached_end) >= 1 * 1024 * 1024))
+		dcplb_bounds[i_d].eaddr = uncached_end;
 	else
-		dcplb_bounds[i_d].eaddr = memory_end & ~(1 * 1024 * 1024);
-#endif
+		dcplb_bounds[i_d].eaddr = uncached_end & ~(1 * 1024 * 1024);
 	dcplb_bounds[i_d++].data = ""
 	/* DMA uncached region.  */
 	if (DMA_UNCACHED_REGION) {
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to