]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/cris/arch-v32/kernel/smp.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
[linux-2.6-omap-h63xx.git] / arch / cris / arch-v32 / kernel / smp.c
index 957f551ba5ce21602467506a4c7f6f5276a1523e..464ecaec3bc08d8ef21878fac55bbbdf05cc6d74 100644 (file)
@@ -62,7 +62,7 @@ static unsigned long irq_regs[NR_CPUS] =
 
 static irqreturn_t crisv32_ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 static int send_ipi(int vector, int wait, cpumask_t cpu_mask);
-static struct irqaction irq_ipi  = { crisv32_ipi_interrupt, SA_INTERRUPT,
+static struct irqaction irq_ipi  = { crisv32_ipi_interrupt, IRQF_DISABLED,
                                      CPU_MASK_NONE, "ipi", NULL, NULL};
 
 extern void cris_mmu_init(void);
@@ -113,10 +113,10 @@ smp_boot_one_cpu(int cpuid)
        if (IS_ERR(idle))
                panic("SMP: fork failed for CPU:%d", cpuid);
 
-       idle->thread_info->cpu = cpuid;
+       task_thread_info(idle)->cpu = cpuid;
 
        /* Information to the CPU that is about to boot */
-       smp_init_current_idle_thread = idle->thread_info;
+       smp_init_current_idle_thread = task_thread_info(idle);
        cpu_now_booting = cpuid;
 
        /* Wait for CPU to come online */
@@ -161,6 +161,7 @@ void __init smp_callin(void)
        REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask);
        unmask_irq(IPI_INTR_VECT);
        unmask_irq(TIMER_INTR_VECT);
+       preempt_disable();
        local_irq_enable();
 
        cpu_set(cpu, cpu_online_map);