summaryrefslogtreecommitdiff
path: root/OvmfPkg
diff options
context:
space:
mode:
authorJian J Wang <jian.j.wang@intel.com>2018-04-11 14:12:12 +0800
committerStar Zeng <star.zeng@intel.com>2018-04-13 13:05:00 +0800
commit54ec85dd2902bd5dee39106d5291f71088b7d85a (patch)
treecead8d1d8684380dbb700c69e3daa35553f5aeb9 /OvmfPkg
parent5fef2c7069a846754dda2f6416b11d5554f05ac3 (diff)
downloadedk2-54ec85dd2902bd5dee39106d5291f71088b7d85a.zip
edk2-54ec85dd2902bd5dee39106d5291f71088b7d85a.tar.gz
edk2-54ec85dd2902bd5dee39106d5291f71088b7d85a.tar.bz2
MdeModulePkg/PiSmmIpl: fix non-executable SMM RAM
This patch fixes an issue introduced by commit 5b91bf82c67b586b9588cbe4bbffa1588f6b5926 and 0c9f2cb10b7ddec56a3440e77219fd3ab1725e5c This issue will only happen if PcdDxeNxMemoryProtectionPolicy is enabled for reserved memory, which will mark SMM RAM as NX (non- executable) during DXE core initialization. SMM IPL driver will unset the NX attribute for SMM RAM to allow loading and running SMM core/drivers. But above commit will fail the unset operation of the NX attribute due to a fact that SMM RAM has zero cache attribute (MRC code always sets 0 attribute to reserved memory), which will cause GCD internal method ConverToCpuArchAttributes() to return 0 attribute, which is taken as invalid CPU paging attribute and skip the calling of gCpu->SetMemoryAttributes(). The solution is to make use of existing functionality in PiSmmIpl to make sure one cache attribute is set for SMM RAM. For performance consideration, PiSmmIpl will always try to set SMM RAM to write-back. But there's a hole in the code which will fail the setting write-back attribute because of no corresponding cache capabilities. This patch will add necessary cache capabilities before setting corresponding attributes. Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
Diffstat (limited to 'OvmfPkg')
0 files changed, 0 insertions, 0 deletions