diff -r c110692c140f arch/i386/kernel/cpu/mcheck/non-fatal.c --- a/arch/i386/kernel/cpu/mcheck/non-fatal.c Wed Aug 13 10:00:09 2008 +0100 +++ b/arch/i386/kernel/cpu/mcheck/non-fatal.c Wed Aug 13 15:10:47 2008 +0200 @@ -60,9 +60,31 @@ static void mce_work_fn(void *data) schedule_delayed_work(&mce_work, MCE_RATE); } +/* Privileged receive callback and transmit kicker. */ +static irqreturn_t xenmca_event(int irq, void *dev_id, + struct pt_regs *regs) +{ + printk("xen_mca: HW reported correctable error(s)\n"); + + return IRQ_HANDLED; +} + +static int mca_event_irq; + static int __init init_nonfatal_mce_checker(void) { struct cpuinfo_x86 *c = &boot_cpu_data; + + if (is_initial_xendomain()) { + mca_event_irq = bind_virq_to_irqhandler( + VIRQ_MCA, + 0, + xenmca_event, + 0, + "mca0", + NULL); + BUG_ON(mca_event_irq < 0); + } /* Check for MCE support */ if (!cpu_has(c, X86_FEATURE_MCE))