https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			136 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| SMM profile header file.
 | |
| 
 | |
| Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _SMM_PROFILE_H_
 | |
| #define _SMM_PROFILE_H_
 | |
| 
 | |
| #include "SmmProfileInternal.h"
 | |
| 
 | |
| //
 | |
| // External functions
 | |
| //
 | |
| 
 | |
| /**
 | |
|   Initialize processor environment for SMM profile.
 | |
| 
 | |
|   @param  CpuIndex  The index of the processor.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| ActivateSmmProfile (
 | |
|   IN UINTN CpuIndex
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initialize SMM profile in SMM CPU entry point.
 | |
| 
 | |
|   @param[in] Cr3  The base address of the page tables to use in SMM.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| InitSmmProfile (
 | |
|   UINT32  Cr3
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Increase SMI number in each SMI entry.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| SmmProfileRecordSmiNum (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   The Page fault handler to save SMM profile data.
 | |
| 
 | |
|   @param  Rip        The RIP when exception happens.
 | |
|   @param  ErrorCode  The Error code of exception.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| SmmProfilePFHandler (
 | |
|   UINTN Rip,
 | |
|   UINTN ErrorCode
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Updates page table to make some memory ranges (like system memory) absent
 | |
|   and make some memory ranges (like MMIO) present and execute disable. It also
 | |
|   update 2MB-page to 4KB-page for some memory ranges.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| SmmProfileStart (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Page fault IDT handler for SMM Profile.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PageFaultIdtHandlerSmmProfile (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Check if feature is supported by a processor.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| CheckFeatureSupported (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Update page table according to protected memory ranges and the 4KB-page mapped memory ranges.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| InitPaging (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get CPU Index from APIC ID.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| GetCpuIndex (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Handler for Page Fault triggered by Guard page.
 | |
| 
 | |
|   @param  ErrorCode  The Error code of exception.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| GuardPagePFHandler (
 | |
|   UINTN ErrorCode
 | |
|   );
 | |
| 
 | |
| //
 | |
| // The flag indicates if execute-disable is supported by processor.
 | |
| //
 | |
| extern BOOLEAN    mXdSupported;
 | |
| //
 | |
| // The flag indicates if execute-disable is enabled on processor.
 | |
| //
 | |
| extern BOOLEAN    mXdEnabled;
 | |
| //
 | |
| // The flag indicates if #DB will be setup in #PF handler.
 | |
| //
 | |
| extern BOOLEAN    mSetupDebugTrap;
 | |
| 
 | |
| #endif // _SMM_PROFILE_H_
 |