open_softirq(TIME_CALIBRATE_SOFTIRQ, local_time_calibration);
+ /* System time (get_s_time()) starts ticking from now. */
+ rdtscll(this_cpu(cpu_time).local_tsc_stamp);
+
/* NB. get_cmos_time() can take over one second to execute. */
do_settime(get_cmos_time(), 0, NOW());
/* Early init function. */
void __init early_time_init(void)
{
- struct cpu_time *t = &this_cpu(cpu_time);
u64 tmp = init_pit_and_calibrate_tsc();
- /* So we can use get_s_time() during early boot. */
- set_time_scale(&t->tsc_scale, tmp);
- rdtscll(t->local_tsc_stamp);
+ set_time_scale(&this_cpu(cpu_time).tsc_scale, tmp);
do_div(tmp, 1000);
cpu_khz = (unsigned long)tmp;