Messages in this thread | | | Date | Fri, 6 Oct 2023 07:02:48 -0700 | Subject | Re: [PATCH] x86/tdx: Override the tsc calibration for TDX VMs | From | Dave Hansen <> |
| |
On 10/5/23 18:12, Vishal Annapurve wrote: > +/** > + * Determine TSC frequency via CPUID, else return 0. > + */ > +static unsigned long tdx_calibrate_tsc(void) > +{ > + unsigned int eax_denominator = 0, ebx_numerator = 0, ecx_hz = 0, edx = 0; > + unsigned int crystal_khz; > + > + /* CPUID 15H TSC/Crystal ratio, plus optionally Crystal Hz */ > + cpuid(0x15, &eax_denominator, &ebx_numerator, &ecx_hz, &edx); > + > + if (ebx_numerator == 0 || eax_denominator == 0) > + return 0; > + > + crystal_khz = ecx_hz / 1000; > + > + /* > + * TSC frequency reported directly by CPUID is a "hardware reported" > + * frequency and is the most accurate one so far we have. This > + * is considered a known frequency. > + */ > + if (crystal_khz != 0) > + setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ); > + > + return crystal_khz * ebx_numerator / eax_denominator; > +} > +
Would it be possible to do this by refactoring the existing code and calling it directly instead of copying and pasting so much?
| |