On Thu, 2014-10-23 at 08:32 +0000, Fan, Jeff wrote: 
> I may try it on my local machine. But I have no time this week.
> 
> Could you take a try by moving SetTimer () out of StartupAllAPs() and 
> StartupThisAp() functions into InitMpSystemData() and don't disable timer 
> more?   To check if it is helpful.
> 
Ok, I will try.

Thanks,
Chen


> Jeff
> 
> -----Original Message-----
> From: Chen, Fan [mailto:[email protected]] 
> Sent: Thursday, October 23, 2014 3:43 PM
> To: Fan, Jeff
> Cc: [email protected]; Jordan Justen
> Subject: Re: [edk2] [RFC PATCH v5 00/22] Introduce Mp Service protocol to 
> UefiCpuPkg
> 
> On Thu, 2014-10-23 at 07:28 +0000, Fan, Jeff wrote: 
> > Chen,
> > 
> > Does CheckThisAPStatus() work now?
> 
> Yes, CheckThisAPStatus() seems to work ok. 
> but I found gBS->SetTimer() seems not accurate. when I ran StartCore.efi, I 
> found sometimes I needed a long time to wait for that case finished. I will 
> investigate that.
> 
> And I had done a test cases list today. please see attached.
> Unfortunately, StartupAllAPs works weak.
> 
> 
> Thanks,
> Chen
> 
> 
> > 
> > 
> > -----Original Message-----
> > From: Chen, Fan [mailto:[email protected]]
> > Sent: Wednesday, October 22, 2014 6:45 PM
> > To: [email protected]
> > Cc: Fan, Jeff; Jordan Justen
> > Subject: Re: [edk2] [RFC PATCH v5 00/22] Introduce Mp Service protocol 
> > to UefiCpuPkg
> > 
> > On Thu, 2014-10-16 at 01:48 +0000, Chen, Fan wrote: 
> > > On Thu, 2014-10-16 at 01:32 +0000, Chen, Fan wrote: 
> > > > 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:
> > > 
> > > please ignore the previous mail that I sent by mistake. sorry for 
> > > noise. ;)
> > > 
> > > I had made a test code to check the function is right or not, my 
> > > test code was:
> > > 
> > > Status = MpService->StartupThisAP (MpService, ClientTask1, 1, 
> > > WaitEvent, 1000, NULL, NULL); if (EFI_ERROR(Status)) {
> > >      DEBUG ((DEBUG_ERROR, "FAILED.\n")); } do {
> > >   Status = gBS->CheckEvent(WaitEvent); } while (EFI_ERROR(Status));
> > > 
> > > I found this code did not work, it would always do loop in 
> > > CheckEvent, but in StartupThisAP(), I added a timer 
> > > CheckThisAPStatus() to check the AP status. I expected that when 
> > > timeout AP should be reset, but I found the timer seems not to work. what 
> > > reason should be?
> > > 
> > I had added test codes for Mp Service Protocol to support verifying 
> > StartupThisAP/StartupAllAPs with different parameters by modifying the 
> > StartCorePkg. I had added them at: 
> > https://github.com/ChenFanFnst/edk2/tree/startcore
> > 
> > Please help to review whether is ok.
> > 
> > Thanks,
> > Chen
> > 
> > 
> > > Thanks,
> > > Chen
> > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > >   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
> > > 
> > > --------------------------------------------------------------------
> > > --
> > > -------- 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
> > 
> 

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to