git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
arch
/
mips
/
kernel
/
smp.c
diff --git
a/arch/mips/kernel/smp.c
b/arch/mips/kernel/smp.c
index
298f82f
..
06ed907
100644
(file)
--- a/
arch/mips/kernel/smp.c
+++ b/
arch/mips/kernel/smp.c
@@
-38,10
+38,6
@@
#include <asm/mmu_context.h>
#include <asm/smp.h>
#include <asm/mmu_context.h>
#include <asm/smp.h>
-#ifdef CONFIG_MIPS_MT_SMTC
-#include <asm/mipsmtregs.h>
-#endif /* CONFIG_MIPS_MT_SMTC */
-
cpumask_t phys_cpu_present_map; /* Bitmask of available CPUs */
volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
cpumask_t cpu_online_map; /* Bitmask of currently online CPUs */
cpumask_t phys_cpu_present_map; /* Bitmask of available CPUs */
volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
cpumask_t cpu_online_map; /* Bitmask of currently online CPUs */
@@
-89,10
+85,6
@@
asmlinkage void start_secondary(void)
{
unsigned int cpu;
{
unsigned int cpu;
-#ifdef CONFIG_MIPS_MT_SMTC
- /* Only do cpu_probe for first TC of CPU */
- if ((read_c0_tcbind() & TCBIND_CURTC) == 0)
-#endif /* CONFIG_MIPS_MT_SMTC */
cpu_probe();
cpu_report();
per_cpu_trap_init();
cpu_probe();
cpu_report();
per_cpu_trap_init();
@@
-175,8
+167,8
@@
int smp_call_function (void (*func) (void *info), void *info, int retry,
mb();
/* Send a message to all other CPUs and wait for them to respond */
mb();
/* Send a message to all other CPUs and wait for them to respond */
- for
_each_online_cpu(i
)
- if (i != cpu)
+ for
(i = 0; i < NR_CPUS; i++
)
+ if (
cpu_online(i) &&
i != cpu)
core_send_ipi(i, SMP_CALL_FUNCTION);
/* Wait for response */
core_send_ipi(i, SMP_CALL_FUNCTION);
/* Wait for response */
@@
-187,13
+179,11
@@
int smp_call_function (void (*func) (void *info), void *info, int retry,
if (wait)
while (atomic_read(&data.finished) != cpus)
barrier();
if (wait)
while (atomic_read(&data.finished) != cpus)
barrier();
- call_data = NULL;
spin_unlock(&smp_call_lock);
return 0;
}
spin_unlock(&smp_call_lock);
return 0;
}
-
void smp_call_function_interrupt(void)
{
void (*func) (void *info) = call_data->func;
void smp_call_function_interrupt(void)
{
void (*func) (void *info) = call_data->func;
@@
-247,9
+237,6
@@
void __init smp_prepare_cpus(unsigned int max_cpus)
current_thread_info()->cpu = 0;
smp_tune_scheduling();
plat_prepare_cpus(max_cpus);
current_thread_info()->cpu = 0;
smp_tune_scheduling();
plat_prepare_cpus(max_cpus);
-#ifndef CONFIG_HOTPLUG_CPU
- cpu_present_map = cpu_possible_map;
-#endif
}
/* preload SMP state for boot cpu */
}
/* preload SMP state for boot cpu */
@@
-445,7
+432,7
@@
static int __init topology_init(void)
int cpu;
int ret;
int cpu;
int ret;
- for_each_
present_
cpu(cpu) {
+ for_each_cpu(cpu) {
ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL);
if (ret)
printk(KERN_WARNING "topology_init: register_cpu %d "
ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL);
if (ret)
printk(KERN_WARNING "topology_init: register_cpu %d "
@@
-459,3
+446,5
@@
subsys_initcall(topology_init);
EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL(flush_tlb_one);
EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL(flush_tlb_one);
+EXPORT_SYMBOL(cpu_data);
+EXPORT_SYMBOL(synchronize_irq);