diff options
author | Jayachandran C <jchandra@broadcom.com> | 2013-12-21 06:22:26 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-01-24 16:39:49 -0500 |
commit | 98d4884ca55883e8b16180bd969a8bccaa885c80 (patch) | |
tree | ca7424268b4ef49d1472895bf2bb50d57b38d4fe /arch/mips/netlogic/common | |
parent | e7aa6c66b0acc34caba3af485f1a039bfa8aef07 (diff) |
MIPS: Netlogic: Add cpu to node mapping for XLP9XX
XLP9XX has 20 cores per node, opposed to 8 on earlier XLP8XX.
Update code that calculates node id from cpu id to handle this.
Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Signed-off-by: John Crispin <blogic@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/6283/
Diffstat (limited to 'arch/mips/netlogic/common')
-rw-r--r-- | arch/mips/netlogic/common/irq.c | 6 | ||||
-rw-r--r-- | arch/mips/netlogic/common/smp.c | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/arch/mips/netlogic/common/irq.c b/arch/mips/netlogic/common/irq.c index 3800bf6551ab..8092bb320618 100644 --- a/arch/mips/netlogic/common/irq.c +++ b/arch/mips/netlogic/common/irq.c | |||
@@ -223,7 +223,7 @@ static void nlm_init_node_irqs(int node) | |||
223 | continue; | 223 | continue; |
224 | 224 | ||
225 | nlm_pic_init_irt(nodep->picbase, irt, i, | 225 | nlm_pic_init_irt(nodep->picbase, irt, i, |
226 | node * NLM_CPUS_PER_NODE, 0); | 226 | node * nlm_threads_per_node(), 0); |
227 | nlm_setup_pic_irq(node, i, i, irt); | 227 | nlm_setup_pic_irq(node, i, i, irt); |
228 | } | 228 | } |
229 | } | 229 | } |
@@ -232,8 +232,8 @@ void nlm_smp_irq_init(int hwcpuid) | |||
232 | { | 232 | { |
233 | int node, cpu; | 233 | int node, cpu; |
234 | 234 | ||
235 | node = hwcpuid / NLM_CPUS_PER_NODE; | 235 | node = nlm_cpuid_to_node(hwcpuid); |
236 | cpu = hwcpuid % NLM_CPUS_PER_NODE; | 236 | cpu = hwcpuid % nlm_threads_per_node(); |
237 | 237 | ||
238 | if (cpu == 0 && node != 0) | 238 | if (cpu == 0 && node != 0) |
239 | nlm_init_node_irqs(node); | 239 | nlm_init_node_irqs(node); |
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c index c0eded01fde9..6baae15cc7b1 100644 --- a/arch/mips/netlogic/common/smp.c +++ b/arch/mips/netlogic/common/smp.c | |||
@@ -63,7 +63,7 @@ void nlm_send_ipi_single(int logical_cpu, unsigned int action) | |||
63 | uint64_t picbase; | 63 | uint64_t picbase; |
64 | 64 | ||
65 | cpu = cpu_logical_map(logical_cpu); | 65 | cpu = cpu_logical_map(logical_cpu); |
66 | node = cpu / NLM_CPUS_PER_NODE; | 66 | node = nlm_cpuid_to_node(cpu); |
67 | picbase = nlm_get_node(node)->picbase; | 67 | picbase = nlm_get_node(node)->picbase; |
68 | 68 | ||
69 | if (action & SMP_CALL_FUNCTION) | 69 | if (action & SMP_CALL_FUNCTION) |
@@ -152,7 +152,7 @@ void nlm_boot_secondary(int logical_cpu, struct task_struct *idle) | |||
152 | int cpu, node; | 152 | int cpu, node; |
153 | 153 | ||
154 | cpu = cpu_logical_map(logical_cpu); | 154 | cpu = cpu_logical_map(logical_cpu); |
155 | node = cpu / NLM_CPUS_PER_NODE; | 155 | node = nlm_cpuid_to_node(logical_cpu); |
156 | nlm_next_sp = (unsigned long)__KSTK_TOS(idle); | 156 | nlm_next_sp = (unsigned long)__KSTK_TOS(idle); |
157 | nlm_next_gp = (unsigned long)task_thread_info(idle); | 157 | nlm_next_gp = (unsigned long)task_thread_info(idle); |
158 | 158 | ||
@@ -164,7 +164,7 @@ void nlm_boot_secondary(int logical_cpu, struct task_struct *idle) | |||
164 | void __init nlm_smp_setup(void) | 164 | void __init nlm_smp_setup(void) |
165 | { | 165 | { |
166 | unsigned int boot_cpu; | 166 | unsigned int boot_cpu; |
167 | int num_cpus, i, ncore; | 167 | int num_cpus, i, ncore, node; |
168 | volatile u32 *cpu_ready = nlm_get_boot_data(BOOT_CPU_READY); | 168 | volatile u32 *cpu_ready = nlm_get_boot_data(BOOT_CPU_READY); |
169 | char buf[64]; | 169 | char buf[64]; |
170 | 170 | ||
@@ -187,6 +187,8 @@ void __init nlm_smp_setup(void) | |||
187 | __cpu_number_map[i] = num_cpus; | 187 | __cpu_number_map[i] = num_cpus; |
188 | __cpu_logical_map[num_cpus] = i; | 188 | __cpu_logical_map[num_cpus] = i; |
189 | set_cpu_possible(num_cpus, true); | 189 | set_cpu_possible(num_cpus, true); |
190 | node = nlm_cpuid_to_node(i); | ||
191 | cpumask_set_cpu(num_cpus, &nlm_get_node(node)->cpumask); | ||
190 | ++num_cpus; | 192 | ++num_cpus; |
191 | } | 193 | } |
192 | } | 194 | } |