/** @file SPDX-License-Identifier: BSD-2-Clause-Patent **/ #define VIRT_HSTI_SECURITY_FEATURE_SIZE 2 #define VIRT_HSTI_BYTE0_SMM_SMRAM_LOCK BIT0 #define VIRT_HSTI_BYTE0_SMM_SECURE_VARS_FLASH BIT1 #define VIRT_HSTI_BYTE0_READONLY_CODE_FLASH BIT2 typedef struct { // ADAPTER_INFO_PLATFORM_SECURITY UINT32 Version; UINT32 Role; CHAR16 ImplementationID[256]; UINT32 SecurityFeaturesSize; // bitfields UINT8 SecurityFeaturesRequired[VIRT_HSTI_SECURITY_FEATURE_SIZE]; UINT8 SecurityFeaturesImplemented[VIRT_HSTI_SECURITY_FEATURE_SIZE]; UINT8 SecurityFeaturesVerified[VIRT_HSTI_SECURITY_FEATURE_SIZE]; CHAR16 ErrorString[1]; } VIRT_ADAPTER_INFO_PLATFORM_SECURITY; VOID VirtHstiSetSupported ( VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti, IN UINT32 ByteIndex, IN UINT8 BitMask ); BOOLEAN VirtHstiIsSupported ( VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti, IN UINT32 ByteIndex, IN UINT8 BitMask ); VOID VirtHstiTestResult ( CHAR16 *ErrorMsg, IN UINT32 ByteIndex, IN UINT8 BitMask ); /* QemuQ35.c */ VIRT_ADAPTER_INFO_PLATFORM_SECURITY * VirtHstiQemuQ35Init ( VOID ); VOID VirtHstiQemuQ35Verify ( VOID ); /* QemuPC.c */ VIRT_ADAPTER_INFO_PLATFORM_SECURITY * VirtHstiQemuPCInit ( VOID ); VOID VirtHstiQemuPCVerify ( VOID ); /* QemuCommon.c */ VOID VirtHstiQemuCommonInit ( VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti ); VOID VirtHstiQemuCommonVerify ( VOID ); /* Flash.c */ #define QEMU_FIRMWARE_FLASH_UNKNOWN 0 #define QEMU_FIRMWARE_FLASH_IS_ROM 1 #define QEMU_FIRMWARE_FLASH_IS_RAM 2 #define QEMU_FIRMWARE_FLASH_READ_ONLY 3 #define QEMU_FIRMWARE_FLASH_WRITABLE 4 UINT32 VirtHstiQemuFirmwareFlashCheck ( UINT32 Address );