summaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms
diff options
context:
space:
mode:
authorWang Dongsheng <dongsheng.wang@freescale.com>2014-04-29 16:48:23 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-04-29 18:21:11 (GMT)
commit705aa98535fecbc116d02ae6a2d5819fc36c1f7e (patch)
tree9924cb1abf87b8e680928b6c48c59fcd85ac115c /arch/powerpc/platforms
parent9659e78cb8f5f086f661cd0b7f6b32bce18bbc34 (diff)
downloadlinux-fsl-qoriq-705aa98535fecbc116d02ae6a2d5819fc36c1f7e.tar.xz
powerpc/cpu-hotplug: fix cpu re-online failed issue
Errata-A-006568. If SOC-rcpm is V1, we need enable cpu first, T4240rev2 and later Soc has been fixed. But before, this errata is still needed. Tested on P4080ds, T1042rdb_pi, T4240qds, B4860qds. root@p4080ds:/usr/etc# echo 0 > /sys/devices/system/cpu/cpu7/online Cannot set affinity for irq 467 root@p4080ds:/usr/etc# root@p4080ds:/usr/etc# echo 1 > /sys/devices/system/cpu/cpu7/online smp_85xx_kick_cpu: timeout waiting for core 7 to reset smp: failed starting cpu 7 (rc -2) Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com> Signed-off-by: Chenhui Zhao <chenhui.zhao@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/11356 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Yang Li <LeoLi@freescale.com> Reviewed-by: Jose Rivera <German.Rivera@freescale.com> Change-Id: Ib300dffe28b2436fe44431286ff707124402204d Reviewed-on: http://git.am.freescale.net:8181/11648
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r--arch/powerpc/platforms/85xx/smp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 521ca17..a65c5d3 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -363,6 +363,17 @@ static int smp_85xx_kick_cpu(int nr)
out_be32(&spin_table->addr_l, 0);
flush_spin_table(spin_table);
+#ifdef CONFIG_PPC_E500MC
+ /*
+ * Errata-A-006568. If SOC-rcpm is V1, we need enable
+ * cpu first, T4240rev2 and later Soc has been fixed.
+ * But before this errata is still needed.
+ */
+ if (get_rcpm_version() == RCPM_V1 &&
+ qoriq_pm_ops->cpu_exit_state)
+ qoriq_pm_ops->cpu_exit_state(nr, qoriq_cpu_die_state);
+#endif
+
/*
* We don't set the BPTR register here since it already points
* to the boot page properly.