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