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