There's the hung_task_panic sysctl, but that's a bit an extreme measure.
As a fallback taint at least the machine.

Our CI uses this to decide when a reboot is necessary, plus to figure
out whether the kernel is still happy.

v2: Works much better when I put the else { add_taint() } at the right
place.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Andrew Morton <a...@linux-foundation.org>
Cc: Tetsuo Handa <penguin-ker...@i-love.sakura.ne.jp>
Cc: Dmitry Vyukov <dvyu...@google.com>
Cc: "Paul E. McKenney" <paul...@linux.ibm.com>
Cc: Valdis Kletnieks <valdis.kletni...@vt.edu>
Cc: Daniel Vetter <daniel.vet...@ffwll.ch>
Cc: Vitaly Kuznetsov <vkuzn...@redhat.com>
Cc: "Liu, Chuansheng" <chuansheng....@intel.com>
---
 kernel/hung_task.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/hung_task.c b/kernel/hung_task.c
index f108a95882c6..d90d98f53ccb 100644
--- a/kernel/hung_task.c
+++ b/kernel/hung_task.c
@@ -117,6 +117,8 @@ static void check_hung_task(struct task_struct *t, unsigned 
long timeout)
                console_verbose();
                hung_task_show_lock = true;
                hung_task_call_panic = true;
+       } else {
+               add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
        }
 
        /*
-- 
2.20.1

Reply via email to