VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h@ 108794

Last change on this file since 108794 was 108794, checked in by vboxsync, 2 weeks ago

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1/** @file
2SMM profile header file.
3
4Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#ifndef _SMM_PROFILE_H_
10#define _SMM_PROFILE_H_
11
12#include "SmmProfileInternal.h"
13
14//
15// External functions
16//
17
18/**
19 Initialize processor environment for SMM profile.
20
21 @param CpuIndex The index of the processor.
22
23**/
24VOID
25ActivateSmmProfile (
26 IN UINTN CpuIndex
27 );
28
29/**
30 Initialize SMM profile in SMM CPU entry point.
31
32 @param[in] Cr3 The base address of the page tables to use in SMM.
33
34**/
35VOID
36InitSmmProfile (
37 UINT32 Cr3
38 );
39
40/**
41 Increase SMI number in each SMI entry.
42
43**/
44VOID
45SmmProfileRecordSmiNum (
46 VOID
47 );
48
49/**
50 The Page fault handler to save SMM profile data.
51
52 @param Rip The RIP when exception happens.
53 @param ErrorCode The Error code of exception.
54
55**/
56VOID
57SmmProfilePFHandler (
58 UINTN Rip,
59 UINTN ErrorCode
60 );
61
62/**
63 Updates page table to make some memory ranges (like system memory) absent
64 and make some memory ranges (like MMIO) present and execute disable. It also
65 update 2MB-page to 4KB-page for some memory ranges.
66
67**/
68VOID
69SmmProfileStart (
70 VOID
71 );
72
73/**
74 Page fault IDT handler for SMM Profile.
75
76**/
77VOID
78EFIAPI
79PageFaultIdtHandlerSmmProfile (
80 VOID
81 );
82
83/**
84 Check if feature is supported by a processor.
85
86 @param CpuIndex The index of the CPU.
87**/
88VOID
89CheckFeatureSupported (
90 IN UINTN CpuIndex
91 );
92
93/**
94 Initialize the protected memory ranges and the 4KB-page mapped memory ranges.
95
96**/
97VOID
98InitProtectedMemRange (
99 VOID
100 );
101
102/**
103 This function updates memory attribute according to mProtectionMemRangeCount.
104
105**/
106VOID
107SmmProfileUpdateMemoryAttributes (
108 VOID
109 );
110
111/**
112 Get CPU Index from APIC ID.
113
114**/
115UINTN
116GetCpuIndex (
117 VOID
118 );
119
120/**
121 Handler for Page Fault triggered by Guard page.
122
123 @param ErrorCode The Error code of exception.
124
125**/
126VOID
127GuardPagePFHandler (
128 UINTN ErrorCode
129 );
130
131//
132// The flag indicates if execute-disable is supported by processor.
133//
134extern BOOLEAN mXdSupported;
135//
136// The flag indicates if execute-disable is enabled on processor.
137//
138extern BOOLEAN mXdEnabled;
139//
140// The flag indicates if SMM profile is enabled.
141//
142extern BOOLEAN mSmmProfileEnabled;
143//
144// The flag indicates if #DB will be setup in #PF handler.
145//
146extern BOOLEAN mSetupDebugTrap;
147//
148// SMI command port.
149//
150extern UINT32 mSmiCommandPort;
151
152#endif // _SMM_PROFILE_H_
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette