]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / SmmProfile.h
1 /** @file
2 SMM profile header file.
3
4 Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
5 SPDX-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 **/
24 VOID
25 ActivateSmmProfile (
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 **/
35 VOID
36 InitSmmProfile (
37 UINT32 Cr3
38 );
39
40 /**
41 Increase SMI number in each SMI entry.
42
43 **/
44 VOID
45 SmmProfileRecordSmiNum (
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 **/
56 VOID
57 SmmProfilePFHandler (
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 **/
68 VOID
69 SmmProfileStart (
70 VOID
71 );
72
73 /**
74 Page fault IDT handler for SMM Profile.
75
76 **/
77 VOID
78 EFIAPI
79 PageFaultIdtHandlerSmmProfile (
80 VOID
81 );
82
83 /**
84 Check if feature is supported by a processor.
85
86 **/
87 VOID
88 CheckFeatureSupported (
89 VOID
90 );
91
92 /**
93 Update page table according to protected memory ranges and the 4KB-page mapped memory ranges.
94
95 **/
96 VOID
97 InitPaging (
98 VOID
99 );
100
101 /**
102 Get CPU Index from APIC ID.
103
104 **/
105 UINTN
106 GetCpuIndex (
107 VOID
108 );
109
110 /**
111 Handler for Page Fault triggered by Guard page.
112
113 @param ErrorCode The Error code of exception.
114
115 **/
116 VOID
117 GuardPagePFHandler (
118 UINTN ErrorCode
119 );
120
121 //
122 // The flag indicates if execute-disable is supported by processor.
123 //
124 extern BOOLEAN mXdSupported;
125 //
126 // The flag indicates if execute-disable is enabled on processor.
127 //
128 extern BOOLEAN mXdEnabled;
129 //
130 // The flag indicates if #DB will be setup in #PF handler.
131 //
132 extern BOOLEAN mSetupDebugTrap;
133
134 #endif // _SMM_PROFILE_H_