diff options
Diffstat (limited to 'arch/x86_64/kernel/nmi.c')
-rw-r--r-- | arch/x86_64/kernel/nmi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c index 4e44d6e6b7e5..caf164959e19 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
@@ -290,7 +290,7 @@ void enable_timer_nmi_watchdog(void) | |||
290 | 290 | ||
291 | static int nmi_pm_active; /* nmi_active before suspend */ | 291 | static int nmi_pm_active; /* nmi_active before suspend */ |
292 | 292 | ||
293 | static int lapic_nmi_suspend(struct sys_device *dev, u32 state) | 293 | static int lapic_nmi_suspend(struct sys_device *dev, pm_message_t state) |
294 | { | 294 | { |
295 | nmi_pm_active = nmi_active; | 295 | nmi_pm_active = nmi_active; |
296 | disable_lapic_nmi_watchdog(); | 296 | disable_lapic_nmi_watchdog(); |
@@ -463,6 +463,8 @@ void touch_nmi_watchdog (void) | |||
463 | */ | 463 | */ |
464 | for (i = 0; i < NR_CPUS; i++) | 464 | for (i = 0; i < NR_CPUS; i++) |
465 | per_cpu(nmi_touch, i) = 1; | 465 | per_cpu(nmi_touch, i) = 1; |
466 | |||
467 | touch_softlockup_watchdog(); | ||
466 | } | 468 | } |
467 | 469 | ||
468 | void nmi_watchdog_tick (struct pt_regs * regs, unsigned reason) | 470 | void nmi_watchdog_tick (struct pt_regs * regs, unsigned reason) |
@@ -522,14 +524,14 @@ asmlinkage void do_nmi(struct pt_regs * regs, long error_code) | |||
522 | 524 | ||
523 | nmi_enter(); | 525 | nmi_enter(); |
524 | add_pda(__nmi_count,1); | 526 | add_pda(__nmi_count,1); |
525 | if (!nmi_callback(regs, cpu)) | 527 | if (!rcu_dereference(nmi_callback)(regs, cpu)) |
526 | default_do_nmi(regs); | 528 | default_do_nmi(regs); |
527 | nmi_exit(); | 529 | nmi_exit(); |
528 | } | 530 | } |
529 | 531 | ||
530 | void set_nmi_callback(nmi_callback_t callback) | 532 | void set_nmi_callback(nmi_callback_t callback) |
531 | { | 533 | { |
532 | nmi_callback = callback; | 534 | rcu_assign_pointer(nmi_callback, callback); |
533 | } | 535 | } |
534 | 536 | ||
535 | void unset_nmi_callback(void) | 537 | void unset_nmi_callback(void) |