aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/clocksource.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/time/clocksource.c')
-rw-r--r--kernel/time/clocksource.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index 18b9f5da4ee9..592bf584d1d2 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -30,7 +30,6 @@
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/sched.h> /* for spin_unlock_irq() using preempt_count() m68k */ 31#include <linux/sched.h> /* for spin_unlock_irq() using preempt_count() m68k */
32#include <linux/tick.h> 32#include <linux/tick.h>
33#include <linux/hrtimer.h>
34 33
35void timecounter_init(struct timecounter *tc, 34void timecounter_init(struct timecounter *tc,
36 const struct cyclecounter *cc, 35 const struct cyclecounter *cc,
@@ -511,13 +510,13 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev,
511 } 510 }
512 511
513 /* 512 /*
514 * Check to make sure we don't switch to a non-HRT usable 513 * Check to make sure we don't switch to a non-highres capable
515 * clocksource if HRT is enabled and running 514 * clocksource if the tick code is in oneshot mode (highres or nohz)
516 */ 515 */
517 if (hrtimer_hres_active() && 516 if (tick_oneshot_mode_active() &&
518 !(ovr->flags & CLOCK_SOURCE_VALID_FOR_HRES)) { 517 !(ovr->flags & CLOCK_SOURCE_VALID_FOR_HRES)) {
519 printk(KERN_WARNING "%s clocksource is not HRT compatible. " 518 printk(KERN_WARNING "%s clocksource is not HRT compatible. "
520 "Cannot switch while in HRT mode\n", ovr->name); 519 "Cannot switch while in HRT/NOHZ mode\n", ovr->name);
521 ovr = NULL; 520 ovr = NULL;
522 override_name[0] = 0; 521 override_name[0] = 0;
523 } 522 }
@@ -550,9 +549,12 @@ sysfs_show_available_clocksources(struct sys_device *dev,
550 549
551 spin_lock_irq(&clocksource_lock); 550 spin_lock_irq(&clocksource_lock);
552 list_for_each_entry(src, &clocksource_list, list) { 551 list_for_each_entry(src, &clocksource_list, list) {
553 /* Don't show non-HRES clocksource if HRES is enabled */ 552 /*
554 if (!hrtimer_hres_active() || 553 * Don't show non-HRES clocksource if the tick code is
555 (src->flags & CLOCK_SOURCE_VALID_FOR_HRES)) 554 * in one shot mode (highres=on or nohz=on)
555 */
556 if (!tick_oneshot_mode_active() ||
557 (src->flags & CLOCK_SOURCE_VALID_FOR_HRES))
556 count += snprintf(buf + count, 558 count += snprintf(buf + count,
557 max((ssize_t)PAGE_SIZE - count, (ssize_t)0), 559 max((ssize_t)PAGE_SIZE - count, (ssize_t)0),
558 "%s ", src->name); 560 "%s ", src->name);