diff options
| -rw-r--r-- | init/Kconfig | 8 | ||||
| -rw-r--r-- | kernel/printk.c | 4 | ||||
| -rw-r--r-- | kernel/sched.c | 10 | ||||
| -rw-r--r-- | kernel/sched_fair.c | 8 |
4 files changed, 21 insertions, 9 deletions
diff --git a/init/Kconfig b/init/Kconfig index 0d0bbf218f1f..dcc96a8c8c69 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -775,6 +775,14 @@ config PREEMPT_NOTIFIERS | |||
| 775 | choice | 775 | choice |
| 776 | prompt "RCU implementation type:" | 776 | prompt "RCU implementation type:" |
| 777 | default CLASSIC_RCU | 777 | default CLASSIC_RCU |
| 778 | help | ||
| 779 | This allows you to choose either the classic RCU implementation | ||
| 780 | that is designed for best read-side performance on non-realtime | ||
| 781 | systems, or the preemptible RCU implementation for best latency | ||
| 782 | on realtime systems. Note that some kernel preemption modes | ||
| 783 | will restrict your choice. | ||
| 784 | |||
| 785 | Select the default if you are unsure. | ||
| 778 | 786 | ||
| 779 | config CLASSIC_RCU | 787 | config CLASSIC_RCU |
| 780 | bool "Classic RCU" | 788 | bool "Classic RCU" |
diff --git a/kernel/printk.c b/kernel/printk.c index 58bbec684119..29ae1e99cde0 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
| @@ -455,10 +455,10 @@ static int __init ignore_loglevel_setup(char *str) | |||
| 455 | ignore_loglevel = 1; | 455 | ignore_loglevel = 1; |
| 456 | printk(KERN_INFO "debug: ignoring loglevel setting.\n"); | 456 | printk(KERN_INFO "debug: ignoring loglevel setting.\n"); |
| 457 | 457 | ||
| 458 | return 1; | 458 | return 0; |
| 459 | } | 459 | } |
| 460 | 460 | ||
| 461 | __setup("ignore_loglevel", ignore_loglevel_setup); | 461 | early_param("ignore_loglevel", ignore_loglevel_setup); |
| 462 | 462 | ||
| 463 | /* | 463 | /* |
| 464 | * Write out chars from start to end - 1 inclusive | 464 | * Write out chars from start to end - 1 inclusive |
diff --git a/kernel/sched.c b/kernel/sched.c index ba4c88088f62..8355e007e021 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -1255,12 +1255,12 @@ static int task_hot(struct task_struct *p, u64 now, struct sched_domain *sd); | |||
| 1255 | 1255 | ||
| 1256 | #define sched_class_highest (&rt_sched_class) | 1256 | #define sched_class_highest (&rt_sched_class) |
| 1257 | 1257 | ||
| 1258 | static void inc_nr_running(struct task_struct *p, struct rq *rq) | 1258 | static void inc_nr_running(struct rq *rq) |
| 1259 | { | 1259 | { |
| 1260 | rq->nr_running++; | 1260 | rq->nr_running++; |
| 1261 | } | 1261 | } |
| 1262 | 1262 | ||
| 1263 | static void dec_nr_running(struct task_struct *p, struct rq *rq) | 1263 | static void dec_nr_running(struct rq *rq) |
| 1264 | { | 1264 | { |
| 1265 | rq->nr_running--; | 1265 | rq->nr_running--; |
| 1266 | } | 1266 | } |
| @@ -1354,7 +1354,7 @@ static void activate_task(struct rq *rq, struct task_struct *p, int wakeup) | |||
| 1354 | rq->nr_uninterruptible--; | 1354 | rq->nr_uninterruptible--; |
| 1355 | 1355 | ||
| 1356 | enqueue_task(rq, p, wakeup); | 1356 | enqueue_task(rq, p, wakeup); |
| 1357 | inc_nr_running(p, rq); | 1357 | inc_nr_running(rq); |
| 1358 | } | 1358 | } |
| 1359 | 1359 | ||
| 1360 | /* | 1360 | /* |
| @@ -1366,7 +1366,7 @@ static void deactivate_task(struct rq *rq, struct task_struct *p, int sleep) | |||
| 1366 | rq->nr_uninterruptible++; | 1366 | rq->nr_uninterruptible++; |
| 1367 | 1367 | ||
| 1368 | dequeue_task(rq, p, sleep); | 1368 | dequeue_task(rq, p, sleep); |
| 1369 | dec_nr_running(p, rq); | 1369 | dec_nr_running(rq); |
| 1370 | } | 1370 | } |
| 1371 | 1371 | ||
| 1372 | /** | 1372 | /** |
| @@ -2006,7 +2006,7 @@ void fastcall wake_up_new_task(struct task_struct *p, unsigned long clone_flags) | |||
| 2006 | * management (if any): | 2006 | * management (if any): |
| 2007 | */ | 2007 | */ |
| 2008 | p->sched_class->task_new(rq, p); | 2008 | p->sched_class->task_new(rq, p); |
| 2009 | inc_nr_running(p, rq); | 2009 | inc_nr_running(rq); |
| 2010 | } | 2010 | } |
| 2011 | check_preempt_curr(rq, p); | 2011 | check_preempt_curr(rq, p); |
| 2012 | #ifdef CONFIG_SMP | 2012 | #ifdef CONFIG_SMP |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 72e25c7a3a18..6c091d6e159d 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
| @@ -520,7 +520,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
| 520 | 520 | ||
| 521 | if (!initial) { | 521 | if (!initial) { |
| 522 | /* sleeps upto a single latency don't count. */ | 522 | /* sleeps upto a single latency don't count. */ |
| 523 | if (sched_feat(NEW_FAIR_SLEEPERS) && entity_is_task(se)) | 523 | if (sched_feat(NEW_FAIR_SLEEPERS)) |
| 524 | vruntime -= sysctl_sched_latency; | 524 | vruntime -= sysctl_sched_latency; |
| 525 | 525 | ||
| 526 | /* ensure we never gain time by being placed backwards. */ | 526 | /* ensure we never gain time by being placed backwards. */ |
| @@ -1106,7 +1106,11 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p) | |||
| 1106 | } | 1106 | } |
| 1107 | 1107 | ||
| 1108 | gran = sysctl_sched_wakeup_granularity; | 1108 | gran = sysctl_sched_wakeup_granularity; |
| 1109 | if (unlikely(se->load.weight != NICE_0_LOAD)) | 1109 | /* |
| 1110 | * More easily preempt - nice tasks, while not making | ||
| 1111 | * it harder for + nice tasks. | ||
| 1112 | */ | ||
| 1113 | if (unlikely(se->load.weight > NICE_0_LOAD)) | ||
| 1110 | gran = calc_delta_fair(gran, &se->load); | 1114 | gran = calc_delta_fair(gran, &se->load); |
| 1111 | 1115 | ||
| 1112 | if (pse->vruntime + gran < se->vruntime) | 1116 | if (pse->vruntime + gran < se->vruntime) |
