SEV needs an area to place an injected secret where OVMF can find it
and pass it up as a ConfigurationTable. This patch implements the
area itself as an addition to the SEV enhanced reset vector table using
an additional guid (
4c2eb361-7d9b-4cc3-8081-
127c90d3d294).
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <
20201130202819.3910-5-jejb@linux.ibm.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
[lersek@redhat.com: fix typo in "ResetVectorVtf0.asm" comments]
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase|0|UINT32|0x40\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize|0|UINT32|0x41\r
\r
+ ## The base address and size of the SEV Launch Secret Area provisioned\r
+ # after remote attestation. If this is set in the .fdf, the platform\r
+ # is responsible for protecting the area from DXE phase overwrites.\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase|0x0|UINT32|0x42\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize|0x0|UINT32|0x43\r
+\r
[PcdsDynamic, PcdsDynamicEx]\r
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10\r
;\r
guidedStructureStart:\r
\r
+;\r
+; SEV Secret block\r
+;\r
+; This describes the guest ram area where the hypervisor should\r
+; inject the secret. The data format is:\r
+;\r
+; base physical address (32 bit word)\r
+; table length (32 bit word)\r
+;\r
+; GUID (SEV secret block): 4c2eb361-7d9b-4cc3-8081-127c90d3d294\r
+;\r
+sevSecretBlockStart:\r
+ DD SEV_LAUNCH_SECRET_BASE\r
+ DD SEV_LAUNCH_SECRET_SIZE\r
+ DW sevSecretBlockEnd - sevSecretBlockStart\r
+ DB 0x61, 0xB3, 0x2E, 0x4C, 0x9B, 0x7D, 0xC3, 0x4C\r
+ DB 0x80, 0x81, 0x12, 0x7C, 0x90, 0xD3, 0xD2, 0x94\r
+sevSecretBlockEnd:\r
+\r
;\r
; SEV-ES Processor Reset support\r
;\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
+\r
+[FixedPcd]\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize\r
%include "Main.asm"\r
\r
%define SEV_ES_AP_RESET_IP FixedPcdGet32 (PcdSevEsWorkAreaBase)\r
+ %define SEV_LAUNCH_SECRET_BASE FixedPcdGet32 (PcdSevLaunchSecretBase)\r
+ %define SEV_LAUNCH_SECRET_SIZE FixedPcdGet32 (PcdSevLaunchSecretSize)\r
%include "Ia16/ResetVectorVtf0.asm"\r
\r