/** @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;
}
