EmulatorPkg/MpService: Check Processor State when Set Procedure

Due to the state of processor could be set blocked by SingleThread
parameter, so we ought to add a READY state check, only let
the processor in READY state to invoke procedure.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16185 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Chen Fan 2014-09-28 06:22:03 +00:00 committed by jljusten
parent 1a160a74a5
commit 5152f6426c
1 changed files with 7 additions and 1 deletions

View File

@ -465,7 +465,13 @@ CpuMpServicesStartupAllAps (
continue;
}
SetApProcedure (ProcessorData, Procedure, ProcedureArgument);
gThread->MutexLock (ProcessorData->StateLock);
ProcessorState = ProcessorData->State;
gThread->MutexUnlock (ProcessorData->StateLock);
if (ProcessorState == CPU_STATE_READY) {
SetApProcedure (ProcessorData, Procedure, ProcedureArgument);
}
}
//