diff options
Diffstat (limited to 'arch/i386/kernel')
-rw-r--r-- | arch/i386/kernel/process.c | 4 | ||||
-rw-r--r-- | arch/i386/kernel/smpboot.c | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 7a14fdfd3af9..5296e284ea36 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -179,7 +179,7 @@ static inline void play_dead(void) | |||
179 | */ | 179 | */ |
180 | void cpu_idle(void) | 180 | void cpu_idle(void) |
181 | { | 181 | { |
182 | int cpu = raw_smp_processor_id(); | 182 | int cpu = smp_processor_id(); |
183 | 183 | ||
184 | /* endless idle loop with no priority at all */ | 184 | /* endless idle loop with no priority at all */ |
185 | while (1) { | 185 | while (1) { |
@@ -201,7 +201,9 @@ void cpu_idle(void) | |||
201 | __get_cpu_var(irq_stat).idle_timestamp = jiffies; | 201 | __get_cpu_var(irq_stat).idle_timestamp = jiffies; |
202 | idle(); | 202 | idle(); |
203 | } | 203 | } |
204 | preempt_enable_no_resched(); | ||
204 | schedule(); | 205 | schedule(); |
206 | preempt_disable(); | ||
205 | } | 207 | } |
206 | } | 208 | } |
207 | 209 | ||
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index 47ec76794d02..bc5a9d97466b 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
@@ -485,6 +485,7 @@ static void __devinit start_secondary(void *unused) | |||
485 | * things done here to the most necessary things. | 485 | * things done here to the most necessary things. |
486 | */ | 486 | */ |
487 | cpu_init(); | 487 | cpu_init(); |
488 | preempt_disable(); | ||
488 | smp_callin(); | 489 | smp_callin(); |
489 | while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) | 490 | while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) |
490 | rep_nop(); | 491 | rep_nop(); |