powerpc: Fix powerpc-specific watchdog build configuration
authorNicholas Piggin <npiggin@gmail.com>
Tue, 1 Aug 2017 12:00:52 +0000 (22:00 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 10 Aug 2017 12:30:01 +0000 (22:30 +1000)
The powerpc kernel/watchdog.o should be built when HARDLOCKUP_DETECTOR
and HAVE_HARDLOCKUP_DETECTOR_ARCH are both selected. If only the former
is selected, then the generic perf watchdog has been selected.

To simplify this check, introduce a new Kconfig symbol PPC_WATCHDOG that
depends on both. This Kconfig option means the powerpc specific
watchdog is enabled.

Without this patch, Book3E will attempt to build the powerpc watchdog.

Fixes: 2104180a53 ("powerpc/64s: implement arch-specific hardlockup watchdog")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Kconfig
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/exceptions-64s.S

index 36f858c37ca70b576e851a52ada48e2400de86a1..2a5060aa1674fae4e9fba3355c0fd651cf68ed9d 100644 (file)
@@ -85,6 +85,17 @@ config NMI_IPI
        depends on SMP && (DEBUGGER || KEXEC_CORE || HARDLOCKUP_DETECTOR)
        default y
 
+config PPC_WATCHDOG
+       bool
+       depends on HARDLOCKUP_DETECTOR
+       depends on HAVE_HARDLOCKUP_DETECTOR_ARCH
+       default y
+       help
+         This is a placeholder when the powerpc hardlockup detector
+         watchdog is selected (arch/powerpc/kernel/watchdog.c). It is
+         seleted via the generic lockup detector menu which is why we
+         have no standalone config option for it here.
+
 config STACKTRACE_SUPPORT
        bool
        default y
index 4aa7c147e4472257564200a8a55a742c78989023..5622bd0248e5a300c72180a8ceb5aa5d484156ca 100644 (file)
@@ -38,7 +38,7 @@ obj-$(CONFIG_PPC64)           += setup_64.o sys_ppc32.o \
                                   signal_64.o ptrace32.o \
                                   paca.o nvram_64.o firmware.o
 obj-$(CONFIG_VDSO32)           += vdso32/
-obj-$(CONFIG_HARDLOCKUP_DETECTOR)      += watchdog.o
+obj-$(CONFIG_PPC_WATCHDOG)     += watchdog.o
 obj-$(CONFIG_HAVE_HW_BREAKPOINT)       += hw_breakpoint.o
 obj-$(CONFIG_PPC_BOOK3S_64)    += cpu_setup_ppc970.o cpu_setup_pa6t.o
 obj-$(CONFIG_PPC_BOOK3S_64)    += cpu_setup_power.o
index ab043a8cac92ae60f72fa7fbb115bad320d1b058..a42308b2187b5224c93305194a705328202bdeff 100644 (file)
@@ -1314,7 +1314,7 @@ EXC_REAL_NONE(0x1800, 0x100)
 EXC_VIRT_NONE(0x5800, 0x100)
 #endif
 
-#if defined(CONFIG_HARDLOCKUP_DETECTOR) && defined(CONFIG_HAVE_HARDLOCKUP_DETECTOR_ARCH)
+#ifdef CONFIG_PPC_WATCHDOG
 
 #define MASKED_DEC_HANDLER_LABEL 3f
 
@@ -1335,10 +1335,10 @@ EXC_COMMON_BEGIN(soft_nmi_common)
                        ADD_NVGPRS;ADD_RECONCILE)
        b       ret_from_except
 
-#else
+#else /* CONFIG_PPC_WATCHDOG */
 #define MASKED_DEC_HANDLER_LABEL 2f /* normal return */
 #define MASKED_DEC_HANDLER(_H)
-#endif
+#endif /* CONFIG_PPC_WATCHDOG */
 
 /*
  * An interrupt came in while soft-disabled. We set paca->irq_happened, then: