File tree 2 files changed +10
-4
lines changed 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -361,8 +361,6 @@ void xen_timer_resume(void)
361
361
{
362
362
int cpu ;
363
363
364
- pvclock_resume ();
365
-
366
364
if (xen_clockevent != & xen_vcpuop_clockevent )
367
365
return ;
368
366
@@ -379,12 +377,15 @@ static const struct pv_time_ops xen_time_ops __initconst = {
379
377
};
380
378
381
379
static struct pvclock_vsyscall_time_info * xen_clock __read_mostly ;
380
+ static u64 xen_clock_value_saved ;
382
381
383
382
void xen_save_time_memory_area (void )
384
383
{
385
384
struct vcpu_register_time_memory_area t ;
386
385
int ret ;
387
386
387
+ xen_clock_value_saved = xen_clocksource_read () - xen_sched_clock_offset ;
388
+
388
389
if (!xen_clock )
389
390
return ;
390
391
@@ -404,7 +405,7 @@ void xen_restore_time_memory_area(void)
404
405
int ret ;
405
406
406
407
if (!xen_clock )
407
- return ;
408
+ goto out ;
408
409
409
410
t .addr .v = & xen_clock -> pvti ;
410
411
@@ -421,6 +422,11 @@ void xen_restore_time_memory_area(void)
421
422
if (ret != 0 )
422
423
pr_notice ("Cannot restore secondary vcpu_time_info (err %d)" ,
423
424
ret );
425
+
426
+ out :
427
+ /* Need pvclock_resume() before using xen_clocksource_read(). */
428
+ pvclock_resume ();
429
+ xen_sched_clock_offset = xen_clocksource_read () - xen_clock_value_saved ;
424
430
}
425
431
426
432
static void xen_setup_vsyscall_time_info (void )
Original file line number Diff line number Diff line change @@ -1650,7 +1650,7 @@ void xen_callback_vector(void)
1650
1650
xen_have_vector_callback = 0 ;
1651
1651
return ;
1652
1652
}
1653
- pr_info ("Xen HVM callback vector for event delivery is enabled\n" );
1653
+ pr_info_once ("Xen HVM callback vector for event delivery is enabled\n" );
1654
1654
alloc_intr_gate (HYPERVISOR_CALLBACK_VECTOR ,
1655
1655
xen_hvm_callback_vector );
1656
1656
}
You can’t perform that action at this time.
0 commit comments