From: Jan Beulich Date: Wed, 23 Jan 2013 13:19:54 +0000 (+0100) Subject: x86/HVM: use cached original value in RTC_REG_B writing code X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~7367 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1c96f3d3287dcf0a477166a65b9025c1d448908a;p=xen.git x86/HVM: use cached original value in RTC_REG_B writing code Signed-off-by: Jan Beulich Acked-by: Keir Fraser --- diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index e0c606fab8..f8d3bed6d9 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -430,7 +430,7 @@ static int rtc_ioport_write(void *opaque, uint32_t addr, uint32_t data) /* set mode: reset UIP mode */ s->hw.cmos_data[RTC_REG_A] &= ~RTC_UIP; /* adjust cmos before stopping */ - if (!(s->hw.cmos_data[RTC_REG_B] & RTC_SET)) + if (!(orig & RTC_SET)) { s->current_tm = gmtime(get_localtime(d)); rtc_copy_date(s); @@ -439,12 +439,12 @@ static int rtc_ioport_write(void *opaque, uint32_t addr, uint32_t data) else { /* if disabling set mode, update the time */ - if ( s->hw.cmos_data[RTC_REG_B] & RTC_SET ) + if ( orig & RTC_SET ) rtc_set_time(s); } /* if the interrupt is already set when the interrupt become * enabled, raise an interrupt immediately*/ - if ((data & RTC_UIE) && !(s->hw.cmos_data[RTC_REG_B] & RTC_UIE)) + if ((data & RTC_UIE) && !(orig & RTC_UIE)) if (s->hw.cmos_data[RTC_REG_C] & RTC_UF) { rtc_toggle_irq(s);