OvmfPkg: Enable AMD SEV-ES DebugVirtualization

Write the feature bit into PcdConfidentialComputingGuestAttr
and enable DebugVirtualization in PEI, SEC, DXE.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Michael Roth <michael.roth@amd.com>
Cc: Min Xu <min.m.xu@intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
---
Changes:
v5:
* "rb" from Tom

v4:
* s/DebugSwap/DebugVirtualization/g
This commit is contained in:
Alexey Kardashevskiy 2024-05-28 14:48:40 +10:00 committed by mergify[bot]
parent 63a7152471
commit 2809966189
3 changed files with 20 additions and 5 deletions

View File

@ -154,5 +154,9 @@ MemEncryptSevEsDebugVirtualizationIsEnabled (
VOID VOID
) )
{ {
return FALSE; MSR_SEV_STATUS_REGISTER Msr;
Msr.Uint32 = InternalMemEncryptSevStatus ();
return Msr.Bits.DebugVirtualization ? TRUE : FALSE;
} }

View File

@ -154,7 +154,11 @@ MemEncryptSevEsDebugVirtualizationIsEnabled (
VOID VOID
) )
{ {
return FALSE; MSR_SEV_STATUS_REGISTER Msr;
Msr.Uint32 = InternalMemEncryptSevStatus ();
return Msr.Bits.DebugVirtualization ? TRUE : FALSE;
} }
/** /**

View File

@ -434,6 +434,7 @@ AmdSevInitialize (
) )
{ {
UINT64 EncryptionMask; UINT64 EncryptionMask;
UINT64 CCGuestAttr;
RETURN_STATUS PcdStatus; RETURN_STATUS PcdStatus;
// //
@ -517,13 +518,19 @@ AmdSevInitialize (
// technology is active. // technology is active.
// //
if (MemEncryptSevSnpIsEnabled ()) { if (MemEncryptSevSnpIsEnabled ()) {
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCAttrAmdSevSnp); CCGuestAttr = CCAttrAmdSevSnp;
} else if (MemEncryptSevEsIsEnabled ()) { } else if (MemEncryptSevEsIsEnabled ()) {
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCAttrAmdSevEs); CCGuestAttr = CCAttrAmdSevEs;
} else { } else {
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCAttrAmdSev); CCGuestAttr = CCAttrAmdSev;
} }
if (MemEncryptSevEsDebugVirtualizationIsEnabled ()) {
CCGuestAttr |= CCAttrFeatureAmdSevEsDebugVirtualization;
}
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCGuestAttr);
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
} }