audk/UefiCpuPkg
Dun Tan aad9a30144 UefiCpuPkg/CpuPageTableLib: Enable PAE paging
Modify CpuPageTableLib code to enable PAE paging.
In PageTableMap() API:
When creating new PAE page table, after creating page table,
set all MustBeZero fields of 4 PDPTE to 0. The MustBeZero
fields are treated as RW and other attributes by the common
map logic. So they might be set to 1.
When updating exsiting PAE page table, the special steps are:
1.Prepare 4K-aligned 32bytes memory in stack for 4 temp PDPTE.
2.Copy original 4 PDPTE to the 4 temp PDPTE and set the RW,
  UserSupervisor to 1 and set Nx of 4 temp PDPTE to 0.
4.After updating the page table, set the MustBeZero fields of
  4 temp PDPTE to 0.
5.Copy the temp PDPTE to original PDPTE.

In PageTableParse() API, also create 4 temp PDPTE in stack.
Copy original 4 PDPTE to the 4 temp PDPTE. Then set the RW,
UserSupervisor to 1 and set Nx of 4 temp PDPTE to 0. Finally
use the address of temp PDPTE as the page table address.

Signed-off-by: Dun Tan <dun.tan@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Tested-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2023-03-27 08:21:58 +00:00
..
Application/Cpuid UefiCpuPkg: Calculate DisplayFamily correctly 2023-03-07 10:42:38 +00:00
CpuDxe UefiCpuPkg: Remove UefiCpuLib from module INFs. 2023-03-10 08:23:56 +00:00
CpuDxeRiscV64 UefiCpuPkg: Add CpuDxeRiscV64 module 2023-02-16 05:53:28 +00:00
CpuFeatures UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuIo2Dxe UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuIo2Smm UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuIoPei UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuMpPei UefiCpuPkg: Enhance logic in InitializeMpExceptionStackSwitchHandlers 2022-08-31 04:23:55 +00:00
CpuS3DataDxe UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuTimerDxeRiscV64 UefiCpuPkg: BaseRiscV64CpuExceptionHandlerLib: clean up 2023-03-08 18:10:34 +00:00
Include UefiCpuPkg: Fix IA32 build failure in CpuPageTableLib.inf 2023-03-27 08:21:58 +00:00
Library UefiCpuPkg/CpuPageTableLib: Enable PAE paging 2023-03-27 08:21:58 +00:00
MicrocodeMeasurementDxe UefiCpuPkg/MicrocodeMeasurementDxe: Fix exception 2023-03-10 07:13:14 +00:00
PiSmmCommunication UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PiSmmCpuDxeSmm UefiCpuPkg/PiSmmCpuDxeSmm: fix error handling 2023-03-22 04:04:57 +00:00
ResetVector UefiCpuPkg: Supporting S3 in 64bit PEI 2022-12-19 06:12:56 +00:00
SecCore UefiCpuPkg: Remove UefiCpuLib from module INFs. 2023-03-10 08:23:56 +00:00
SecMigrationPei UefiCpuPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Test UefiCpuPkg/Test: develop UEFI App and dynamic cmd for MP services UT 2022-12-08 10:04:24 +00:00
Universal/Acpi/S3Resume2Pei UefiCpuPkg: Supporting S3 in 64bit PEI 2022-12-19 06:12:56 +00:00
UefiCpuPkg.ci.yaml UefiCpuPkg/UefiCpuPkg.ci.yaml: Ignore RISC-V file 2023-02-16 05:53:28 +00:00
UefiCpuPkg.dec UefiCpuPkg/SmmBaseHob.h: Add SMM Base HOB Data 2023-03-06 06:07:48 +00:00
UefiCpuPkg.dsc UefiCpuPkg: Add CpuDxeRiscV64 module 2023-02-16 05:53:28 +00:00
UefiCpuPkg.uni UefiCpuPkg: Add PCD to control SMRR enable & SmmFeatureControl support 2022-08-31 04:23:55 +00:00
UefiCpuPkgExtra.uni UefiCpuPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:28 -07:00