12#ifndef _INTEL_STM_API_H_
13#define _INTEL_STM_API_H_
21#define STM_SMM_REV_ID 0x80010100
28 UINT32 Intel64ModeSupported : 1;
33#define STM_SPEC_VERSION_MAJOR 1
34#define STM_SPEC_VERSION_MINOR 0
37 UINT8 StmSpecVerMajor;
38 UINT8 StmSpecVerMinor;
43 UINT32 StaticImageSize;
44 UINT32 PerProcDynamicMemorySize;
45 UINT32 AdditionalDynamicMemorySize;
47 UINT32 NumberOfRevIDs;
48 UINT32 StmSmmRevID[1];
97#define STM_API_MAP_ADDRESS_RANGE 0x00000001
103 UINT64 PhysicalAddress;
104 UINT64 VirtualAddress;
113#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_ST_UC 0x00
114#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_WC 0x01
115#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_WT 0x04
116#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_WP 0x05
117#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_WB 0x06
118#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_UC 0x07
119#define STM_MAP_ADDRESS_RANGE_PAT_CACHE_TYPE_FOLLOW_MTRR 0xFFFFFFFF
149#define STM_API_UNMAP_ADDRESS_RANGE 0x00000002
155 UINT64 VirtualAddress;
221#define STM_API_ADDRESS_LOOKUP 0x00000003
227 UINT64 InterruptedGuestVirtualAddress;
229 UINT64 InterruptedCr3;
230 UINT64 InterruptedEptp;
231 UINT32 MapToSmmGuest : 2;
232 UINT32 InterruptedCr4Pae : 1;
233 UINT32 InterruptedCr4Pse : 1;
234 UINT32 InterruptedIa32eMode : 1;
235 UINT32 Reserved1 : 27;
237 UINT64 PhysicalAddress;
238 UINT64 SmmGuestVirtualAddress;
245#define STM_ADDRESS_LOOKUP_DESCRIPTOR_DO_NOT_MAP 0
246#define STM_ADDRESS_LOOKUP_DESCRIPTOR_ONE_TO_ONE 1
247#define STM_ADDRESS_LOOKUP_DESCRIPTOR_VIRTUAL_ADDRESS_SPECIFIED 3
281#define STM_API_RETURN_FROM_PROTECTION_EXCEPTION 0x00000004
337#define STM_API_START (BIT16 | 1)
343#define STM_CONFIG_SMI_UNBLOCKING_BY_VMX_OFF BIT0
367#define STM_API_STOP (BIT16 | 2)
418#define STM_API_PROTECT_RESOURCE (BIT16 | 3)
455#define STM_API_UNPROTECT_RESOURCE (BIT16 | 4)
490#define STM_API_GET_BIOS_RESOURCES (BIT16 | 5)
523#define STM_API_MANAGE_VMCS_DATABASE (BIT16 | 6)
533 UINT32 DomainType : 4;
534 UINT32 XStatePolicy : 2;
535 UINT32 DegradationPolicy : 4;
547#define DOMAIN_UNPROTECTED 0
548#define DOMAIN_DISALLOWED_IO_OUT BIT0
549#define DOMAIN_DISALLOWED_IO_IN BIT1
550#define DOMAIN_INTEGRITY BIT2
551#define DOMAIN_CONFIDENTIALITY BIT3
552#define DOMAIN_INTEGRITY_PROT_OUT_IN (DOMAIN_INTEGRITY)
553#define DOMAIN_FULLY_PROT_OUT_IN (DOMAIN_CONFIDENTIALITY | DOMAIN_INTEGRITY)
554#define DOMAIN_FULLY_PROT (DOMAIN_FULLY_PROT_OUT_IN | DOMAIN_DISALLOWED_IO_IN | DOMAIN_DISALLOWED_IO_OUT)
561#define XSTATE_READWRITE 0x00
562#define XSTATE_READONLY 0x01
563#define XSTATE_SCRUB 0x03
570#define STM_VMCS_DATABASE_REQUEST_ADD 1
571#define STM_VMCS_DATABASE_REQUEST_REMOVE 0
608#define STM_API_INITIALIZE_PROTECTION (BIT16 | 7)
614#define STM_RSC_BGI BIT1
615#define STM_RSC_BGM BIT2
616#define STM_RSC_MSR BIT3
640#define STM_API_MANAGE_EVENT_LOG (BIT16 | 8)
646 UINT32 SubFunctionIndex;
658 UINT32 EventEnableBitmap;
667#define STM_EVENT_LOG_MANAGEMENT_REQUEST_NEW_LOG 1
668#define STM_EVENT_LOG_MANAGEMENT_REQUEST_CONFIGURE_LOG 2
669#define STM_EVENT_LOG_MANAGEMENT_REQUEST_START_LOG 3
670#define STM_EVENT_LOG_MANAGEMENT_REQUEST_STOP_LOG 4
671#define STM_EVENT_LOG_MANAGEMENT_REQUEST_CLEAR_LOG 5
672#define STM_EVENT_LOG_MANAGEMENT_REQUEST_DELETE_LOG 6
679 UINT32 EventSerialNumber;
683 UINT16 ReadByMle : 1;
685 UINT16 Reserved : 12;
694 EvtLogInvalidParameterDetected,
695 EvtHandledProtectionException,
700 EvtMleResourceProtectionGranted,
701 EvtMleResourceProtectionDenied,
702 EvtMleResourceUnprotect,
703 EvtMleResourceUnprotectError,
704 EvtMleDomainTypeDegraded,
724 UINT32 VmcallApiNumber;
752 UINT64 VmcsPhysPointer;
753 UINT8 ExpectedDomainType;
754 UINT8 DegradedDomainType;
778#define STM_LOG_ENTRY_SIZE 256
795 UINT32 VmcsExitInstructionInfo;
796 UINT32 VmcsExitInstructionLength;
797 UINT64 VmcsExitQualification;
829 UINT64 VmcsExitInstructionInfo;
830 UINT64 VmcsExitInstructionLength;
831 UINT64 VmcsExitQualification;
854 TxtSmmPageViolation = 1,
856 TxtSmmRegisterViolation,
869 UINT16 PageViolationException : 1;
870 UINT16 MsrViolationException : 1;
871 UINT16 RegisterViolationException : 1;
872 UINT16 IoViolationException : 1;
873 UINT16 PciViolationException : 1;
874 UINT16 Reserved1 : 11;
879 UINT8 ExecutionDisableOutsideSmrr : 1;
880 UINT8 Intel64Mode : 1;
887 UINT8 SmramToVmcsRestoreRequired : 1;
893 UINT8 DomainType : 4;
899#define TXT_SMM_PSD_OFFSET 0xfb00
900#define TXT_PROCESSOR_SMM_DESCRIPTOR_SIGNATURE SIGNATURE_64('T', 'X', 'T', 'P', 'S', 'S', 'I', 'G')
901#define TXT_PROCESSOR_SMM_DESCRIPTOR_VERSION_MAJOR 1
902#define TXT_PROCESSOR_SMM_DESCRIPTOR_VERSION_MINOR 0
907 UINT8 SmmDescriptorVerMajor;
908 UINT8 SmmDescriptorVerMinor;
917 UINT16 SmmOtherSegment;
921 UINT64 SmmStmSetupRip;
922 UINT64 SmmStmTeardownRip;
923 UINT64 SmmSmiHandlerRip;
924 UINT64 SmmSmiHandlerRsp;
927 UINT32 RequiredStmSmmRevId;
930 UINT64 BiosHwResourceRequirementsPtr;
933 UINT8 PhysicalAddressBits;
@ EvtBiosAccessToUnclaimedResource
TXT_SMM_PROTECTION_EXCEPTION_TYPE
EFI_STATUS EFIAPI Lock(IN EFI_SMM_ACCESS2_PROTOCOL *This)
UINT32 EptSupported
bitfield
UINT8 ReinitializeVmcsRequired
BIOS restore hint
UINT8 Reserved2
BIOS request
UINT8 XStatePolicy
STM input to BIOS on each SMI
UINT8 EptEnabled
STM input to BIOS on each SMI