Title: [8509] trunk/arch/blackfin/mach-bf561/hotplug.c: Bug [#5933], When the CoreB wakes up, we need disable its cache, so it can get the variable's value
Revision
8509
Author
gyang
Date
2010-03-19 04:01:27 -0400 (Fri, 19 Mar 2010)

Log Message

Bug [#5933], When the CoreB wakes up, we need disable its cache, so it can get the variable's value
which maybe newly assigned by CoreA.
But the dcache turn off code in _coreb_trampoline_start seems cannot disable the dcache.
So this workaround is added.

Modified Paths

Diff

Modified: trunk/arch/blackfin/mach-bf561/hotplug.c (8508 => 8509)


--- trunk/arch/blackfin/mach-bf561/hotplug.c	2010-03-19 04:09:15 UTC (rev 8508)
+++ trunk/arch/blackfin/mach-bf561/hotplug.c	2010-03-19 08:01:27 UTC (rev 8509)
@@ -7,14 +7,23 @@
 
 #include <linux/smp.h>
 #include <asm/blackfin.h>
+#include <asm/cacheflush.h>
 
 int hotplug_coreb;
 
 void platform_cpu_die(void)
 {
 	unsigned long iwr;
+
 	hotplug_coreb = 1;
 
+	/*
+	 * When CoreB wakes up, the code in _coreb_trampoline_start cannot
+	 * turn off the data cache. This causes the CoreB failed to boot.
+	 * As a workaround, we invalidate all the data cache before sleep.
+	 */
+	blackfin_invalidate_entire_dcache();
+
 	/* disable core timer */
 	bfin_write_TCNTL(0);
 
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to