This series patchset try to implement Mp Service protocol in UefiCpuPkg,
Jordan had implemented the startup APs code, and I try to add more
initialization code to let all APs work up, this Mp Service protocol's
implementation used EmulatorPkg/MpService for reference.
this patches works on my github:
  https://github.com/ChenFanFnst/edk2/tree/cpu-mp-service

v4-v5:
  1. introduce PcdCpuMaxLogicalProcessorNumber to pre-allocate
     stack buffer before starting the APs.
  2. reset AP by sending init ipi when StartupThisAP()/StartupAllAPs()
     timeout. but when BSP called CheckEvent/WaitForEvent, there will
     be caused BSP blocked. I made it in the last test patch, but I 
     can't find it out.
  3. some bug fix.

v3-v4:
  1. change the order of the patches.
  2. update some minor format suggested by Jeff.
  3. add a PCD value to configure StackSize.
  4. the last patch add assembly code for MSFT, but didn't
     test.

V3-V3.1:
  1. use AcquireSpinLockOrFail() intead of AcquireSpinLock()
     to avoid ASSERT sugguested by Jeff.

V2-V3:
  1. rebase codes due to Jordan'tree updated:
     https://github.com/jljusten/edk2/tree/ap-startup-example
  2. add supported on Ia32 arch
  3. add a new Lock to replace present SpinLock mechanisms in mutilple
     processors, maybe the SpinLock mechanisms is not MP safe.
  4. add function header
  5. add StartupAllAPs() supported
  6. add SwitchBSP() function, which is unsupported.

V1-V2:
  1. do not call anything EFI API from APs.
  2. add AP busy-wait for task assignment from BSP and get rid of
     IPI sent mechanism.


Chen Fan (17):
  UefiCpuPkg/CpuDxe: introduce two PCD value
  UefiCpuPkg/CpuDxe: Switch Ap Stack to NewStack
  UefiCpuPkg/CpuDxe: introduce EFI_MP_SERVICES_PROTOCOL
  UefiCpuPkg/CpuDxe: introduce MP_SYSTEM_DATA for Mp Service Protocol
  UefiCpuPkg/CpuDxe: implement Mp Protocol: WhoAmI()
  UefiCpuPkg/CpuDxe: implement Mp Protocol:GetNumberOfProcessors()
  UefiCpuPkg/CpuDxe: implement Mp Services:GetProcessorInfo()
  UefiCpuPkg/CpuDxe: implement Mp Protocol:EnableDisableAP()
  UefiCpuPkg/CpuDxe: implement Mp Protocol:StartupThisAP()
  UefiCpuPkg/CpuDxe: implement Mp Services:StartupAllAPs()
  UefiCpuPkg/CpuDxe: implement Mp Services:SwitchBSP()
  UefiCpuPkg/CpuDxe: Ap do loop routine to execute procedure
  UefiCpuPkg/CpuDxe: split out StartupCode from StartApsStackless()
  UefiCpuPkg/CpuDxe: introduce ResetApStackless()
  UefiCpuPkg/CpuDxe: Startup APs
  UefiCpuPkg/CpuDxe: install Mp Service protocol
  UefiCpuPkg/CpuDxe: add Mp Service TestCase (!upstream)

Jordan Justen (5):
  UefiCpuPkg/CpuDxe: Add no-op InitializeMpSupport
  UefiCpuPkg/CpuDxe: Add ApEntryPointInC
  UefiCpuPkg/CpuDxe: Add stackless assembly AP entry points
  UefiCpuPkg/CpuDxe: Move GDT structures into CpuGdt.h
  UefiCpuPkg/CpuDxe: Add StartApsStackless routine

 UefiCpuPkg/CpuDxe/ApStartup.asm   |  111 +++
 UefiCpuPkg/CpuDxe/ApStartup.c     |  252 +++++++
 UefiCpuPkg/CpuDxe/CpuDxe.c        |    5 +
 UefiCpuPkg/CpuDxe/CpuDxe.h        |    1 +
 UefiCpuPkg/CpuDxe/CpuDxe.inf      |   18 +
 UefiCpuPkg/CpuDxe/CpuGdt.c        |   52 +-
 UefiCpuPkg/CpuDxe/CpuGdt.h        |   72 ++
 UefiCpuPkg/CpuDxe/CpuMp.c         | 1446 +++++++++++++++++++++++++++++++++++++
 UefiCpuPkg/CpuDxe/CpuMp.h         |  649 +++++++++++++++++
 UefiCpuPkg/CpuDxe/CpuMpTest.c     |   97 +++
 UefiCpuPkg/CpuDxe/Ia32/MpAsm.asm  |   75 ++
 UefiCpuPkg/CpuDxe/Ia32/MpAsm.nasm |   68 ++
 UefiCpuPkg/CpuDxe/X64/MpAsm.asm   |   76 ++
 UefiCpuPkg/CpuDxe/X64/MpAsm.nasm  |   70 ++
 UefiCpuPkg/UefiCpuPkg.dec         |    6 +
 UefiCpuPkg/UefiCpuPkg.dsc         |    1 +
 16 files changed, 2948 insertions(+), 51 deletions(-)
 create mode 100644 UefiCpuPkg/CpuDxe/ApStartup.asm
 create mode 100644 UefiCpuPkg/CpuDxe/ApStartup.c
 create mode 100644 UefiCpuPkg/CpuDxe/CpuGdt.h
 create mode 100644 UefiCpuPkg/CpuDxe/CpuMp.c
 create mode 100644 UefiCpuPkg/CpuDxe/CpuMp.h
 create mode 100644 UefiCpuPkg/CpuDxe/CpuMpTest.c
 create mode 100644 UefiCpuPkg/CpuDxe/Ia32/MpAsm.asm
 create mode 100644 UefiCpuPkg/CpuDxe/Ia32/MpAsm.nasm
 create mode 100644 UefiCpuPkg/CpuDxe/X64/MpAsm.asm
 create mode 100644 UefiCpuPkg/CpuDxe/X64/MpAsm.nasm

-- 
1.9.3


------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to