/** @file
This file contains the required header files for the HSTI Silicon DXE driver
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _HSTI_SILICON_DXE_H_
#define _HSTI_SILICON_DXE_H_
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifndef TPM_BASE
#define TPM_BASE 0
#endif
#include
#define TPM_BASE_ADDRESS 0xfed40000
//
// Silicon
//
#include
#include
#include
#include
#include
#include
#include
#include
#define SIZE_4KB 0x00001000
#define SIZE_16KB 0x00004000
#define SIZE_32KB 0x00008000
#define SIZE_1MB 0x00100000
#define SIZE_2MB 0x00200000
#define SIZE_4MB 0x00400000
#define SIZE_8MB 0x00800000
#define SIZE_16MB 0x01000000
#define SIZE_32MB 0x02000000
#define SIZE_128MB 0x08000000
#define SIZE_4GB 0x0000000100000000ULL
#define BASE_4GB 0x0000000100000000ULL
//@todo need to take this back to HstiFeatureBit.h
#define HSTI_BYTE0_SECURE_CPU_CONFIGURATION_ERROR_STRING_B L" SMM Code Fetch outside SMRAM detection feature is disabled\r\n"
//@todo need to take this back to HstiFeatureBit.h
#define HSTI_BYTE1_SECURE_PCH_CONFIGURATION_ERROR_CODE_4 L"0x000A0004"
#define HSTI_BYTE1_SECURE_PCH_CONFIGURATION_ERROR_STRING_4 L" P2SB SBI lock not set\r\n"
#define MAX_NEW_AUTHORIZATION_SIZE SHA512_DIGEST_SIZE
#define HSTI_PLATFORM_NAME L"Intel(R) 9-Series v1"
#pragma pack(1)
typedef struct {
UINT32 Version;
UINT32 Role;
CHAR16 ImplementationID[256];
UINT32 SecurityFeaturesSize;
UINT8 SecurityFeaturesRequired[HSTI_SECURITY_FEATURE_SIZE];
UINT8 SecurityFeaturesImplemented[HSTI_SECURITY_FEATURE_SIZE];
UINT8 SecurityFeaturesVerified[HSTI_SECURITY_FEATURE_SIZE];
CHAR16 End;
} ADAPTER_INFO_PLATFORM_SECURITY_STRUCT;
#pragma pack()
extern UINT8 mFeatureImplemented[HSTI_SECURITY_FEATURE_SIZE];
extern EFI_GUID gHstiProtocolGuid;
extern EFI_GUID gHstiPublishCompleteProtocolGuid;
/**
Concatenate error string.
@param[in] ErrorCodeString - Error Code
@param[in] ErrorCategoryString - Error Category
@param[in] ErrorString - Error Text
@retval CHAR16 - Concatenated string.
**/
CHAR16 *
EFIAPI
BuildHstiErrorString (
IN CHAR16 *ErrorCodeString,
IN CHAR16 *ErrorCategoryString,
IN CHAR16 *ErrorString
);
/**
Run tests for HardwareRootedBootIntegrity bit
**/
VOID
CheckHardwareRootedBootIntegrity (
VOID
);
/**
Run tests for BootFirmwareMediaProtection bit
**/
VOID
CheckBootFirmwareMediaProtection (
VOID
);
/**
Run tests for SignedFirmwareUpdate bit
**/
VOID
CheckSignedFirmwareUpdate (
VOID
);
/**
Run tests for MeasuredBootEnforcement bit
**/
VOID
CheckMeasuredBootEnforcement (
VOID
);
/**
Run tests for IntegratedDeviceDMAProtection bit
**/
VOID
CheckIntegratedDeviceDmaProtection (
VOID
);
/**
Run tests for DebugModeDisabled bit
**/
VOID
CheckDebugModeDisabled (
VOID
);
/**
Run tests for SecureCPUConfiguration bit
**/
VOID
CheckSecureCpuConfiguration (
VOID
);
/**
Run tests for SecureSystemAgentConfiguration bit
**/
VOID
CheckSecureSystemAgentConfiguration (
VOID
);
/**
Run tests for SecureMemoryMapConfiguration bit
**/
VOID
CheckSecureMemoryMapConfiguration (
VOID
);
/**
Run tests for SecureIntegratedGraphicsConfiguration bit
**/
VOID
CheckSecureIntegratedGraphicsConfiguration (
VOID
);
/**
Run tests for SecurePCHConfiguration bit
**/
VOID
CheckSecurePchConfiguration (
VOID
);
//
// Help function
//
/**
Initialize MP Helper
**/
VOID
InitMp (
VOID
);
/**
Concatenate error string.
@retval UINTN - CpuNumber.
**/
UINTN
GetCpuNumber (
VOID
);
/**
Concatenate error string.
@param[in] ProcessorNumber - Processor ID
@param[in] Index - Index
@retval UINT64 - Msr Value.
**/
UINT64
ProcessorReadMsr64 (
IN UINTN ProcessorNumber,
IN UINT32 Index
);
/**
Concatenate error string.
@param[in] ProcessorNumber - Processor ID
@param[in] Index - Index
@param[out] Eax - Eax
@param[out] Ebx - Ebx
@param[out] Ecx - Ecx
@param[out] Edx - Edx
**/
VOID
ProcessorCpuid (
IN UINTN ProcessorNumber,
IN UINT32 Index,
OUT UINT32 *Eax, OPTIONAL
OUT UINT32 *Ebx, OPTIONAL
OUT UINT32 *Ecx, OPTIONAL
OUT UINT32 *Edx OPTIONAL
);
/**
Concatenate error string.
@param[in] Address - Address
@retval UINT64 - Value.
**/
UINT64
EFIAPI
PciRead64 (
IN UINTN Address
);
#endif