Skip to content

Revised softlockup watchdog improvement patches

Jeremy Fitzhardinge lkml virtualization 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 28 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4Ignore stolen time in the softlockup watchdogkernel/softlockup.c+30 -719 replies
2/4percpu enable flag for softlockup watchdoginclude/linux/sched.h kernel/softlockup.c kernel/time/tick-sched.c+102 -240 replies
3/4Locally disable the softlockup watchdog rather than touching itarch/ia64/kernel/uncached.c drivers/ide/ide-iops.c drivers/ide/ide-taskfile.c +1 more+39 -109 replies
4/4Add global disable/enable for softlockup watchdogdrivers/char/sysrq.c include/linux/sched.h kernel/panic.c +3 more+87 -130 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [patch 0/4] Revised softlockup watchdog improvement patches

Hi Ingo,

This series of patches implements a number of improvements to the softlockup watchdog and its users.

They are:

1. Make the watchdog ignore stolen time

When running under a hypervisor, the kernel may lose an arbitrary amount of time as "stolen time". This may cause the softlockup watchdog to trigger spruiously. Xen and VMI implement sched_clock() as measuring unstolen time, so use that as the timebase for the softlockup watchdog. This also removes a dependency on jiffies.

2. Add a per-cpu enable flag for the watchdog

When the scheduler disables ticks for a specific CPU, this allows the watchdog to be disabled as well. This avoids spurious watchdog errors if a CPU has been tickless for a long time. The existing tick-sched.c code tried to address this by periodically touching the watchdog, but this seems more direct.

3. Use the per-cpu enable flags to temporarily disable the watchdog

Some drivers perform long operations which will cause the watchdog to time out. If we know we're about to start such an operation, disable the watchdog timer for the interim. This is more straightforward than trying to periodically tickle the watchdog timer during the operation, and safer than just doing it once at the start and hoping there's enough time.

4. Add a global disable flag

Sometimes a long operation will affect all CPUs' ability to tickle the watchdog timer. An obvious example is suspend/resume, but it can also happen while generating lots of sysrq output, or other specialized operations. Add global enable/disable calls to deal with these case.