Skip to content

Commit

Permalink
OvmfPkg/AmdSev: Expose the Sev Secret area using a configuration table
Browse files Browse the repository at this point in the history
Now that the secret area is protected by a boot time HOB, extract its
location details into a configuration table referenced by
gSevLaunchSecretGuid so the boot loader or OS can locate it before a
call to ExitBootServices().

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-7-jejb@linux.ibm.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
[lersek@redhat.com: fix indentation of InstallConfigurationTable() args]
  • Loading branch information
James Bottomley authored and lersek committed Dec 4, 2020
1 parent c38b3ca commit ea823d0
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 0 deletions.
1 change: 1 addition & 0 deletions OvmfPkg/AmdSev/AmdSevX64.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,7 @@
gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
}
!endif
OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
OvmfPkg/AmdSev/Grub/Grub.inf
!if $(BUILD_SHELL) == TRUE
ShellPkg/Application/Shell/Shell.inf {
Expand Down
1 change: 1 addition & 0 deletions OvmfPkg/AmdSev/AmdSevX64.fdf
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ INF MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(BUILD_SHELL) == TRUE
INF OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
!endif
INF OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
INF OvmfPkg/AmdSev/Grub/Grub.inf
!if $(BUILD_SHELL) == TRUE
INF ShellPkg/Application/Shell/Shell.inf
Expand Down
27 changes: 27 additions & 0 deletions OvmfPkg/AmdSev/SecretDxe/SecretDxe.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/** @file
SEV Secret configuration table constructor
Copyright (C) 2020 James Bottomley, IBM Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiDxe.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Guid/SevLaunchSecret.h>

STATIC SEV_LAUNCH_SECRET_LOCATION mSecretDxeTable = {
FixedPcdGet32 (PcdSevLaunchSecretBase),
FixedPcdGet32 (PcdSevLaunchSecretSize),
};

EFI_STATUS
EFIAPI
InitializeSecretDxe(
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return gBS->InstallConfigurationTable (
&gSevLaunchSecretGuid,
&mSecretDxeTable
);
}
37 changes: 37 additions & 0 deletions OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## @file
# Sev Secret configuration Table installer
#
# Copyright (C) 2020 James Bottomley, IBM Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
INF_VERSION = 0x00010005
BASE_NAME = SecretDxe
FILE_GUID = 6e2b9619-8810-4e9d-a177-d432bb9abeda
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
ENTRY_POINT = InitializeSecretDxe

[Sources]
SecretDxe.c

[Packages]
OvmfPkg/OvmfPkg.dec
MdePkg/MdePkg.dec

[LibraryClasses]
UefiBootServicesTableLib
UefiDriverEntryPoint

[Guids]
gSevLaunchSecretGuid

[FixedPcd]
gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase
gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize

[Depex]
TRUE
28 changes: 28 additions & 0 deletions OvmfPkg/Include/Guid/SevLaunchSecret.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/** @file
UEFI Configuration Table for exposing the SEV Launch Secret location to UEFI
applications (boot loaders).
Copyright (C) 2020 James Bottomley, IBM Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef SEV_LAUNCH_SECRET_H_
#define SEV_LAUNCH_SECRET_H_

#include <Uefi/UefiBaseType.h>

#define SEV_LAUNCH_SECRET_GUID \
{ 0xadf956ad, \
0xe98c, \
0x484c, \
{ 0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47 }, \
}

typedef struct {
UINT32 Base;
UINT32 Size;
} SEV_LAUNCH_SECRET_LOCATION;

extern EFI_GUID gSevLaunchSecretGuid;

#endif // SEV_LAUNCH_SECRET_H_
1 change: 1 addition & 0 deletions OvmfPkg/OvmfPkg.dec
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
gLinuxEfiInitrdMediaGuid = {0x5568e427, 0x68fc, 0x4f3d, {0xac, 0x74, 0xca, 0x55, 0x52, 0x31, 0xcc, 0x68}}
gQemuKernelLoaderFsMediaGuid = {0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7}}
gGrubFileGuid = {0xb5ae312c, 0xbc8a, 0x43b1, {0x9c, 0x62, 0xeb, 0xb8, 0x26, 0xdd, 0x5d, 0x07}}
gSevLaunchSecretGuid = {0xadf956ad, 0xe98c, 0x484c, {0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47}}

[Ppis]
# PPI whose presence in the PPI database signals that the TPM base address
Expand Down

0 comments on commit ea823d0

Please sign in to comment.