On Wed, 2014-10-15 at 18:11 +0800, Chen Fan wrote: 
> 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.
I had a test code to check the function is right or not, my test code 
is:




>   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
> 

------------------------------------------------------------------------------
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