git: 0e9e3016b9db - stable/12 - LinuxKPI: Add sysctl(8) knob to control verbosity of WARN_ON's.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 12 Nov 2021 14:44:12 UTC
The branch stable/12 has been updated by hselasky:
URL: https://cgit.FreeBSD.org/src/commit/?id=0e9e3016b9db4572f78ebb7cf475e8fae84e37df
commit 0e9e3016b9db4572f78ebb7cf475e8fae84e37df
Author: Hans Petter Selasky <hselasky@FreeBSD.org>
AuthorDate: 2021-11-12 14:43:52 +0000
Commit: Hans Petter Selasky <hselasky@FreeBSD.org>
CommitDate: 2021-11-12 14:43:52 +0000
LinuxKPI: Add sysctl(8) knob to control verbosity of WARN_ON's.
The purpose of this change is to reduce the amount of dmesg(8) noise when
VT switching after a panic.
Submitted by: Greg V <greg@unrelenting.technology>
Differential Revision: https://reviews.freebsd.org/D30174
Sponsored by: NVIDIA Networking
(cherry picked from commit 2390a1441effaba0e3d0f2f447f448aaf20428f1)
---
sys/compat/linuxkpi/common/include/linux/kernel.h | 25 +++++++++++++----------
sys/compat/linuxkpi/common/src/linux_compat.c | 5 +++++
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h
index 36d89cf83557..9e96c9935e45 100644
--- a/sys/compat/linuxkpi/common/include/linux/kernel.h
+++ b/sys/compat/linuxkpi/common/include/linux/kernel.h
@@ -105,28 +105,31 @@ extern const volatile int lkpi_build_bug_on_zero;
} \
} while (0)
+extern int linuxkpi_warn_dump_stack;
#define WARN_ON(cond) ({ \
- bool __ret = (cond); \
- if (__ret) { \
+ bool __ret = (cond); \
+ if (__ret) { \
printf("WARNING %s failed at %s:%d\n", \
__stringify(cond), __FILE__, __LINE__); \
- linux_dump_stack(); \
- } \
- unlikely(__ret); \
+ if (linuxkpi_warn_dump_stack) \
+ linux_dump_stack(); \
+ } \
+ unlikely(__ret); \
})
#define WARN_ON_SMP(cond) WARN_ON(cond)
#define WARN_ON_ONCE(cond) ({ \
- static bool __warn_on_once; \
- bool __ret = (cond); \
- if (__ret && !__warn_on_once) { \
+ static bool __warn_on_once; \
+ bool __ret = (cond); \
+ if (__ret && !__warn_on_once) { \
__warn_on_once = 1; \
printf("WARNING %s failed at %s:%d\n", \
__stringify(cond), __FILE__, __LINE__); \
- linux_dump_stack(); \
- } \
- unlikely(__ret); \
+ if (linuxkpi_warn_dump_stack) \
+ linux_dump_stack(); \
+ } \
+ unlikely(__ret); \
})
#define oops_in_progress SCHEDULER_STOPPED()
diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c
index bb649e42ab8c..e3ccda6e8f23 100644
--- a/sys/compat/linuxkpi/common/src/linux_compat.c
+++ b/sys/compat/linuxkpi/common/src/linux_compat.c
@@ -98,6 +98,11 @@ int linuxkpi_debug;
SYSCTL_INT(_compat_linuxkpi, OID_AUTO, debug, CTLFLAG_RWTUN,
&linuxkpi_debug, 0, "Set to enable pr_debug() prints. Clear to disable.");
+int linuxkpi_warn_dump_stack = 0;
+SYSCTL_INT(_compat_linuxkpi, OID_AUTO, warn_dump_stack, CTLFLAG_RWTUN,
+ &linuxkpi_warn_dump_stack, 0,
+ "Set to enable stack traces from WARN_ON(). Clear to disable.");
+
static struct timeval lkpi_net_lastlog;
static int lkpi_net_curpps;
static int lkpi_net_maxpps = 99;