From 0629adfd80e38fc3637690ffe08a0ac73c2a9064 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 18 Mar 2009 13:24:42 +0000 Subject: [PATCH] Actually set a HVM domain's time offset when it sets the RTC Signed-off-by: Tim Deegan --- xen/arch/x86/hvm/rtc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index 2df9fea706..9ab69033b0 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -160,6 +160,7 @@ static inline int from_bcd(RTCState *s, int a) static void rtc_set_time(RTCState *s) { struct tm *tm = &s->current_tm; + struct domain *d = vrtc_domain(s); unsigned long before, after; /* XXX s_time_t */ ASSERT(spin_is_locked(&s->lock)); @@ -180,6 +181,12 @@ static void rtc_set_time(RTCState *s) after = mktime(tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); + + /* We use the guest's setting of the RTC to define the local-time + * offset for this domain. */ + d->time_offset_seconds += (after - before); + update_domain_wallclock_time(d); + /* Also tell qemu-dm about it so it will be remembered for next boot. */ send_timeoffset_req(after - before); } -- 2.39.5