On 2014-11-05 22:11:40, Fan, Jeff wrote: > Chen, > > Thanks your updating. I attached one addition updating based on > you're the latest patches. Please evaluate and sync it into your > patches.
I think it is better to point out the changes and let Chen make the changes. (Instead of sending a patch file.) For example: * Rename BSP variable to Bsp to follow coding style * etc.. > BTW, please delete ApStartup.asm from CpuDxe, it seems to be one > dummy file. As mentioned in the comments, this file helped create the code in ApStartup.c. So, if it is deleted, it might make it more challenging to modify that code. -Jordan > -----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 > > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel