All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Piggin <npiggin@gmail.com>
To: Don Zickus <dzickus@redhat.com>
Cc: Nicholas Piggin <npiggin@gmail.com>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: [PATCH 4/4] watchdog: provide watchdog_reconfigure() for arch watchdogs
Date: Thu, 25 May 2017 18:28:56 +1000	[thread overview]
Message-ID: <20170525082856.21685-5-npiggin@gmail.com> (raw)
In-Reply-To: <20170525082856.21685-1-npiggin@gmail.com>

After reconfiguring watchdog sysctls etc., architecture specific
watchdogs may not get all their parameters updated.

watchdog_reconfigure() can be implemented to pull the new values
in and set the arch NMI watchdog.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
 kernel/watchdog.c | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index deb010505646..d2996f5bf551 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -120,6 +120,11 @@ void __weak watchdog_nmi_disable(unsigned int cpu)
 {
 }
 
+void __weak watchdog_nmi_reconfigure(void)
+{
+}
+
+
 #ifdef CONFIG_SOFTLOCKUP_DETECTOR
 
 /* Helper for online, unparked cpus. */
@@ -597,6 +602,12 @@ static void watchdog_disable_all_cpus(void)
 	}
 }
 
+static int watchdog_update_cpus(void)
+{
+	return smpboot_update_cpumask_percpu_thread(
+		    &watchdog_threads, &watchdog_cpumask);
+}
+
 #else /* SOFTLOCKUP */
 static int watchdog_park_threads(void)
 {
@@ -616,6 +627,10 @@ static void watchdog_disable_all_cpus(void)
 {
 }
 
+static int watchdog_update_cpus(void)
+{
+}
+
 static void set_sample_period(void)
 {
 }
@@ -648,6 +663,8 @@ int lockup_detector_suspend(void)
 		watchdog_enabled = 0;
 	}
 
+	watchdog_nmi_reconfigure();
+
 	mutex_unlock(&watchdog_proc_mutex);
 
 	return ret;
@@ -668,6 +685,8 @@ void lockup_detector_resume(void)
 	if (watchdog_running && !watchdog_suspended)
 		watchdog_unpark_threads();
 
+	watchdog_nmi_reconfigure();
+
 	mutex_unlock(&watchdog_proc_mutex);
 	put_online_cpus();
 }
@@ -693,6 +712,8 @@ static int proc_watchdog_update(void)
 	else
 		watchdog_disable_all_cpus();
 
+	watchdog_nmi_reconfigure();
+
 	return err;
 
 }
@@ -878,12 +899,11 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write,
 			 * a temporary cpumask, so we are likely not in a
 			 * position to do much else to make things better.
 			 */
-#ifdef CONFIG_SOFTLOCKUP_DETECTOR
-			if (smpboot_update_cpumask_percpu_thread(
-				    &watchdog_threads, &watchdog_cpumask) != 0)
+			if (watchdog_update_cpus() != 0)
 				pr_err("cpumask update failed\n");
-#endif
 		}
+
+		watchdog_nmi_reconfigure();
 	}
 out:
 	mutex_unlock(&watchdog_proc_mutex);
-- 
2.11.0

  parent reply	other threads:[~2017-05-25  8:28 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-25  8:28 [PATCH 0/4][V2] Improve watchdog config for arch watchdogs Nicholas Piggin
2017-05-25  8:28 ` [PATCH 1/4] watchdog: remove unused declaration Nicholas Piggin
2017-05-25  8:28 ` [PATCH 2/4] watchdog: introduce arch_touch_nmi_watchdog() Nicholas Piggin
2017-05-25 13:55   ` Don Zickus
2017-05-26  0:31     ` Nicholas Piggin
2017-05-26 14:05       ` Don Zickus
2017-05-25  8:28 ` [PATCH 3/4] watchdog: split out config options Nicholas Piggin
2017-05-25 11:30   ` kbuild test robot
2017-05-25 11:30     ` kbuild test robot
2017-05-25 11:30     ` kbuild test robot
2017-05-25 12:09   ` kbuild test robot
2017-05-25 12:09     ` kbuild test robot
2017-05-25 12:09     ` kbuild test robot
2017-05-25  8:28 ` Nicholas Piggin [this message]
2017-05-25 14:08   ` [PATCH 4/4] watchdog: provide watchdog_reconfigure() for arch watchdogs Don Zickus
2017-05-26  0:39     ` Nicholas Piggin
2017-05-26 14:21       ` Don Zickus
  -- strict thread matches above, loose matches on Subject: below --
2017-05-30  1:26 [PATCH 0/4][V3] Improve watchdog config " Nicholas Piggin
2017-05-30  1:26 ` [PATCH 4/4] watchdog: Provide watchdog_reconfigure() " Nicholas Piggin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170525082856.21685-5-npiggin@gmail.com \
    --to=npiggin@gmail.com \
    --cc=dzickus@redhat.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.