I think the better fixing is to update the cmos before reading the RTC. And in my patch, it will do it. best regards yang > -----Original Message----- > From: Zhang, Yang Z > Sent: Friday, March 09, 2012 9:54 AM > To: Marcelo Tosatti > Cc: qemu-devel@xxxxxxxxxx; Jan Kiszka; kvm@xxxxxxxxxxxxxxx; > aliguori@xxxxxxxxxx; Paolo Bonzini > Subject: RE: [PATCH v3 1/7] RTC: Remove the logic to update time format when > DM bit changed > > > -----Original Message----- > > From: Marcelo Tosatti [mailto:mtosatti@xxxxxxxxxx] > > Sent: Friday, March 09, 2012 9:36 AM > > > --- > > > hw/mc146818rtc.c | 10 +--------- > > > 1 files changed, 1 insertions(+), 9 deletions(-) > > > > > > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c > > > index a46fdfc..9b49cbc 100644 > > > --- a/hw/mc146818rtc.c > > > +++ b/hw/mc146818rtc.c > > > @@ -252,15 +252,7 @@ static void cmos_ioport_write(void *opaque, > uint32_t > > addr, uint32_t data) > > > rtc_set_time(s); > > > } > > > } > > > - if (((s->cmos_data[RTC_REG_B] ^ data) & (REG_B_DM | > > REG_B_24H)) && > > > - !(data & REG_B_SET)) { > > > - /* If the time format has changed and not in set mode, > > > - update the registers immediately. */ > > > - s->cmos_data[RTC_REG_B] = data; > > > - rtc_copy_date(s); > > > - } else { > > > - s->cmos_data[RTC_REG_B] = data; > > > - } > > > + s->cmos_data[RTC_REG_B] = data; > > > rtc_timer_update(s, qemu_get_clock_ns(rtc_clock)); > > > break; > > > case RTC_REG_C: > > > > Even though its not correct accordingly to the manual, guests can update > > format and expect it to be reflected to time byte reads. > > > > commit 51e08f3e4b8a3b6d27fde9a9e75c8fa32eaa72d0 > > Author: Aurelien Jarno <aurelien@xxxxxxxxxxx> > > Date: Tue Jan 25 11:55:15 2011 +0100 > > > > mc146818rtc: update registers after a format change > > > > For some unknown reason, the MIPS kernel briefly changes the RTC to > > binary mode during boot, switch back to BCD mode and read the time. As > > the registers are updated only every second, they may still be in the > > old format when they are read. > > > > This patch forces a register update immediately after a format > > change (BCD/binary or 12/24H). This avoid long fsck during boot due to > > time wrap. > > > > Signed-off-by: Aurelien Jarno <aurelien@xxxxxxxxxxx> > > > This is obvious a wrong fixing. Even for real RTC, changing date mode will not > change the internal time register. So the MIPS kernel also should not boot up > with real RTC. But it only fail in qemu, this means he not found the culprit. This > just a workaround. > > > best regards > yang -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html