On 2014-11-13 17:34:59, Chen, Fan wrote:
> On Thu, 2014-11-13 at 10:42 -0800, Jordan Justen wrote: 
> > On 2014-11-06 17:23:01, Fan, Jeff wrote:
> > > Chen,
> > > 
> > > Thanks your contribution. I will check-in your patch if there is no
> > > further comments from other guys.
> > > 
> > > Reviewed-by: Jeff Fan <jeff....@intel.com>
> > 
> > Chen,
> > 
> > I committed your series (r16345-r16371) for Jeff (to preserve the
> > separate patches).
> > 
> > Thanks for all your work on this!
> > 
> > Let me know if you are interested in working on some follow up MP
> > tasks. (I have 2 ideas. :)
> Of course, I hope to help improve the MP.

Another idea I had (besides the AP sleep task) is to synchronize the
APs MTRRs with the BSP.

I think this should be fairly simple. Probably in a 'Ready to Boot' or
'Exit Boot Services' callback, the BSP could read the MTRRs, and then
send the APs off on a task to set their MTRRs using the buffer where
then BSP read its MTRRs.

I think MtrrLib should make this fairly easy.

If you boot Linux SMP today the dmesg output will note the issue:
[    0.051370] mtrr: your CPUs had inconsistent fixed MTRR settings
[    0.051371] mtrr: your CPUs had inconsistent variable MTRR settings
[    0.051371] mtrr: your CPUs had inconsistent MTRRdefType settings
[    0.051372] mtrr: probably your BIOS does not setup all CPUs.
[    0.051373] mtrr: corrected configuration.

-Jordan

> > > -----Original Message-----
> > > From: Chen, Fan [mailto:chen.fan.f...@cn.fujitsu.com] 
> > > Sent: Thursday, November 06, 2014 5:13 PM
> > > To: Fan, Jeff
> > > Cc: Izumi, Taku; edk2-devel@lists.sourceforge.net; Jordan Justen
> > > Subject: Re: [RFC PATCH V7 00/27] Introduce Mp Service protocol to 
> > > UefiCpuPkg
> > > 
> > > On Thu, 2014-11-06 at 06:11 +0000, 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.
> > > > 
> > > > BTW, please delete ApStartup.asm from CpuDxe, it seems to be one dummy 
> > > > file.
> > > Thanks for you review.
> > > I had merged the changes to my patches as you attachment said. see at:
> > >   https://github.com/ChenFanFnst/edk2/tree/cpu-mp-service
> > > 
> > > and as for file ApStartup.asm, I moved the asm code to ApStartup.c as 
> > > comments for guiding to create startup code, then deleted ApStartup.asm.
> > > 
> > > 
> > > Thanks,
> > > Chen
> > > 
> > > 
> > > > 
> > > > 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
> > > > 
> > > 
> > > ------------------------------------------------------------------------------
> > > _______________________________________________
> > > edk2-devel mailing list
> > > edk2-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to