On Wed, Feb 27, 2019 at 08:05:13AM -0800, Ricardo Neri wrote: > CPU architectures that have an NMI watchdog use arch_touch_nmi_watchdog() > to briefly ignore the hardlockup detector. If the architecture does not > have an NMI watchdog, one can be constructed using a source of non- > maskable interrupts. In this case, arch_touch_nmi_watchdog() is common > to any underlying hardware resource used to drive the detector and needs > to be available to other kernel subsystems if hardware different from perf > drives the detector. > > There exists perf-based and HPET-based implementations. Make it available > to the latter. > > For clarity, wrap this function in a separate preprocessor conditional > from functions which are truly specific to the perf-based implementation. > > Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> > Cc: Ashok Raj <ashok.raj@xxxxxxxxx> > Cc: Andi Kleen <andi.kleen@xxxxxxxxx> > Cc: Tony Luck <tony.luck@xxxxxxxxx> > Cc: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx> > Cc: Don Zickus <dzickus@xxxxxxxxxx> > Cc: Nicholas Piggin <npiggin@xxxxxxxxx> > Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx> > Cc: Frederic Weisbecker <frederic@xxxxxxxxxx> > Cc: Alexei Starovoitov <ast@xxxxxxxxxx> > Cc: Babu Moger <babu.moger@xxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> > Cc: Paul Mackerras <paulus@xxxxxxxxx> > Cc: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> > Cc: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Philippe Ombredanne <pombredanne@xxxxxxxx> > Cc: Colin Ian King <colin.king@xxxxxxxxxxxxx> > Cc: Byungchul Park <byungchul.park@xxxxxxx> > Cc: "Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> > Cc: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx> > Cc: Waiman Long <longman@xxxxxxxxxx> > Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > Cc: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx> > Cc: Christoffer Dall <cdall@xxxxxxxxxx> > Cc: Marc Zyngier <marc.zyngier@xxxxxxx> > Cc: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> > Cc: "Ravi V. Shankar" <ravi.v.shankar@xxxxxxxxx> > Cc: x86@xxxxxxxxxx > Cc: sparclinux@xxxxxxxxxxxxxxx > Cc: linuxppc-dev@xxxxxxxxxxxxxxxx > Signed-off-by: Ricardo Neri <ricardo.neri-calderon@xxxxxxxxxxxxxxx> > --- > include/linux/nmi.h | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/include/linux/nmi.h b/include/linux/nmi.h > index 5a8b19749769..bf5ebcfdd590 100644 > --- a/include/linux/nmi.h > +++ b/include/linux/nmi.h > @@ -94,8 +94,16 @@ static inline void hardlockup_detector_disable(void) {} > # define NMI_WATCHDOG_SYSCTL_PERM 0444 > #endif > > -#if defined(CONFIG_HARDLOCKUP_DETECTOR_PERF) > +#if defined(CONFIG_HARDLOCKUP_DETECTOR_PERF) || \ > + defined(CONFIG_X86_HARDLOCKUP_DETECTOR_HPET) Why not instead make CONFIG_X86_HARDLOCKUP_DETECTOR_HPET select CONFIG_HARDLOCKUP_DETECTOR_PERF? Keep the arch-specific details in the arch-specific files and all that. Thanx, Paul > extern void arch_touch_nmi_watchdog(void); > +#else > +# if !defined(CONFIG_HAVE_NMI_WATCHDOG) > +static inline void arch_touch_nmi_watchdog(void) {} > +# endif > +#endif > + > +#if defined(CONFIG_HARDLOCKUP_DETECTOR_PERF) > extern void hardlockup_detector_perf_stop(void); > extern void hardlockup_detector_perf_restart(void); > extern void hardlockup_detector_perf_disable(void); > -- > 2.17.1 >