Re: [PATCH v14 04/13] x86/sev: Change TSC MSR behavior for Secure TSC enabled guests

From: Nikunj A. Dadhania
Date: Mon Nov 11 2024 - 02:06:56 EST




On 11/1/2024 10:10 PM, Borislav Petkov wrote:
> On Mon, Oct 28, 2024 at 11:04:22AM +0530, Nikunj A Dadhania wrote:
>> + /*
>> + * TSC related accesses should not exit to the hypervisor when a
>> + * guest is executing with SecureTSC enabled, so special handling
>> + * is required for accesses of MSR_IA32_TSC:
>> + *
>> + * Writes: Writing to MSR_IA32_TSC can cause subsequent reads
>> + * of the TSC to return undefined values, so ignore all
>> + * writes.
>> + * Reads: Reads of MSR_IA32_TSC should return the current TSC
>> + * value, use the value returned by RDTSC.
>> + */
>> + if (regs->cx == MSR_IA32_TSC && (sev_status & MSR_AMD64_SNP_SECURE_TSC)) {
>> + u64 tsc;
>> +
>> + if (exit_info_1)
>> + return ES_OK;
>> +
>> + tsc = rdtsc();
>
> rdtsc_ordered() I guess.

Yes, will update.

>
>> + regs->ax = UINT_MAX & tsc;
>> + regs->dx = UINT_MAX & (tsc >> 32);
>> +
>> + return ES_OK;
>> + }
>> +
>
> All that you're adding - put that in a __vc_handle_msr_tsc() helper so that it
> doesn't distract from the function's flow.

Sure, I noticed your patch adding __vc_handle_msr_caa().

Regards
Nikunj