Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <[email protected]>
---
UefiCpuPkg/CpuDxe/CpuMp.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/UefiCpuPkg/CpuDxe/CpuMp.c b/UefiCpuPkg/CpuDxe/CpuMp.c
index 453dc47..e328de7 100644
--- a/UefiCpuPkg/CpuDxe/CpuMp.c
+++ b/UefiCpuPkg/CpuDxe/CpuMp.c
@@ -155,6 +155,11 @@ SetApProcedure (
CpuData->Parameter = ProcedureArgument;
CpuData->Procedure = Procedure;
ReleaseMpSpinLock (CpuData);
+
+ //
+ // Wake up a hlt AP processor.
+ //
+ SendNmiIpi(CpuData->Info.ProcessorId);
}
/**
@@ -1197,6 +1202,11 @@ ProcessorToIdleState (
CpuData->Procedure = NULL;
CpuData->State = CpuStateFinished;
ReleaseMpSpinLock (CpuData);
+ } else {
+ //
+ // Waiting for a NMI interrupt to wake up.
+ //
+ CpuSleep ();
}
CpuPause ();
--
1.9.3
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel