summaryrefslogtreecommitdiff
path: root/IntelFspWrapperPkg
diff options
context:
space:
mode:
authorYao, Jiewen <jiewen.yao@intel.com>2015-11-16 08:07:58 +0000
committervanjeff <vanjeff@Edk2>2015-11-16 08:07:58 +0000
commite78223628741b988c3a26baade6b684ac27492a7 (patch)
tree9d97c4c1c404ba323a40977494e1947436dbcb41 /IntelFspWrapperPkg
parent2f6dbfce6d8d261f4829cb921f4fb9923f24f9b6 (diff)
downloadedk2-platforms-e78223628741b988c3a26baade6b684ac27492a7.tar.xz
Do not deadloop if Microcode not found in FspTempRamInit.
We do not consider microcode not found as critical error, because Microcode might be applied later. (Sync patch r18678 from main trunk.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <jiewen.yao@intel.com> Reviewed-by: "Ma, Maurice" <maurice.ma@intel.com> Reviewed-by: "Rangarajan, Ravi P" <ravi.p.rangarajan@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2015@18809 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'IntelFspWrapperPkg')
-rw-r--r--IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.S10
-rw-r--r--IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.asm12
2 files changed, 21 insertions, 1 deletions
diff --git a/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.S b/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.S
index 24bc36b9c4..c0b84e075c 100644
--- a/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.S
+++ b/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.S
@@ -210,12 +210,22 @@ FspHeaderFound:
jmp *%eax
TempRamInitDone:
+ cmp $0x8000000E, %eax #Check if EFI_NOT_FOUND returned. Error code for Microcode Update not found.
+ je CallSecFspInit #If microcode not found, don't hang, but continue.
+
cmp $0x0, %eax
jnz FspApiFailed
# ECX: start of range
# EDX: end of range
+CallSecFspInit:
+ xorl %eax, %eax
movl %edx, %esp
+
+ # Align the stack at DWORD
+ addl $3, %esp
+ andl $0xFFFFFFFC, %esp
+
pushl %edx
pushl %ecx
pushl %eax # zero - no hob list yet
diff --git a/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.asm b/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.asm
index 0e0c5c5883..3c2e43a89c 100644
--- a/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.asm
+++ b/IntelFspWrapperPkg/Library/SecPeiFspPlatformSecLibSample/Ia32/SecEntry.asm
@@ -220,12 +220,22 @@ FspHeaderFound:
jmp eax
TempRamInitDone:
- cmp eax, 0
+ cmp eax, 8000000Eh ;Check if EFI_NOT_FOUND returned. Error code for Microcode Update not found.
+ je CallSecFspInit ;If microcode not found, don't hang, but continue.
+
+ cmp eax, 0 ;Check if EFI_SUCCESS retuned.
jnz FspApiFailed
; ECX: start of range
; EDX: end of range
+CallSecFspInit:
+ xor eax, eax
mov esp, edx
+
+ ; Align the stack at DWORD
+ add esp, 3
+ and esp, 0FFFFFFFCh
+
push edx
push ecx
push eax ; zero - no hob list yet