diff options
author | Zhiguang Liu <zhiguang.liu@intel.com> | 2024-01-10 13:39:42 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2024-02-22 03:28:55 +0000 |
commit | c10e5703fece76810cad7a5c27914b545def91ff (patch) | |
tree | e3477d2d921062a2f5ec0694a688e8c5f8413923 /UefiCpuPkg/CpuMpPei | |
parent | 2f4b07b668323122a363eee87a2348f4a738bc8c (diff) | |
download | edk2-c10e5703fece76810cad7a5c27914b545def91ff.tar.gz edk2-c10e5703fece76810cad7a5c27914b545def91ff.tar.bz2 edk2-c10e5703fece76810cad7a5c27914b545def91ff.zip |
UefiCpuPkg/CpuMpPei: Don't write CR3 in ConvertMemoryPageToNotPresent
The purpose of writing CR3 in ConvertMemoryPageToNotPresent is just
to flush TLB, because CR3 won't be changed in function
ConvertMemoryPageToNotPresent.
After ConvertMemoryPageToNotPresent, there is always a flush TLB
function. Also, because ConvertMemoryPageToNotPresent in called in a
loop, to improve performance, there is no need to flush TLB
inside ConvertMemoryPageToNotPresent. Just flushing TLB after the loop
is enough.
Reviewed-by: Ray Ni <ray.ni@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
Diffstat (limited to 'UefiCpuPkg/CpuMpPei')
-rw-r--r-- | UefiCpuPkg/CpuMpPei/CpuPaging.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/UefiCpuPkg/CpuMpPei/CpuPaging.c b/UefiCpuPkg/CpuMpPei/CpuPaging.c index 15c7015fb8..b923d9b502 100644 --- a/UefiCpuPkg/CpuMpPei/CpuPaging.c +++ b/UefiCpuPkg/CpuMpPei/CpuPaging.c @@ -76,7 +76,8 @@ AllocatePageTableMemory ( /**
This function modifies the page attributes for the memory region specified
- by BaseAddress and Length to not present.
+ by BaseAddress and Length to not present. This function only change page
+ table, but not flush TLB. Caller have the responsbility to flush TLB.
Caller should make sure BaseAddress and Length is at page boundary.
@@ -167,7 +168,6 @@ ConvertMemoryPageToNotPresent ( }
ASSERT_EFI_ERROR (Status);
- AsmWriteCr3 (PageTable);
return Status;
}
|