diff options
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/mach-bf561/hotplug.c | 9 |
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 @@ | |||
7 | 7 | ||
8 | #include <linux/smp.h> | 8 | #include <linux/smp.h> |
9 | #include <asm/blackfin.h> | 9 | #include <asm/blackfin.h> |
10 | #include <asm/cacheflush.h> | ||
10 | #include <mach/pll.h> | 11 | #include <mach/pll.h> |
11 | 12 | ||
12 | int hotplug_coreb; | 13 | int hotplug_coreb; |
@@ -14,8 +15,16 @@ int hotplug_coreb; | |||
14 | void platform_cpu_die(void) | 15 | void platform_cpu_die(void) |
15 | { | 16 | { |
16 | unsigned long iwr; | 17 | unsigned long iwr; |
18 | |||
17 | hotplug_coreb = 1; | 19 | hotplug_coreb = 1; |
18 | 20 | ||
21 | /* | ||
22 | * When CoreB wakes up, the code in _coreb_trampoline_start cannot | ||
23 | * turn off the data cache. This causes the CoreB failed to boot. | ||
24 | * As a workaround, we invalidate all the data cache before sleep. | ||
25 | */ | ||
26 | blackfin_invalidate_entire_dcache(); | ||
27 | |||
19 | /* disable core timer */ | 28 | /* disable core timer */ |
20 | bfin_write_TCNTL(0); | 29 | bfin_write_TCNTL(0); |
21 | 30 | ||