From: Kamala Narasimhan Date: Fri, 29 Jan 2010 09:45:29 +0000 (-0500) Subject: Move update rtc to host resume code path. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;p=xenclient%2Fxen-pq.git Move update rtc to host resume code path. As the incorrect guest time issue is encountered only after a host resume from S3, move rtc update to host resume code path. --- diff --git a/master/rtc-update-clock-upon-resume-from-s3 b/master/rtc-update-clock-upon-resume-from-s3 index ba31365..f32269b 100644 --- a/master/rtc-update-clock-upon-resume-from-s3 +++ b/master/rtc-update-clock-upon-resume-from-s3 @@ -1,15 +1,33 @@ -diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c -index e7a0d05..0a90f5f 100644 ---- a/xen/arch/x86/hvm/hvm.c -+++ b/xen/arch/x86/hvm/hvm.c -@@ -2325,7 +2325,10 @@ static void hvm_s3_suspend(struct domain *d) - static void hvm_s3_resume(struct domain *d) - { - if ( test_and_clear_bool(d->arch.hvm_domain.is_s3_suspended) ) +diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c +index 9e9ff9b..ef60265 100644 +--- a/xen/arch/x86/time.c ++++ b/xen/arch/x86/time.c +@@ -859,6 +859,19 @@ void update_domain_wallclock_time(struct domain *d) + spin_unlock(&wc_lock); + } + ++static void update_domain_rtc(void) ++{ ++ struct domain *d; ++ ++ rcu_read_lock(&domlist_read_lock); ++ for_each_domain ( d ) + { -+ rtc_update_clock(d); - domain_unpause(d); ++ if ( is_hvm_domain(d) ) ++ rtc_update_clock(d); + } ++ rcu_read_unlock(&domlist_read_lock); ++} ++ + void domain_set_time_offset(struct domain *d, int32_t time_offset_seconds) + { + d->time_offset_seconds = time_offset_seconds; +@@ -1370,6 +1383,8 @@ int time_resume(void) + + update_vcpu_system_time(current); + ++ update_domain_rtc(); ++ + return 0; } - static int hvmop_set_isa_irq_level(