Revision: 18013
          http://sourceforge.net/p/edk2/code/18013
Author:   vanjeff
Date:     2015-07-15 03:45:45 +0000 (Wed, 15 Jul 2015)
Log Message:
-----------
UefiCpuPkg/CpuMpPei: Add AsmHltLoop ()

Add AsmHltLoop () in assembly code, it will not be copied into AP wakeup
buffer and invoked at end of ApCFunction (). To make sure AP work in case
AP wakeup buffer is restored to original data.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <[email protected]>
Reviewed-by: Feng Tian <[email protected]>
Reviewed-by: Jiewen Yao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.c
    trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h
    trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
    trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
    trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
    trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.c
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.c   2015-07-15 03:45:11 UTC (rev 
18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.c   2015-07-15 03:45:45 UTC (rev 
18013)
@@ -169,6 +169,7 @@
   //
   InterlockedIncrement ((UINT32 *)&PeiCpuMpData->FinishedCount);
 
+  AsmCliHltLoop ();
 }
 
 /**

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h   2015-07-15 03:45:11 UTC (rev 
18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h   2015-07-15 03:45:45 UTC (rev 
18013)
@@ -166,7 +166,16 @@
   IN IA32_DESCRIPTOR  *Gdtr
   );
 
+/**
+  Assembly code to do CLI-HALT loop.
 
+**/
+VOID
+EFIAPI
+AsmCliHltLoop (
+  VOID
+  );
+
 /**
   This function will be called by BSP to wakeup AP.
 

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm     2015-07-15 03:45:11 UTC 
(rev 18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm     2015-07-15 03:45:45 UTC 
(rev 18013)
@@ -144,6 +144,12 @@
 RendezvousFunnelProc   ENDP
 RendezvousFunnelProcEnd::
 
+AsmCliHltLoop PROC near C PUBLIC
+    cli
+    hlt
+    jmp        $-2
+AsmCliHltLoop ENDP
+
 
;-------------------------------------------------------------------------------------
 ;  AsmGetAddressMap (&AddressMap);
 
;-------------------------------------------------------------------------------------

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm    2015-07-15 03:45:11 UTC 
(rev 18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm    2015-07-15 03:45:45 UTC 
(rev 18013)
@@ -132,6 +132,12 @@
     jmp        $                 ; never reach here
 RendezvousFunnelProcEnd:
 
+global ASM_PFX(AsmCliHltLoop)
+ASM_PFX(AsmCliHltLoop):
+    cli
+    hlt
+    jmp        $-2
+
 
;-------------------------------------------------------------------------------------
 ;  AsmGetAddressMap (&AddressMap);
 
;-------------------------------------------------------------------------------------

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm      2015-07-15 03:45:11 UTC 
(rev 18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm      2015-07-15 03:45:45 UTC 
(rev 18013)
@@ -181,6 +181,12 @@
 RendezvousFunnelProc   ENDP
 RendezvousFunnelProcEnd::
 
+AsmCliHltLoop PROC
+    cli
+    hlt
+    jmp $-2
+AsmCliHltLoop ENDP
+
 
;-------------------------------------------------------------------------------------
 ;  AsmGetAddressMap (&AddressMap);
 
;-------------------------------------------------------------------------------------

Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm     2015-07-15 03:45:11 UTC 
(rev 18012)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm     2015-07-15 03:45:45 UTC 
(rev 18013)
@@ -175,6 +175,12 @@
 
 RendezvousFunnelProcEnd:
 
+global ASM_PFX(AsmCliHltLoop)
+ASM_PFX(AsmCliHltLoop):
+    cli
+    hlt
+    jmp $-2
+
 
;-------------------------------------------------------------------------------------
 ;  AsmGetAddressMap (&AddressMap);
 
;-------------------------------------------------------------------------------------


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to