linux/arch/arm/mach-tegra
Stephen Warren 02e75d6488 ARM: tegra: remove save/restore of CPU diag register
Prior to this change, {save,restore}_cpu_arch_register() collaborated to
maintain the value of the CPU diagnostic register across power cycles.
This was required to maintain any CPU errata workaround enable bits in
that register. However, now that the Tegra reset vector code always
enables all required workarounds, there is no need to save and restore
the diagnostic register; it is always explicitly programmed in the
required manner.

Hence, remove the save/restore logic.

This has the advantage that the kernel always directly controls the value
of this register every boot, rather than relying on a bootloader or other
kernel code having previously written the correct value into it. This
makes CPU0 (which was previously saved/restored) and CPUn (which should
have been set up by the reset vector) be controlled in exactly the same
way, which is easier to debug/find/...

In particular, when converting Tegra to a multi-platform kernel, the CPU0
diagnostic register value initially comes from the bootloader. Most Tegra
bootloaders don't yet enable all required CPU bug workarounds. The
previous commit updates the kernel to do so on any CPU power cycle.
However, the save/restore code ends up over-writing the value with the
old bootloader-driven value instead of the now more-likely-to-be-correct
kernel value!

Even irrespective of multi-platform conversion, this change limits the
kernel's exposure to any WARs the bootloader didn't enable for CPU0: on
the very first LP2 transition (CPU power-saving which power-cycles the
CPU), the correct value will be enabled.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
2013-03-11 14:29:22 -06:00
..
include/mach arm-soc: soc-specific updates 2013-02-21 15:27:22 -08:00
apbio.c ARM: tegra: Make variables static 2013-01-28 10:21:28 -07:00
apbio.h ARM: tegra: apbio access using dma for tegra20 only 2012-07-06 11:48:56 -06:00
board-dt-tegra20.c ARM: tegra: USB driver cleanup 2013-02-05 12:45:39 -08:00
board-dt-tegra30.c ARM: tegra: Common Clock Framework rework 2013-02-05 12:13:10 -08:00
board-dt-tegra114.c Merge branch 'tegra/t114' into next/soc 2013-02-09 17:53:02 -08:00
board-harmony-pcie.c ARM: dt: tegra: harmony: add regulators 2012-09-14 11:31:37 -06:00
board-paz00.c Merge branch 'multiplatform/platform-data' into next/multiplatform 2012-09-22 01:07:21 -07:00
board-paz00.h ARM: tegra: remove board (but not DT) support for Paz00 2012-09-14 11:31:36 -06:00
board.h ARM: tegra: Fix build error w/ ARCH_TEGRA_114_SOC w/o ARCH_TEGRA_3x_SOC 2013-02-09 17:46:51 -08:00
common.c Merge branch 'tegra/t114' into next/soc 2013-02-09 17:53:02 -08:00
common.h ARM: tegra: moving the clock gating procedure to tegra_cpu_kill 2013-01-28 10:21:48 -07:00
cpu-tegra.c arm-soc: soc-specific updates 2013-02-21 15:27:22 -08:00
cpuidle-tegra20.c ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
cpuidle-tegra30.c ARM: tegra: remove save/restore of CPU diag register 2013-03-11 14:29:22 -06:00
cpuidle-tegra114.c ARM: tegra: add Tegra114 ARM_CPUIDLE_WFI_STATE support 2013-01-29 11:01:23 -07:00
cpuidle.c ARM: tegra: add Tegra114 ARM_CPUIDLE_WFI_STATE support 2013-01-29 11:01:23 -07:00
cpuidle.h ARM: tegra: add Tegra114 ARM_CPUIDLE_WFI_STATE support 2013-01-29 11:01:23 -07:00
flowctrl.c ARM: tegra20: flowctrl: add support for cpu_suspend_enter/exit 2013-01-28 11:20:38 -07:00
flowctrl.h ARM: tegra20: flowctrl: add support for cpu_suspend_enter/exit 2013-01-28 11:20:38 -07:00
fuse.c ARM: tegra: add function to read chipid 2013-01-28 11:19:06 -07:00
fuse.h ARM: tegra: fuse: Add chip ID Tegra114 0x35 2013-01-28 11:23:00 -07:00
gpio-names.h
headsmp.S Merge branch 'socfpga/hw' into next/soc 2013-02-11 19:37:51 -08:00
hotplug.c ARM: tegra: move tegra_cpu_car.h to linux/clk/tegra.h 2013-01-28 11:19:06 -07:00
io.c ARM: tegra: don't include iomap.h from debug-macro.S 2012-11-16 12:22:17 -07:00
iomap.h ARM: tegra: remove USB address related macros from iomap.h 2013-01-28 11:20:04 -07:00
irammap.h ARM: tegra: decouple uncompress.h and debug-macro.S 2012-11-16 12:22:17 -07:00
irq.c ARM: tegra: cpuidle enhancements 2013-02-05 12:46:18 -08:00
irq.h ARM: tegra: add pending SGI checking API 2013-01-28 11:20:38 -07:00
Kconfig ARM: tegra: sort Kconfig selects for Tegra114 2013-02-09 17:52:07 -08:00
Makefile ARM: tegra: add Tegra114 ARM_CPUIDLE_WFI_STATE support 2013-01-29 11:01:23 -07:00
Makefile.boot ARM: tegra: Add Avionic Design Tamonten Evaluation Carrier support 2012-09-20 09:34:01 -06:00
pcie.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
platsmp.c ARM: tegra: remove empty tegra_smp_init_cpus() 2013-02-05 13:13:08 -08:00
pm.c ARM: tegra: remove save/restore of CPU diag register 2013-03-11 14:29:22 -06:00
pm.h ARM: tegra: retain L2 content over CPU suspend/resume 2012-11-15 15:09:22 -07:00
pmc.c ARM: tegra: move iomap.h to mach-tegra 2012-11-05 11:36:06 -07:00
pmc.h ARM: tegra: Add a simple PMC driver 2012-02-06 18:25:01 -08:00
powergate.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
reset-handler.S ARM: tegra: add CPU errata WARs to Tegra reset handler 2013-03-11 14:29:22 -06:00
reset.c ARM: tegra: make device can run on UP 2013-01-28 11:14:06 -07:00
reset.h ARM: tegra30: cpuidle: add powered-down state for secondary CPUs 2012-11-15 15:09:21 -07:00
sleep-tegra20.S ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
sleep-tegra30.S ARM: tegra: update the cache maintenance order for CPU shutdown 2013-01-28 10:21:44 -07:00
sleep.h ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
sleep.S ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
tegra2_emc.c ARM: Convert to devm_ioremap_resource() 2013-01-25 12:21:45 -08:00
tegra2_emc.h ARM: tegra: emc: convert tegra2_emc to a platform driver 2012-02-06 18:24:59 -08:00
tegra20_speedo.c ARM: tegra: Add speedo-based process identification 2012-11-15 14:34:20 -07:00
tegra30_speedo.c ARM: tegra: Tegra30 speedo-based process identification 2012-11-15 14:36:59 -07:00