| /** @file | |
| CcProbeLib is used to probe the Confidential computing guest type. | |
| Copyright (c) 2022, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <Uefi/UefiBaseType.h> | |
| #include <Library/CcProbeLib.h> | |
| #include <WorkArea.h> | |
| STATIC UINT8 mCcProbeGuestType = 0; | |
| STATIC BOOLEAN mCcProbed = FALSE; | |
| /** | |
| * Read the the ConfidentialComputing Guest type from Ovmf work-area. | |
| * | |
| * @return The ConfidentialComputing Guest type | |
| */ | |
| STATIC | |
| UINT8 | |
| ReadCcGuestType ( | |
| VOID | |
| ) | |
| { | |
| OVMF_WORK_AREA *WorkArea; | |
| if (!mCcProbed) { | |
| WorkArea = (OVMF_WORK_AREA *)FixedPcdGet32 (PcdOvmfWorkAreaBase); | |
| mCcProbeGuestType = WorkArea != NULL ? WorkArea->Header.GuestType : CcGuestTypeNonEncrypted; | |
| mCcProbed = TRUE; | |
| } | |
| return mCcProbeGuestType; | |
| } | |
| /** | |
| Probe the ConfidentialComputing Guest type. See defition of | |
| CC_GUEST_TYPE in <ConfidentialComputingGuestAttr.h>. | |
| @return The guest type | |
| **/ | |
| UINT8 | |
| EFIAPI | |
| CcProbe ( | |
| VOID | |
| ) | |
| { | |
| return ReadCcGuestType (); | |
| } | |
| /** | |
| * Constructor of DxeCcProbeLib | |
| * | |
| * @return EFI_SUCCESS Successfully called of constructor | |
| */ | |
| EFI_STATUS | |
| EFIAPI | |
| DxeCcProbeLibConstructor ( | |
| VOID | |
| ) | |
| { | |
| ReadCcGuestType (); | |
| return EFI_SUCCESS; | |
| } |