coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
StmApi.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 
3 #ifndef _STM_API_H_
4 #define _STM_API_H_
5 
6 #include <stdint.h>
7 
8 // definition in STM spec
9 
10 #define STM_SPEC_VERSION_MAJOR 1
11 #define STM_SPEC_VERSION_MINOR 0
12 
13 #pragma pack(push, 1)
14 
15 #define STM_HARDWARE_FIELD_FILL_TO_2K (2048 - sizeof(uint32_t) * 8)
16 typedef struct {
27 
28 #define STM_FEATURES_IA32E 0x1
29 
30 typedef struct {
33  uint32_t mbz : 30;
34 } STM_FEAT;
35 
36 typedef struct {
45  uint32_t stm_smm_rev_id[1];
46 
47  // The total STM_HEADER should be 4K.
49 
50 typedef struct {
53 } STM_HEADER;
54 
55 #define SHA1 1
56 #define SHA256 2
57 typedef struct {
60  uint32_t hash_algorithm; // SHA1 or SHA256
61  uint8_t hash[32];
63 
64 #define PAGE_SIZE 4096
65 typedef struct {
68  uint64_t image_page_base[1]; //[NumberOfPages];
70 
71 typedef struct {
83 
84 typedef struct {
91 
92 typedef struct {
93  uint8_t smram_to_vmcs_restore_required : 1; // BIOS restore hint
94  uint8_t reinitialize_vmcs_required : 1; // BIOS request
97 
98 typedef struct {
99  uint8_t domain_type : 4; // STM input to BIOS on each SM
100  uint8_t x_state_policy : 2; // STM input to BIOS on each SMI
103 } STM_SMM_STATE;
104 
105 typedef struct {
132  // extend area
136 
137 #define TXT_PROCESSOR_SMM_DESCRIPTOR_SIGNATURE "TXTPSSIG"
138 #define TXT_PROCESSOR_SMM_DESCRIPTOR_VERSION_MAJOR 1
139 #define TXT_PROCESSOR_SMM_DESCRIPTOR_VERSION_MINOR 0
140 
141 #define SMM_PSD_OFFSET 0xfb00
142 
143 typedef enum {
150 
151 typedef struct {
165  uint32_t error_code; // TXT_SMM_PROTECTION_EXCEPTION_TYPE
172 
173 typedef struct {
196  uint64_t error_code; // TXT_SMM_PROTECTION_EXCEPTION_TYPE
203 
204 typedef union {
208 
209 #define STM_SMM_REV_ID 0x80010100
210 
211 typedef struct _STM_SMM_CPU_STATE { // Writable?
212  uint8_t reserved1[0x1d0]; // fc00h
216  uint8_t reserved2[0x4]; // fddch
217  uint64_t io_rdi; // fde0h : NO
218  // - restricted
219  uint64_t io_eip; // fde8h : YES
220  uint64_t io_rcx; // fdf0h : NO
221  // - restricted
222  uint64_t io_rsi; // fdf8h : NO
223  // - restricted
224  uint8_t reserved3[0x40]; // fe00h
225  uint32_t cr4; // fe40h : NO
226  uint8_t reserved4[0x48]; // fe44h
228  uint32_t gdt_limit; // fe90h : NO
229  // - RESTRICTED
231  uint32_t idt_limit; // fe98h : NO
232  // - RESTRICTED
234  uint32_t ldt_limit; // fea0h : NO
235  // - RESTRICTED
236  uint32_t ldt_info; // fea4h : NO
237  // - RESTRICTED
238  uint8_t reserved5[0x30]; // fea8h
239  uint64_t eptp; // fed8h : NO
240  uint32_t enabled_ept; // fee0h : NO
241  uint8_t reserved6[0x14]; // fee4h
242  uint32_t smbase; // fef8h : YES
243  // - NO for STM
244  uint32_t smm_rev_id; // fefch : NO
245  uint16_t io_restart; // ff00h : YES
246  uint16_t auto_halt_restart; // ff02h : YES
247  uint8_t reserved7[0x18]; // ff04h
248  uint64_t r15; // ff1ch : YES
249  uint64_t r14; // ff24h : YES
250  uint64_t r13; // ff2ch : YES
251  uint64_t r12; // ff34h : YES
252  uint64_t r11; // ff3ch : YES
253  uint64_t r10; // ff44h : YES
254  uint64_t r9; // ff4ch : YES
255  uint64_t r8; // ff54h : YES
256  uint64_t rax; // ff5ch : YES
257  uint64_t rcx; // ff64h : YES
258  uint64_t rdx; // ff6ch : YES
259  uint64_t rbx; // ff74h : YES
260  uint64_t rsp; // ff7ch : YES
261  uint64_t rbp; // ff84h : YES
262  uint64_t rsi; // ff8ch : YES
263  uint64_t rdi; // ff94h : YES
264  uint64_t io_mem_addr; // ff9ch : NO
265  uint32_t io_misc; // ffa4h : NO
266  uint32_t es; // ffa8h : NO
267  uint32_t cs; // ffach : NO
268  uint32_t ss; // ffb0h : NO
269  uint32_t ds; // ffb4h : NO
270  uint32_t fs; // ffb8h : NO
271  uint32_t gs; // ffbch : NO
272  uint32_t ldtr; // ffc0h : NO
273  uint32_t tr; // ffc4h : NO
274  uint64_t dr7; // ffc8h : NO
275  uint64_t dr6; // ffd0h : NO
276  uint64_t rip; // ffd8h : YES
277  uint64_t ia32_efer; // ffe0h : YES
278  // - NO for STM
279  uint64_t rflags; // ffe8h : YES
280  uint64_t cr3; // fff0h : NO
281  uint64_t cr0; // fff8h : NO
283 
284 // STM Mapping
285 typedef struct {
291 
292 #define ST_UC 0x00
293 #define WC 0x01
294 #define WT 0x04
295 #define WP 0x05
296 #define WB 0x06
297 #define UC 0x07
298 #define FOLLOW_MTRR 0xFFFFFFFF
299 
300 typedef struct {
304 
305 typedef struct {
319 
320 #define DO_NOT_MAP 0
321 #define ONE_TO_ONE 1
322 #define VIRTUAL_ADDRESS_SPECIFIED 3
323 
324 // STM_RESOURCE_LIST
325 #define END_OF_RESOURCES 0
326 #define MEM_RANGE 1
327 #define IO_RANGE 2
328 #define MMIO_RANGE 3
329 #define MACHINE_SPECIFIC_REG 4
330 #define PCI_CFG_RANGE 5
331 #define TRAPPED_IO_RANGE 6
332 #define ALL_RESOURCES 7
333 #define REGISTER_VIOLATION 8
334 #define MAX_DESC_TYPE 8
335 
336 typedef struct {
343 
344 typedef struct {
347 } STM_RSC_END;
348 
349 // byte granular Memory range support
350 #define STM_RSC_BGM 0x4
351 
352 typedef struct {
360 
361 #define STM_RSC_MEM_R 0x1
362 #define STM_RSC_MEM_W 0x2
363 #define STM_RSC_MEM_X 0x4
364 
365 typedef struct {
371 
372 // byte granular MMIO range support
373 #define STM_RSC_BGI 0x2
374 
375 typedef struct {
383 
384 #define STM_RSC_MMIO_R 0x1
385 #define STM_RSC_MMIO_W 0x2
386 #define STM_RSC_MMIO_X 0x4
387 
388 typedef struct {
396 
397 // bit granular MSR resource support
398 #define STM_RSC_MSR 0x8
399 
400 typedef struct {
401  uint8_t type; // must be 1, indicating Hardware Device Path
402  uint8_t subtype; // must be 1, indicating PCI
403  uint16_t length; // sizeof(STM_PCI_DEVICE_PATH_NODE) which is 6
407 
408 typedef struct {
416  STM_PCI_DEVICE_PATH_NODE pci_device_path[1];
417  // STM_PCI_DEVICE_PATH_NODE PciDevicePath[LastNodeIndex + 1];
419 
420 #define STM_RSC_PCI_CFG_R 0x1
421 #define STM_RSC_PCI_CFG_W 0x2
422 
423 typedef struct {
433 
434 typedef struct {
437 
438 typedef struct {
445 
446 typedef enum {
454 
455 typedef union {
466 } STM_RSC;
467 
468 // VMCS database
469 #define STM_VMCS_DATABASE_REQUEST_ADD 1
470 #define STM_VMCS_DATABASE_REQUEST_REMOVE 0
471 
472 // Values for DomainType
473 // Interpreter of DomainType
474 #define DOMAIN_DISALLOWED_IO_OUT (1u << 0)
475 #define DOMAIN_DISALLOWED_IO_IN (1u << 1)
476 #define DOMAIN_INTEGRITY (1u << 2)
477 #define DOMAIN_CONFIDENTIALITY (1u << 3)
478 
479 #define DOMAIN_UNPROTECTED 0x00
480 #define DOMAIN_INTEGRITY_PROT_OUT_IN (DOMAIN_INTEGRITY)
481 #define DOMAIN_FULLY_PROT_OUT_IN (DOMAIN_CONFIDENTIALITY | DOMAIN_INTEGRITY)
482 #define DOMAIN_FULLY_PROT \
483  (DOMAIN_CONFIDENTIALITY | DOMAIN_INTEGRITY | DOMAIN_DISALLOWED_IO_IN \
484  | DOMAIN_DISALLOWED_IO_OUT)
485 
486 // Values for XStatePolicy
487 #define XSTATE_READWRITE 0x00
488 #define XSTATE_READONLY 0x01
489 #define XSTATE_SCRUB 0x03
490 
491 typedef struct {
492  uint64_t vmcs_phys_pointer; // bits 11:0 are reserved and must be 0
496  uint32_t reserved1 : 22; // Must be 0
499 
500 // Event log
501 #define NEW_LOG 1
502 #define CONFIGURE_LOG 2
503 #define START_LOG 3
504 #define STOP_LOG 4
505 #define CLEAR_LOG 5
506 #define DELETE_LOG 6
507 typedef enum {
512  // unhandled protection exceptions result in reset & cannot be logged
519  // add more here
521  // Not used
522  evt_invalid = 0xFFFFFFFF,
523 } EVENT_TYPE;
524 
525 typedef struct {
527  uint64_t pages[1]; // number of elements is PageCount
529 
530 typedef union {
532  uint32_t event_enable_bitmap; // bitmap of EVENT_TYPE
534 
535 typedef struct {
539 
540 // VMCALL API Numbers
541 //
542 // API number convention: BIOS facing VMCALL interfaces have bit 16 clear
543 #define STM_API_MAP_ADDRESS_RANGE 0x00000001
544 #define STM_API_UNMAP_ADDRESS_RANGE 0x00000002
545 #define STM_API_ADDRESS_LOOKUP 0x00000003
546 #define STM_API_RETURN_FROM_PROTECTION_EXCEPTION 0x00000004
547 
548 // API number convention: MLE facing VMCALL interfaces have bit 16 set
549 //
550 // The STM configuration lifecycle is as follows:
551 // 1. SENTER->SINIT->MLE: MLE begins execution with SMI disabled (masked).
552 // 2. MLE invokes InitializeProtectionVMCALL() to prepare STM for setup of
553 // initial protection profile. This is done on a single CPU and has global
554 // effect.
555 // 3. MLE invokes ProtectResourceVMCALL() to define the initial protection
556 // profile. The protection profile is global across all CPUs.
557 // 4. MLE invokes StartStmVMCALL() to enable the STM to begin receiving SMI
558 // events. This must be done on every logical CPU.
559 // 5. MLE may invoke ProtectResourceVMCALL() or UnProtectResourceVMCALL()
560 // during runtime as many times as necessary.
561 // 6. MLE invokes StopStmVMCALL() to disable the STM. SMI is again masked
562 // following StopStmVMCALL().
563 //
564 #define STM_API_START 0x00010001
565 #define STM_API_STOP 0x00010002
566 #define STM_API_PROTECT_RESOURCE 0x00010003
567 #define STM_API_UNPROTECT_RESOURCE 0x00010004
568 #define STM_API_GET_BIOS_RESOURCES 0x00010005
569 #define STM_API_MANAGE_VMCS_DATABASE 0x00010006
570 #define STM_API_INITIALIZE_PROTECTION 0x00010007
571 #define STM_API_MANAGE_EVENT_LOG 0x00010008
572 
573 // Return codes
575 
576 #define STM_SUCCESS 0x00000000
577 #define SMM_SUCCESS 0x00000000
578 // all error codes have bit 31 set
579 // STM errors have bit 16 set
580 #define ERROR_STM_SECURITY_VIOLATION 0x80010001
581 #define ERROR_STM_CACHE_TYPE_NOT_SUPPORTED 0x80010002
582 #define ERROR_STM_PAGE_NOT_FOUND 0x80010003
583 #define ERROR_STM_BAD_CR3 0x80010004
584 #define ERROR_STM_PHYSICAL_OVER_4G 0x80010005
585 #define ERROR_STM_VIRTUAL_SPACE_TOO_SMALL 0x80010006
586 #define ERROR_STM_UNPROTECTABLE_RESOURCE 0x80010007
587 #define ERROR_STM_ALREADY_STARTED 0x80010008
588 #define ERROR_STM_WITHOUT_SMX_UNSUPPORTED 0x80010009
589 #define ERROR_STM_STOPPED 0x8001000A
590 #define ERROR_STM_BUFFER_TOO_SMALL 0x8001000B
591 #define ERROR_STM_INVALID_VMCS_DATABASE 0x8001000C
592 #define ERROR_STM_MALFORMED_RESOURCE_LIST 0x8001000D
593 #define ERROR_STM_INVALID_PAGECOUNT 0x8001000E
594 #define ERROR_STM_LOG_ALLOCATED 0x8001000F
595 #define ERROR_STM_LOG_NOT_ALLOCATED 0x80010010
596 #define ERROR_STM_LOG_NOT_STOPPED 0x80010011
597 #define ERROR_STM_LOG_NOT_STARTED 0x80010012
598 #define ERROR_STM_RESERVED_BIT_SET 0x80010013
599 #define ERROR_STM_NO_EVENTS_ENABLED 0x80010014
600 #define ERROR_STM_OUT_OF_RESOURCES 0x80010015
601 #define ERROR_STM_FUNCTION_NOT_SUPPORTED 0x80010016
602 #define ERROR_STM_UNPROTECTABLE 0x80010017
603 #define ERROR_STM_UNSUPPORTED_MSR_BIT 0x80010018
604 #define ERROR_STM_UNSPECIFIED 0x8001FFFF
605 
606 // SMM errors have bit 17 set
607 #define ERROR_SMM_BAD_BUFFER 0x80020001
608 #define ERROR_SMM_INVALID_RSC 0x80020004
609 #define ERROR_SMM_INVALID_BUFFER_SIZE 0x80020005
610 #define ERROR_SMM_BUFFER_TOO_SHORT 0x80020006
611 #define ERROR_SMM_INVALID_LIST 0x80020007
612 #define ERROR_SMM_OUT_OF_MEMORY 0x80020008
613 #define ERROR_SMM_AFTER_INIT 0x80020009
614 #define ERROR_SMM_UNSPECIFIED 0x8002FFFF
615 
616 // Errors that apply to both have bits 15, 16, and 17 set
617 #define ERROR_INVALID_API 0x80038001
618 #define ERROR_INVALID_PARAMETER 0x80038002
619 
620 // STM TXT.ERRORCODE codes
621 #define STM_CRASH_PROTECTION_EXCEPTION 0xC000F001
622 #define STM_CRASH_PROTECTION_EXCEPTION_FAILURE 0xC000F002
623 #define STM_CRASH_DOMAIN_DEGRADATION_FAILURE 0xC000F003
624 #define STM_CRASH_BIOS_PANIC 0xC000E000
625 
626 typedef struct {
635 
636 typedef struct {
639 
640 typedef struct {
643 
644 typedef struct {
647 
648 typedef struct {
651 
652 typedef struct {
655 
656 typedef struct {
659 
660 typedef struct {
663 
664 typedef struct {
667 
668 typedef struct {
671 
672 typedef struct {
677 
678 typedef union {
691 
692 typedef struct {
695 } STM_LOG_ENTRY;
696 
697 #define STM_LOG_ENTRY_SIZE 256
698 #define STM_CONFIG_SMI_UNBLOCKING_BY_VMX_OFF 0x1
699 
700 // TXT debug
701 #define SW_SMI_STM_ADD_RUNTIME_RESOURCES_SUB_FUNC 0
702 #define SW_SMI_STM_READ_BIOS_RESOURCES_SUB_FUNC 1
703 #define SW_SMI_STM_REPLACE_BIOS_RESOURCES_SUB_FUNC 2
704 
705 typedef struct {
708  // uint8_t Data[];
710 
711 #pragma pack(pop)
712 
713 #endif
STM_REGISTER_VIOLATION_TYPE
Definition: StmApi.h:446
@ stm_register_cr3
Definition: StmApi.h:449
@ stm_register_cr4
Definition: StmApi.h:450
@ stm_register_max
Definition: StmApi.h:452
@ stm_register_cr0
Definition: StmApi.h:447
@ stm_register_cr8
Definition: StmApi.h:451
@ stm_register_cr2
Definition: StmApi.h:448
#define STM_HARDWARE_FIELD_FILL_TO_2K
Definition: StmApi.h:15
EVENT_TYPE
Definition: StmApi.h:507
@ evt_mle_resource_protection_granted
Definition: StmApi.h:514
@ evt_log_invalid_parameter_detected
Definition: StmApi.h:510
@ evt_mle_resource_unprotect
Definition: StmApi.h:516
@ evt_mle_resource_protection_denied
Definition: StmApi.h:515
@ evt_handled_protection_exception
Definition: StmApi.h:511
@ evt_mle_domain_type_degraded
Definition: StmApi.h:518
@ evt_invalid
Definition: StmApi.h:522
@ evt_log_stopped
Definition: StmApi.h:509
@ evt_mle_max
Definition: StmApi.h:520
@ evt_log_started
Definition: StmApi.h:508
@ evt_bios_access_to_unclaimed_resource
Definition: StmApi.h:513
@ evt_mle_resource_unprotect_error
Definition: StmApi.h:517
uint32_t STM_STATUS
Definition: StmApi.h:574
struct _STM_SMM_CPU_STATE STM_SMM_CPU_STATE
TXT_SMM_PROTECTION_EXCEPTION_TYPE
Definition: StmApi.h:143
@ TxtSmmMsrViolation
Definition: StmApi.h:145
@ TxtSmmRegisterViolation
Definition: StmApi.h:146
@ TxtSmmPciViolation
Definition: StmApi.h:148
@ TxtSmmIoViolation
Definition: StmApi.h:147
@ TxtSmmPageViolation
Definition: StmApi.h:144
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned long long uint64_t
Definition: stdint.h:17
unsigned char uint8_t
Definition: stdint.h:8
uint32_t reserved
Definition: StmApi.h:637
uint32_t reserved
Definition: StmApi.h:641
uint32_t stm_header_revision
Definition: StmApi.h:17
uint32_t esp_offset
Definition: StmApi.h:23
uint32_t eip_offset
Definition: StmApi.h:22
uint32_t gdtr_limit
Definition: StmApi.h:19
uint32_t gdtr_base_offset
Definition: StmApi.h:20
uint32_t cr3_offset
Definition: StmApi.h:24
uint32_t cs_selector
Definition: StmApi.h:21
uint32_t monitor_features
Definition: StmApi.h:18
Definition: StmApi.h:626
uint16_t wrapped
Definition: StmApi.h:632
uint16_t valid
Definition: StmApi.h:630
uint16_t type
Definition: StmApi.h:628
uint16_t read_by_mle
Definition: StmApi.h:631
uint16_t lock
Definition: StmApi.h:629
uint32_t event_serial_number
Definition: StmApi.h:627
uint16_t reserved
Definition: StmApi.h:633
STM_FEAT stm_features
Definition: StmApi.h:43
uint32_t number_of_rev_ids
Definition: StmApi.h:44
uint16_t mbz
Definition: StmApi.h:39
uint8_t stm_pec_ver_minor
Definition: StmApi.h:38
uint32_t static_image_size
Definition: StmApi.h:40
uint32_t per_proc_dynamic_memory_size
Definition: StmApi.h:41
uint32_t additional_dynamic_memory_size
Definition: StmApi.h:42
uint8_t stm_spec_ver_major
Definition: StmApi.h:37
uint64_t interrupted_guest_virtual_address
Definition: StmApi.h:306
uint64_t smm_guest_virtual_address
Definition: StmApi.h:317
STM_EVENT_LOG_MANAGEMENT_REQUEST_DATA data
Definition: StmApi.h:537
uint32_t intel_64mode_supported
Definition: StmApi.h:31
uint32_t mbz
Definition: StmApi.h:33
uint32_t ept_supported
Definition: StmApi.h:32
SOFTWARE_STM_HEADER sw_stm_hdr
Definition: StmApi.h:52
HARDWARE_STM_HEADER hw_stm_hdr
Definition: StmApi.h:51
Definition: StmApi.h:692
LOG_ENTRY_HEADER hdr
Definition: StmApi.h:693
LOG_ENTRY_DATA data
Definition: StmApi.h:694
uint16_t register_violation_exception
Definition: StmApi.h:77
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:439
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:435
uint16_t length
Definition: StmApi.h:338
uint32_t rsc_type
Definition: StmApi.h:337
uint16_t ignore_resource
Definition: StmApi.h:341
uint16_t reserved
Definition: StmApi.h:340
uint16_t return_status
Definition: StmApi.h:339
uint64_t resource_list_continuation
Definition: StmApi.h:346
STM_RSC_DESC_HEADER Hdr
Definition: StmApi.h:345
uint16_t length
Definition: StmApi.h:368
uint16_t base
Definition: StmApi.h:367
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:366
uint32_t reserved
Definition: StmApi.h:369
uint32_t reserved
Definition: StmApi.h:357
uint64_t length
Definition: StmApi.h:355
uint32_t reserved_2
Definition: StmApi.h:358
uint64_t base
Definition: StmApi.h:354
uint32_t rwx_attributes
Definition: StmApi.h:356
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:353
uint32_t rwx_attributes
Definition: StmApi.h:379
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:376
uint64_t base
Definition: StmApi.h:377
uint32_t reserved
Definition: StmApi.h:380
uint32_t reserved_2
Definition: StmApi.h:381
uint64_t length
Definition: StmApi.h:378
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:389
uint32_t msr_index
Definition: StmApi.h:390
uint32_t kernel_mode_processing
Definition: StmApi.h:391
uint64_t write_mask
Definition: StmApi.h:394
uint64_t read_mask
Definition: StmApi.h:393
uint32_t reserved
Definition: StmApi.h:392
uint16_t rw_attributes
Definition: StmApi.h:410
uint16_t length
Definition: StmApi.h:413
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:409
uint16_t reserved
Definition: StmApi.h:411
uint8_t last_node_index
Definition: StmApi.h:415
uint8_t originating_bus_number
Definition: StmApi.h:414
STM_RSC_DESC_HEADER hdr
Definition: StmApi.h:424
Definition: StmApi.h:84
uint8_t intel_64mode
Definition: StmApi.h:86
uint8_t execution_disable_outside_smrr
Definition: StmApi.h:85
uint8_t cr4_pse
Definition: StmApi.h:88
uint8_t reserved1
Definition: StmApi.h:89
uint8_t cr4_pae
Definition: StmApi.h:87
uint8_t smram_to_vmcs_restore_required
Definition: StmApi.h:93
uint8_t reserved2
Definition: StmApi.h:95
uint8_t reinitialize_vmcs_required
Definition: StmApi.h:94
uint8_t reserved3
Definition: StmApi.h:102
uint8_t x_state_policy
Definition: StmApi.h:100
uint8_t ept_enabled
Definition: StmApi.h:101
uint8_t domain_type
Definition: StmApi.h:99
uint64_t vmcs_phys_pointer
Definition: StmApi.h:492
uint32_t degradation_policy
Definition: StmApi.h:495
uint64_t bios_component_base
Definition: StmApi.h:58
uint32_t hash_algorithm
Definition: StmApi.h:60
uint32_t buffer_size
Definition: StmApi.h:706
uint32_t reserved
Definition: StmApi.h:707
STM_SMM_STATE stm_smm_state
Definition: StmApi.h:113
STM_SMM_RESUME_STATE smm_resume_state
Definition: StmApi.h:112
uint8_t smm_descriptor_ver_minor
Definition: StmApi.h:109
uint8_t smm_descriptor_ver_major
Definition: StmApi.h:108
uint64_t bios_hw_resource_requirements_ptr
Definition: StmApi.h:131
uint32_t required_stm_smm_rev_id
Definition: StmApi.h:128
STM_PROTECTION_EXCEPTION_HANDLER stm_protection_exception_handler
Definition: StmApi.h:129
STM_SMM_ENTRY_STATE smm_entry_state
Definition: StmApi.h:111
uint32_t fs
Definition: StmApi.h:270
uint64_t r13
Definition: StmApi.h:250
uint64_t cr0
Definition: StmApi.h:281
uint64_t rcx
Definition: StmApi.h:257
uint64_t rdi
Definition: StmApi.h:263
uint64_t rsi
Definition: StmApi.h:262
uint8_t reserved5[0x30]
Definition: StmApi.h:238
uint32_t gdt_limit
Definition: StmApi.h:228
uint64_t r12
Definition: StmApi.h:251
uint64_t dr7
Definition: StmApi.h:274
uint8_t reserved4[0x48]
Definition: StmApi.h:226
uint64_t io_rcx
Definition: StmApi.h:220
uint64_t eptp
Definition: StmApi.h:239
uint64_t rax
Definition: StmApi.h:256
uint32_t gdt_base_lo_dword
Definition: StmApi.h:227
uint64_t rbp
Definition: StmApi.h:261
uint32_t idt_limit
Definition: StmApi.h:231
uint64_t r10
Definition: StmApi.h:253
uint64_t cr3
Definition: StmApi.h:280
uint8_t reserved2[0x4]
Definition: StmApi.h:216
uint32_t idt_base_hi_dword
Definition: StmApi.h:215
uint16_t auto_halt_restart
Definition: StmApi.h:246
uint32_t gdt_base_hi_dword
Definition: StmApi.h:213
uint32_t tr
Definition: StmApi.h:273
uint8_t reserved6[0x14]
Definition: StmApi.h:241
uint64_t io_mem_addr
Definition: StmApi.h:264
uint64_t dr6
Definition: StmApi.h:275
uint32_t smbase
Definition: StmApi.h:242
uint64_t io_rsi
Definition: StmApi.h:222
uint64_t io_eip
Definition: StmApi.h:219
uint64_t rip
Definition: StmApi.h:276
uint32_t ldt_limit
Definition: StmApi.h:234
uint64_t r8
Definition: StmApi.h:255
uint32_t smm_rev_id
Definition: StmApi.h:244
uint32_t ldtr
Definition: StmApi.h:272
uint32_t ds
Definition: StmApi.h:269
uint64_t r9
Definition: StmApi.h:254
uint32_t es
Definition: StmApi.h:266
uint64_t rsp
Definition: StmApi.h:260
uint32_t enabled_ept
Definition: StmApi.h:240
uint64_t rbx
Definition: StmApi.h:259
uint8_t reserved7[0x18]
Definition: StmApi.h:247
uint64_t r15
Definition: StmApi.h:248
uint32_t ss
Definition: StmApi.h:268
uint32_t cr4
Definition: StmApi.h:225
uint32_t io_misc
Definition: StmApi.h:265
uint64_t r11
Definition: StmApi.h:252
uint32_t cs
Definition: StmApi.h:267
uint32_t idt_base_lo_dword
Definition: StmApi.h:230
uint32_t ldt_base_hi_dword
Definition: StmApi.h:214
uint32_t gs
Definition: StmApi.h:271
uint64_t r14
Definition: StmApi.h:249
uint8_t reserved3[0x40]
Definition: StmApi.h:224
uint64_t ia32_efer
Definition: StmApi.h:277
uint64_t io_rdi
Definition: StmApi.h:217
uint32_t ldt_base_lo_dword
Definition: StmApi.h:233
uint8_t reserved1[0x1d0]
Definition: StmApi.h:212
uint16_t io_restart
Definition: StmApi.h:245
uint32_t ldt_info
Definition: StmApi.h:236
uint64_t rflags
Definition: StmApi.h:279
uint64_t rdx
Definition: StmApi.h:258
Definition: StmApi.h:678
ENTRY_EVT_LOG_HANDLED_PROTECTION_EXCEPTION handled_protection_exception
Definition: StmApi.h:683
ENTRY_EVT_MLE_RSC_PROT_DENIED mle_rsc_prot_denied
Definition: StmApi.h:686
ENTRY_EVT_MLE_RSC_PROT_GRANTED mle_rsc_prot_granted
Definition: StmApi.h:685
ENTRY_EVT_LOG_STARTED started
Definition: StmApi.h:679
ENTRY_EVT_LOG_INVALID_PARAM invalid_param
Definition: StmApi.h:681
ENTRY_EVT_LOG_STOPPED stopped
Definition: StmApi.h:680
ENTRY_EVT_MLE_RSC_UNPROT_ERROR mle_rsc_unprot_error
Definition: StmApi.h:688
ENTRY_EVT_BIOS_ACCESS_UNCLAIMED_RSC bios_unclaimed_rsc
Definition: StmApi.h:684
ENTRY_EVT_MLE_DOMAIN_TYPE_DEGRADED mle_domain_type_degraded
Definition: StmApi.h:689
ENTRY_EVT_MLE_RSC_UNPROT mle_rsc_unprot
Definition: StmApi.h:687
STM_EVENT_LOG_MANAGEMENT_REQUEST_DATA_LOG_BUFFER log_buffer
Definition: StmApi.h:531
STM_PROTECTION_EXCEPTION_STACK_FRAME_IA32 * ia32_stack_frame
Definition: StmApi.h:205
STM_PROTECTION_EXCEPTION_STACK_FRAME_X64 * x64_stack_frame
Definition: StmApi.h:206
STM_RSC_IO_DESC io
Definition: StmApi.h:459
STM_RSC_ALL_RESOURCES_DESC all
Definition: StmApi.h:464
STM_RSC_TRAPPED_IO_DESC trapped_io
Definition: StmApi.h:463
STM_RSC_DESC_HEADER header
Definition: StmApi.h:456
STM_RSC_MSR_DESC msr
Definition: StmApi.h:461
STM_REGISTER_VIOLATION_DESC register_violation
Definition: StmApi.h:465
STM_RSC_MEM_DESC mem
Definition: StmApi.h:458
STM_RSC_MMIO_DESC mmio
Definition: StmApi.h:460
STM_RSC_PCI_CFG_DESC pci_cfg
Definition: StmApi.h:462
STM_RSC_END end
Definition: StmApi.h:457