diff options
author | Tony Breeds <tony@bakeyournoodle.com> | 2007-10-21 20:56:25 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 01:49:49 -0400 |
commit | 05aa026a62d0fe0b4664a01d1537984b12567e7c (patch) | |
tree | 76fad2d7d091ca2532237ba4a5ddc877348e2a91 /drivers | |
parent | ebac52524df31e7c2fe13ca5bd3438907842f763 (diff) |
Clocksource is continuous regardless of the state of the host's TSC.
Currently lguest will spend a lot of of time waking up the host, as it
cannot go tickless (if the [host] TSC has been marked unstable). On my
laptop I was getting ~40% of wakeups from lguest.
With this patch applied, my laptop is much happier!
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/lguest/lguest.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/lguest/lguest.c b/drivers/lguest/lguest.c index c9ca610f4996..8e9e485a5cfa 100644 --- a/drivers/lguest/lguest.c +++ b/drivers/lguest/lguest.c | |||
@@ -679,6 +679,7 @@ static struct clocksource lguest_clock = { | |||
679 | .mask = CLOCKSOURCE_MASK(64), | 679 | .mask = CLOCKSOURCE_MASK(64), |
680 | .mult = 1 << 22, | 680 | .mult = 1 << 22, |
681 | .shift = 22, | 681 | .shift = 22, |
682 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
682 | }; | 683 | }; |
683 | 684 | ||
684 | /* The "scheduler clock" is just our real clock, adjusted to start at zero */ | 685 | /* The "scheduler clock" is just our real clock, adjusted to start at zero */ |
@@ -760,11 +761,9 @@ static void lguest_time_init(void) | |||
760 | * the TSC, otherwise it's a dumb nanosecond-resolution clock. Either | 761 | * the TSC, otherwise it's a dumb nanosecond-resolution clock. Either |
761 | * way, the "rating" is initialized so high that it's always chosen | 762 | * way, the "rating" is initialized so high that it's always chosen |
762 | * over any other clocksource. */ | 763 | * over any other clocksource. */ |
763 | if (lguest_data.tsc_khz) { | 764 | if (lguest_data.tsc_khz) |
764 | lguest_clock.mult = clocksource_khz2mult(lguest_data.tsc_khz, | 765 | lguest_clock.mult = clocksource_khz2mult(lguest_data.tsc_khz, |
765 | lguest_clock.shift); | 766 | lguest_clock.shift); |
766 | lguest_clock.flags = CLOCK_SOURCE_IS_CONTINUOUS; | ||
767 | } | ||
768 | clock_base = lguest_clock_read(); | 767 | clock_base = lguest_clock_read(); |
769 | clocksource_register(&lguest_clock); | 768 | clocksource_register(&lguest_clock); |
770 | 769 | ||