PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf\r
PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPciSegmentLib.inf\r
PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf\r
- CcProbeLib|OvmfPkg/Library/CcProbeLib/CcProbeLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf\r
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf\r
OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf\r
SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf\r
HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf\r
PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf\r
PeilessStartupLib|OvmfPkg/Library/PeilessStartupLib/PeilessStartupLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf\r
\r
[LibraryClasses.common.DXE_CORE]\r
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r
+++ /dev/null
-/** @file\r
-\r
- CcProbeLib is used to probe the Confidential computing guest type.\r
-\r
- Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <Library/CcProbeLib.h>\r
-#include <WorkArea.h>\r
-\r
-/**\r
- Probe the ConfidentialComputing Guest type. See defition of\r
- CC_GUEST_TYPE in <ConfidentialComputingGuestAttr.h>.\r
-\r
- @return The guest type\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-CcProbe (\r
- VOID\r
- )\r
-{\r
- OVMF_WORK_AREA *WorkArea;\r
-\r
- WorkArea = (OVMF_WORK_AREA *)FixedPcdGet32 (PcdOvmfWorkAreaBase);\r
-\r
- return WorkArea != NULL ? WorkArea->Header.GuestType : CcGuestTypeNonEncrypted;\r
-}\r
+++ /dev/null
-## @file\r
-# CcProbeLib is used to probe Confidential Computing guest type.\r
-#\r
-# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
-# SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-##\r
-\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = CcProbeLib\r
- FILE_GUID = 05184ec9-abb0-4491-8584-e388639a7c48\r
- MODULE_TYPE = BASE\r
- VERSION_STRING = 1.0\r
- LIBRARY_CLASS = CcProbeLib\r
-\r
-[Sources]\r
- CcProbeLib.c\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
- OvmfPkg/OvmfPkg.dec\r
-\r
-[Pcd]\r
- gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase\r
--- /dev/null
+/** @file\r
+\r
+ CcProbeLib is used to probe the Confidential computing guest type.\r
+\r
+ Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include <Uefi/UefiBaseType.h>\r
+#include <Library/CcProbeLib.h>\r
+#include <WorkArea.h>\r
+\r
+STATIC UINT8 mCcProbeGuestType = 0;\r
+STATIC BOOLEAN mCcProbed = FALSE;\r
+\r
+/**\r
+ * Read the the ConfidentialComputing Guest type from Ovmf work-area.\r
+ *\r
+ * @return The ConfidentialComputing Guest type\r
+ */\r
+STATIC\r
+UINT8\r
+ReadCcGuestType (\r
+ VOID\r
+ )\r
+{\r
+ OVMF_WORK_AREA *WorkArea;\r
+\r
+ if (!mCcProbed) {\r
+ WorkArea = (OVMF_WORK_AREA *)FixedPcdGet32 (PcdOvmfWorkAreaBase);\r
+ mCcProbeGuestType = WorkArea != NULL ? WorkArea->Header.GuestType : CcGuestTypeNonEncrypted;\r
+ mCcProbed = TRUE;\r
+ }\r
+\r
+ return mCcProbeGuestType;\r
+}\r
+\r
+/**\r
+ Probe the ConfidentialComputing Guest type. See defition of\r
+ CC_GUEST_TYPE in <ConfidentialComputingGuestAttr.h>.\r
+\r
+ @return The guest type\r
+\r
+**/\r
+UINT8\r
+EFIAPI\r
+CcProbe (\r
+ VOID\r
+ )\r
+{\r
+ return ReadCcGuestType ();\r
+}\r
+\r
+/**\r
+ * Constructor of DxeCcProbeLib\r
+ *\r
+ * @return EFI_SUCCESS Successfully called of constructor\r
+ */\r
+EFI_STATUS\r
+EFIAPI\r
+DxeCcProbeLibConstructor (\r
+ VOID\r
+ )\r
+{\r
+ ReadCcGuestType ();\r
+ return EFI_SUCCESS;\r
+}\r
--- /dev/null
+## @file\r
+# CcProbeLib is used to probe Confidential Computing guest type.\r
+#\r
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = DxeCcProbeLib\r
+ FILE_GUID = 05184ec9-abb0-4491-8584-e388639a7c48\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = CcProbeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION\r
+ CONSTRUCTOR = DxeCcProbeLibConstructor\r
+\r
+[Sources]\r
+ DxeCcProbeLib.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ OvmfPkg/OvmfPkg.dec\r
+\r
+[Pcd]\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase\r
\r
!if $(SMM_REQUIRE) == FALSE\r
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf\r
- CcProbeLib|OvmfPkg/Library/CcProbeLib/CcProbeLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf\r
!else\r
CcProbeLib|MdePkg/Library/CcProbeLibNull/CcProbeLibNull.inf\r
!endif\r
!endif\r
VmgExitLib|OvmfPkg/Library/VmgExitLib/SecVmgExitLib.inf\r
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf\r
\r
[LibraryClasses.common.PEI_CORE]\r
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf\r
DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf\r
!endif\r
PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf\r
\r
[LibraryClasses.common.PEIM]\r
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf\r
PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf\r
\r
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf\r
+ CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf\r
\r
[LibraryClasses.common.DXE_CORE]\r
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r