qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 1/7] RTC: Remove the logic to update time for


From: Zhang, Yang Z
Subject: Re: [Qemu-devel] [PATCH v3 1/7] RTC: Remove the logic to update time format when DM bit changed
Date: Fri, 9 Mar 2012 01:58:16 +0000

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: address@hidden; Jan Kiszka; address@hidden;
> address@hidden; 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:address@hidden
> > 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 <address@hidden>
> > 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 <address@hidden>
> >
> 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]