[PATCH 0/2] Fix watchdogd wakeup deferral on RT

From: Julia Cartwright
Date: Fri Sep 28 2018 - 17:04:40 EST


The following two patches solve an issue reported by Steffen Trumtrar
and Tim Sander to the linux-rt-users mailing list. Namely, the wakeup
of the watchdogd thread being starved by an RT task due to the hrtimer
deferral through ktimersoftd (on PREEMPT_RT_FULL).

The first patch adjusts the kthread_worker locking to make use of a raw
spinlock, making it suitable for work item queueing from hardirq context
on PREEMPT_RT. This patch can be applied directly to mainline without
any functional change.

The second patch adjusts the hrtimer used by the watchdog core to be a
_HARD timer (and thus not deferred through ktimersoftd w/ PREEMPT_RT).
This patch depends on hrtimer patches carried in the RT patch, and so
should therefore land there.

Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
Cc: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>
Cc: Tim Sander <tim@xxxxxxxxxxxxxxx>

Julia Cartwright (2):
kthread: convert worker lock to raw spinlock
watchdog, rt: prevent deferral of watchdogd wakeup

drivers/watchdog/watchdog_dev.c | 2 +-
include/linux/kthread.h | 2 +-
kernel/kthread.c | 42 ++++++++++++++++-----------------
3 files changed, 23 insertions(+), 23 deletions(-)

--
2.18.0