threshold.c 901 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Common corrected MCE threshold handler code:
  3. */
  4. #include <linux/interrupt.h>
  5. #include <linux/kernel.h>
  6. #include <asm/irq_vectors.h>
  7. #include <asm/apic.h>
  8. #include <asm/mce.h>
  9. #include <asm/trace/irq_vectors.h>
  10. static void default_threshold_interrupt(void)
  11. {
  12. pr_err("Unexpected threshold interrupt at vector %x\n",
  13. THRESHOLD_APIC_VECTOR);
  14. }
  15. void (*mce_threshold_vector)(void) = default_threshold_interrupt;
  16. static inline void __smp_threshold_interrupt(void)
  17. {
  18. inc_irq_stat(irq_threshold_count);
  19. mce_threshold_vector();
  20. }
  21. asmlinkage __visible void smp_threshold_interrupt(void)
  22. {
  23. entering_irq();
  24. __smp_threshold_interrupt();
  25. exiting_ack_irq();
  26. }
  27. asmlinkage __visible void smp_trace_threshold_interrupt(void)
  28. {
  29. entering_irq();
  30. trace_threshold_apic_entry(THRESHOLD_APIC_VECTOR);
  31. __smp_threshold_interrupt();
  32. trace_threshold_apic_exit(THRESHOLD_APIC_VECTOR);
  33. exiting_ack_irq();
  34. }