Same as SMM profile feature, a special #PF is used to set page attribute to 'present' and a special #DB handler to reset it back to 'not-present', right after the instruction causing #PF got executed. Since the new #PF handler won't enter into dead-loop, the instruction which caused the #PF will get chance to re-execute with accessible pages. The exception message will still be printed out on debug console so that the developer/QA can find that there's potential heap overflow or null pointer access occurred. Cc: Eric Dong <eric.dong@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com>
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
| ## @file
 | |
| #  CPU driver installs CPU Architecture Protocol and CPU MP protocol.
 | |
| #
 | |
| #  Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| #  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
 | |
| #
 | |
| #  This program and the accompanying materials
 | |
| #  are licensed and made available under the terms and conditions of the BSD License
 | |
| #  which accompanies this distribution.  The full text of the license may be found at
 | |
| #  http://opensource.org/licenses/bsd-license.php
 | |
| #
 | |
| #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| #
 | |
| ##
 | |
| 
 | |
| [Defines]
 | |
|   INF_VERSION                    = 0x00010005
 | |
|   BASE_NAME                      = CpuDxe
 | |
|   MODULE_UNI_FILE                = CpuDxe.uni
 | |
|   FILE_GUID                      = 1A1E4886-9517-440e-9FDE-3BE44CEE2136
 | |
|   MODULE_TYPE                    = DXE_DRIVER
 | |
|   VERSION_STRING                 = 1.0
 | |
|   ENTRY_POINT                    = InitializeCpu
 | |
| 
 | |
| [Packages]
 | |
|   MdePkg/MdePkg.dec
 | |
|   MdeModulePkg/MdeModulePkg.dec
 | |
|   UefiCpuPkg/UefiCpuPkg.dec
 | |
| 
 | |
| [LibraryClasses]
 | |
|   BaseLib
 | |
|   BaseMemoryLib
 | |
|   CpuLib
 | |
|   DebugLib
 | |
|   DxeServicesTableLib
 | |
|   MemoryAllocationLib
 | |
|   MtrrLib
 | |
|   UefiBootServicesTableLib
 | |
|   UefiDriverEntryPoint
 | |
|   LocalApicLib
 | |
|   UefiCpuLib
 | |
|   UefiLib
 | |
|   CpuExceptionHandlerLib
 | |
|   HobLib
 | |
|   ReportStatusCodeLib
 | |
|   MpInitLib
 | |
|   TimerLib
 | |
|   PeCoffGetEntryPointLib
 | |
| 
 | |
| [Sources]
 | |
|   CpuDxe.c
 | |
|   CpuDxe.h
 | |
|   CpuGdt.c
 | |
|   CpuGdt.h
 | |
|   CpuMp.c
 | |
|   CpuMp.h
 | |
|   CpuPageTable.h
 | |
|   CpuPageTable.c
 | |
| 
 | |
| [Sources.IA32]
 | |
|   Ia32/CpuAsm.nasm
 | |
| 
 | |
| [Sources.X64]
 | |
|   X64/CpuAsm.nasm
 | |
| 
 | |
| [Protocols]
 | |
|   gEfiCpuArchProtocolGuid                       ## PRODUCES
 | |
|   gEfiMpServiceProtocolGuid                     ## PRODUCES
 | |
|   gEfiSmmBase2ProtocolGuid                      ## SOMETIMES_CONSUMES
 | |
| 
 | |
| [Guids]
 | |
|   gIdleLoopEventGuid                            ## CONSUMES           ## Event
 | |
|   gEfiVectorHandoffTableGuid                    ## SOMETIMES_CONSUMES ## SystemTable
 | |
| 
 | |
| [Ppis]
 | |
|   gEfiSecPlatformInformation2PpiGuid            ## UNDEFINED # HOB
 | |
|   gEfiSecPlatformInformationPpiGuid             ## UNDEFINED # HOB
 | |
| 
 | |
| [Pcd]
 | |
|   gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES
 | |
|   gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                       ## CONSUMES
 | |
|   gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask               ## CONSUMES
 | |
|   gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask    ## CONSUMES
 | |
|   gUefiCpuPkgTokenSpaceGuid.PcdCpuStackSwitchExceptionList              ## CONSUMES
 | |
|   gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize                    ## CONSUMES
 | |
| 
 | |
| [Depex]
 | |
|   TRUE
 | |
| 
 | |
| [UserExtensions.TianoCore."ExtraFiles"]
 | |
|   CpuDxeExtra.uni
 |