(In reply to Thomas Blume from comment #14) > # strace -r -f -o /tmp/strace-test-watchdog ./test-watchdog > Hardware watchdog 'HPE iLO2+ HW Watchdog Timer', version 0 > [58494.591725] hpwdt: tblume: reload variable is: 234 Ok, that's the hpwdt_ping() call in hpwdt_open(). > [58494.592304] hpwdt: tblume: New timer passed in is 10 seconds > Set hardware watchdog to 10s. > [58494.594422] hpwdt: tblume: reload variable is: 78 That looks ok too: 10 seconds * 1000 / 128 = 78.125 > [58494.594741] hpwdt: tblume: reload variable is: 78 > Pinging... > [58494.595855] hpwdt: tblume: reload variable is: 78 > Pinging... > [58494.597223] hpwdt: tblume: reload variable is: 78 > Pinging... > [58499.598933] hpwdt: tblume: reload variable is: 78 > Pinging... > [58504.600657] hpwdt: tblume: reload variable is: 78 > [58509.602239] hpwdt: tblume: reload variable is: 78 > [58509.604433] systemd-journald[376]: Sent WATCHDOG=1 notification. > Pinging... > [58514.603684] hpwdt: tblume: reload variable is: 78 So that's the 5 pings. I guess you should add a pr_err() to hpwdt_pretimeout() before the return: pr_err("%s: NMI raised\n", __func__); //tblume: suppress NMI return NMI_HANDLED; so that we can see when it hits.