summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/hotplug.c
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-07-21 13:20:20 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 00:55:44 -0700
commit30755961b6502f87d6016de3f107b241aa5f0486 (patch)
treeb9d5d4db52df0a7d795789a0629c7e813d535b9d /arch/arm/mach-tegra/hotplug.c
parentd7dadd19ab3d26e65558d2aca0788a967a94a11e (diff)
ARM: tegra: Add Tegra 3 CPU hotplug support
Change-Id: Ie43f4efdf884a916c6bc9737157091c35dc44501 Signed-off-by: Scott Williams <scwilliams@nvidia.com> DW: Split into logical changes Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com> Rebase-Id: R1f023651504a7d336f7e98921f6372bee0aa1341
Diffstat (limited to 'arch/arm/mach-tegra/hotplug.c')
-rw-r--r--arch/arm/mach-tegra/hotplug.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c
index 8a02bc47dab5..682e0eabe204 100644
--- a/arch/arm/mach-tegra/hotplug.c
+++ b/arch/arm/mach-tegra/hotplug.c
@@ -16,6 +16,7 @@
#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
+#include "gic.h"
#include "sleep.h"
static void (*tegra_hotplug_shutdown)(void);
@@ -43,6 +44,17 @@ void tegra_cpu_die(unsigned int cpu)
/* Flush the L1 data cache. */
flush_cache_all();
+#ifndef CONFIG_ARCH_TEGRA_2x_SOC
+ /* Disable GIC CPU interface for this CPU. */
+ tegra_gic_cpu_disable();
+
+ /* Tegra3 enters LPx states via WFI - do not propagate legacy IRQs
+ to CPU core to avoid fall through WFI; then GIC output will be
+ enabled, however at this time - CPU is dying - no interrupt should
+ have affinity to this CPU. */
+ tegra_gic_pass_through_disable();
+#endif
+
/* Shut down the current CPU. */
tegra_hotplug_shutdown();