linux/arch/arm/mach-shmobile
Russell King 02b4e2756e ARM: v7 setup function should invalidate L1 cache
All ARMv5 and older CPUs invalidate their caches in the early assembly
setup function, prior to enabling the MMU.  This is because the L1
cache should not contain any data relevant to the execution of the
kernel at this point; all data should have been flushed out to memory.

This requirement should also be true for ARMv6 and ARMv7 CPUs - indeed,
these typically do not search their caches when caching is disabled (as
it needs to be when the MMU is disabled) so this change should be safe.

ARMv7 allows there to be CPUs which search their caches while caching is
disabled, and it's permitted that the cache is uninitialised at boot;
for these, the architecture reference manual requires that an
implementation specific code sequence is used immediately after reset
to ensure that the cache is placed into a sane state.  Such
functionality is definitely outside the remit of the Linux kernel, and
must be done by the SoC's firmware before _any_ CPU gets to the Linux
kernel.

Changing the data cache clean+invalidate to a mere invalidate allows us
to get rid of a lot of platform specific hacks around this issue for
their secondary CPU bringup paths - some of which were buggy.

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Thierry Reding <treding@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Tested-by: Wei Xu <xuwei5@hisilicon.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-06-01 11:30:26 +01:00
..
include/mach Renesas ARM Based SoC sh73a0 Multiplatform Updates for v4.1 2015-04-01 16:37:30 -07:00
board-armadillo800eva.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
board-bockw-reference.c ARM: shmobile: r8a7778: implement SoC and board CCF support 2015-02-24 06:40:46 +09:00
board-bockw.c mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info 2015-03-05 21:54:26 +05:30
board-kzm9g.c mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info 2015-03-05 21:54:26 +05:30
board-marzen-reference.c Second Round of Renesas ARM Based SoC Boards Cleanups for v3.19 2014-11-19 22:29:59 +01:00
board-marzen.c mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info 2015-03-05 21:54:26 +05:30
clock-r8a7740.c ARM: SoC cleanups for 3.19 2014-12-09 14:18:35 -08:00
clock-r8a7778.c ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
clock-r8a7779.c ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
clock-sh73a0.c ARM: shmobile: sh73a0 legacy/reference: Add missing INTCA0 clock for irqpin module 2014-12-21 17:11:18 +09:00
clock.c ARM: shmobile: Remove mach/clkdev.h 2015-02-24 07:12:15 +09:00
clock.h ARM: shmobile: Remove shmobile_clk_workaround() implementation 2014-10-30 10:14:57 +09:00
common.h ARM: v7 setup function should invalidate L1 cache 2015-06-01 11:30:26 +01:00
console.c ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
cpufreq.c cpufreq: cpu0: rename driver and internals to 'cpufreq_dt' 2014-10-03 15:37:54 +02:00
dma-register.h ARM: shmobile: dma: Use defines instead of hardcoded numbers 2014-08-20 09:09:23 +09:00
headsmp-scu.S ARM: v7 setup function should invalidate L1 cache 2015-06-01 11:30:26 +01:00
headsmp.S ARM: v7 setup function should invalidate L1 cache 2015-06-01 11:30:26 +01:00
intc-sh73a0.c ARM: shmobile: remove use of gic_arch_extn.irq_set_wake 2015-03-15 01:28:09 +00:00
intc.h ARM: shmobile: Move legacy INTC definitions from irqs.h to intc.h 2014-08-22 12:23:32 +09:00
irqs.h ARM: shmobile: Move legacy INTC definitions from irqs.h to intc.h 2014-08-22 12:23:32 +09:00
Kconfig ARM: SoC multiplatform code changes for v4.1 2015-04-22 09:20:15 -07:00
Makefile ARM: SoC multiplatform code changes for v4.1 2015-04-22 09:20:15 -07:00
Makefile.boot Renesas ARM Based SoC sh73a0 Multiplatform Updates for v4.1 2015-04-01 16:37:30 -07:00
platsmp-apmu.c ARM: v7 setup function should invalidate L1 cache 2015-06-01 11:30:26 +01:00
platsmp-apmu.h ARM: shmobile: Separate APMU resource data into CPU dependant part 2014-11-04 09:31:23 +09:00
platsmp-scu.c ARM: shmobile: Move common.h 2014-06-17 17:09:39 +09:00
platsmp.c ARM: shmobile: Move common.h 2014-06-17 17:09:39 +09:00
pm-r8a7740.c ARM: shmobile: R-Mobile: Store SYSC base address in rmobile_pm_domain 2015-01-13 09:33:19 +09:00
pm-r8a7779.c ARM: shmobile: Convert to genpd flags for PM clocks for r8a7779 2014-12-04 00:44:44 +01:00
pm-rcar-gen2.c ARM: shmobile: Consolidate the pm code for R-Car Gen2 2015-03-17 08:05:13 +09:00
pm-rcar.c ARM: shmobile: Cleanup pm-rcar.o build using Kconfig 2014-09-02 09:32:05 +09:00
pm-rcar.h ARM: shmobile: Move pm-rcar.h, cleanup r8a7779 case 2014-06-17 17:09:40 +09:00
pm-rmobile.c ARM: shmobile: R-Mobile: Special-case PM domains with memory-controllers 2015-01-16 11:02:42 +09:00
pm-rmobile.h ARM: shmobile: R-Mobile: Add DT support for PM domains 2015-01-15 08:38:14 +09:00
pm-sh73a0.c ARM: shmobile: Move common.h 2014-06-17 17:09:39 +09:00
r8a7740.h ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
r8a7778.h Renesas ARM Based SoC Cleanup for v3.19 2014-11-04 14:43:02 -08:00
r8a7779.h ARM: shmobile: marzen-reference: Enable TMU0 in device tree 2014-08-17 09:00:56 +09:00
r8a7790.h ARM: shmobile: Consolidate the pm code for R-Car Gen2 2015-03-17 08:05:13 +09:00
r8a7791.h ARM: shmobile: Consolidate the pm code for R-Car Gen2 2015-03-17 08:05:13 +09:00
rcar-gen2.h ARM: shmobile: Consolidate the pm code for R-Car Gen2 2015-03-17 08:05:13 +09:00
regulator-quirk-rcar-gen2.c ARM: shmobile: R-Car Gen2: Add da9063/da9210 regulator quirk 2015-03-11 09:52:12 +09:00
setup-emev2.c ARM: make arrays containing machine compatible strings const 2015-02-19 09:44:17 +01:00
setup-r7s72100.c ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
setup-r8a73a4.c ARM: shmobile: r8a73a4: Remove legacy code 2015-02-25 16:14:02 +09:00
setup-r8a7740.c ARM: shmobile: r8a7740: Remove restart callback 2015-03-12 08:43:35 +09:00
setup-r8a7778.c ARM: shmobile: r8a7778: implement SoC and board CCF support 2015-02-24 06:40:46 +09:00
setup-r8a7779.c ARM: shmobile: remove use of gic_arch_extn.irq_set_wake 2015-03-15 01:28:09 +00:00
setup-r8a7790.c ARM: shmobile: r8a7790: Remove legacy code 2014-12-21 17:03:50 +09:00
setup-r8a7791.c ARM: shmobile: r8a7791: Remove legacy code 2014-10-30 10:14:57 +09:00
setup-r8a7794.c ARM: shmobile: r8a7794: Reserve memory as other R-Car Gen2 SoCs 2014-09-16 15:01:58 +09:00
setup-rcar-gen2.c ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00
setup-sh73a0.c ARM: shmobile: sh73a0: Remove restart callback 2015-02-24 08:22:50 +09:00
sh73a0.h ARM: shmobile: sh73a0: Remove unused sh73a0_add_standard_devices_dt() 2015-02-24 08:22:49 +09:00
sh-gpio.h ARM: shmobile: mackerel: Use pinconf API to configure pin pull-down 2013-12-10 17:24:49 +09:00
smp-emev2.c ARM: shmobile: Remove FSF address from copyright headers 2014-10-27 09:48:07 +09:00
smp-r8a7779.c ARM: shmobile: r8a7779: Remove redundant cpu_disable implementation 2015-02-24 07:12:16 +09:00
smp-r8a7790.c ARM: DT updates for v4.1 2015-04-22 09:09:46 -07:00
smp-r8a7791.c ARM: DT updates for v4.1 2015-04-22 09:09:46 -07:00
smp-sh73a0.c ARM: shmobile: sh73a0: Add Multiplatform support 2015-02-24 08:22:45 +09:00
suspend.c
timer.c Third Round of Renesas ARM Based SoC Fixes for v3.19 2015-02-01 08:51:12 -08:00