diff options
Diffstat (limited to 'arch/x86/kernel/cpu/mcheck/therm_throt.c')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/therm_throt.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c index 47a1870279aa..f6b35f2a6a37 100644 --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c | |||
@@ -378,15 +378,17 @@ static void unexpected_thermal_interrupt(void) | |||
378 | 378 | ||
379 | static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt; | 379 | static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt; |
380 | 380 | ||
381 | asmlinkage void smp_thermal_interrupt(struct pt_regs *regs) | 381 | static inline void __smp_thermal_interrupt(void) |
382 | { | 382 | { |
383 | irq_enter(); | ||
384 | exit_idle(); | ||
385 | inc_irq_stat(irq_thermal_count); | 383 | inc_irq_stat(irq_thermal_count); |
386 | smp_thermal_vector(); | 384 | smp_thermal_vector(); |
387 | irq_exit(); | 385 | } |
388 | /* Ack only at the end to avoid potential reentry */ | 386 | |
389 | ack_APIC_irq(); | 387 | asmlinkage void smp_thermal_interrupt(struct pt_regs *regs) |
388 | { | ||
389 | entering_irq(); | ||
390 | __smp_thermal_interrupt(); | ||
391 | exiting_ack_irq(); | ||
390 | } | 392 | } |
391 | 393 | ||
392 | /* Thermal monitoring depends on APIC, ACPI and clock modulation */ | 394 | /* Thermal monitoring depends on APIC, ACPI and clock modulation */ |