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
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.
TODO:
1) StartupThisAP/StartAllAps: when Timeout expires before AP returns
from Procedure, constrainedly terminate the executed Procedure.
Any Comment is welcome.
Chen Fan (13):
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()
UefiCpuPkg/CpuDxe: introduce CPU bus lock for sync data
UefiCpuPkg/CpuDxe: implement Mp Services: StartupAllAPs()
UefiCpuPkg/CpuDxe: implement Mp Services: SwitchBSP()
UefiCpuPkg/CpuDxe: add Mp Service TestCase
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 | 209 ++++++
UefiCpuPkg/CpuDxe/CpuDxe.c | 5 +
UefiCpuPkg/CpuDxe/CpuDxe.inf | 8 +
UefiCpuPkg/CpuDxe/CpuGdt.c | 52 +-
UefiCpuPkg/CpuDxe/CpuGdt.h | 72 ++
UefiCpuPkg/CpuDxe/CpuMp.c | 1349 +++++++++++++++++++++++++++++++++++++
UefiCpuPkg/CpuDxe/CpuMp.h | 643 ++++++++++++++++++
UefiCpuPkg/CpuDxe/CpuMpTest.c | 76 +++
UefiCpuPkg/CpuDxe/Ia32/MpAsm.S | 109 +++
UefiCpuPkg/CpuDxe/Ia32/MpAsm.nasm | 144 ++++
UefiCpuPkg/CpuDxe/X64/MpAsm.S | 111 +++
UefiCpuPkg/CpuDxe/X64/MpAsm.nasm | 142 ++++
13 files changed, 2980 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.S
create mode 100644 UefiCpuPkg/CpuDxe/Ia32/MpAsm.nasm
create mode 100644 UefiCpuPkg/CpuDxe/X64/MpAsm.S
create mode 100644 UefiCpuPkg/CpuDxe/X64/MpAsm.nasm
--
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