diff options
author | Wang Dongsheng <dongsheng.wang@freescale.com> | 2014-04-29 16:48:23 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-04-29 18:21:11 (GMT) |
commit | 705aa98535fecbc116d02ae6a2d5819fc36c1f7e (patch) | |
tree | 9924cb1abf87b8e680928b6c48c59fcd85ac115c /arch/powerpc/platforms | |
parent | 9659e78cb8f5f086f661cd0b7f6b32bce18bbc34 (diff) | |
download | linux-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.c | 11 |
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. |