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