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 909fed2c2499..b57e723f194c 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -284,6 +284,7 @@ ia64_mca_log_sal_error_record(int sal_info_type)
284#ifdef CONFIG_ACPI 284#ifdef CONFIG_ACPI
285 285
286int cpe_vector = -1; 286int cpe_vector = -1;
287int ia64_cpe_irq = -1;
287 288
288static irqreturn_t 289static irqreturn_t
289ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) 290ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
@@ -1470,11 +1471,13 @@ void __devinit
1470ia64_mca_cpu_init(void *cpu_data) 1471ia64_mca_cpu_init(void *cpu_data)
1471{ 1472{
1472 void *pal_vaddr; 1473 void *pal_vaddr;
1474 static int first_time = 1;
1473 1475
1474 if (smp_processor_id() == 0) { 1476 if (first_time) {
1475 void *mca_data; 1477 void *mca_data;
1476 int cpu; 1478 int cpu;
1477 1479
1480 first_time = 0;
1478 mca_data = alloc_bootmem(sizeof(struct ia64_mca_cpu) 1481 mca_data = alloc_bootmem(sizeof(struct ia64_mca_cpu)
1479 * NR_CPUS + KERNEL_STACK_SIZE); 1482 * NR_CPUS + KERNEL_STACK_SIZE);
1480 mca_data = (void *)(((unsigned long)mca_data + 1483 mca_data = (void *)(((unsigned long)mca_data +
@@ -1730,6 +1733,7 @@ ia64_mca_late_init(void)
1730 desc = irq_descp(irq); 1733 desc = irq_descp(irq);
1731 desc->status |= IRQ_PER_CPU; 1734 desc->status |= IRQ_PER_CPU;
1732 setup_irq(irq, &mca_cpe_irqaction); 1735 setup_irq(irq, &mca_cpe_irqaction);
1736 ia64_cpe_irq = irq;
1733 } 1737 }
1734 ia64_mca_register_cpev(cpe_vector); 1738 ia64_mca_register_cpev(cpe_vector);
1735 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", __FUNCTION__); 1739 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", __FUNCTION__);