From: Wei Huang <wei.huang2@amd.com>
To: Dan Magenheimer <dan.magenheimer@oracle.com>
Cc: Keir,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
Fraser <keir@xen.org>
Subject: Re: [PATCH] SVM: enables TSC scaling ratio support for SVM
Date: Fri, 27 May 2011 16:59:22 -0500 [thread overview]
Message-ID: <4DE01EBA.8010206@amd.com> (raw)
In-Reply-To: <4db3649f-de0a-42f2-b7ec-6d3f86f4ddc9@default>
Hi Dan,
I tested it by migrating between systems with TSC and without TSC,
mainly using a Linux guest VM.
I might have missed your point. But what is offset1 in your formula? My
understanding is that hvm_get_guest_tsc() returns a TSC value guests are
supposed to use. So when guest_tsc is set, we can re-calculate
offset=hvm_get_guest_tsc() - host_tsc * ratio. This is how current Xen
is implemented. Also, as long as host_tsc doesn't go backwards (i.e.
TSC_RELIABLE), host_tsc * ratio+offset should be reliable. Are you
concerned that cpu_khz might be (slightly) different on different cores?
This feature is only available under SVM mode. HVM guests won't be able
to see it in CPUID. PV guests shouldn't be able to change the value of
this MSR.
Thanks,
-Wei
On 05/27/2011 03:41 PM, Dan Magenheimer wrote:
>> From: Wei Huang [mailto:wei.huang2@amd.com]
>> Sent: Friday, May 27, 2011 10:35 AM
>> To: xen-devel@lists.xensource.com; Keir Fraser
>> Subject: [Xen-devel] [PATCH] SVM: enables TSC scaling ratio support for
>> SVM
>>
>> Future AMD CPUs support TSC scaling. It allows guests to have a
>> different TSC frequency from host system using this formula: guest_tsc
>> =
>> host_tsc * tsc_ratio + vmcb_offset. The tsc_ratio is a 64bit MSR
>> contains a fixed-point number in 8.32 format (8 bits for integer part
>> and 32bits for fractional part). For instance 0x00000003_80000000 means
>> tsc_ratio=3.5.
>>
>> This patch enables TSC scaling ratio for SVM. With it, guest VMs don't
>> need take #VMEXIT to calculate a translated TSC value when it is
>> running
>> under TSC emulation mode. This can SUBSTANTIALLY reduce the rdtsc
>> overhead.
>>
>> Signed-off-by: Wei Huang<wei.huang2@amd.com>
> Has this patch been tested across save/restore and migration,
> especially between machines with and without the feature and
> especially across many migrations where each physical
> machine has a different tsc_ratio?
>
> ISTR that this feature does not really do a generic adjustment
> so may mis-scale time that has been accrued on one or more
> previous physical machines. In other words, I think the problem
> is that it does
>
> (host_tsc * tsc_ratio) + offset
>
> and not
>
> ((host_tsc + offset1) * tsc_ratio) + offset2
>
> This can be fixed if you trust cpu_khz to be precise on all
> machines, but I don't think it is sufficiently precise to
> guarantee that time never goes backwards in a guest (though
> that may be fixable too). If time DOES go backwards and
> the guest detects it, it may switch to a much slower
> timer mechanism which could be worse than trapping
> rdtsc.
>
> All of this is from vague recollection... if it is all fully
> tested across all cases (and sufficient testing proves that
> time never goes backwards), consider this just noting a concern.
>
> Also, is this feature visible from an HVM guest kernel? Is
> it visible from a PV guest cpuid (e.g. OS or app)?
>
> Thanks,
> Dan
>
>
next prev parent reply other threads:[~2011-05-27 21:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-27 16:34 [PATCH] SVM: enables TSC scaling ratio support for SVM Wei Huang
2011-05-27 20:41 ` Dan Magenheimer
2011-05-27 21:59 ` Wei Huang [this message]
2011-05-28 17:39 ` Dan Magenheimer
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=4DE01EBA.8010206@amd.com \
--to=wei.huang2@amd.com \
--cc=dan.magenheimer@oracle.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xensource.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).