13181dde42
UefiCpuPkg/CpuDxe: NumberOfData is not BOOLEAN type
...
Should check NumberOfData value instead of treat its value as one BOOLEAN type.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Shuming Qiu <shuming.qiu@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17672 6f19259b-4bc3-4df7-8a09-765794883524
2015-06-19 08:27:35 +00:00
db61e16308
UefiCpuPkg/CpuDxe: Get CPU BIST information from Guided HOB
...
Get CPU BIST information from gEfiSecPlatformInformation2PpiGuid or
gEfiSecPlatformInformationPpiGuid Guided HOB and update the CPU healthy status
for CPU MP Service.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Feng Tian <feng.tian@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17641 6f19259b-4bc3-4df7-8a09-765794883524
2015-06-16 02:55:54 +00:00
33f413f0d6
UefiCpuPkg/MpSerivce: add volatile qualifiers
...
For avoid the compiler optimizing the code, we let Parameter and Procedure in CpuData volatile.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17024 6f19259b-4bc3-4df7-8a09-765794883524
2015-03-09 06:45:26 +00:00
68f0674237
UefiCpuPkg/MpService: Put APs to sleep when not busy.
...
Add a new sleeping state for APs, when no procedure execution, put AP to sleep. when need to execute
procedure, only need to wake up this AP by sent SIPI.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17023 6f19259b-4bc3-4df7-8a09-765794883524
2015-03-09 06:43:11 +00:00
e033a1a83e
UefiCpuPkg/MpService: put AP to busy state when execution
...
CpuState should follow the process?
Idle -> Ready -> Busy -> Finished
^ |
| |
+ - - - - - - - - - - - - +
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17022 6f19259b-4bc3-4df7-8a09-765794883524
2015-03-09 06:38:16 +00:00
b302a9784c
UefiCpuPkg/MpService: fix trivial typo in cpu state
...
CpuStateBuzy => CpuStateBusy
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17021 6f19259b-4bc3-4df7-8a09-765794883524
2015-03-09 06:37:32 +00:00
7475d13829
Add typecast to fix VS2005 build issue.
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com >
Signed-off-by: Liming Gao <liming.gao@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16419 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-24 04:57:40 +00:00
3a5d9a3682
UefiCpuPkg : Fix CpuDxe build issue with VS2005 tool chain
...
!!() cannot pass VS2005 build.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com >
Reviewed-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16404 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-19 05:15:06 +00:00
9840b1299d
UefiCpuPkg/CpuDxe: Put APs in wait for SIPI state at ExitBootServices
...
when gBS->ExitBootServices() is called, the APs should avoid to access
the unsafed buff datas which were allocated by boot services.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Tested-by: Gabriel Somlo <somlo@cmu.edu >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
Tested-by: Laszlo Ersek <lersek@redhat.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16397 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-17 14:54:09 +00:00
4a50c27285
UefiCpuPkg/CpuDxe: install Mp Service protocol
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16371 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:30:18 +00:00
dee9376ffc
UefiCpuPkg/CpuDxe: Startup APs
...
This sequence should happen:
* CpuMp.c: Allocate a stack for the APs
* ApStartup.c: Send Start IPI to wake APs in 16-bit real mode
* MpAsm.S: AP enters CpuDxe driver code without stack
- AP grabs a lock
- AP sets up stack
- AP calls CpuMp.c:ApEntryPointInC
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16370 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:30:09 +00:00
cd8c700b03
UefiCpuPkg/MpService: avoid dead lock caused by CheckAllAPsStatus
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16369 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:29:54 +00:00
0e724fc198
UefiCpuPkg/MpService: avoid reset AP still hold a lock
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16368 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:29:40 +00:00
232eb4c826
UefiCpuPkg/MpService: free the unused cpu data buffer
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16367 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:29:31 +00:00
ac9dbb3b03
UefiCpuPkg/CpuDxe: introduce ResetApStackless()
...
If timeout expires before AP returns from Procedure, the AP should
be terminated, we introduce ResetApStackLess() to send init IPI
to let AP exit Procedurce and re-available.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16366 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:29:13 +00:00
fe078dd57f
UefiCpuPkg/CpuDxe: split out StartupCode from StartApsStackless()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16365 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:29:01 +00:00
e4aaf76428
UefiCpuPkg/MpService: avoid next timer getting into CheckAllAPsStatus()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16364 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:28:48 +00:00
d16cf36d2a
UefiCpuPkg/MpService: Simply Lock usage
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16363 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:28:33 +00:00
acb2172d15
UefiCpuPkg/MpService: move settimer out to InitMpSystemData
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16362 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:28:20 +00:00
9908a829d0
UefiCpuPkg/CpuDxe: Ap do loop routine to execute procedure
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16361 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:28:10 +00:00
b7c05ba517
UefiCpuPkg/CpuDxe: implement Mp Services:SwitchBSP()
...
by now, SwitchBSP() always return UNSUPPORTED
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16360 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:27:52 +00:00
5fee172fb7
UefiCpuPkg/CpuDxe: implement Mp Services:StartupAllAPs()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16359 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:27:34 +00:00
3f4f0af872
UefiCpuPkg/CpuDxe: implement Mp Protocol:StartupThisAP()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16358 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:27:21 +00:00
fa7ce675b9
UefiCpuPkg/CpuDxe: implement Mp Protocol:EnableDisableAP()
...
Due to the implementation of AcquireSpinLock() is not MP safe,
so we should use AcquireSpinLockOrFail directly instead.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16357 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:27:09 +00:00
e7938b5a86
UefiCpuPkg/CpuDxe: implement Mp Services:GetProcessorInfo()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16356 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:53 +00:00
d894d8b704
UefiCpuPkg/CpuDxe: implement Mp Protocol:GetNumberOfProcessors()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16355 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:42 +00:00
cfa2fac1f6
UefiCpuPkg/CpuDxe: implement Mp Protocol: WhoAmI()
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16354 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:32 +00:00
03673ae11e
UefiCpuPkg/CpuDxe: introduce MP_SYSTEM_DATA for Mp Service Protocol
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16353 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:23 +00:00
003973d98c
UefiCpuPkg/CpuDxe: introduce EFI_MP_SERVICES_PROTOCOL
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16352 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:13 +00:00
e343f8f7b3
UefiCpuPkg/CpuDxe: Switch Ap Stack to NewStack
...
All APs use the same common stack to initialization. after
initialization, APs should switch to the stack of its own.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16351 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:26:03 +00:00
6a26a597a3
UefiCpuPkg/CpuDxe: introduce two PCD value
...
introduce PCD value: PcdCpuMaxLogicalProcessorNumber and PcdCpuApStackSize,
used for initialize APs stacks.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16350 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:25:48 +00:00
fab82c1873
UefiCpuPkg/CpuDxe: Add stackless assembly AP entry points
...
The AP startup code simply jumps into this code with the CpuDxe driver
without setting up a stack for the processor.
Therefore, this code must setup the stack before calling into C code.
This is the basic flow:
* AP enters CpuDxe driver code (AsmApEntryPoint) without stack
- AP grabs a lock
- AP sets up stack
- AP calls CpuMp.c:ApEntryPointInC
- If ApEntryPointInC returns, the lock is freed, and another AP may
run
- The AP C code may call AsmApDoneWithCommonStack to indicate that
the AP is no longer using the stack, and another may therefore
proceed to use the stack and then call ApEntryPointInC
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16347 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:24:59 +00:00
1535c888c6
UefiCpuPkg/CpuDxe: Add ApEntryPointInC
...
This is the function the AP assembly code will expect to call after
getting a lock and setting up the stack.
Only one AP will enter this routine at a time.
If ApEntryPointInC exits, then the assembly code will loop around to
grab the lock, setup the stack, and call ApEntryPointInC again.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16346 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:24:43 +00:00
6022e28cf7
UefiCpuPkg/CpuDxe: Add no-op InitializeMpSupport
...
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com >
Reviewed-by: Jeff Fan <jeff.fan@intel.com >
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16345 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-13 18:24:25 +00:00