Branch: refs/heads/master Home: https://github.com/tianocore/edk2 Commit: 54aeed7e0086724820370e3a3cfac2c7438ebc8d https://github.com/tianocore/edk2/commit/54aeed7e0086724820370e3a3cfac2c7438ebc8d Author: Ray Ni <ray...@intel.com> Date: 2022-06-10 (Fri, 10 Jun 2022)
Changed paths: M UefiCpuPkg/Library/MpInitLib/DxeMpLib.c M UefiCpuPkg/Library/MpInitLib/MpLib.c M UefiCpuPkg/Library/MpInitLib/MpLib.h M UefiCpuPkg/Library/MpInitLib/PeiMpLib.c Log Message: ----------- MpInitLib: Allocate code buffer for PEI phase Today's implementation assumes PEI phase runs at 32bit so the execution-disable feature is not applicable. It's not always TRUE. The patch allocates 32bit&64bit code buffer for PEI phase as well. Signed-off-by: Ray Ni <ray...@intel.com> Reviewed-by: Eric Dong <eric.d...@intel.com> Commit: 76323c31458c37c2f16288bac3e7699bdbc677d0 https://github.com/tianocore/edk2/commit/76323c31458c37c2f16288bac3e7699bdbc677d0 Author: Ray Ni <ray...@intel.com> Date: 2022-06-10 (Fri, 10 Jun 2022) Changed paths: M UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm M UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm Log Message: ----------- MpInitLib: remove unneeded global ASM_PFX global in NASM file is used for symbols that are referenced in C files. Remove unneeded global keyword in NASM file. Signed-off-by: Ray Ni <ray...@intel.com> Reviewed-by: Eric Dong <eric.d...@intel.com> Commit: b4d7b9d2b50f12d34f00afc7c7b4710778209521 https://github.com/tianocore/edk2/commit/b4d7b9d2b50f12d34f00afc7c7b4710778209521 Author: Ray Ni <ray...@intel.com> Date: 2022-06-10 (Fri, 10 Jun 2022) Changed paths: M UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm M UefiCpuPkg/Library/MpInitLib/MpEqu.inc M UefiCpuPkg/Library/MpInitLib/MpLib.c M UefiCpuPkg/Library/MpInitLib/MpLib.h M UefiCpuPkg/Library/MpInitLib/X64/AmdSev.nasm M UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm Log Message: ----------- MpInitLib: Put SEV logic in separate file The patch does several simplifications: 1. Treat SwitchToRealProc as part of RendezvousFunnelProc. So the common logic in MpLib.c doesn't need to be aware of SwitchToRealProc. As a result, SwitchToRealSize/Offset are removed from MP_ASSEMBLY_ADDRESS_MAP. 2. Move SwitchToRealProc to AmdSev.nasm. All other assembly code in AmdSev.nasm is called through OneTimeCall. Signed-off-by: Ray Ni <ray...@intel.com> Reviewed-by: Eric Dong <eric.d...@intel.com> Reviewed-by: Tom Lendacky <thomas.lenda...@amd.com> Tested-by: Tom Lendacky <thomas.lenda...@amd.com> Cc: Rahul Kumar <rahul1.ku...@intel.com> Cc: Michael Roth <michael.r...@amd.com> Cc: James Bottomley <j...@linux.ibm.com> Cc: Min Xu <min.m...@intel.com> Cc: Jiewen Yao <jiewen....@intel.com> Cc: Jordan Justen <jordan.l.jus...@intel.com> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> Cc: Erdem Aktas <erdemak...@google.com> Cc: Gerd Hoffmann <kra...@redhat.com> Commit: 283ab9437aadc5c70a9df8bd751954045250e024 https://github.com/tianocore/edk2/commit/283ab9437aadc5c70a9df8bd751954045250e024 Author: Ray Ni <ray...@intel.com> Date: 2022-06-10 (Fri, 10 Jun 2022) Changed paths: M UefiCpuPkg/Library/MpInitLib/AmdSev.c M UefiCpuPkg/Library/MpInitLib/MpEqu.inc M UefiCpuPkg/Library/MpInitLib/MpLib.c Log Message: ----------- MpInitLib: Only allocate below 1MB memory for 16bit code Today's implementation allocates below 1MB memory for the 16bit, 32bit and 64bit code. But it's not necessary since now the 32bit and 64bit code run at high memory no matter in PEI and DXE phase. The patch simplifies the logic to remove the code that handles the case when WakeupBufferHigh is 0. It also reduce the memory foot print under 1MB by allocating memory for 16bit code only. MP_CPU_EXCHANGE_INFO is still under 1MB which is immediate after the 16bit code. Signed-off-by: Ray Ni <ray...@intel.com> Reviewed-by: Eric Dong <eric.d...@intel.com> Commit: ccc269756f773d35aab67ccb935fa9548f30cff3 https://github.com/tianocore/edk2/commit/ccc269756f773d35aab67ccb935fa9548f30cff3 Author: Ray Ni <ray...@intel.com> Date: 2022-06-10 (Fri, 10 Jun 2022) Changed paths: M UefiCpuPkg/Library/MpInitLib/MpLib.c Log Message: ----------- MpInitLib: Move the Above1Mb vector allocation to MpInitLibInitialize The AP vector consists of 2 parts: 1. the initial 16-bit code that should be under 1MB and page aligned. 2. the 32-bit/64-bit code that can be anywhere in the memory with any alignment. The need of part #2 is because the memory under 1MB is temporary "stolen" for use and will "give" back after all AP wake up. The range of memory is not marked as code page in page table. CPU may trigger exception as soon as NX is enabled. The part #2 memory allocation can be done in the MpInitLibInitialize. Signed-off-by: Ray Ni <ray...@intel.com> Reviewed-by: Eric Dong <eric.d...@intel.com> Compare: https://github.com/tianocore/edk2/compare/e7abb94d1fb8...ccc269756f77 _______________________________________________ edk2-commits mailing list edk2-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-commits