From: "Michael S. Tsirkin" <mst@redhat.com>
To: Liran Alon <liran.alon@oracle.com>
Cc: ehabkost@redhat.com, qemu-devel@nongnu.org,
Nikita Leshenko <nikita.leshchenko@oracle.com>,
pbonzini@redhat.com, rth@twiddle.net
Subject: Re: [PATCH v3 10/16] hw/i386/vmport: Add support for CMD_GETTIME
Date: Sat, 14 Mar 2020 15:14:38 -0400 [thread overview]
Message-ID: <20200314151236-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <67d158f3-9d6c-cba8-6b3a-87702abdc6f0@oracle.com>
On Sat, Mar 14, 2020 at 09:04:30PM +0200, Liran Alon wrote:
>
> On 14/03/2020 20:18, Michael S. Tsirkin wrote:
> > On Fri, Mar 13, 2020 at 06:26:54PM +0200, Liran Alon wrote:
> > > On 13/03/2020 17:47, Michael S. Tsirkin wrote:
> > > > On Fri, Mar 13, 2020 at 05:25:20PM +0200, Liran Alon wrote:
> > > > > > > @@ -168,6 +169,20 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
> > > > > > > return ram_size;
> > > > > > > }
> > > > > > > +static uint32_t vmport_cmd_time(void *opaque, uint32_t addr)
> > > > > > > +{
> > > > > > > + X86CPU *cpu = X86_CPU(current_cpu);
> > > > > > > + qemu_timeval tv;
> > > > > > > +
> > > > > > > + if (qemu_gettimeofday(&tv) < 0) {
> > > > > > > + return UINT32_MAX;
> > > > > > > + }
> > > > > > > +
> > > > > > > + cpu->env.regs[R_EBX] = (uint32_t)tv.tv_usec;
> > > > > > > + cpu->env.regs[R_ECX] = port_state->max_time_lag_us;
> > > > > > > + return (uint32_t)tv.tv_sec;
> > > > > > > +}
> > > > > > > +
> > > > > > > /* vmmouse helpers */
> > > > > > > void vmmouse_get_data(uint32_t *data)
> > > > > > > {
> > > > > > That's a very weird thing to return to the guest.
> > > > > > For example it's not monotonic across migrations.
> > > > > That's the VMware PV interface... I didn't design it. :P
> > > > > Regarding how it handles the fact time is not monotonic across migrations,
> > > > > see big comment at the start of services/plugins/timeSync/timeSync.c in
> > > > > open-vm-tools regarding the time-sync algorithm used by VMware Tools.
> > > > > Specifically:
> > > > > """
> > > > > During normal operation this plugin only steps the time forward and only if
> > > > > the error is greater than one second.
> > > > Looks like guest assumes this time only moves forward.
> > > > So something needs to be done to avoid it moving
> > > > backward across migrations.
> > > Where do you see this assumption in guest code? I don't think this is true.
> > > Guest code seems to handle this by making sure to only step the time
> > > forward.
> > Exactly. So if host time moved backward e.g. by 100s, then for 100s
> > time is not correcting. Which possibly vmware has a way to mitigate
> > against e.g. by synchronising host time using their
> > management app.
> >
> > > Read carefully services/plugins/timeSync/timeSync.c and point me to what I'm
> > > missing if you think otherwise (i.e. I missed something).
> > I'm just going by what you write in a patch.
> >
> So guest doesn't assume that this time only moves forward...
>
> Can you clarify then which change do you suggest making to this patch in
> this regard? It seems correct to me.
> i.e. The CMD_GETTIME implementation seems correct to me and it doesn't need
> to do anything special to handle host time moving backwards.
>
> -Liran
>
I think something needs to be done to make sure host time as reported by
this command does not move backwards significantly. Just forwarding
gettimeofday won't cut it IMHO. Look at kvm clock for inspiration of
things to do.
--
MST
next prev parent reply other threads:[~2020-03-14 19:15 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-12 16:54 [PATCH v3 00/16]: hw/i386/vmport: Bug fixes and improvements Liran Alon
2020-03-12 16:54 ` [PATCH v3 01/16] hw/i386/vmport: Add reference to VMware open-vm-tools Liran Alon
2020-03-12 16:54 ` [PATCH v3 02/16] hw/i386/vmport: Add device properties Liran Alon
2020-03-13 19:53 ` Philippe Mathieu-Daudé
2020-03-12 16:54 ` [PATCH v3 03/16] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
2020-03-12 16:54 ` [PATCH v3 04/16] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands Liran Alon
2020-03-12 16:54 ` [PATCH v3 05/16] hw/i386/vmport: Introduce vmware-vmx-version property Liran Alon
2020-03-13 19:55 ` Philippe Mathieu-Daudé
2020-03-12 16:54 ` [PATCH v3 06/16] hw/i386/vmport: Report vmware-vmx-type in CMD_GETVERSION Liran Alon
2020-03-12 16:54 ` [PATCH v3 07/16] hw/i386/vmport: Introduce vmport.h Liran Alon
2020-03-13 19:57 ` Philippe Mathieu-Daudé
2020-03-13 22:38 ` Liran Alon
2020-03-14 8:31 ` Philippe Mathieu-Daudé
2020-03-14 12:13 ` Liran Alon
2020-03-14 18:25 ` Michael S. Tsirkin
2020-03-14 19:08 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 08/16] hw/i386/vmport: Define enum for all commands Liran Alon
2020-03-13 19:59 ` Philippe Mathieu-Daudé
2020-03-13 20:05 ` Philippe Mathieu-Daudé
2020-03-13 22:42 ` Liran Alon
2020-03-13 22:40 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 09/16] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
2020-03-12 16:54 ` [PATCH v3 10/16] hw/i386/vmport: Add support for CMD_GETTIME Liran Alon
2020-03-13 0:04 ` Michael S. Tsirkin
2020-03-13 15:25 ` Liran Alon
2020-03-13 15:47 ` Michael S. Tsirkin
2020-03-13 16:26 ` Liran Alon
2020-03-14 18:18 ` Michael S. Tsirkin
2020-03-14 19:04 ` Liran Alon
2020-03-14 19:14 ` Michael S. Tsirkin [this message]
2020-03-14 19:17 ` Liran Alon
2020-03-14 19:26 ` Michael S. Tsirkin
2020-03-14 19:58 ` Nikita Leshenko
2020-03-14 20:05 ` Liran Alon
2020-03-14 20:56 ` Michael S. Tsirkin
2020-03-15 11:56 ` Liran Alon
2020-03-22 11:22 ` Liran Alon
2020-03-31 12:35 ` Liran Alon
2020-03-14 20:48 ` Michael S. Tsirkin
2020-03-14 19:04 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 11/16] hw/i386/vmport: Add support for CMD_GETTIMEFULL Liran Alon
2020-03-13 0:06 ` Michael S. Tsirkin
2020-03-13 15:26 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 12/16] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO Liran Alon
2020-03-13 0:09 ` Michael S. Tsirkin
2020-03-13 0:11 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 13/16] hw/i386/vmport: Allow x2apic without IR Liran Alon
2020-03-12 16:54 ` [PATCH v3 14/16] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
2020-03-12 16:54 ` [PATCH v3 15/16] hw/i386/vmport: Add support for CMD_GETHZ Liran Alon
2020-03-13 20:07 ` Philippe Mathieu-Daudé
2020-03-13 22:44 ` Liran Alon
2020-03-14 8:27 ` Philippe Mathieu-Daudé
2020-03-14 21:52 ` Michael S. Tsirkin
2020-03-15 0:10 ` Liran Alon
2020-03-12 16:54 ` [PATCH v3 16/16] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
2020-05-21 16:15 ` [PATCH v3 00/16]: hw/i386/vmport: Bug fixes and improvements 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=20200314151236-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=ehabkost@redhat.com \
--cc=liran.alon@oracle.com \
--cc=nikita.leshchenko@oracle.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.