On Mon, 2014-09-29 at 02:01 +0000, Fan, Jeff wrote: 
> Got you. Thanks!
> 
> Suggest to set new PCDs' token ids from 0x00000002, 0x00000003.... instead of 
> 0x0000000a. 
> 
Got it.

Thanks,
Chen

> -----Original Message-----
> From: Chen Fan [mailto:[email protected]] 
> Sent: Friday, September 26, 2014 6:39 PM
> To: [email protected]
> Cc: Jordan Justen; Fan, Jeff
> Subject: [RFC PATCH v4 07/23] UefiCpuPkg/CpuDxe: introduce PCD value 
> PcdCpuApStackSize
> 
> Introduce a PCD value to specify Application Processor Stack size, by default 
> 32KB, and BSP allocates stack for APs after APs complete initlization.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Chen Fan <[email protected]>
> ---
>  UefiCpuPkg/CpuDxe/CpuDxe.inf |  3 +++
>  UefiCpuPkg/CpuDxe/CpuMp.c    | 18 ++++++++++++++++++
>  UefiCpuPkg/UefiCpuPkg.dec    |  4 ++++
>  3 files changed, 25 insertions(+)
> 
> diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.inf b/UefiCpuPkg/CpuDxe/CpuDxe.inf 
> index c2f12b7..88b107f 100644
> --- a/UefiCpuPkg/CpuDxe/CpuDxe.inf
> +++ b/UefiCpuPkg/CpuDxe/CpuDxe.inf
> @@ -75,6 +75,9 @@
>    gIdleLoopEventGuid                            ## CONSUMES           ## 
> Event
>    gEfiVectorHandoffTableGuid                    ## SOMETIMES_CONSUMES ## 
> SystemTable
>  
> +[Pcd]
> +  gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize
> +
>  [Depex]
>    TRUE
>  
> diff --git a/UefiCpuPkg/CpuDxe/CpuMp.c b/UefiCpuPkg/CpuDxe/CpuMp.c index 
> 2d52b22..11129e6 100644
> --- a/UefiCpuPkg/CpuDxe/CpuMp.c
> +++ b/UefiCpuPkg/CpuDxe/CpuMp.c
> @@ -15,10 +15,14 @@
>  #include "CpuDxe.h"
>  #include "CpuMp.h"
>  
> +UINTN gApStackSize;
> +
>  VOID *mCommonStack = 0;
>  VOID *mTopOfApCommonStack = 0;
> +VOID *mApStackStart = 0;
>  
>  volatile UINTN   mNumberOfProcessors;
> +volatile BOOLEAN mAllApsInitFinished = FALSE;
>  
>  /**
>    Application Processor C code entry point.
> @@ -37,6 +41,13 @@ ApEntryPointInC (
>  
>    AsmApDoneWithCommonStack ();
>  
> +  //
> +  // Waiting for all APs complete initialization  //  while 
> + (!mAllApsInitFinished) {
> +    CpuPause ();
> +  }
> +
>    CpuSleep ();
>  }
>  
> @@ -57,5 +68,12 @@ InitializeMpSupport (
>    }
>  
>    DEBUG ((DEBUG_INFO, "Detect CPU count: %d\n", mNumberOfProcessors));
> +
> +  gApStackSize = (UINTN) PcdGet32 (PcdCpuApStackSize);
> +
> +  mApStackStart = AllocatePages (EFI_SIZE_TO_PAGES 
> + ((mNumberOfProcessors - 1) * gApStackSize));  ASSERT (mApStackStart != 
> + 0x0);
> +
> +  mAllApsInitFinished = TRUE;
>  }
>  
> diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index 
> c6e73a9..5b35a23 100644
> --- a/UefiCpuPkg/UefiCpuPkg.dec
> +++ b/UefiCpuPkg/UefiCpuPkg.dec
> @@ -54,6 +54,10 @@
>    ## Specifies delay value in microseconds after sending out an INIT IPI.
>    # @Prompt Configure delay value after send an INIT IPI
>    
> gUefiCpuPkgTokenSpaceGuid.PcdCpuInitIpiDelayInMicroSeconds|10000|UINT32|0x30000002
> +  ## This value specifies the Application Processor (AP) stack size, which 
> used for Mp Service.
> +  # @Prompt Configure stack size for Application Processor (AP)  
> + gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize|0x8000|UINT32|0x0000000a
> +
>  
>  [UserExtensions.TianoCore."ExtraFiles"]
>    UefiCpuPkgExtra.uni
> --
> 1.9.3
> 

------------------------------------------------------------------------------
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to