diff options
author | Jon Loeliger <jdl@jdl.com> | 2006-06-17 18:52:44 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-06-21 01:01:28 -0400 |
commit | ee0339f205d60375c5ce1653c0dc318c6ec72668 (patch) | |
tree | 8c4e46f6645224d88b26fed0a8c5ff031f233952 /arch | |
parent | 9674ed38d8e4a9ce15c61b4306ef803cad0e1dc0 (diff) |
[POWERPC] Add starting of secondary 86xx CPUs.
Clear the high BATS during load_up_mmu if FTR_HAS_HIGH_BATS.
Allow just a bit more time for secondary CPUs to phone home.
Signed-off-by: Wei Zhang <Wei.Zhang@freescale.com>
Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
Signed-off-by: Jon Loeliger <jdl@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/head_32.S | 14 | ||||
-rw-r--r-- | arch/powerpc/kernel/smp.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/ppc_mmu_32.c | 4 |
3 files changed, 16 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S index a0579e859b21..b25b25902d15 100644 --- a/arch/powerpc/kernel/head_32.S +++ b/arch/powerpc/kernel/head_32.S | |||
@@ -973,6 +973,13 @@ __secondary_start_gemini: | |||
973 | b __secondary_start | 973 | b __secondary_start |
974 | #endif /* CONFIG_GEMINI */ | 974 | #endif /* CONFIG_GEMINI */ |
975 | 975 | ||
976 | .globl __secondary_start_mpc86xx | ||
977 | __secondary_start_mpc86xx: | ||
978 | mfspr r3, SPRN_PIR | ||
979 | stw r3, __secondary_hold_acknowledge@l(0) | ||
980 | mr r24, r3 /* cpu # */ | ||
981 | b __secondary_start | ||
982 | |||
976 | .globl __secondary_start_pmac_0 | 983 | .globl __secondary_start_pmac_0 |
977 | __secondary_start_pmac_0: | 984 | __secondary_start_pmac_0: |
978 | /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */ | 985 | /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */ |
@@ -1088,7 +1095,12 @@ load_up_mmu: | |||
1088 | LOAD_BAT(1,r3,r4,r5) | 1095 | LOAD_BAT(1,r3,r4,r5) |
1089 | LOAD_BAT(2,r3,r4,r5) | 1096 | LOAD_BAT(2,r3,r4,r5) |
1090 | LOAD_BAT(3,r3,r4,r5) | 1097 | LOAD_BAT(3,r3,r4,r5) |
1091 | 1098 | BEGIN_FTR_SECTION | |
1099 | LOAD_BAT(4,r3,r4,r5) | ||
1100 | LOAD_BAT(5,r3,r4,r5) | ||
1101 | LOAD_BAT(6,r3,r4,r5) | ||
1102 | LOAD_BAT(7,r3,r4,r5) | ||
1103 | END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS) | ||
1092 | blr | 1104 | blr |
1093 | 1105 | ||
1094 | /* | 1106 | /* |
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 530f7dba0bd2..c5d179d4f818 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -492,7 +492,7 @@ int __devinit __cpu_up(unsigned int cpu) | |||
492 | * -- Cort | 492 | * -- Cort |
493 | */ | 493 | */ |
494 | if (system_state < SYSTEM_RUNNING) | 494 | if (system_state < SYSTEM_RUNNING) |
495 | for (c = 5000; c && !cpu_callin_map[cpu]; c--) | 495 | for (c = 50000; c && !cpu_callin_map[cpu]; c--) |
496 | udelay(100); | 496 | udelay(100); |
497 | #ifdef CONFIG_HOTPLUG_CPU | 497 | #ifdef CONFIG_HOTPLUG_CPU |
498 | else | 498 | else |
diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c index ab5cd724b122..2ed43a493b31 100644 --- a/arch/powerpc/mm/ppc_mmu_32.c +++ b/arch/powerpc/mm/ppc_mmu_32.c | |||
@@ -43,13 +43,13 @@ unsigned long _SDR1; | |||
43 | union ubat { /* BAT register values to be loaded */ | 43 | union ubat { /* BAT register values to be loaded */ |
44 | BAT bat; | 44 | BAT bat; |
45 | u32 word[2]; | 45 | u32 word[2]; |
46 | } BATS[4][2]; /* 4 pairs of IBAT, DBAT */ | 46 | } BATS[8][2]; /* 8 pairs of IBAT, DBAT */ |
47 | 47 | ||
48 | struct batrange { /* stores address ranges mapped by BATs */ | 48 | struct batrange { /* stores address ranges mapped by BATs */ |
49 | unsigned long start; | 49 | unsigned long start; |
50 | unsigned long limit; | 50 | unsigned long limit; |
51 | unsigned long phys; | 51 | unsigned long phys; |
52 | } bat_addrs[4]; | 52 | } bat_addrs[8]; |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Return PA for this VA if it is mapped by a BAT, or 0 | 55 | * Return PA for this VA if it is mapped by a BAT, or 0 |