Title: [9827] trunk/arch/blackfin/mach-common/smp.c: blackfin: SMP: Make sure all write buffers in the data side of the core
Revision
9827
Author
sonicz
Date
2011-04-12 22:39:59 -0400 (Tue, 12 Apr 2011)

Log Message

blackfin: SMP: Make sure all write buffers in the data side of the core
are flushed before trying to invalidate the icache.

Add comments about why call blackfin arch icache flush API directly.

Modified Paths

Diff

Modified: trunk/arch/blackfin/mach-common/smp.c (9826 => 9827)


--- trunk/arch/blackfin/mach-common/smp.c	2011-04-12 23:00:56 UTC (rev 9826)
+++ trunk/arch/blackfin/mach-common/smp.c	2011-04-13 02:39:59 UTC (rev 9827)
@@ -112,6 +112,19 @@
 	blackfin_dcache_invalidate_range((unsigned long)fdata,
 					 (unsigned long)fdata + sizeof(*fdata));
 
+	/* Make sure all write buffers in the data side of the core
+	 * are flushed before trying to invalidate the icache.  This
+	 * needs to be after the data flush and before the icache
+	 * flush so that the SSYNC does the right thing in preventing
+	 * the instruction prefetcher from hitting things in cached
+	 * memory at the wrong time -- it runs much further ahead than
+	 * the pipeline.
+	 */
+	SSYNC();
+
+	/* ipi_flaush_icache is invoked by generic flush_icache_range,
+	 * so call blackfin arch icache flush directly here.
+	 */
 	blackfin_icache_flush_range(fdata->start, fdata->end);
 }
 
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to