Skip to content

Commit 802c64b

Browse files
committed
sparc64: On non-Niagara, need to touch NMI watchdog in NOHZ mode.
When we're idling in NOHZ mode, timer interrupts are not running. Evidence of processing timer interrupts is what the NMI watchdog uses to determine if the CPU is stuck. On Niagara, we'll yield the cpu. This will make the cpu, at worst, hang out in the hypervisor until an interrupt arrives. This will prevent the NMI watchdog timer from firing. However on non-Niagara we just loop executing instructions which will cause the NMI watchdog to keep firing. It won't see timer interrupts happening so it will think the cpu is stuck. Fix this by touching the NMI watchdog in the cpu idle loop on non-Niagara machines. Signed-off-by: David S. Miller <[email protected]>
1 parent e5553a6 commit 802c64b

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

arch/sparc/kernel/process_64.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <linux/cpu.h>
3030
#include <linux/elfcore.h>
3131
#include <linux/sysrq.h>
32+
#include <linux/nmi.h>
3233

3334
#include <asm/uaccess.h>
3435
#include <asm/system.h>
@@ -52,8 +53,10 @@
5253

5354
static void sparc64_yield(int cpu)
5455
{
55-
if (tlb_type != hypervisor)
56+
if (tlb_type != hypervisor) {
57+
touch_nmi_watchdog();
5658
return;
59+
}
5760

5861
clear_thread_flag(TIF_POLLING_NRFLAG);
5962
smp_mb__after_clear_bit();

0 commit comments

Comments
 (0)