ARM: tegra: add CPU errata WARs to Tegra reset handler
authorStephen Warren <swarren@nvidia.com>
Tue, 5 Mar 2013 00:05:56 +0000 (17:05 -0700)
committerStephen Warren <swarren@nvidia.com>
Mon, 11 Mar 2013 20:29:22 +0000 (14:29 -0600)
commitc34f30e588d310a70f994659c06f0a31dfdcfc15
treeb04ec4f4afc54301907d7df60839b5f155138720
parent908ab9368866e6edf0edebdd546adefd5f3128f9
ARM: tegra: add CPU errata WARs to Tegra reset handler

The CPU cores in Tegra contain some errata. Workarounds must be applied
for these every time a CPU boots. Implement those workarounds directly
in the Tegra-specific CPU reset vector.

Many of these workarounds duplicate code in the core ARM kernel.

However, the core ARM kernel cannot enable those workarounds when
building a multi-platform kernel, since they require writing to secure-
only registers, and a multi-platform kernel often does not run in secure
mode, and also cannot generically/architecturally detect whether it is
running in secure mode, and hence cannot either unconditionally or
conditionally apply these workarounds.

Instead, the workarounds must be applied in architecture-specific reset
code, which is able to have more direct knowledge of the secure/normal
state. On Tegra, we will be able to detect this using a non-architected
register in the future, although we currently assume the kernel runs only
in secure mode. Other SoCs may never run the kernel in secure mode, and
hence always rely on a secure monitor to enable the workarounds, and
hence never implement them in the kernel.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
arch/arm/mach-tegra/reset-handler.S