diff options
Diffstat (limited to 'arch/i386/kernel')
-rw-r--r-- | arch/i386/kernel/paravirt.c | 1 | ||||
-rw-r--r-- | arch/i386/kernel/tsc.c | 2 | ||||
-rw-r--r-- | arch/i386/kernel/vmi.c | 1 | ||||
-rw-r--r-- | arch/i386/kernel/vmitime.c | 10 |
4 files changed, 12 insertions, 2 deletions
diff --git a/arch/i386/kernel/paravirt.c b/arch/i386/kernel/paravirt.c index 31bbe70d1e02..8352394d5efb 100644 --- a/arch/i386/kernel/paravirt.c +++ b/arch/i386/kernel/paravirt.c | |||
@@ -522,6 +522,7 @@ struct paravirt_ops paravirt_ops = { | |||
522 | .read_tsc = native_read_tsc, | 522 | .read_tsc = native_read_tsc, |
523 | .read_pmc = native_read_pmc, | 523 | .read_pmc = native_read_pmc, |
524 | .get_scheduled_cycles = native_read_tsc, | 524 | .get_scheduled_cycles = native_read_tsc, |
525 | .get_cpu_khz = native_calculate_cpu_khz, | ||
525 | .load_tr_desc = native_load_tr_desc, | 526 | .load_tr_desc = native_load_tr_desc, |
526 | .set_ldt = native_set_ldt, | 527 | .set_ldt = native_set_ldt, |
527 | .load_gdt = native_load_gdt, | 528 | .load_gdt = native_load_gdt, |
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index c9c9d54c91f6..59222a04234b 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c | |||
@@ -117,7 +117,7 @@ unsigned long long sched_clock(void) | |||
117 | return cycles_2_ns(this_offset); | 117 | return cycles_2_ns(this_offset); |
118 | } | 118 | } |
119 | 119 | ||
120 | static unsigned long calculate_cpu_khz(void) | 120 | unsigned long native_calculate_cpu_khz(void) |
121 | { | 121 | { |
122 | unsigned long long start, end; | 122 | unsigned long long start, end; |
123 | unsigned long count; | 123 | unsigned long count; |
diff --git a/arch/i386/kernel/vmi.c b/arch/i386/kernel/vmi.c index 556b9a6b7365..acdfe69fb7ad 100644 --- a/arch/i386/kernel/vmi.c +++ b/arch/i386/kernel/vmi.c | |||
@@ -874,6 +874,7 @@ static inline int __init activate_vmi(void) | |||
874 | paravirt_ops.setup_secondary_clock = vmi_timer_setup_secondary_alarm; | 874 | paravirt_ops.setup_secondary_clock = vmi_timer_setup_secondary_alarm; |
875 | #endif | 875 | #endif |
876 | paravirt_ops.get_scheduled_cycles = vmi_get_sched_cycles; | 876 | paravirt_ops.get_scheduled_cycles = vmi_get_sched_cycles; |
877 | paravirt_ops.get_cpu_khz = vmi_cpu_khz; | ||
877 | } | 878 | } |
878 | if (!disable_noidle) | 879 | if (!disable_noidle) |
879 | para_fill(safe_halt, Halt); | 880 | para_fill(safe_halt, Halt); |
diff --git a/arch/i386/kernel/vmitime.c b/arch/i386/kernel/vmitime.c index f2aa8fab8c02..4bb218e2eb14 100644 --- a/arch/i386/kernel/vmitime.c +++ b/arch/i386/kernel/vmitime.c | |||
@@ -177,6 +177,15 @@ unsigned long long vmi_get_sched_cycles(void) | |||
177 | return read_available_cycles(); | 177 | return read_available_cycles(); |
178 | } | 178 | } |
179 | 179 | ||
180 | unsigned long vmi_cpu_khz(void) | ||
181 | { | ||
182 | unsigned long long khz; | ||
183 | |||
184 | khz = vmi_timer_ops.get_cycle_frequency(); | ||
185 | (void)do_div(khz, 1000); | ||
186 | return khz; | ||
187 | } | ||
188 | |||
180 | void __init vmi_time_init(void) | 189 | void __init vmi_time_init(void) |
181 | { | 190 | { |
182 | unsigned long long cycles_per_sec, cycles_per_msec; | 191 | unsigned long long cycles_per_sec, cycles_per_msec; |
@@ -206,7 +215,6 @@ void __init vmi_time_init(void) | |||
206 | (void)do_div(cycles_per_alarm, alarm_hz); | 215 | (void)do_div(cycles_per_alarm, alarm_hz); |
207 | cycles_per_msec = cycles_per_sec; | 216 | cycles_per_msec = cycles_per_sec; |
208 | (void)do_div(cycles_per_msec, 1000); | 217 | (void)do_div(cycles_per_msec, 1000); |
209 | cpu_khz = cycles_per_msec; | ||
210 | 218 | ||
211 | printk(KERN_WARNING "VMI timer cycles/sec = %llu ; cycles/jiffy = %llu ;" | 219 | printk(KERN_WARNING "VMI timer cycles/sec = %llu ; cycles/jiffy = %llu ;" |
212 | "cycles/alarm = %llu\n", cycles_per_sec, cycles_per_jiffy, | 220 | "cycles/alarm = %llu\n", cycles_per_sec, cycles_per_jiffy, |