mirror of https://github.com/acidanthera/audk.git
717fb60443
PiSmmCpuDxeSmm consumes SmmAttributesTable and setup page table: 1) Code region is marked as read-only and Data region is non-executable, if the PE image is 4K aligned. 2) Important data structure is set to RO, such as GDT/IDT. 3) SmmSaveState is set to non-executable, and SmmEntrypoint is set to read-only. 4) If static page is supported, page table is read-only. We use page table to protect other components, and itself. If we use dynamic paging, we can still provide *partial* protection. And hope page table is not modified by other components. The XD enabling code is moved to SmiEntry to let NX take effect. Cc: Jeff Fan <jeff.fan@intel.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> |
||
---|---|---|
.. | ||
Ia32 | ||
X64 | ||
CpuS3.c | ||
CpuService.c | ||
CpuService.h | ||
MpService.c | ||
PiSmmCpuDxeSmm.c | ||
PiSmmCpuDxeSmm.h | ||
PiSmmCpuDxeSmm.inf | ||
PiSmmCpuDxeSmm.uni | ||
PiSmmCpuDxeSmmExtra.uni | ||
SmmCpuMemoryManagement.c | ||
SmmProfile.c | ||
SmmProfile.h | ||
SmmProfileInternal.h | ||
SmramSaveState.c | ||
SyncTimer.c |