|  | /* | 
|  | * Common corrected MCE threshold handler code: | 
|  | */ | 
|  | #include <linux/interrupt.h> | 
|  | #include <linux/kernel.h> | 
|  |  | 
|  | #include <asm/irq_vectors.h> | 
|  | #include <asm/apic.h> | 
|  | #include <asm/idle.h> | 
|  | #include <asm/mce.h> | 
|  |  | 
|  | static void default_threshold_interrupt(void) | 
|  | { | 
|  | printk(KERN_ERR "Unexpected threshold interrupt at vector %x\n", | 
|  | THRESHOLD_APIC_VECTOR); | 
|  | } | 
|  |  | 
|  | void (*mce_threshold_vector)(void) = default_threshold_interrupt; | 
|  |  | 
|  | asmlinkage void smp_threshold_interrupt(void) | 
|  | { | 
|  | exit_idle(); | 
|  | irq_enter(); | 
|  | inc_irq_stat(irq_threshold_count); | 
|  | mce_threshold_vector(); | 
|  | irq_exit(); | 
|  | /* Ack only at the end to avoid potential reentry */ | 
|  | ack_APIC_irq(); | 
|  | } |