diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/cpuset.c | 4 | ||||
| -rw-r--r-- | kernel/rcupreempt.c | 2 | ||||
| -rw-r--r-- | kernel/sched.c | 7 | ||||
| -rw-r--r-- | kernel/softlockup.c | 15 |
4 files changed, 18 insertions, 10 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index bceb89557973..9fceb97e989c 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -1037,8 +1037,8 @@ int current_cpuset_is_being_rebound(void) | |||
| 1037 | 1037 | ||
| 1038 | static int update_relax_domain_level(struct cpuset *cs, s64 val) | 1038 | static int update_relax_domain_level(struct cpuset *cs, s64 val) |
| 1039 | { | 1039 | { |
| 1040 | if ((int)val < 0) | 1040 | if (val < -1 || val >= SD_LV_MAX) |
| 1041 | val = -1; | 1041 | return -EINVAL; |
| 1042 | 1042 | ||
| 1043 | if (val != cs->relax_domain_level) { | 1043 | if (val != cs->relax_domain_level) { |
| 1044 | cs->relax_domain_level = val; | 1044 | cs->relax_domain_level = val; |
diff --git a/kernel/rcupreempt.c b/kernel/rcupreempt.c index e1cdf196a515..5e02b7740702 100644 --- a/kernel/rcupreempt.c +++ b/kernel/rcupreempt.c | |||
| @@ -217,8 +217,6 @@ long rcu_batches_completed(void) | |||
| 217 | } | 217 | } |
| 218 | EXPORT_SYMBOL_GPL(rcu_batches_completed); | 218 | EXPORT_SYMBOL_GPL(rcu_batches_completed); |
| 219 | 219 | ||
| 220 | EXPORT_SYMBOL_GPL(rcu_batches_completed_bh); | ||
| 221 | |||
| 222 | void __rcu_read_lock(void) | 220 | void __rcu_read_lock(void) |
| 223 | { | 221 | { |
| 224 | int idx; | 222 | int idx; |
diff --git a/kernel/sched.c b/kernel/sched.c index bebf9788f45e..3aaa5c8cb421 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -6877,7 +6877,12 @@ static int default_relax_domain_level = -1; | |||
| 6877 | 6877 | ||
| 6878 | static int __init setup_relax_domain_level(char *str) | 6878 | static int __init setup_relax_domain_level(char *str) |
| 6879 | { | 6879 | { |
| 6880 | default_relax_domain_level = simple_strtoul(str, NULL, 0); | 6880 | unsigned long val; |
| 6881 | |||
| 6882 | val = simple_strtoul(str, NULL, 0); | ||
| 6883 | if (val < SD_LV_MAX) | ||
| 6884 | default_relax_domain_level = val; | ||
| 6885 | |||
| 6881 | return 1; | 6886 | return 1; |
| 6882 | } | 6887 | } |
| 6883 | __setup("relax_domain_level=", setup_relax_domain_level); | 6888 | __setup("relax_domain_level=", setup_relax_domain_level); |
diff --git a/kernel/softlockup.c b/kernel/softlockup.c index 01b6522fd92b..c828c2339cc9 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c | |||
| @@ -49,12 +49,17 @@ static unsigned long get_timestamp(int this_cpu) | |||
| 49 | return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */ | 49 | return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */ |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | void touch_softlockup_watchdog(void) | 52 | static void __touch_softlockup_watchdog(void) |
| 53 | { | 53 | { |
| 54 | int this_cpu = raw_smp_processor_id(); | 54 | int this_cpu = raw_smp_processor_id(); |
| 55 | 55 | ||
| 56 | __raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu); | 56 | __raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu); |
| 57 | } | 57 | } |
| 58 | |||
| 59 | void touch_softlockup_watchdog(void) | ||
| 60 | { | ||
| 61 | __raw_get_cpu_var(touch_timestamp) = 0; | ||
| 62 | } | ||
| 58 | EXPORT_SYMBOL(touch_softlockup_watchdog); | 63 | EXPORT_SYMBOL(touch_softlockup_watchdog); |
| 59 | 64 | ||
| 60 | void touch_all_softlockup_watchdogs(void) | 65 | void touch_all_softlockup_watchdogs(void) |
| @@ -80,7 +85,7 @@ void softlockup_tick(void) | |||
| 80 | unsigned long now; | 85 | unsigned long now; |
| 81 | 86 | ||
| 82 | if (touch_timestamp == 0) { | 87 | if (touch_timestamp == 0) { |
| 83 | touch_softlockup_watchdog(); | 88 | __touch_softlockup_watchdog(); |
| 84 | return; | 89 | return; |
| 85 | } | 90 | } |
| 86 | 91 | ||
| @@ -95,7 +100,7 @@ void softlockup_tick(void) | |||
| 95 | 100 | ||
| 96 | /* do not print during early bootup: */ | 101 | /* do not print during early bootup: */ |
| 97 | if (unlikely(system_state != SYSTEM_RUNNING)) { | 102 | if (unlikely(system_state != SYSTEM_RUNNING)) { |
| 98 | touch_softlockup_watchdog(); | 103 | __touch_softlockup_watchdog(); |
| 99 | return; | 104 | return; |
| 100 | } | 105 | } |
| 101 | 106 | ||
| @@ -214,7 +219,7 @@ static int watchdog(void *__bind_cpu) | |||
| 214 | sched_setscheduler(current, SCHED_FIFO, ¶m); | 219 | sched_setscheduler(current, SCHED_FIFO, ¶m); |
| 215 | 220 | ||
| 216 | /* initialize timestamp */ | 221 | /* initialize timestamp */ |
| 217 | touch_softlockup_watchdog(); | 222 | __touch_softlockup_watchdog(); |
| 218 | 223 | ||
| 219 | set_current_state(TASK_INTERRUPTIBLE); | 224 | set_current_state(TASK_INTERRUPTIBLE); |
| 220 | /* | 225 | /* |
| @@ -223,7 +228,7 @@ static int watchdog(void *__bind_cpu) | |||
| 223 | * debug-printout triggers in softlockup_tick(). | 228 | * debug-printout triggers in softlockup_tick(). |
| 224 | */ | 229 | */ |
| 225 | while (!kthread_should_stop()) { | 230 | while (!kthread_should_stop()) { |
| 226 | touch_softlockup_watchdog(); | 231 | __touch_softlockup_watchdog(); |
| 227 | schedule(); | 232 | schedule(); |
| 228 | 233 | ||
| 229 | if (kthread_should_stop()) | 234 | if (kthread_should_stop()) |
