Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05a4a952 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Linus Torvalds
Browse files

kernel/watchdog: split up config options

Split SOFTLOCKUP_DETECTOR from LOCKUP_DETECTOR, and split
HARDLOCKUP_DETECTOR_PERF from HARDLOCKUP_DETECTOR.

LOCKUP_DETECTOR implies the general boot, sysctl, and programming
interfaces for the lockup detectors.

An architecture that wants to use a hard lockup detector must define
HAVE_HARDLOCKUP_DETECTOR_PERF or HAVE_HARDLOCKUP_DETECTOR_ARCH.

Alternatively an arch can define HAVE_NMI_WATCHDOG, which provides the
minimum arch_touch_nmi_watchdog, and it otherwise does its own thing and
does not implement the LOCKUP_DETECTOR interfaces.

sparc is unusual in that it has started to implement some of the
interfaces, but not fully yet.  It should probably be converted to a full
HAVE_HARDLOCKUP_DETECTOR_ARCH.

[npiggin@gmail.com: fix]
  Link: http://lkml.kernel.org/r/20170617223522.66c0ad88@roar.ozlabs.ibm.com
Link: http://lkml.kernel.org/r/20170616065715.18390-4-npiggin@gmail.com


Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Reviewed-by: default avatarDon Zickus <dzickus@redhat.com>
Reviewed-by: default avatarBabu Moger <babu.moger@oracle.com>
Tested-by: Babu Moger <babu.moger@oracle.com>	[sparc]
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f2e0cff8
Loading
Loading
Loading
Loading
+22 −3
Original line number Original line Diff line number Diff line
@@ -198,9 +198,6 @@ config HAVE_KPROBES_ON_FTRACE
config HAVE_NMI
config HAVE_NMI
	bool
	bool


config HAVE_NMI_WATCHDOG
	depends on HAVE_NMI
	bool
#
#
# An arch should select this if it provides all these things:
# An arch should select this if it provides all these things:
#
#
@@ -288,6 +285,28 @@ config HAVE_PERF_EVENTS_NMI
	  subsystem.  Also has support for calculating CPU cycle events
	  subsystem.  Also has support for calculating CPU cycle events
	  to determine how many clock cycles in a given period.
	  to determine how many clock cycles in a given period.


config HAVE_HARDLOCKUP_DETECTOR_PERF
	bool
	depends on HAVE_PERF_EVENTS_NMI
	help
	  The arch chooses to use the generic perf-NMI-based hardlockup
	  detector. Must define HAVE_PERF_EVENTS_NMI.

config HAVE_NMI_WATCHDOG
	depends on HAVE_NMI
	bool
	help
	  The arch provides a low level NMI watchdog. It provides
	  asm/nmi.h, and defines its own arch_touch_nmi_watchdog().

config HAVE_HARDLOCKUP_DETECTOR_ARCH
	bool
	select HAVE_NMI_WATCHDOG
	help
	  The arch chooses to provide its own hardlockup detector, which is
	  a superset of the HAVE_NMI_WATCHDOG. It also conforms to config
	  interfaces and parameters provided by hardlockup detector subsystem.

config HAVE_PERF_REGS
config HAVE_PERF_REGS
	bool
	bool
	help
	help
+1 −0
Original line number Original line Diff line number Diff line
@@ -197,6 +197,7 @@ config PPC
	select HAVE_OPTPROBES			if PPC64
	select HAVE_OPTPROBES			if PPC64
	select HAVE_PERF_EVENTS
	select HAVE_PERF_EVENTS
	select HAVE_PERF_EVENTS_NMI		if PPC64
	select HAVE_PERF_EVENTS_NMI		if PPC64
	select HAVE_HARDLOCKUP_DETECTOR_PERF	if HAVE_PERF_EVENTS_NMI
	select HAVE_PERF_REGS
	select HAVE_PERF_REGS
	select HAVE_PERF_USER_STACK_DUMP
	select HAVE_PERF_USER_STACK_DUMP
	select HAVE_RCU_TABLE_FREE		if SMP
	select HAVE_RCU_TABLE_FREE		if SMP
+1 −1
Original line number Original line Diff line number Diff line
@@ -752,7 +752,7 @@ struct ppc_pci_io ppc_pci_io;
EXPORT_SYMBOL(ppc_pci_io);
EXPORT_SYMBOL(ppc_pci_io);
#endif
#endif


#ifdef CONFIG_HARDLOCKUP_DETECTOR
#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
u64 hw_nmi_get_sample_period(int watchdog_thresh)
u64 hw_nmi_get_sample_period(int watchdog_thresh)
{
{
	return ppc_proc_freq * watchdog_thresh;
	return ppc_proc_freq * watchdog_thresh;
+1 −0
Original line number Original line Diff line number Diff line
@@ -162,6 +162,7 @@ config X86
	select HAVE_PCSPKR_PLATFORM
	select HAVE_PCSPKR_PLATFORM
	select HAVE_PERF_EVENTS
	select HAVE_PERF_EVENTS
	select HAVE_PERF_EVENTS_NMI
	select HAVE_PERF_EVENTS_NMI
	select HAVE_HARDLOCKUP_DETECTOR_PERF	if HAVE_PERF_EVENTS_NMI
	select HAVE_PERF_REGS
	select HAVE_PERF_REGS
	select HAVE_PERF_USER_STACK_DUMP
	select HAVE_PERF_USER_STACK_DUMP
	select HAVE_REGS_AND_STACK_ACCESS_API
	select HAVE_REGS_AND_STACK_ACCESS_API
+1 −1
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/delay.h>


#ifdef CONFIG_HARDLOCKUP_DETECTOR
#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
u64 hw_nmi_get_sample_period(int watchdog_thresh)
u64 hw_nmi_get_sample_period(int watchdog_thresh)
{
{
	return (u64)(cpu_khz) * 1000 * watchdog_thresh;
	return (u64)(cpu_khz) * 1000 * watchdog_thresh;
Loading