From: Alex Bligh <alex@alex.org.uk>
To: Lb peace <peaceustc@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
"Stefan stefanha@redhat. com" <stefanha@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Alex Bligh <alex@alex.org.uk>
Subject: Re: [Qemu-devel] [PATCH]Fix a error in mc146818rtc.c
Date: Tue, 1 Jul 2014 19:50:08 +0100 [thread overview]
Message-ID: <1FDC85CC-3ABF-4C8F-BFDD-3B702E509CD8@alex.org.uk> (raw)
In-Reply-To: <CANycmrpv1Y_m-wW_ixiPzwNAUhbkGPQqJoq-AACPkxpRQDZCQw@mail.gmail.com>
On 1 Jul 2014, at 02:12, Lb peace <peaceustc@gmail.com> wrote:
> 1)“ it's an automated output of perl simply changing one calling convention to another”.What do you mean... I
> can not find the point :)
I'd thought this was the huge patch which was generated by
perl to change the API, but it's not.
> 2) The problem is :
> a.use QEMU to run linux-0.2.img with command qemu-system-i386 linux-0.2.img or sth. like that
> b.hwclock ,and we get a date1(2014-07-01 12:00,e.g.)
> c.change the clock of host before date1(2014-04-01 12:00),called date2
> d.hwclock,and we get another date3(2014-07-01,12:01)
> e. before that patch date3 is synchronized with host,so it changed to a time date3>date2 && date3<date1
> after that patch date3 is not synchronized with host.It has its own clock,so date3 >date1
OK.
Your patch changes QEMU_CLOCK_REALTIME (a clock type) to rtc_clock (an instance of a clock type)
rtc_clock is set up in vl.c as follows:
rtc_clock = QEMU_CLOCK_HOST;
...
value = qemu_opt_get(opts, "clock");
if (value) {
if (!strcmp(value, "host")) {
rtc_clock = QEMU_CLOCK_HOST;
} else if (!strcmp(value, "rt")) {
rtc_clock = QEMU_CLOCK_REALTIME;
} else if (!strcmp(value, "vm")) {
rtc_clock = QEMU_CLOCK_VIRTUAL;
} else {
fprintf(stderr, "qemu: invalid option value '%s'\n", value);
exit(1);
}
}
So by default it uses the QEMU_CLOCK_HOST option, rather than QEMU_CLOCK_REALTIME.
> 3)why we set a reset_notifiers of QEMU_CLOCK_REALTIME? Any comment to that? A QEMU_CLOCK_REALTIME clock will
> not call its reset_notifiers when the time is adjusted to a time-point before.The reset_notifiers is useless for this type of QEMUClock.
I think this is a staightforward bug. I suspect the issue is that at that point
in the patch series I hadn't get converted the reset_notifier stuff to use the
new API. It looks like I introduced it. Therefore:
Reviewed-by: Alex Bligh <alex@alex.org.uk>
Stefan & Paolo copied
Alex
>
>
>
>
> 2014-07-01 4:08 GMT+08:00 Alex Bligh <alex@alex.org.uk>:
>
>
> On 30 Jun 2014, at 20:53, Lb peace <peaceustc@gmail.com> wrote:
>
> > If you use hwclock in guest os ,you will find the result of hwclock isn't changed after changing host os's clock.
> > I find this issue is generated in this patch:
>
> I find it hard to believe that the patch you mention is the problem,
> as it's an automated output of perl simply changing one calling
> convention to another.
>
> Is this because you are using an unusual clock= option?
>
> Alex
>
>
>
> > http://lists.gnu.org/archive/html/qemu-devel/2013-08/msg03353.html
> > Before this patch,the result will be changed if you change host's clock.
> > It makes use of the following codes in qemu-timer.c:
> > if (now < last) {
> > notifier_list_notify(&clock->reset_notifiers, &now);
> > }
> > It is useless if you register a QEMU_CLOCK_REALTIME's clock_reset_notifier,
> > ---
> > hw/timer/mc146818rtc.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
> > index df54546..821c27e 100644
> > --- a/hw/timer/mc146818rtc.c
> > +++ b/hw/timer/mc146818rtc.c
> > @@ -879,7 +879,7 @@ static void rtc_realizefn(DeviceState *dev, Error **errp)
> > check_update_timer(s);
> >
> > s->clock_reset_notifier.notify = rtc_notify_clock_reset;
> > - qemu_clock_register_reset_notifier(QEMU_CLOCK_REALTIME,
> > + qemu_clock_register_reset_notifier(rtc_clock,
> > &s->clock_reset_notifier);
> >
> > s->suspend_notifier.notify = rtc_notify_suspend;
> > --
> >
>
> --
> Alex Bligh
>
>
>
>
>
--
Alex Bligh
next prev parent reply other threads:[~2014-07-01 18:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-30 19:53 [Qemu-devel] [PATCH]Fix a error in mc146818rtc.c Lb peace
2014-06-30 20:08 ` Alex Bligh
2014-07-01 1:12 ` Lb peace
2014-07-01 18:50 ` Alex Bligh [this message]
2014-07-02 8:29 ` Stefan Hajnoczi
2014-07-02 9:41 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1FDC85CC-3ABF-4C8F-BFDD-3B702E509CD8@alex.org.uk \
--to=alex@alex.org.uk \
--cc=pbonzini@redhat.com \
--cc=peaceustc@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).