From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752086AbdINK54 (ORCPT ); Thu, 14 Sep 2017 06:57:56 -0400 Received: from terminus.zytor.com ([65.50.211.136]:38753 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751860AbdINK5z (ORCPT ); Thu, 14 Sep 2017 06:57:55 -0400 Date: Thu, 14 Sep 2017 03:50:56 -0700 From: tip-bot for Thomas Gleixner Message-ID: Cc: uobergfe@redhat.com, akpm@linux-foundation.org, peterz@infradead.org, mingo@kernel.org, tglx@linutronix.de, npiggin@gmail.com, torvalds@linux-foundation.org, dzickus@redhat.com, linux-kernel@vger.kernel.org, bigeasy@linutronix.de, cmetcalf@mellanox.com, bp@alien8.de, benh@kernel.crashing.org, mpe@ellerman.id.au, hpa@zytor.com Reply-To: tglx@linutronix.de, torvalds@linux-foundation.org, npiggin@gmail.com, akpm@linux-foundation.org, uobergfe@redhat.com, mingo@kernel.org, peterz@infradead.org, benh@kernel.crashing.org, mpe@ellerman.id.au, hpa@zytor.com, linux-kernel@vger.kernel.org, dzickus@redhat.com, bp@alien8.de, cmetcalf@mellanox.com, bigeasy@linutronix.de In-Reply-To: <20170912194148.418497420@linutronix.de> References: <20170912194148.418497420@linutronix.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:core/urgent] watchdog/hardlockup: Clean up hotplug locking mess Git-Commit-ID: ab5fe3ff38ff9653490910cc71dbbedc95a86e41 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: ab5fe3ff38ff9653490910cc71dbbedc95a86e41 Gitweb: http://git.kernel.org/tip/ab5fe3ff38ff9653490910cc71dbbedc95a86e41 Author: Thomas Gleixner AuthorDate: Tue, 12 Sep 2017 21:37:23 +0200 Committer: Ingo Molnar CommitDate: Thu, 14 Sep 2017 11:41:09 +0200 watchdog/hardlockup: Clean up hotplug locking mess All watchdog thread related functions are delegated to the smpboot thread infrastructure, which handles serialization against CPU hotplug correctly. The sysctl interface is completely decoupled from anything which requires CPU hotplug protection. No need to protect the sysctl writes against cpu hotplug anymore. Remove it and add the now required protection to the powerpc arch_nmi_watchdog implementation. Signed-off-by: Thomas Gleixner Reviewed-by: Don Zickus Cc: Andrew Morton Cc: Benjamin Herrenschmidt Cc: Borislav Petkov Cc: Chris Metcalf Cc: Linus Torvalds Cc: Michael Ellerman Cc: Nicholas Piggin Cc: Peter Zijlstra Cc: Sebastian Siewior Cc: Ulrich Obergfell Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/20170912194148.418497420@linutronix.de Signed-off-by: Ingo Molnar --- arch/powerpc/kernel/watchdog.c | 2 ++ kernel/watchdog.c | 6 ------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c index 291af79..dfb0677 100644 --- a/arch/powerpc/kernel/watchdog.c +++ b/arch/powerpc/kernel/watchdog.c @@ -359,6 +359,7 @@ void watchdog_nmi_reconfigure(bool run) { int cpu; + cpus_read_lock(); if (!run) { for_each_cpu(cpu, &wd_cpus_enabled) stop_wd_on_cpu(cpu); @@ -367,6 +368,7 @@ void watchdog_nmi_reconfigure(bool run) for_each_cpu_and(cpu, cpu_online_mask, &watchdog_cpumask) start_wd_on_cpu(cpu); } + cpus_read_unlock(); } /* diff --git a/kernel/watchdog.c b/kernel/watchdog.c index 5eb1196..f6ef163 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -664,7 +664,6 @@ static int proc_watchdog_common(int which, struct ctl_table *table, int write, { int err, old, *param = table->data; - cpu_hotplug_disable(); mutex_lock(&watchdog_mutex); if (!write) { @@ -681,7 +680,6 @@ static int proc_watchdog_common(int which, struct ctl_table *table, int write, proc_watchdog_update(); } mutex_unlock(&watchdog_mutex); - cpu_hotplug_enable(); return err; } @@ -725,7 +723,6 @@ int proc_watchdog_thresh(struct ctl_table *table, int write, { int err, old; - cpu_hotplug_disable(); mutex_lock(&watchdog_mutex); old = READ_ONCE(watchdog_thresh); @@ -735,7 +732,6 @@ int proc_watchdog_thresh(struct ctl_table *table, int write, proc_watchdog_update(); mutex_unlock(&watchdog_mutex); - cpu_hotplug_enable(); return err; } @@ -750,7 +746,6 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write, { int err; - cpu_hotplug_disable(); mutex_lock(&watchdog_mutex); err = proc_do_large_bitmap(table, write, buffer, lenp, ppos); @@ -758,7 +753,6 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write, proc_watchdog_update(); mutex_unlock(&watchdog_mutex); - cpu_hotplug_enable(); return err; } #endif /* CONFIG_SYSCTL */