From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AC10C433ED for ; Tue, 11 May 2021 23:59:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 181146191D for ; Tue, 11 May 2021 23:59:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229736AbhELAAy (ORCPT ); Tue, 11 May 2021 20:00:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:46160 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229637AbhELAAx (ORCPT ); Tue, 11 May 2021 20:00:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D01356146E; Tue, 11 May 2021 23:59:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1620777585; bh=UTJ5l5v3D48Hlv/7pI8m2rkeAkehctjqCth0hve4iSk=; h=Date:From:To:Subject:From; b=mZ+uyqt7/fmWlVA+aXW6eQJZwSNZXTtLlJFs0hFzlAJWlZXELl2xDzF0wOqJ1vvVU S14wad5nr/AMNnpruiF0vp7zORChJ97WDXMouseD/J5aaj2bsQl83VeAk/v6J4xGr4 DrZs0RcFg6QizlW59QSfl22gHOzvGshPE6MhQCtM= Date: Tue, 11 May 2021 16:59:44 -0700 From: akpm@linux-foundation.org To: akpm@linux-foundation.org, andriy.shevchenko@linux.intel.com, arnd@arndb.de, bjorn.andersson@linaro.org, christian.brauner@ubuntu.com, cminyard@mvista.com, deller@gmx.de, keescook@chromium.org, linux@rasmusvillemoes.dk, mcgrof@kernel.org, mm-commits@vger.kernel.org, rppt@linux.ibm.com, sboyd@kernel.org, sre@kernel.org, tsbogend@alpha.franken.de, wei.liu@kernel.org Subject: + kernelh-split-out-panic-and-oops-helpers.patch added to -mm tree Message-ID: <20210511235944.KaqglilsT%akpm@linux-foundation.org> User-Agent: s-nail v14.8.16 Precedence: bulk Reply-To: linux-kernel@vger.kernel.org List-ID: X-Mailing-List: mm-commits@vger.kernel.org The patch titled Subject: kernel.h: split out panic and oops helpers has been added to the -mm tree. Its filename is kernelh-split-out-panic-and-oops-helpers.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/kernelh-split-out-panic-and-oops-helpers.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/kernelh-split-out-panic-and-oops-helpers.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Andy Shevchenko Subject: kernel.h: split out panic and oops helpers kernel.h is being used as a dump for all kinds of stuff for a long time. Here is the attempt to start cleaning it up by splitting out panic and oops helpers. There are several purposes of doing this: - dropping dependency in bug.h - dropping a loop by moving out panic_notifier.h - unload kernel.h from something which has its own domain At the same time convert users tree-wide to use new headers, although for the time being include new header back to kernel.h to avoid twisted indirected includes for existing users. Link: https://lkml.kernel.org/r/20210511074137.33666-1-andriy.shevchenko@linux.intel.com Signed-off-by: Andy Shevchenko Reviewed-by: Bjorn Andersson Co-developed-by: Andrew Morton Acked-by: Mike Rapoport Acked-by: Corey Minyard Acked-by: Christian Brauner Acked-by: Arnd Bergmann Acked-by: Kees Cook Acked-by: Wei Liu Acked-by: Rasmus Villemoes Signed-off-by: Andrew Morton Acked-by: Sebastian Reichel Acked-by: Luis Chamberlain Acked-by: Stephen Boyd Acked-by: Thomas Bogendoerfer Acked-by: Helge Deller # parisc Signed-off-by: Andrew Morton --- arch/alpha/kernel/setup.c | 2 arch/arm64/kernel/setup.c | 1 arch/mips/kernel/relocate.c | 1 arch/mips/sgi-ip22/ip22-reset.c | 1 arch/mips/sgi-ip32/ip32-reset.c | 1 arch/parisc/kernel/pdc_chassis.c | 1 arch/powerpc/kernel/setup-common.c | 1 arch/s390/kernel/ipl.c | 1 arch/sparc/kernel/sstate.c | 1 arch/um/drivers/mconsole_kern.c | 1 arch/um/kernel/um_arch.c | 1 arch/x86/include/asm/desc.h | 1 arch/x86/kernel/cpu/mshyperv.c | 1 arch/x86/kernel/setup.c | 1 arch/x86/purgatory/purgatory.c | 2 arch/x86/xen/enlighten.c | 1 arch/xtensa/platforms/iss/setup.c | 1 drivers/bus/brcmstb_gisb.c | 1 drivers/char/ipmi/ipmi_msghandler.c | 1 drivers/clk/analogbits/wrpll-cln28hpc.c | 4 drivers/edac/altera_edac.c | 1 drivers/firmware/google/gsmi.c | 1 drivers/hv/vmbus_drv.c | 1 drivers/hwtracing/coresight/coresight-cpu-debug.c | 1 drivers/leds/trigger/ledtrig-activity.c | 1 drivers/leds/trigger/ledtrig-heartbeat.c | 1 drivers/leds/trigger/ledtrig-panic.c | 1 drivers/misc/bcm-vk/bcm_vk_dev.c | 1 drivers/misc/ibmasm/heartbeat.c | 1 drivers/misc/pvpanic/pvpanic.c | 1 drivers/net/ipa/ipa_smp2p.c | 1 drivers/parisc/power.c | 1 drivers/power/reset/ltc2952-poweroff.c | 1 drivers/remoteproc/remoteproc_core.c | 1 drivers/s390/char/con3215.c | 1 drivers/s390/char/con3270.c | 1 drivers/s390/char/sclp.c | 1 drivers/s390/char/sclp_con.c | 1 drivers/s390/char/sclp_vt220.c | 1 drivers/s390/char/zcore.c | 1 drivers/soc/bcm/brcmstb/pm/pm-arm.c | 1 drivers/staging/olpc_dcon/olpc_dcon.c | 1 drivers/video/fbdev/hyperv_fb.c | 1 include/asm-generic/bug.h | 3 include/linux/kernel.h | 84 ---------- include/linux/panic.h | 98 ++++++++++++ include/linux/panic_notifier.h | 12 + kernel/hung_task.c | 1 kernel/kexec_core.c | 1 kernel/panic.c | 1 kernel/rcu/tree.c | 2 kernel/sysctl.c | 1 kernel/trace/trace.c | 1 53 files changed, 167 insertions(+), 85 deletions(-) --- a/arch/alpha/kernel/setup.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/alpha/kernel/setup.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +47,6 @@ #include #include -extern struct atomic_notifier_head panic_notifier_list; static int alpha_panic_event(struct notifier_block *, unsigned long, void *); static struct notifier_block alpha_panic_block = { alpha_panic_event, --- a/arch/arm64/kernel/setup.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/arm64/kernel/setup.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include --- a/arch/mips/kernel/relocate.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/mips/kernel/relocate.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include --- a/arch/mips/sgi-ip22/ip22-reset.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/mips/sgi-ip22/ip22-reset.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include --- a/arch/mips/sgi-ip32/ip32-reset.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/mips/sgi-ip32/ip32-reset.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include --- a/arch/parisc/kernel/pdc_chassis.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/parisc/kernel/pdc_chassis.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include --- a/arch/powerpc/kernel/setup-common.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/powerpc/kernel/setup-common.c @@ -9,6 +9,7 @@ #undef DEBUG #include +#include #include #include #include --- a/arch/s390/kernel/ipl.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/s390/kernel/ipl.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include --- a/arch/sparc/kernel/sstate.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/sparc/kernel/sstate.c @@ -6,6 +6,7 @@ #include #include +#include #include #include --- a/arch/um/drivers/mconsole_kern.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/um/drivers/mconsole_kern.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include --- a/arch/um/kernel/um_arch.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/um/kernel/um_arch.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include --- a/arch/x86/include/asm/desc.h~kernelh-split-out-panic-and-oops-helpers +++ a/arch/x86/include/asm/desc.h @@ -9,6 +9,7 @@ #include #include +#include #include #include --- a/arch/x86/kernel/cpu/mshyperv.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/x86/kernel/cpu/mshyperv.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include --- a/arch/x86/kernel/setup.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/x86/kernel/setup.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include --- a/arch/x86/purgatory/purgatory.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/x86/purgatory/purgatory.c @@ -9,6 +9,8 @@ */ #include +#include +#include #include #include --- a/arch/x86/xen/enlighten.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/x86/xen/enlighten.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include --- a/arch/xtensa/platforms/iss/setup.c~kernelh-split-out-panic-and-oops-helpers +++ a/arch/xtensa/platforms/iss/setup.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include --- a/drivers/bus/brcmstb_gisb.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/bus/brcmstb_gisb.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include --- a/drivers/char/ipmi/ipmi_msghandler.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/char/ipmi/ipmi_msghandler.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include --- a/drivers/clk/analogbits/wrpll-cln28hpc.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/clk/analogbits/wrpll-cln28hpc.c @@ -23,8 +23,12 @@ #include #include +#include #include #include +#include +#include + #include /* MIN_INPUT_FREQ: minimum input clock frequency, in Hz (Fref_min) */ --- a/drivers/edac/altera_edac.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/edac/altera_edac.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include --- a/drivers/firmware/google/gsmi.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/firmware/google/gsmi.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include --- a/drivers/hv/vmbus_drv.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/hv/vmbus_drv.c @@ -25,6 +25,7 @@ #include #include +#include #include #include #include --- a/drivers/hwtracing/coresight/coresight-cpu-debug.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/hwtracing/coresight/coresight-cpu-debug.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include --- a/drivers/leds/trigger/ledtrig-activity.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/leds/trigger/ledtrig-activity.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include --- a/drivers/leds/trigger/ledtrig-heartbeat.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/leds/trigger/ledtrig-heartbeat.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include --- a/drivers/leds/trigger/ledtrig-panic.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/leds/trigger/ledtrig-panic.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "../leds.h" --- a/drivers/misc/bcm-vk/bcm_vk_dev.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/misc/bcm-vk/bcm_vk_dev.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include --- a/drivers/misc/ibmasm/heartbeat.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/misc/ibmasm/heartbeat.c @@ -9,6 +9,7 @@ */ #include +#include #include "ibmasm.h" #include "dot_command.h" #include "lowlevel.h" --- a/drivers/misc/pvpanic/pvpanic.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/misc/pvpanic/pvpanic.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include --- a/drivers/net/ipa/ipa_smp2p.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/net/ipa/ipa_smp2p.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include --- a/drivers/parisc/power.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/parisc/power.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include --- a/drivers/power/reset/ltc2952-poweroff.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/power/reset/ltc2952-poweroff.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include --- a/drivers/remoteproc/remoteproc_core.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/remoteproc/remoteproc_core.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include --- a/drivers/s390/char/con3215.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/con3215.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include /* ASYNC_* flags */ #include --- a/drivers/s390/char/con3270.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/con3270.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include --- a/drivers/s390/char/sclp.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/sclp.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include --- a/drivers/s390/char/sclp_con.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/sclp_con.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include --- a/drivers/s390/char/sclp_vt220.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/sclp_vt220.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include --- a/drivers/s390/char/zcore.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/s390/char/zcore.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include --- a/drivers/soc/bcm/brcmstb/pm/pm-arm.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/soc/bcm/brcmstb/pm/pm-arm.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include --- a/drivers/staging/olpc_dcon/olpc_dcon.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/staging/olpc_dcon/olpc_dcon.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include --- a/drivers/video/fbdev/hyperv_fb.c~kernelh-split-out-panic-and-oops-helpers +++ a/drivers/video/fbdev/hyperv_fb.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include --- a/include/asm-generic/bug.h~kernelh-split-out-panic-and-oops-helpers +++ a/include/asm-generic/bug.h @@ -17,7 +17,8 @@ #endif #ifndef __ASSEMBLY__ -#include +#include +#include #ifdef CONFIG_BUG --- a/include/linux/kernel.h~kernelh-split-out-panic-and-oops-helpers +++ a/include/linux/kernel.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -72,7 +73,6 @@ #define lower_32_bits(n) ((u32)((n) & 0xffffffff)) struct completion; -struct pt_regs; struct user; #ifdef CONFIG_PREEMPT_VOLUNTARY @@ -177,14 +177,6 @@ void __might_fault(const char *file, int static inline void might_fault(void) { } #endif -extern struct atomic_notifier_head panic_notifier_list; -extern long (*panic_blink)(int state); -__printf(1, 2) -void panic(const char *fmt, ...) __noreturn __cold; -void nmi_panic(struct pt_regs *regs, const char *msg); -extern void oops_enter(void); -extern void oops_exit(void); -extern bool oops_may_print(void); void do_exit(long error_code) __noreturn; void complete_and_exit(struct completion *, long) __noreturn; @@ -370,52 +362,8 @@ extern int __kernel_text_address(unsigne extern int kernel_text_address(unsigned long addr); extern int func_ptr_is_kernel_text(void *ptr); -#ifdef CONFIG_SMP -extern unsigned int sysctl_oops_all_cpu_backtrace; -#else -#define sysctl_oops_all_cpu_backtrace 0 -#endif /* CONFIG_SMP */ - extern void bust_spinlocks(int yes); -extern int panic_timeout; -extern unsigned long panic_print; -extern int panic_on_oops; -extern int panic_on_unrecovered_nmi; -extern int panic_on_io_nmi; -extern int panic_on_warn; -extern unsigned long panic_on_taint; -extern bool panic_on_taint_nousertaint; -extern int sysctl_panic_on_rcu_stall; -extern int sysctl_max_rcu_stall_to_panic; -extern int sysctl_panic_on_stackoverflow; - -extern bool crash_kexec_post_notifiers; - -/* - * panic_cpu is used for synchronizing panic() and crash_kexec() execution. It - * holds a CPU number which is executing panic() currently. A value of - * PANIC_CPU_INVALID means no CPU has entered panic() or crash_kexec(). - */ -extern atomic_t panic_cpu; -#define PANIC_CPU_INVALID -1 -/* - * Only to be used by arch init code. If the user over-wrote the default - * CONFIG_PANIC_TIMEOUT, honor it. - */ -static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout) -{ - if (panic_timeout == arch_default_timeout) - panic_timeout = timeout; -} -extern const char *print_tainted(void); -enum lockdep_ok { - LOCKDEP_STILL_OK, - LOCKDEP_NOW_UNRELIABLE -}; -extern void add_taint(unsigned flag, enum lockdep_ok); -extern int test_taint(unsigned flag); -extern unsigned long get_taint(void); extern int root_mountflags; extern bool early_boot_irqs_disabled; @@ -434,36 +382,6 @@ extern enum system_states { SYSTEM_SUSPEND, } system_state; -/* This cannot be an enum because some may be used in assembly source. */ -#define TAINT_PROPRIETARY_MODULE 0 -#define TAINT_FORCED_MODULE 1 -#define TAINT_CPU_OUT_OF_SPEC 2 -#define TAINT_FORCED_RMMOD 3 -#define TAINT_MACHINE_CHECK 4 -#define TAINT_BAD_PAGE 5 -#define TAINT_USER 6 -#define TAINT_DIE 7 -#define TAINT_OVERRIDDEN_ACPI_TABLE 8 -#define TAINT_WARN 9 -#define TAINT_CRAP 10 -#define TAINT_FIRMWARE_WORKAROUND 11 -#define TAINT_OOT_MODULE 12 -#define TAINT_UNSIGNED_MODULE 13 -#define TAINT_SOFTLOCKUP 14 -#define TAINT_LIVEPATCH 15 -#define TAINT_AUX 16 -#define TAINT_RANDSTRUCT 17 -#define TAINT_FLAGS_COUNT 18 -#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1) - -struct taint_flag { - char c_true; /* character printed when tainted */ - char c_false; /* character printed when not tainted */ - bool module; /* also show as a per-module taint flag */ -}; - -extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT]; - extern const char hex_asc[]; #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] #define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] --- /dev/null +++ a/include/linux/panic.h @@ -0,0 +1,98 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_PANIC_H +#define _LINUX_PANIC_H + +#include +#include + +struct pt_regs; + +extern long (*panic_blink)(int state); +__printf(1, 2) +void panic(const char *fmt, ...) __noreturn __cold; +void nmi_panic(struct pt_regs *regs, const char *msg); +extern void oops_enter(void); +extern void oops_exit(void); +extern bool oops_may_print(void); + +#ifdef CONFIG_SMP +extern unsigned int sysctl_oops_all_cpu_backtrace; +#else +#define sysctl_oops_all_cpu_backtrace 0 +#endif /* CONFIG_SMP */ + +extern int panic_timeout; +extern unsigned long panic_print; +extern int panic_on_oops; +extern int panic_on_unrecovered_nmi; +extern int panic_on_io_nmi; +extern int panic_on_warn; + +extern unsigned long panic_on_taint; +extern bool panic_on_taint_nousertaint; + +extern int sysctl_panic_on_rcu_stall; +extern int sysctl_max_rcu_stall_to_panic; +extern int sysctl_panic_on_stackoverflow; + +extern bool crash_kexec_post_notifiers; + +/* + * panic_cpu is used for synchronizing panic() and crash_kexec() execution. It + * holds a CPU number which is executing panic() currently. A value of + * PANIC_CPU_INVALID means no CPU has entered panic() or crash_kexec(). + */ +extern atomic_t panic_cpu; +#define PANIC_CPU_INVALID -1 + +/* + * Only to be used by arch init code. If the user over-wrote the default + * CONFIG_PANIC_TIMEOUT, honor it. + */ +static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout) +{ + if (panic_timeout == arch_default_timeout) + panic_timeout = timeout; +} + +/* This cannot be an enum because some may be used in assembly source. */ +#define TAINT_PROPRIETARY_MODULE 0 +#define TAINT_FORCED_MODULE 1 +#define TAINT_CPU_OUT_OF_SPEC 2 +#define TAINT_FORCED_RMMOD 3 +#define TAINT_MACHINE_CHECK 4 +#define TAINT_BAD_PAGE 5 +#define TAINT_USER 6 +#define TAINT_DIE 7 +#define TAINT_OVERRIDDEN_ACPI_TABLE 8 +#define TAINT_WARN 9 +#define TAINT_CRAP 10 +#define TAINT_FIRMWARE_WORKAROUND 11 +#define TAINT_OOT_MODULE 12 +#define TAINT_UNSIGNED_MODULE 13 +#define TAINT_SOFTLOCKUP 14 +#define TAINT_LIVEPATCH 15 +#define TAINT_AUX 16 +#define TAINT_RANDSTRUCT 17 +#define TAINT_FLAGS_COUNT 18 +#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1) + +struct taint_flag { + char c_true; /* character printed when tainted */ + char c_false; /* character printed when not tainted */ + bool module; /* also show as a per-module taint flag */ +}; + +extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT]; + +enum lockdep_ok { + LOCKDEP_STILL_OK, + LOCKDEP_NOW_UNRELIABLE, +}; + +extern const char *print_tainted(void); +extern void add_taint(unsigned flag, enum lockdep_ok); +extern int test_taint(unsigned flag); +extern unsigned long get_taint(void); + +#endif /* _LINUX_PANIC_H */ --- /dev/null +++ a/include/linux/panic_notifier.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_PANIC_NOTIFIERS_H +#define _LINUX_PANIC_NOTIFIERS_H + +#include +#include + +extern struct atomic_notifier_head panic_notifier_list; + +extern bool crash_kexec_post_notifiers; + +#endif /* _LINUX_PANIC_NOTIFIERS_H */ --- a/kernel/hung_task.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/hung_task.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include --- a/kernel/kexec_core.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/kexec_core.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include --- a/kernel/panic.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/panic.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include --- a/kernel/rcu/tree.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/rcu/tree.c @@ -32,6 +32,8 @@ #include #include #include +#include +#include #include #include #include --- a/kernel/sysctl.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/sysctl.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include --- a/kernel/trace/trace.c~kernelh-split-out-panic-and-oops-helpers +++ a/kernel/trace/trace.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include _ Patches currently in -mm which might be from andriy.shevchenko@linux.intel.com are kernelh-split-out-panic-and-oops-helpers.patch lib-string_helpers-switch-to-use-bit-macro.patch lib-string_helpers-move-escape_np-check-inside-else-branch-in-a-loop.patch lib-string_helpers-drop-indentation-level-in-string_escape_mem.patch lib-string_helpers-introduce-escape_na-for-escaping-non-ascii.patch lib-string_helpers-introduce-escape_nap-to-escape-non-ascii-and-non-printable.patch lib-string_helpers-allow-to-append-additional-characters-to-be-escaped.patch lib-test-string_helpers-print-flags-in-hexadecimal-format.patch lib-test-string_helpers-get-rid-of-trailing-comma-in-terminators.patch lib-test-string_helpers-add-test-cases-for-new-features.patch maintainers-add-myself-as-designated-reviewer-for-generic-string-library.patch seq_file-introduce-seq_escape_mem.patch seq_file-add-seq_escape_str-as-replica-of-string_escape_str.patch seq_file-convert-seq_escape-to-use-seq_escape_str.patch nfsd-avoid-non-flexible-api-in-seq_quote_mem.patch seq_file-drop-unused-_escape_mem_ascii.patch