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

Reply via email to