The patch titled
softlockup: add a /proc tuning parameter
has been removed from the -mm tree. Its filename was
softlockup-add-a-proc-tuning-parameter.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
Subject: softlockup: add a /proc tuning parameter
From: Ravikiran G Thirumalai <[EMAIL PROTECTED]>
Control the trigger limit for softlockup warnings. This is useful for
debugging softlockups, by lowering the softlockup_thresh to identify
possible softlockups earlier.
This patch:
1. Adds a sysctl softlockup_thresh with valid values of 1-60s
(Higher value to disable false positives)
2. Changes the softlockup printk to print the cpu softlockup time
[EMAIL PROTECTED]: Fix various warnings and add definition of "two"]
Signed-off-by: Ravikiran Thirumalai <[EMAIL PROTECTED]>
Signed-off-by: Shai Fultheim <[EMAIL PROTECTED]>
Acked-by: Ingo Molnar <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
Documentation/sysctl/kernel.txt | 8 +++++++
include/linux/sched.h | 1
kernel/softlockup.c | 7 ++++--
kernel/sysctl.c | 33 +++++++++++++++++++++++-------
4 files changed, 40 insertions(+), 9 deletions(-)
diff -puN
Documentation/sysctl/kernel.txt~softlockup-add-a-proc-tuning-parameter
Documentation/sysctl/kernel.txt
--- a/Documentation/sysctl/kernel.txt~softlockup-add-a-proc-tuning-parameter
+++ a/Documentation/sysctl/kernel.txt
@@ -320,6 +320,14 @@ kernel. This value defaults to SHMMAX.
==============================================================
+softlockup_thresh:
+
+This value can be used to lower the softlockup tolerance
+threshold. The default threshold is 10s. If a cpu is locked up
+for 10s, the kernel complains. Valid values are 1-60s.
+
+==============================================================
+
tainted:
Non-zero if the kernel has been tainted. Numeric values, which
diff -puN include/linux/sched.h~softlockup-add-a-proc-tuning-parameter
include/linux/sched.h
--- a/include/linux/sched.h~softlockup-add-a-proc-tuning-parameter
+++ a/include/linux/sched.h
@@ -261,6 +261,7 @@ extern void softlockup_tick(void);
extern void spawn_softlockup_task(void);
extern void touch_softlockup_watchdog(void);
extern void touch_all_softlockup_watchdogs(void);
+extern int softlockup_thresh;
#else
static inline void softlockup_tick(void)
{
diff -puN kernel/softlockup.c~softlockup-add-a-proc-tuning-parameter
kernel/softlockup.c
--- a/kernel/softlockup.c~softlockup-add-a-proc-tuning-parameter
+++ a/kernel/softlockup.c
@@ -24,6 +24,7 @@ static DEFINE_PER_CPU(unsigned long, pri
static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
static int did_panic;
+int softlockup_thresh = 10;
static int
softlock_panic(struct notifier_block *this, unsigned long event, void *ptr)
@@ -104,13 +105,15 @@ void softlockup_tick(void)
wake_up_process(per_cpu(watchdog_task, this_cpu));
/* Warn about unreasonable 10+ seconds delays: */
- if (now <= (touch_timestamp + 10))
+ if (now <= (touch_timestamp + softlockup_thresh))
return;
per_cpu(print_timestamp, this_cpu) = touch_timestamp;
spin_lock(&print_lock);
- printk(KERN_ERR "BUG: soft lockup detected on CPU#%d!\n", this_cpu);
+ printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n",
+ this_cpu, now - touch_timestamp,
+ current->comm, current->pid);
if (regs)
show_regs(regs);
else
diff -puN kernel/sysctl.c~softlockup-add-a-proc-tuning-parameter kernel/sysctl.c
--- a/kernel/sysctl.c~softlockup-add-a-proc-tuning-parameter
+++ a/kernel/sysctl.c
@@ -80,6 +80,19 @@ extern int maps_protect;
extern int sysctl_stat_interval;
extern int audit_argv_kb;
+/* Constants used for minimum and maximum */
+#ifdef CONFIG_DETECT_SOFTLOCKUP
+static int one = 1;
+static int sixty = 60;
+#endif
+
+#ifdef CONFIG_MMU
+static int two = 2;
+#endif
+
+static int zero;
+static int one_hundred = 100;
+
/* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
static int maxolduid = 65535;
static int minolduid;
@@ -711,6 +724,19 @@ static ctl_table kern_table[] = {
.proc_handler = &proc_dointvec,
},
#endif
+#ifdef CONFIG_DETECT_SOFTLOCKUP
+ {
+ .ctl_name = CTL_UNNUMBERED,
+ .procname = "softlockup_thresh",
+ .data = &softlockup_thresh,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec_minmax,
+ .strategy = &sysctl_intvec,
+ .extra1 = &one,
+ .extra2 = &sixty,
+ },
+#endif
#ifdef CONFIG_COMPAT
{
.ctl_name = KERN_COMPAT_LOG,
@@ -757,13 +783,6 @@ static ctl_table kern_table[] = {
{ .ctl_name = 0 }
};
-/* Constants for minimum and maximum testing in vm_table.
- We use these as one-element integer vectors. */
-static int zero;
-static int two = 2;
-static int one_hundred = 100;
-
-
static ctl_table vm_table[] = {
{
.ctl_name = VM_OVERCOMMIT_MEMORY,
_
Patches currently in -mm which might be from [EMAIL PROTECTED] are
origin.patch
slab-leaks3-default-y.patch
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html