summaryrefslogtreecommitdiff
path: root/arch/blackfin/mach-bf561/hotplug.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/mach-bf561/hotplug.c')
-rw-r--r--arch/blackfin/mach-bf561/hotplug.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/blackfin/mach-bf561/hotplug.c b/arch/blackfin/mach-bf561/hotplug.c
index 42fc085629c7..0123117b8ff2 100644
--- a/arch/blackfin/mach-bf561/hotplug.c
+++ b/arch/blackfin/mach-bf561/hotplug.c
@@ -7,6 +7,7 @@
#include <linux/smp.h>
#include <asm/blackfin.h>
+#include <asm/cacheflush.h>
#include <mach/pll.h>
int hotplug_coreb;
@@ -14,8 +15,16 @@ 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);