diff options
author | Dimitri Sivanich <sivanich@sgi.com> | 2008-05-12 15:21:14 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-25 00:35:03 -0400 |
commit | 9383d9679056e6cc4e7ff70f31da945a268238f4 (patch) | |
tree | c6678a8c4e0fed0739e43f24b608d51856af6f1f /kernel/sysctl.c | |
parent | 9c44bc03fff44ff04237a7d92e35304a0e50c331 (diff) |
softlockup: fix softlockup_thresh unaligned access and disable detection at runtime
Fix unaligned access errors when setting softlockup_thresh on
64 bit platforms.
Allow softlockup detection to be disabled by setting
softlockup_thresh <= 0.
Detect that boot time softlockup detection has been disabled
earlier in softlockup_tick.
Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 2d3b388c402d..31c19a79738d 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -84,12 +84,13 @@ extern int latencytop_enabled; | |||
84 | extern int sysctl_nr_open_min, sysctl_nr_open_max; | 84 | extern int sysctl_nr_open_min, sysctl_nr_open_max; |
85 | 85 | ||
86 | /* Constants used for minimum and maximum */ | 86 | /* Constants used for minimum and maximum */ |
87 | #if defined(CONFIG_DETECT_SOFTLOCKUP) || defined(CONFIG_HIGHMEM) | 87 | #ifdef CONFIG_HIGHMEM |
88 | static int one = 1; | 88 | static int one = 1; |
89 | #endif | 89 | #endif |
90 | 90 | ||
91 | #ifdef CONFIG_DETECT_SOFTLOCKUP | 91 | #ifdef CONFIG_DETECT_SOFTLOCKUP |
92 | static int sixty = 60; | 92 | static int sixty = 60; |
93 | static int neg_one = -1; | ||
93 | #endif | 94 | #endif |
94 | 95 | ||
95 | #ifdef CONFIG_MMU | 96 | #ifdef CONFIG_MMU |
@@ -742,11 +743,11 @@ static struct ctl_table kern_table[] = { | |||
742 | .ctl_name = CTL_UNNUMBERED, | 743 | .ctl_name = CTL_UNNUMBERED, |
743 | .procname = "softlockup_thresh", | 744 | .procname = "softlockup_thresh", |
744 | .data = &softlockup_thresh, | 745 | .data = &softlockup_thresh, |
745 | .maxlen = sizeof(unsigned long), | 746 | .maxlen = sizeof(int), |
746 | .mode = 0644, | 747 | .mode = 0644, |
747 | .proc_handler = &proc_doulongvec_minmax, | 748 | .proc_handler = &proc_dointvec_minmax, |
748 | .strategy = &sysctl_intvec, | 749 | .strategy = &sysctl_intvec, |
749 | .extra1 = &one, | 750 | .extra1 = &neg_one, |
750 | .extra2 = &sixty, | 751 | .extra2 = &sixty, |
751 | }, | 752 | }, |
752 | { | 753 | { |