diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/smp.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 4fe3d5715c41..dd725779d91f 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -52,7 +52,9 @@ ATTRIB_NORET void cpu_idle(void) | |||
52 | while (!need_resched()) | 52 | while (!need_resched()) |
53 | if (cpu_wait) | 53 | if (cpu_wait) |
54 | (*cpu_wait)(); | 54 | (*cpu_wait)(); |
55 | preempt_enable_no_resched(); | ||
55 | schedule(); | 56 | schedule(); |
57 | preempt_disable(); | ||
56 | } | 58 | } |
57 | } | 59 | } |
58 | 60 | ||
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index fcacf1aae98a..25472fcaf715 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -82,7 +82,7 @@ extern ATTRIB_NORET void cpu_idle(void); | |||
82 | */ | 82 | */ |
83 | asmlinkage void start_secondary(void) | 83 | asmlinkage void start_secondary(void) |
84 | { | 84 | { |
85 | unsigned int cpu = smp_processor_id(); | 85 | unsigned int cpu; |
86 | 86 | ||
87 | cpu_probe(); | 87 | cpu_probe(); |
88 | cpu_report(); | 88 | cpu_report(); |
@@ -95,6 +95,8 @@ asmlinkage void start_secondary(void) | |||
95 | */ | 95 | */ |
96 | 96 | ||
97 | calibrate_delay(); | 97 | calibrate_delay(); |
98 | preempt_disable(); | ||
99 | cpu = smp_processor_id(); | ||
98 | cpu_data[cpu].udelay_val = loops_per_jiffy; | 100 | cpu_data[cpu].udelay_val = loops_per_jiffy; |
99 | 101 | ||
100 | prom_smp_finish(); | 102 | prom_smp_finish(); |