diff options
Diffstat (limited to 'arch/parisc/kernel/smp.c')
-rw-r--r-- | arch/parisc/kernel/smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 98e40959a564..faad338f310e 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -262,6 +262,9 @@ ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
262 | this_cpu, which); | 262 | this_cpu, which); |
263 | return IRQ_NONE; | 263 | return IRQ_NONE; |
264 | } /* Switch */ | 264 | } /* Switch */ |
265 | /* let in any pending interrupts */ | ||
266 | local_irq_enable(); | ||
267 | local_irq_disable(); | ||
265 | } /* while (ops) */ | 268 | } /* while (ops) */ |
266 | } | 269 | } |
267 | return IRQ_HANDLED; | 270 | return IRQ_HANDLED; |
@@ -430,8 +433,9 @@ smp_do_timer(struct pt_regs *regs) | |||
430 | static void __init | 433 | static void __init |
431 | smp_cpu_init(int cpunum) | 434 | smp_cpu_init(int cpunum) |
432 | { | 435 | { |
433 | extern int init_per_cpu(int); /* arch/parisc/kernel/setup.c */ | 436 | extern int init_per_cpu(int); /* arch/parisc/kernel/processor.c */ |
434 | extern void init_IRQ(void); /* arch/parisc/kernel/irq.c */ | 437 | extern void init_IRQ(void); /* arch/parisc/kernel/irq.c */ |
438 | extern void start_cpu_itimer(void); /* arch/parisc/kernel/time.c */ | ||
435 | 439 | ||
436 | /* Set modes and Enable floating point coprocessor */ | 440 | /* Set modes and Enable floating point coprocessor */ |
437 | (void) init_per_cpu(cpunum); | 441 | (void) init_per_cpu(cpunum); |
@@ -457,6 +461,7 @@ smp_cpu_init(int cpunum) | |||
457 | enter_lazy_tlb(&init_mm, current); | 461 | enter_lazy_tlb(&init_mm, current); |
458 | 462 | ||
459 | init_IRQ(); /* make sure no IRQ's are enabled or pending */ | 463 | init_IRQ(); /* make sure no IRQ's are enabled or pending */ |
464 | start_cpu_itimer(); | ||
460 | } | 465 | } |
461 | 466 | ||
462 | 467 | ||