x86/sev: Improve handling of writes to intercepted TSC MSRs
authorNikunj A Dadhania <nikunj@amd.com>
Tue, 22 Jul 2025 07:48:53 +0000 (13:18 +0530)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 12 Aug 2025 10:33:58 +0000 (12:33 +0200)
commit5eb1bcdb6a8c088514019c3a9bda5d565beed1af
treed096ca60e379de53ea7e0d95a82d62fbc5e628fc
parent31cd31c9e17ece125aad27259501a2af69ccb020
x86/sev: Improve handling of writes to intercepted TSC MSRs

Currently, when a Secure TSC enabled SNP guest attempts to write to the
intercepted GUEST_TSC_FREQ MSR (a read-only MSR), the guest kernel response
incorrectly implies a VMM configuration error, when in fact it is the usual
VMM configuration to intercept writes to read-only MSRs, unless explicitly
documented.

Modify the intercepted TSC MSR #VC handling:
* Write to GUEST_TSC_FREQ will generate a #GP instead of terminating the
  guest
* Write to MSR_IA32_TSC will generate a #GP instead of silently ignoring it

However, continue to terminate the guest when reading from intercepted
GUEST_TSC_FREQ MSR with Secure TSC enabled, as intercepted reads indicate an
improper VMM configuration for Secure TSC enabled SNP guests.

  [ bp: simplify comment. ]

Fixes: 38cc6495cdec ("x86/sev: Prevent GUEST_TSC_FREQ MSR interception for Secure TSC enabled guests")
Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/20250722074853.22253-1-nikunj@amd.com
arch/x86/coco/sev/vc-handle.c