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

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.

  NOTE: the last patch implemented StartupThisAP() could not run correctly.
        the Ap run loop will cause IoRead32() assert in
        MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c: (163)
        I can't find the root reason. please help me.

TODO:
  1) StartupThisAP/StartAllAps: when Timeout expires before AP returns
     from Procedure, constrainedly terminate the executed Procedure.
  2) Support SwitchBSP(). (Or it is unnecessary)
 
Any Comment is welcome.

Chen Fan (9):
  UefiCpuPkg/CpuDxe: Introduce AsmApDoneWithCommonStack
  UefiCpuPkg/CpuDxe: Waiting for Aps initialization done
  UefiCpuPkg/CpuDxe: Switch Ap CommonStack with NewStack
  UefiCpuPkg/CpuDxe: install Mp Service protocol
  UefiCpuPkg/CpuDxe: implement Mp Protocol: GetNumberOfProcessors()
  UefiCpuPkg/CpuDxe: implement Mp Protocol: WhoAmI()
  UefiCpuPkg/CpuDxe: implement Mp Services: GetProcessorInfo()
  UefiCpuPkg/CpuDxe: implement Mp Protocol: EnableDisableAP()
  UefiCpuPkg/CpuDxe: implement Mp Protocol: StartupThisAP()

Jordan Justen (6):
  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: Startup APs

 UefiCpuPkg/CpuDxe/ApStartup.asm | 111 ++++++
 UefiCpuPkg/CpuDxe/ApStartup.c   | 189 ++++++++++
 UefiCpuPkg/CpuDxe/CpuDxe.c      |   3 +
 UefiCpuPkg/CpuDxe/CpuDxe.inf    |   7 +
 UefiCpuPkg/CpuDxe/CpuGdt.c      |  52 +--
 UefiCpuPkg/CpuDxe/CpuGdt.h      |  72 ++++
 UefiCpuPkg/CpuDxe/CpuMp.c       | 756 ++++++++++++++++++++++++++++++++++++++++
 UefiCpuPkg/CpuDxe/CpuMp.h       | 152 ++++++++
 UefiCpuPkg/CpuDxe/Ia32/MpAsm.S  | 114 ++++++
 UefiCpuPkg/CpuDxe/X64/MpAsm.S   | 125 +++++++
 10 files changed, 1530 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/Ia32/MpAsm.S
 create mode 100644 UefiCpuPkg/CpuDxe/X64/MpAsm.S

-- 
1.9.3


------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to