diff options
author | Andy Fleming <afleming@freescale.com> | 2011-12-08 01:20:27 -0600 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-07-29 19:26:20 -0500 |
commit | e16c8765533a155ebd3d7c36fc80440a03bbf46a (patch) | |
tree | 8e4c3ab9fd85d3a852889c13012017b5cf8770b7 /arch/powerpc/kernel/setup_64.c | |
parent | 7251a24e4d3acf2d7826e1c42fe84258c312a742 (diff) | |
download | linux-e16c8765533a155ebd3d7c36fc80440a03bbf46a.tar.gz linux-e16c8765533a155ebd3d7c36fc80440a03bbf46a.tar.bz2 linux-e16c8765533a155ebd3d7c36fc80440a03bbf46a.zip |
powerpc/e6500: Add support for hardware threads
The general idea is that each core will release all of its
threads into the secondary thread startup code, which will
eventually wait in the secondary core holding area, for the
appropriate bit in the PACA to be set. The kick_cpu function
pointer will set that bit in the PACA, and thus "release"
the core/thread to boot. We also need to do a few things that
U-Boot normally does for CPUs (like enable branch prediction).
Signed-off-by: Andy Fleming <afleming@freescale.com>
[scottwood@freescale.com: various changes, including only enabling
threads if Linux wants to kick them]
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/kernel/setup_64.c')
-rw-r--r-- | arch/powerpc/kernel/setup_64.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index ee082d771178..6d06947e7d21 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c @@ -507,7 +507,11 @@ void __init setup_system(void) check_smt_enabled(); setup_tlb_core_data(); -#ifdef CONFIG_SMP + /* + * Freescale Book3e parts spin in a loop provided by firmware, + * so smp_release_cpus() does nothing for them + */ +#if defined(CONFIG_SMP) && !defined(CONFIG_PPC_FSL_BOOK3E) /* Release secondary cpus out of their spinloops at 0x60 now that * we can map physical -> logical CPU ids */ |