1 /** @file 2 SMM profile header file. 3 4 Copyright (c) 2012 - 2015, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef _SMM_PROFILE_H_ 16 #define _SMM_PROFILE_H_ 17 18 #include "SmmProfileInternal.h" 19 20 /// 21 /// MSR Register Index 22 /// 23 #define MSR_IA32_MISC_ENABLE 0x1A0 24 25 // 26 // External functions 27 // 28 29 /** 30 Initialize processor environment for SMM profile. 31 32 @param CpuIndex The index of the processor. 33 34 **/ 35 VOID 36 ActivateSmmProfile ( 37 IN UINTN CpuIndex 38 ); 39 40 /** 41 Initialize SMM profile in SMM CPU entry point. 42 43 @param[in] Cr3 The base address of the page tables to use in SMM. 44 45 **/ 46 VOID 47 InitSmmProfile ( 48 UINT32 Cr3 49 ); 50 51 /** 52 Increase SMI number in each SMI entry. 53 54 **/ 55 VOID 56 SmmProfileRecordSmiNum ( 57 VOID 58 ); 59 60 /** 61 The Page fault handler to save SMM profile data. 62 63 @param Rip The RIP when exception happens. 64 @param ErrorCode The Error code of exception. 65 66 **/ 67 VOID 68 SmmProfilePFHandler ( 69 UINTN Rip, 70 UINTN ErrorCode 71 ); 72 73 /** 74 Updates page table to make some memory ranges (like system memory) absent 75 and make some memory ranges (like MMIO) present and execute disable. It also 76 update 2MB-page to 4KB-page for some memory ranges. 77 78 **/ 79 VOID 80 SmmProfileStart ( 81 VOID 82 ); 83 84 /** 85 Page fault IDT handler for SMM Profile. 86 87 **/ 88 VOID 89 EFIAPI 90 PageFaultIdtHandlerSmmProfile ( 91 VOID 92 ); 93 94 95 /** 96 Check if XD feature is supported by a processor. 97 98 **/ 99 VOID 100 CheckFeatureSupported ( 101 VOID 102 ); 103 104 /** 105 Enable XD feature. 106 107 **/ 108 VOID 109 ActivateXd ( 110 VOID 111 ); 112 113 /** 114 Update page table according to protected memory ranges and the 4KB-page mapped memory ranges. 115 116 **/ 117 VOID 118 InitPaging ( 119 VOID 120 ); 121 122 /** 123 Check if XD and BTS features are supported by all processors. 124 125 **/ 126 VOID 127 CheckProcessorFeature ( 128 VOID 129 ); 130 131 extern BOOLEAN mXdSupported; 132 extern BOOLEAN mXdEnabled; 133 134 #endif // _SMM_PROFILE_H_ 135