Chen,

Thanks your updating. I attached one addition updating based on you're the 
latest patches. Please evaluate and sync it into your patches.

BTW, please delete ApStartup.asm from CpuDxe, it seems to be one dummy file.

Thanks!
Jeff
-----Original Message-----
From: Chen Fan [mailto:chen.fan.f...@cn.fujitsu.com] 
Sent: Tuesday, November 04, 2014 5:59 PM
To: edk2-devel@lists.sourceforge.net
Cc: Jordan Justen; Fan, Jeff; izumi.t...@jp.fujitsu.com
Subject: [RFC PATCH V7 00/27] Introduce Mp Service protocol to UefiCpuPkg

This series patchsets 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

and made StartCorePkg app for testing Mp Service Protocol on:
  https://github.com/ChenFanFnst/edk2/tree/startcore

I had tested the Mp protocol with the test code, and all cases passed.

  v6-v7:
  1. fix some trivial bugs pointed out by Jeff.
  2. free unused cpu buffer data.

  v5-v6:
  1. using only one timer to check all APs status instead of timers for each AP.
  2. cancel timer each time avoid timer handler reentrancy.
  3. some bug fix.

  v4-v5:
  1. introduce PcdCpuMaxLogicalProcessorNumber to pre-allocate
     stack buffer before starting the APs.
  2. implement the function that if procedure routine timeout,
     reset AP by sending init ipi.
  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 (22):
  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/MpService: move settimer out to InitMpSystemData
  UefiCpuPkg/MpService: Simply Lock usage
  UefiCpuPkg/MpService: avoid next timer getting into
    CheckAllAPsStatus()
  UefiCpuPkg/CpuDxe: split out StartupCode from StartApsStackless()
  UefiCpuPkg/CpuDxe: introduce ResetApStackless()
  UefiCpuPkg/MpService: free the unused cpu data buffer
  UefiCpuPkg/MpService: avoid reset AP still hold a lock
  UefiCpuPkg/MpService: avoid dead lock caused by CheckAllAPsStatus
  UefiCpuPkg/CpuDxe: Startup APs
  UefiCpuPkg/CpuDxe: install Mp Service protocol

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        |    3 +
 UefiCpuPkg/CpuDxe/CpuDxe.h        |    1 +
 UefiCpuPkg/CpuDxe/CpuDxe.inf      |   17 +
 UefiCpuPkg/CpuDxe/CpuGdt.c        |   52 +-
 UefiCpuPkg/CpuDxe/CpuGdt.h        |   72 ++
 UefiCpuPkg/CpuDxe/CpuMp.c         | 1534 +++++++++++++++++++++++++++++++++++++
 UefiCpuPkg/CpuDxe/CpuMp.h         |  642 ++++++++++++++++
 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         |    7 +
 UefiCpuPkg/UefiCpuPkg.dsc         |    1 +
 15 files changed, 2930 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.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

Attachment: CpuDxe_v2.patch
Description: CpuDxe_v2.patch

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to