From: Thomas Gleixner <tglx@kernel.org>
To: David Woodhouse <dwmw2@infradead.org>,
Harshitha Ramamurthy <hramamurthy@google.com>,
netdev@vger.kernel.org, Arthur Kiyanovski <akiyano@amazon.com>
Cc: joshwash@google.com, andrew+netdev@lunn.ch, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
richardcochran@gmail.com, jstultz@google.com, sboyd@kernel.org,
willemb@google.com, nktgrg@google.com, jfraker@google.com,
ziweixiao@google.com, maolson@google.com, jordanrhee@google.com,
thostet@google.com, alok.a.tiwari@oracle.com,
pkaligineedi@google.com, horms@kernel.org,
jacob.e.keller@intel.com, yyd@google.com, jefrogers@google.com,
linux-kernel@vger.kernel.org,
"Naman Gulati" <namangulati@google.com>,
"Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Subject: Re: [PATCH net-next v8 3/3] gve: implement PTP gettimex64
Date: Fri, 22 May 2026 16:46:36 +0200 [thread overview]
Message-ID: <87y0hbtsc3.ffs@tglx> (raw)
In-Reply-To: <aee6f77138e5f173d36f3f4ce65cc2acc4e4ae69.camel@infradead.org>
On Fri, May 22 2026 at 11:34, David Woodhouse wrote:
> On Fri, 2026-05-22 at 00:43 +0200, Thomas Gleixner wrote:
>> 1) Guest TSC value at freeze
>> 2) Guest nominal TSC frequency
>> 3) Old host REALTIME at freeze - Ideally you use TAI
>> 4) New host TSC frequency
>> 5) New host TSC/REALTIME/TAI snapshot
>>
>> #1 is a KVM problem, but see #3
>>
>> #2 ideally communicated from the guest to the host after early
>> initialization at boot.
>>
>> You really want this information because the guest won't change the
>> mult/shift pair for it ever.
>
> If *tell* the guest the frequency in CPUID, then it shouldn't be trying
> to manually calibrate it against an emulated PIT while suffering steal
> time, and its mult/shift should have a little bit less entropy.
They are identical on every boot evaluation.
> Even a system which *has* to do that crappy calibration still does it
> with a lot more *precision* than accuracy, so I suspect we ought to be
> rounding the result to the nearest 1MHz as long as that's within 10PPM
> or something like that. But that really *is* a digression :)
:)
> The model I'm enabling and documenting for KVM migration is basically
> within the noise of what you describe above, yes.
>
> But if we want to give the illusion of the TSC just ticking away while
> the guest happens to experience a little steal time, when in fact it's
> been completely migrated to a new host, we actually want to work with
> the *true* running frequency of the TSC at the moment of migration.
>
> So...
>
> 1) Use clock_get_time_reference() to get a { host tsc, time, rate }
> from the source host at 'freeze' time.
>
> 2) Use clock_get_time_reference() to get a { host tsc, time, rate }
> from the destination host, when resuming.
>
> 3) (Optionally) scale the guest's TSC frequency, not by the *nominal*
> rates, but by the *actual* ratio of the rates from (1) and (2)
> above (plus any original nominal scaling of the guest's TSC from
> the original host).
>
> 4) Calculate the guest TSC *offset* in order to convey the effect
> that the guest's TSC continued to tick at the rate from (1),
> during the time period between (1) and (2).
>
> 5) (Optionally) Once the guest is running, slowly undo the scaling
> in (1) in order to get the guest back to a nice simple unscaled
> TSC (or scaled only by nominal frequencies as it was when launched)
>
>
> Obviously, a dedicated environment which disciplines its TSC directly
> can do all of that right now already because it *has* all the
> information it would get from clock_get_time_reference().
>
> But as you know perfectly well, Thomas, I'm never happy to keep the
> blinkers on and focus only on my specific use case at hand; I want this
> to work for the *general* case, including people running QEMU in a
> fairly standard environment. And I think clock_get_time_reference()
> might be a reasonable way of doing that, and a fairly clean counterpart
> to the clock_set_time_reference() you suggested?
Agreed.
next prev parent reply other threads:[~2026-05-22 14:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-14 22:58 [PATCH net-next v8 0/3] gve: add support for PTP gettimex64 Harshitha Ramamurthy
2026-05-14 22:58 ` [PATCH net-next v8 1/3] gve: skip error logging for retryable AdminQ commands Harshitha Ramamurthy
2026-05-14 22:58 ` [PATCH net-next v8 2/3] gve: make nic clock reads thread safe Harshitha Ramamurthy
2026-05-14 22:58 ` [PATCH net-next v8 3/3] gve: implement PTP gettimex64 Harshitha Ramamurthy
2026-05-20 21:08 ` Thomas Gleixner
2026-05-20 22:16 ` Jakub Kicinski
2026-05-21 4:35 ` Jordan Rhee
2026-05-27 18:46 ` Jordan Rhee
2026-05-27 20:03 ` David Woodhouse
2026-05-28 16:22 ` Jordan Rhee
2026-05-28 17:33 ` David Woodhouse
2026-05-21 10:08 ` David Laight
2026-05-28 17:22 ` David Woodhouse
2026-05-21 11:43 ` David Woodhouse
2026-05-21 18:06 ` Thomas Gleixner
2026-05-21 19:59 ` David Woodhouse
2026-05-21 22:43 ` Thomas Gleixner
2026-05-22 0:12 ` David Woodhouse
2026-05-22 7:49 ` Thomas Gleixner
2026-05-22 8:56 ` David Woodhouse
2026-05-22 14:41 ` Thomas Gleixner
2026-05-22 10:34 ` David Woodhouse
2026-05-22 14:46 ` Thomas Gleixner [this message]
2026-05-20 1:30 ` [PATCH net-next v8 0/3] gve: add support for " patchwork-bot+netdevbpf
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=87y0hbtsc3.ffs@tglx \
--to=tglx@kernel.org \
--cc=akiyano@amazon.com \
--cc=alok.a.tiwari@oracle.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=dwmw2@infradead.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=hramamurthy@google.com \
--cc=jacob.e.keller@intel.com \
--cc=jefrogers@google.com \
--cc=jfraker@google.com \
--cc=jordanrhee@google.com \
--cc=joshwash@google.com \
--cc=jstultz@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maolson@google.com \
--cc=namangulati@google.com \
--cc=netdev@vger.kernel.org \
--cc=nktgrg@google.com \
--cc=pabeni@redhat.com \
--cc=pkaligineedi@google.com \
--cc=richardcochran@gmail.com \
--cc=sboyd@kernel.org \
--cc=thomas.weissschuh@linutronix.de \
--cc=thostet@google.com \
--cc=willemb@google.com \
--cc=yyd@google.com \
--cc=ziweixiao@google.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 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.