diff options
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/tick-sched.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 3612fc77f834..a12df5abde0b 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -361,8 +361,8 @@ void __init tick_nohz_init(void) | |||
361 | /* | 361 | /* |
362 | * NO HZ enabled ? | 362 | * NO HZ enabled ? |
363 | */ | 363 | */ |
364 | int tick_nohz_enabled __read_mostly = 1; | 364 | static int tick_nohz_enabled __read_mostly = 1; |
365 | 365 | int tick_nohz_active __read_mostly; | |
366 | /* | 366 | /* |
367 | * Enable / Disable tickless mode | 367 | * Enable / Disable tickless mode |
368 | */ | 368 | */ |
@@ -465,7 +465,7 @@ u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time) | |||
465 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); | 465 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); |
466 | ktime_t now, idle; | 466 | ktime_t now, idle; |
467 | 467 | ||
468 | if (!tick_nohz_enabled) | 468 | if (!tick_nohz_active) |
469 | return -1; | 469 | return -1; |
470 | 470 | ||
471 | now = ktime_get(); | 471 | now = ktime_get(); |
@@ -506,7 +506,7 @@ u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time) | |||
506 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); | 506 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); |
507 | ktime_t now, iowait; | 507 | ktime_t now, iowait; |
508 | 508 | ||
509 | if (!tick_nohz_enabled) | 509 | if (!tick_nohz_active) |
510 | return -1; | 510 | return -1; |
511 | 511 | ||
512 | now = ktime_get(); | 512 | now = ktime_get(); |
@@ -799,11 +799,6 @@ void tick_nohz_idle_enter(void) | |||
799 | local_irq_disable(); | 799 | local_irq_disable(); |
800 | 800 | ||
801 | ts = &__get_cpu_var(tick_cpu_sched); | 801 | ts = &__get_cpu_var(tick_cpu_sched); |
802 | /* | ||
803 | * set ts->inidle unconditionally. even if the system did not | ||
804 | * switch to nohz mode the cpu frequency governers rely on the | ||
805 | * update of the idle time accounting in tick_nohz_start_idle(). | ||
806 | */ | ||
807 | ts->inidle = 1; | 802 | ts->inidle = 1; |
808 | __tick_nohz_idle_enter(ts); | 803 | __tick_nohz_idle_enter(ts); |
809 | 804 | ||
@@ -973,7 +968,7 @@ static void tick_nohz_switch_to_nohz(void) | |||
973 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); | 968 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); |
974 | ktime_t next; | 969 | ktime_t next; |
975 | 970 | ||
976 | if (!tick_nohz_enabled) | 971 | if (!tick_nohz_active) |
977 | return; | 972 | return; |
978 | 973 | ||
979 | local_irq_disable(); | 974 | local_irq_disable(); |
@@ -981,7 +976,7 @@ static void tick_nohz_switch_to_nohz(void) | |||
981 | local_irq_enable(); | 976 | local_irq_enable(); |
982 | return; | 977 | return; |
983 | } | 978 | } |
984 | 979 | tick_nohz_active = 1; | |
985 | ts->nohz_mode = NOHZ_MODE_LOWRES; | 980 | ts->nohz_mode = NOHZ_MODE_LOWRES; |
986 | 981 | ||
987 | /* | 982 | /* |
@@ -1139,8 +1134,10 @@ void tick_setup_sched_timer(void) | |||
1139 | } | 1134 | } |
1140 | 1135 | ||
1141 | #ifdef CONFIG_NO_HZ_COMMON | 1136 | #ifdef CONFIG_NO_HZ_COMMON |
1142 | if (tick_nohz_enabled) | 1137 | if (tick_nohz_enabled) { |
1143 | ts->nohz_mode = NOHZ_MODE_HIGHRES; | 1138 | ts->nohz_mode = NOHZ_MODE_HIGHRES; |
1139 | tick_nohz_active = 1; | ||
1140 | } | ||
1144 | #endif | 1141 | #endif |
1145 | } | 1142 | } |
1146 | #endif /* HIGH_RES_TIMERS */ | 1143 | #endif /* HIGH_RES_TIMERS */ |