summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/irq.c
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@datenfreihafen.org>2021-02-24 13:36:58 +0100
committerStefan Schmidt <stefan@datenfreihafen.org>2021-02-24 13:36:58 +0100
commitcdd38c5f1ce4398ec58fec95904b75824daab7b5 (patch)
tree639cf51fe8ee120a13e61b13d448aeaf4d044c74 /arch/x86/kernel/irq.c
parent04052a318fb93491f1f3b4d282cb806f588e9326 (diff)
parentfcb3007371e1a4afb03280af1b336a83287fe115 (diff)
downloadlinux-cdd38c5f1ce4398ec58fec95904b75824daab7b5.tar.bz2
Merge remote-tracking branch 'net/master'
Diffstat (limited to 'arch/x86/kernel/irq.c')
-rw-r--r--arch/x86/kernel/irq.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index c5dd50369e2f..d4ad344e80bf 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -21,6 +21,7 @@
#include <asm/hw_irq.h>
#include <asm/desc.h>
#include <asm/traps.h>
+#include <asm/thermal.h>
#define CREATE_TRACE_POINTS
#include <asm/trace/irq_vectors.h>
@@ -374,3 +375,23 @@ void fixup_irqs(void)
}
}
#endif
+
+#ifdef CONFIG_X86_THERMAL_VECTOR
+static void smp_thermal_vector(void)
+{
+ if (x86_thermal_enabled())
+ intel_thermal_interrupt();
+ else
+ pr_err("CPU%d: Unexpected LVT thermal interrupt!\n",
+ smp_processor_id());
+}
+
+DEFINE_IDTENTRY_SYSVEC(sysvec_thermal)
+{
+ trace_thermal_apic_entry(THERMAL_APIC_VECTOR);
+ inc_irq_stat(irq_thermal_count);
+ smp_thermal_vector();
+ trace_thermal_apic_exit(THERMAL_APIC_VECTOR);
+ ack_APIC_irq();
+}
+#endif