aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/mca.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/mca.c')
-rw-r--r--arch/ia64/kernel/mca.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 355af15287c7..967571b466a2 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -289,6 +289,7 @@ ia64_mca_log_sal_error_record(int sal_info_type)
289#ifdef CONFIG_ACPI 289#ifdef CONFIG_ACPI
290 290
291int cpe_vector = -1; 291int cpe_vector = -1;
292int ia64_cpe_irq = -1;
292 293
293static irqreturn_t 294static irqreturn_t
294ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) 295ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
@@ -1444,11 +1445,13 @@ void __devinit
1444ia64_mca_cpu_init(void *cpu_data) 1445ia64_mca_cpu_init(void *cpu_data)
1445{ 1446{
1446 void *pal_vaddr; 1447 void *pal_vaddr;
1448 static int first_time = 1;
1447 1449
1448 if (smp_processor_id() == 0) { 1450 if (first_time) {
1449 void *mca_data; 1451 void *mca_data;
1450 int cpu; 1452 int cpu;
1451 1453
1454 first_time = 0;
1452 mca_data = alloc_bootmem(sizeof(struct ia64_mca_cpu) 1455 mca_data = alloc_bootmem(sizeof(struct ia64_mca_cpu)
1453 * NR_CPUS + KERNEL_STACK_SIZE); 1456 * NR_CPUS + KERNEL_STACK_SIZE);
1454 mca_data = (void *)(((unsigned long)mca_data + 1457 mca_data = (void *)(((unsigned long)mca_data +
@@ -1704,6 +1707,7 @@ ia64_mca_late_init(void)
1704 desc = irq_descp(irq); 1707 desc = irq_descp(irq);
1705 desc->status |= IRQ_PER_CPU; 1708 desc->status |= IRQ_PER_CPU;
1706 setup_irq(irq, &mca_cpe_irqaction); 1709 setup_irq(irq, &mca_cpe_irqaction);
1710 ia64_cpe_irq = irq;
1707 } 1711 }
1708 ia64_mca_register_cpev(cpe_vector); 1712 ia64_mca_register_cpev(cpe_vector);
1709 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", __FUNCTION__); 1713 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", __FUNCTION__);