Linux KVM/arm64 development list
 help / color / mirror / Atom feed
From: Christoffer Dall <christoffer.dall@arm.com>
To: Miriam Zimmerman <mutexlox@google.com>
Cc: marc.zyngier@arm.com, lersek@redhat.com, steven.price@arm.com,
	kvmarm@lists.cs.columbia.edu
Subject: Re: Timekeeping on ARM guests/hosts
Date: Wed, 7 Nov 2018 10:42:34 +0100	[thread overview]
Message-ID: <20181107094234.GA3835@e113682-lin.lund.arm.com> (raw)
In-Reply-To: <CAHSjozBxtK5wnYBC-Eha8hDrB5-D6dx+8yKXHOXndD6pi-ML0Q@mail.gmail.com>

On Tue, Nov 06, 2018 at 10:37:21AM -0800, Miriam Zimmerman wrote:
> On Mon, Nov 5, 2018 at 11:45 PM Christoffer Dall
> <christoffer.dall@arm.com> wrote:
> >
> > On Fri, Nov 02, 2018 at 02:23:45PM -0700, Miriam Zimmerman wrote:
> > > In researching KVM_REG_ARM_TIMER_CNT, I discovered your commit 4b7a6bf
> > > ("target-arm: kvm: Differentiate registers based on write-back
> > > levels"), which seems to limit when the KVM_REG_ARM_TIMER_CNT is used
> > > to save time. Under what circumstances should this be saved in order
> > > to provide a consistent view of wall clock time (as given by `date` in
> > > the VM)?
> >
> > In general, and not specific to QEMU, I think that the virtual
> > counter value should stop counting when the entirety of the VM is not
> > running, for example when the host machine is suspended, or when the
> > entire VM is stopped/suspended, either as part of a suspend/resume
> > operation, debug operation, or as part of migration of some sort.
> >
> > Supporting these timekeeping semantics is not something anyone has tried
> > up until now with KVM/Arm, as far as I'm aware, and as such is 'new'
> > work.
> 
> Hrm, that's perplexing to me. I thought you said that in your tests,
> going into S3 suspend on a host did *not* result in time drift on the
> guest? That would suggest to me that there is code that correctly
> handles it.

I don't believe I've said that.  I haven't actually tried that myself,
but I know anecdotally from others that time jumps on the guest when you
suspend the host, leading to warnings in a guest.

There must be some misunderstanding here.

> 
> Upthread, you said:
> > The key is whether the userspace program that controls the KVM VM
> > (kvmtool, QEMU, crosvm) uses the KVM_REG_ARM_TIMER_CNT ioctl to save the
> > VM view of virtual time, and to retore that at a later time.
> Is this a description of current behavior of any of these userspace
> programs, or a description of how they might opt to address the
> time-drift-on-suspend issue?
> 

That is how they might choose, using the current KVM/Arm api, to adjust
for suspending the VM (different from suspending the host).

> >
> >
> >
> > > The commit refers to 'machine initialization or on vmload
> > > operations', but I'm having difficulty figuring out what a vmload
> > > operation is on ARM. Does this include resume-from-sleep/suspend?
> >
> > I believe vmload is qemu-speak for loading in VM state from a stored
> > migration stream, but you'd have to ask the QEMU folks or study the code
> > more carefully to figure out when a vmload really happens.
> I see, okay. I misread the patch's commit log and thought you had written it.
> 

I did, but I'm (at best) a drive-by QEMU hacker, and I am not presently
in a position to contribute to QEMU.  There is also always the
possibility that my patch was wrong.  I think in this particular case,
though, I was trying to solve a differnet problem with that patch and
didn't realy consider the problem of virtual time back then.

Hope this helps,

    Christoffer

  reply	other threads:[~2018-11-07  9:42 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-09 23:39 Timekeeping on ARM guests/hosts Miriam Zimmerman
2018-10-10 10:01 ` Marc Zyngier
2018-10-10 18:38   ` Miriam Zimmerman
2018-10-11  7:54     ` Marc Zyngier
2018-10-11 15:21       ` Laszlo Ersek
2018-10-11 18:40         ` Miriam Zimmerman
2018-10-31 16:41           ` Steven Price
2018-10-31 18:49             ` Miriam Zimmerman
2018-11-02 14:34               ` Christoffer Dall
2018-11-02 18:28                 ` Miriam Zimmerman
2018-11-02 21:23                   ` Miriam Zimmerman
2018-11-06  7:45                     ` Christoffer Dall
2018-11-06 13:39                       ` Alex Bennée
2018-11-06 18:37                       ` Miriam Zimmerman
2018-11-07  9:42                         ` Christoffer Dall [this message]
2018-11-07 18:22                           ` Miriam Zimmerman
2018-11-08 10:26                             ` Christoffer Dall
2018-11-08 16:34                               ` Steven Price
2018-11-08 20:06                                 ` Christoffer Dall
2018-11-03  0:19                 ` Bijan Mottahedeh
2018-11-06  7:49                   ` Christoffer Dall

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=20181107094234.GA3835@e113682-lin.lund.arm.com \
    --to=christoffer.dall@arm.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=lersek@redhat.com \
    --cc=marc.zyngier@arm.com \
    --cc=mutexlox@google.com \
    --cc=steven.price@arm.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