Currently OVMF tries to rely on the base size advertised via the CPUID table entries corresponding to leaf 0xD, sub-leafs 0x0/0x1. This will generally work for KVM guests, but might not for other SEV-SNP hypervisor implementations. Make the handling more robust by simply using the base area size documented by the APM.
Reviewed-by: Tom Lendacky <thomas.lenda...@amd.com> Acked-by: Jiewen Yao <jiewen....@intel.com> Signed-off-by: Michael Roth <michael.r...@amd.com> --- OvmfPkg/Library/CcExitLib/CcExitVcHandler.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OvmfPkg/Library/CcExitLib/CcExitVcHandler.c b/OvmfPkg/Library/CcExitLib/CcExitVcHandler.c index 94f0c4872c..0fc30f7bc4 100644 --- a/OvmfPkg/Library/CcExitLib/CcExitVcHandler.c +++ b/OvmfPkg/Library/CcExitLib/CcExitVcHandler.c @@ -1114,8 +1114,6 @@ SnpEnabled ( @param[in] XFeaturesEnabled Bit-mask of enabled XSAVE features/areas as indicated by XCR0/MSR_IA32_XSS bits - @param[in] XSaveBaseSize Base/legacy XSAVE area size (e.g. when - XCR0 is 1) @param[in, out] XSaveSize Pointer to storage for calculated XSAVE area size @param[in] Compacted Whether or not the calculation is for the @@ -1130,7 +1128,6 @@ STATIC BOOLEAN GetCpuidXSaveSize ( IN UINT64 XFeaturesEnabled, - IN UINT32 XSaveBaseSize, IN OUT UINT32 *XSaveSize, IN BOOLEAN Compacted ) @@ -1139,7 +1136,10 @@ GetCpuidXSaveSize ( UINT64 XFeaturesFound = 0; UINT32 Idx; - *XSaveSize = XSaveBaseSize; + // + // The base/legacy XSave size is documented to be 0x240 in the APM. + // + *XSaveSize = 0x240; CpuidInfo = (SEV_SNP_CPUID_INFO *)(UINT64)PcdGet32 (PcdOvmfCpuidBase); for (Idx = 0; Idx < CpuidInfo->Count; Idx++) { @@ -1355,7 +1355,6 @@ GetCpuidFw ( if (!GetCpuidXSaveSize ( XCr0 | XssMsr.Uint64, - *Ebx, &XSaveSize, Compacted )) -- 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101248): https://edk2.groups.io/g/devel/message/101248 Mute This Topic: https://groups.io/mt/97638519/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-