From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756938AbcJMUii (ORCPT ); Thu, 13 Oct 2016 16:38:38 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:32074 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755317AbcJMUi3 (ORCPT ); Thu, 13 Oct 2016 16:38:29 -0400 From: Babu Moger To: mingo@kernel.org, akpm@linux-foundation.org, ak@linux.intel.com, jkosina@suse.cz, baiyaowei@cmss.chinamobile.com, dzickus@redhat.com, atomlin@redhat.com, uobergfe@redhat.com, tj@kernel.org, hidehiro.kawai.ez@hitachi.com, johunt@akamai.com, davem@davemloft.net, sparclinux@vger.kernel.org Cc: linux-kernel@vger.kernel.org, sam@ravnborg.org, babu.moger@oracle.com Subject: [PATCH v2 0/2] Introduce arch specific nmi enable, disable handlers Date: Thu, 13 Oct 2016 13:38:00 -0700 Message-Id: <1476391082-77928-1-git-send-email-babu.moger@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During our testing we noticed that nmi watchdogs in sparc could not be disabled or enabled dynamically using sysctl/proc interface. Sparc uses its own arch specific nmi watchdogs. There is a sysctl and proc interface(proc/sys/kernel/nmi_watchdog) to enable/disable nmi watchdogs. However, that is not working for sparc. There is no interface to feed this parameter to arch specific nmi watchdogs. These patches extend the same sysctl/proc interface to enable or disable these arch specific nmi watchdogs dynamically. Introduced new functions arch_watchdog_nmi_enable and arch_watchdog_nmi_disable which can be implemented in arch specific handlers. If you think there is a better way to do this. Please advice. Tested on sparc. Compile tested on x86. v2: a)Sam Ravnborg's comments about making the definitions visible. With the new approach we dont need those definitions((NMI_WATCHDOG_ENABLED, SOFT_WATCHDOG_ENABLED etc..) outside watchdog.c. So no action. b) Made changes per Don Zickus comments. Don, I could not use your patches as is. Reason is sparc does not define CONFIG_HARDLOCKUP_DETECTOR. So, defining default __weak function did not work for me. However, I have used your idea to define __weak functions arch_watchdog_nmi_enable and arch_watchdog_nmi_disable when CONFIG_HARDLOCKUP_DETECTOR is not defined. I feel this should have very less impact on the races you are concerned about. Please take a look. Feel free to suggest. Patch2 changes: I had to introduce new variable nmi_init_done to synchronize watchdog thread and kernel init thread. v1: Initial version. Discussion thread here http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1245427.html Babu Moger (2): watchdog: Introduce arch_watchdog_nmi_enable and arch_watchdog_nmi_disable sparc: Implement arch_watchdog_nmi_enable and arch_watchdog_nmi_disable arch/sparc/kernel/nmi.c | 41 +++++++++++++++++++++++++++++- kernel/watchdog.c | 65 +++++++++++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 22 deletions(-) From mboxrd@z Thu Jan 1 00:00:00 1970 From: Babu Moger Date: Thu, 13 Oct 2016 20:38:00 +0000 Subject: [PATCH v2 0/2] Introduce arch specific nmi enable, disable handlers Message-Id: <1476391082-77928-1-git-send-email-babu.moger@oracle.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: mingo@kernel.org, akpm@linux-foundation.org, ak@linux.intel.com, jkosina@suse.cz, baiyaowei@cmss.chinamobile.com, dzickus@redhat.com, atomlin@redhat.com, uobergfe@redhat.com, tj@kernel.org, hidehiro.kawai.ez@hitachi.com, johunt@akamai.com, davem@davemloft.net, sparclinux@vger.kernel.org Cc: linux-kernel@vger.kernel.org, sam@ravnborg.org, babu.moger@oracle.com During our testing we noticed that nmi watchdogs in sparc could not be disabled or enabled dynamically using sysctl/proc interface. Sparc uses its own arch specific nmi watchdogs. There is a sysctl and proc interface(proc/sys/kernel/nmi_watchdog) to enable/disable nmi watchdogs. However, that is not working for sparc. There is no interface to feed this parameter to arch specific nmi watchdogs. These patches extend the same sysctl/proc interface to enable or disable these arch specific nmi watchdogs dynamically. Introduced new functions arch_watchdog_nmi_enable and arch_watchdog_nmi_disable which can be implemented in arch specific handlers. If you think there is a better way to do this. Please advice. Tested on sparc. Compile tested on x86. v2: a)Sam Ravnborg's comments about making the definitions visible. With the new approach we dont need those definitions((NMI_WATCHDOG_ENABLED, SOFT_WATCHDOG_ENABLED etc..) outside watchdog.c. So no action. b) Made changes per Don Zickus comments. Don, I could not use your patches as is. Reason is sparc does not define CONFIG_HARDLOCKUP_DETECTOR. So, defining default __weak function did not work for me. However, I have used your idea to define __weak functions arch_watchdog_nmi_enable and arch_watchdog_nmi_disable when CONFIG_HARDLOCKUP_DETECTOR is not defined. I feel this should have very less impact on the races you are concerned about. Please take a look. Feel free to suggest. Patch2 changes: I had to introduce new variable nmi_init_done to synchronize watchdog thread and kernel init thread. v1: Initial version. Discussion thread here http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1245427.html Babu Moger (2): watchdog: Introduce arch_watchdog_nmi_enable and arch_watchdog_nmi_disable sparc: Implement arch_watchdog_nmi_enable and arch_watchdog_nmi_disable arch/sparc/kernel/nmi.c | 41 +++++++++++++++++++++++++++++- kernel/watchdog.c | 65 +++++++++++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 22 deletions(-)