mirror of https://github.com/acidanthera/audk.git
OvmfPkg: reserve SNP secrets page
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275 During the SNP guest launch sequence, a special secrets page needs to be inserted by the VMM. The PSP will populate the page; it will contain the VM Platform Communication Key (VMPCKs) used by the guest to send and receive secure messages to the PSP. The purpose of the secrets page in the SEV-SNP is different from the one used in SEV guests. In SEV, the secrets page contains the guest owner's private data after the remote attestation. Cc: Michael Roth <michael.roth@amd.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Min Xu <min.m.xu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Erdem Aktas <erdemaktas@google.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Jiewen Yao <Jiewen.yao@intel.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
This commit is contained in:
parent
3053183d41
commit
707c71a01b
|
@ -350,6 +350,13 @@
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataOffset|0|UINT32|0x56
|
gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataOffset|0|UINT32|0x56
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataSize|0|UINT32|0x57
|
gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataSize|0|UINT32|0x57
|
||||||
|
|
||||||
|
## The base address and size of the SEV-SNP Secrets Area that contains
|
||||||
|
# the VM platform communication key used to send and recieve the
|
||||||
|
# messages to the PSP. If this is set in the .fdf, the platform
|
||||||
|
# is responsible to reserve this area from DXE phase overwrites.
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsBase|0|UINT32|0x58
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsSize|0|UINT32|0x59
|
||||||
|
|
||||||
[PcdsDynamic, PcdsDynamicEx]
|
[PcdsDynamic, PcdsDynamicEx]
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
|
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10
|
||||||
|
|
|
@ -88,6 +88,9 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvm
|
||||||
0x00C000|0x001000
|
0x00C000|0x001000
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize
|
||||||
|
|
||||||
|
0x00D000|0x001000
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsSize
|
||||||
|
|
||||||
0x010000|0x010000
|
0x010000|0x010000
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
|
||||||
|
|
||||||
|
|
|
@ -59,3 +59,5 @@
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdQemuHashTableBase
|
gUefiOvmfPkgTokenSpaceGuid.PcdQemuHashTableBase
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdQemuHashTableSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdQemuHashTableSize
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsBase
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSnpSecretsSize
|
||||||
|
|
|
@ -103,6 +103,8 @@
|
||||||
%define SEV_ES_WORK_AREA_RDRAND (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 8)
|
%define SEV_ES_WORK_AREA_RDRAND (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 8)
|
||||||
%define SEV_ES_WORK_AREA_ENC_MASK (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 16)
|
%define SEV_ES_WORK_AREA_ENC_MASK (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 16)
|
||||||
%define SEV_ES_VC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))
|
%define SEV_ES_VC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))
|
||||||
|
%define SEV_SNP_SECRETS_BASE (FixedPcdGet32 (PcdOvmfSnpSecretsBase))
|
||||||
|
%define SEV_SNP_SECRETS_SIZE (FixedPcdGet32 (PcdOvmfSnpSecretsSize))
|
||||||
|
|
||||||
%include "X64/IntelTdxMetadata.asm"
|
%include "X64/IntelTdxMetadata.asm"
|
||||||
%include "Ia32/Flat32ToFlat64.asm"
|
%include "Ia32/Flat32ToFlat64.asm"
|
||||||
|
|
|
@ -14,6 +14,9 @@ BITS 64
|
||||||
; The section must be accepted or validated by the VMM before the boot
|
; The section must be accepted or validated by the VMM before the boot
|
||||||
%define OVMF_SECTION_TYPE_SNP_SEC_MEM 0x1
|
%define OVMF_SECTION_TYPE_SNP_SEC_MEM 0x1
|
||||||
|
|
||||||
|
; AMD SEV-SNP specific sections
|
||||||
|
%define OVMF_SECTION_TYPE_SNP_SECRETS 0x2
|
||||||
|
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
|
|
||||||
TIMES (15 - ((OvmfSevGuidedStructureEnd - OvmfSevGuidedStructureStart + 15) % 16)) DB 0
|
TIMES (15 - ((OvmfSevGuidedStructureEnd - OvmfSevGuidedStructureStart + 15) % 16)) DB 0
|
||||||
|
@ -30,5 +33,11 @@ _DescriptorSev:
|
||||||
DD OVMF_SEV_METADATA_VERSION ; Version
|
DD OVMF_SEV_METADATA_VERSION ; Version
|
||||||
DD (OvmfSevGuidedStructureEnd - _DescriptorSev - 16) / 12 ; Number of sections
|
DD (OvmfSevGuidedStructureEnd - _DescriptorSev - 16) / 12 ; Number of sections
|
||||||
|
|
||||||
|
; SEV-SNP Secrets page
|
||||||
|
SevSnpSecrets:
|
||||||
|
DD SEV_SNP_SECRETS_BASE
|
||||||
|
DD SEV_SNP_SECRETS_SIZE
|
||||||
|
DD OVMF_SECTION_TYPE_SNP_SECRETS
|
||||||
|
|
||||||
OvmfSevGuidedStructureEnd:
|
OvmfSevGuidedStructureEnd:
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
|
|
Loading…
Reference in New Issue