]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/AmdSevDxe/AmdSevDxe.c
OvmfPkg/AmdSev: expose the SNP reserved pages through configuration table
[mirror_edk2.git] / OvmfPkg / AmdSevDxe / AmdSevDxe.c
index be26dde71f9def6c85d427bb6d1b3dfc7a53fbb1..662d3c4ccb0f0dec2149d3ed67b168a27e809973 100644 (file)
 #include <Library/DxeServicesTableLib.h>\r
 #include <Library/MemEncryptSevLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Guid/ConfidentialComputingSevSnpBlob.h>\r
 #include <Library/PcdLib.h>\r
 \r
+STATIC CONFIDENTIAL_COMPUTING_SNP_BLOB_LOCATION  mSnpBootDxeTable = {\r
+  SIGNATURE_32 ('A',                                    'M', 'D', 'E'),\r
+  1,\r
+  0,\r
+  (UINT64)(UINTN)FixedPcdGet32 (PcdOvmfSnpSecretsBase),\r
+  FixedPcdGet32 (PcdOvmfSnpSecretsSize),\r
+  (UINT64)(UINTN)FixedPcdGet32 (PcdOvmfCpuidBase),\r
+  FixedPcdGet32 (PcdOvmfCpuidSize),\r
+};\r
+\r
 EFI_STATUS\r
 EFIAPI\r
 AmdSevDxeEntryPoint (\r
@@ -135,5 +147,16 @@ AmdSevDxeEntryPoint (
     }\r
   }\r
 \r
+  //\r
+  // If its SEV-SNP active guest then install the CONFIDENTIAL_COMPUTING_SEV_SNP_BLOB.\r
+  // It contains the location for both the Secrets and CPUID page.\r
+  //\r
+  if (MemEncryptSevSnpIsEnabled ()) {\r
+    return gBS->InstallConfigurationTable (\r
+                  &gConfidentialComputingSevSnpBlobGuid,\r
+                  &mSnpBootDxeTable\r
+                  );\r
+  }\r
+\r
   return EFI_SUCCESS;\r
 }\r