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