aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Breeds <tony@bakeyournoodle.com>2007-10-21 20:56:25 -0400
committerRusty Russell <rusty@rustcorp.com.au>2007-10-23 01:49:49 -0400
commit05aa026a62d0fe0b4664a01d1537984b12567e7c (patch)
tree76fad2d7d091ca2532237ba4a5ddc877348e2a91
parentebac52524df31e7c2fe13ca5bd3438907842f763 (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>
-rw-r--r--drivers/lguest/lguest.c5
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