diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-02-25 17:24:25 +0100 |
---|---|---|
committer | Dinh Nguyen <dinguyen@opensource.altera.com> | 2015-03-04 20:03:17 +0100 |
commit | cee9b8d6b8b7d82bfb34e4700d839aec76519f02 (patch) | |
tree | 59231788f06880ad85b88631456bc822f82ddd34 | |
parent | ARM: socfpga: fix uart DMA binding error (diff) | |
download | linux-cee9b8d6b8b7d82bfb34e4700d839aec76519f02.tar.xz linux-cee9b8d6b8b7d82bfb34e4700d839aec76519f02.zip |
ARM: socfpga: make sure socfpga_cpu1start_addr is properly flushed
Make sure socfpga_cpu1start_addr is properly flushed from it's cache line so
that secondary cpu's can see it.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
-rw-r--r-- | arch/arm/mach-socfpga/socfpga.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c index 383d61e138af..f5e597c207b9 100644 --- a/arch/arm/mach-socfpga/socfpga.c +++ b/arch/arm/mach-socfpga/socfpga.c @@ -23,6 +23,7 @@ #include <asm/hardware/cache-l2x0.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> +#include <asm/cacheflush.h> #include "core.h" @@ -73,6 +74,10 @@ void __init socfpga_sysmgr_init(void) (u32 *) &socfpga_cpu1start_addr)) pr_err("SMP: Need cpu1-start-addr in device tree.\n"); + /* Ensure that socfpga_cpu1start_addr is visible to other CPUs */ + smp_wmb(); + sync_cache_w(&socfpga_cpu1start_addr); + sys_manager_base_addr = of_iomap(np, 0); np = of_find_compatible_node(NULL, NULL, "altr,rst-mgr"); |