only call alarm_timer_update() on REG_B writes when relevant bits change From: George Dunlap --- xen/arch/x86/hvm/rtc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index a122300..d87a2f8 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -457,7 +457,8 @@ static int rtc_ioport_write(void *opaque, uint32_t addr, uint32_t data) s->hw.cmos_data[RTC_REG_B] = data; if ( (data ^ orig) & RTC_SET ) check_update_timer(s); - alarm_timer_update(s); + if ( (data ^ orig) & (RTC_24H | RTC_DM_BINARY | RTC_SET) ) + alarm_timer_update(s); break; case RTC_REG_C: case RTC_REG_D: