If you go forward on this, make sure that it is easy to turn off or disable.
For systems that implement LPAR, you want different groups of CPUs to have 
different MTRR settings.

Daryl McDaniel

"It is the mark of an educated mind to be able to entertain a thought without 
accepting it."
- Aristotle

-----Original Message-----
From: Jordan Justen [mailto:jordan.l.jus...@intel.com] 
Sent: Wednesday, November 26, 2014 11:29 AM
To: Chen, Fan; edk2-devel@lists.sourceforge.net
Cc: Fan, Jeff
Subject: [edk2] UefiCpuPkg CpuMp improvement idea - sync MTRRs

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

------------------------------------------------------------------------------
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=164703151&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