UefiCpuPkg/CpuDxe: Enable protection for newly added page table
authorJian J Wang <jian.j.wang@intel.com>
Tue, 12 Dec 2017 01:16:35 +0000 (09:16 +0800)
committerStar Zeng <star.zeng@intel.com>
Tue, 12 Dec 2017 02:14:51 +0000 (10:14 +0800)
commit147fd35c3e389ecd025dbfd243312bf5b22da7c9
treeb3927e242e02ea842e7521a0a26ccffdfd7cd0ac
parent2ac1730bf2a51d6d0483347a0218e1768d6d7992
UefiCpuPkg/CpuDxe: Enable protection for newly added page table

One of the functionalities of CpuDxe is to update memory paging attributes.
If page table protection is applied, it must be disabled temporarily before
any attributes update and enabled again afterwards.

This patch makes use of the same way as DxeIpl to allocate page table memory
from reserved memory pool, which helps to reduce potential "split" operation
and recursive calling of SetMemorySpaceAttributes().

Laszlo (lersek@redhat.com) did a regression test on QEMU virtual platform with
one middle version of this series patch. The details can be found at

 https://lists.01.org/pipermail/edk2-devel/2017-December/018625.html

There're a few changes after his work.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.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: Jiewen Yao <jiewen.yao@intel.com>
UefiCpuPkg/CpuDxe/CpuDxe.c
UefiCpuPkg/CpuDxe/CpuDxe.h
UefiCpuPkg/CpuDxe/CpuPageTable.c
UefiCpuPkg/CpuDxe/CpuPageTable.h