On Fri, Oct 24, 2025 at 10:00:08AM -0500, Tom Lendacky wrote:
> On 10/8/25 04:52, Naveen N Rao wrote:
> > On Tue, Oct 07, 2025 at 08:31:47AM -0500, Tom Lendacky wrote:
> >> On 9/25/25 05:17, Naveen N Rao (AMD) wrote:
> >
> > ...
> >
> >>> +
> >>> +static void
> >>> +sev_snp_guest_set_tsc_frequency(Object *obj, Visitor *v, const char
> >>> *name,
> >>> + void *opaque, Error **errp)
> >>> +{
> >>> + uint32_t value;
> >>> +
> >>> + if (!visit_type_uint32(v, name, &value, errp)) {
> >>> + return;
> >>> + }
> >>> +
> >>> + SEV_SNP_GUEST(obj)->tsc_khz = value / 1000;
> >>
> >> This will cause a value that isn't evenly divisible by 1000 to be
> >> rounded down, e.g.: tsc-frequency=2500000999. Should this name instead
> >> just be tsc-khz or secure-tsc-khz (to show it is truly associated with
> >> Secure TSC)?
> >
> > I modeled this after the existing tsc-frequency parameter on the cpu
> > object to keep it simple (parameter is the same, just where it is
> > specified differs). This also aligns with TDX which re-uses the
> > tsc-frequency parameter on the cpu object.
>
> So why aren't we using the one on the cpu object instead of creating a
> duplicate parameter? There should be some way to get that value, no?
I had spent some time on this, but I couldn't figure out a simple way to
make that work.
TDX uses a vcpu pre-create hook (similar to KVM) to get access to and
set the TSC value from the cpu object. For SEV-SNP, we need the TSC
frequency during SNP_LAUNCH_START which is quite early and we don't have
access to the cpu object there.
Admittedly, my qemu understanding is limited. If there is a way to
re-use the cpu tsc-frequency field, then that would be ideal.
Any ideas/suggestions?
Thanks,
Naveen