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