mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
7251a24e4d
commit
e16c876553
8 changed files with 116 additions and 10 deletions
|
@ -456,18 +456,20 @@ void __init smp_setup_cpu_maps(void)
|
|||
intserv = of_get_property(dn, "ibm,ppc-interrupt-server#s",
|
||||
&len);
|
||||
if (intserv) {
|
||||
nthreads = len / sizeof(int);
|
||||
DBG(" ibm,ppc-interrupt-server#s -> %d threads\n",
|
||||
nthreads);
|
||||
} else {
|
||||
DBG(" no ibm,ppc-interrupt-server#s -> 1 thread\n");
|
||||
intserv = of_get_property(dn, "reg", NULL);
|
||||
intserv = of_get_property(dn, "reg", &len);
|
||||
if (!intserv) {
|
||||
cpu_be = cpu_to_be32(cpu);
|
||||
intserv = &cpu_be; /* assume logical == phys */
|
||||
len = 4;
|
||||
}
|
||||
}
|
||||
|
||||
nthreads = len / sizeof(int);
|
||||
|
||||
for (j = 0; j < nthreads && cpu < nr_cpu_ids; j++) {
|
||||
DBG(" thread %d -> cpu %d (hard id %d)\n",
|
||||
j, cpu, be32_to_cpu(intserv[j]));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue