From 3ef2071927fa8a206556e878491f772e44a3132e Mon Sep 17 00:00:00 2001 From: "Kuo, Ted" Date: Thu, 17 Mar 2022 16:38:32 +0800 Subject: [PATCH] UefiCpuPkg: Update BFV searching algorithm in VTF0 REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3870 The new algorithm searches FFS3 GUID first and then FFS2 GUID at every 4KB address in the top 16MB just below 4GB. Reviewed-by: Ray Ni Cc: Debkumar De Cc: Harry Han Cc: Catharine West Reviewed-by: Min Xu Signed-off-by: Ted Kuo --- .../Vtf0/Bin/IA32/ResetVector.ia32.port80.raw | Bin 548 -> 532 bytes .../Vtf0/Bin/IA32/ResetVector.ia32.raw | Bin 516 -> 500 bytes .../Vtf0/Bin/IA32/ResetVector.ia32.serial.raw | Bin 932 -> 900 bytes .../PageTable1G/ResetVector.x64.port80.raw | Bin 12292 -> 12292 bytes .../Bin/X64/PageTable1G/ResetVector.x64.raw | Bin 12292 -> 12292 bytes .../PageTable1G/ResetVector.x64.serial.raw | Bin 12292 -> 12292 bytes .../PageTable2M/ResetVector.x64.port80.raw | Bin 28676 -> 28676 bytes .../Bin/X64/PageTable2M/ResetVector.x64.raw | Bin 28676 -> 28676 bytes .../PageTable2M/ResetVector.x64.serial.raw | Bin 28676 -> 28676 bytes .../Vtf0/Ia32/SearchForBfvBase.asm | 21 +++++------------- 10 files changed, 6 insertions(+), 15 deletions(-) diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/IA32/ResetVector.ia32.port80.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/IA32/ResetVector.ia32.port80.raw index 23254e83bf1a17dee9f38c235fcc9948624a7536..a3601274c25dde665872ff375f1deadf1c838476 100644 GIT binary patch delta 190 zcmZ3&GKHmn0uUG;&}9%{V6bIiVEA7Y*;pY^b)Yz;RJO4~e>a??t= z8!KcwpPS4oWqPdwR8{e`r>FENP?c?$jDP7KpsJasor$HJfvQ>$>s~Hh)m)*%P`ae^ zFmr@L>D<@68#X*^*s&i7I*-2o*Lifq#%B#L8KWjnif8;k@l&;M&40Z#en#=M9m)(0 p4*W_7(q6?+ZeUbk^qjnqQF!tuMib78|1Z`5{r~@R;pF#>rU2NrRB!+Q delta 211 zcmbQjvV^660uUG;*vZVmz@W<@z`$S&Wc)9RYyQbxs@7N`P<5a2DnL~gPkVYw4**r!cFFjcZU?HGY1)}sx(=wS^|0>c z(xuH6Dh#FbI}bBQD3s24Eoykcv-u}uY2Sto!p|CZ><5C*qp$yU9^J6dOQg~Z-`xoM@` zjTJJT&rN2PGQCy-s;YR}(^GmBsLHlW#=mqAP}NM+&cxEqKvk`WbuX8$YOYXWC|%Nd zm^nhBbna`;9s7Zx^XTh;okw3fGBPk2-tN3Nabf`DyNQp=gu9|NoybVe$kLTf4OV&IYu)8Aly`5 delta 202 zcmeyu+`>{n0SF8a>||zOV9;d{U|_HXGX59EHUDHTRcoves5(#_Qu?g1LgcjVDc{n& zjTI7m^W~3nW7tMv416`-n$r#(HT2Y{+C)y36^7FJorjqt6iR2j7BoEI+5D5Sv~S0L?*04scOHHHuk+|j`-v6djBh4hC>L(~ zub0NpD4w=MnSsH9U+F;FtK7*^j4~W{6XY2t{Qv)das#6oNB2vMfB*l#+%tI}qZt4b C>RJ*2 diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/IA32/ResetVector.ia32.serial.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/IA32/ResetVector.ia32.serial.raw index e4aa4fc30a32bc3d4d8d0e1726c43fdafef4a374..48b46e3473e77a1179bf818a1f1deafb7e46cf3e 100644 GIT binary patch delta 206 zcmZ3&-oidXwqBLl@PICZ00V<90|UeVqR7SyfvN+=A*Hg76(Xl?Px+RLG*(FL&6k^2 z%H3EY)A`(FRw>hK6`-n$r#(HTM}ewryJY-J_W)JRH0?|*-3(OKdRX^z>8j=m6^7C! zorjqt6iVm5_DtLLm-)>Kg_7@SyM8clNO}k1Ph3~VXf;`t@fKssB&PMkUH|pc_!-61 zb|^D2IPfbSNPA^C`4CeKhus8uh6(@w|DSBatS4~b&ugaF-(Cv;e|i4T|Nk!!PA+0L F0svn-S`YvL delta 228 zcmZo+U&1~?w%(Q5@W4)H1_lOQ1_1^JTOi|qQC#y+=2ErB3W2Hv#UZ878Y@Ij+n(|* zz1vtJu{U3CTIrR>3YpI5CbLRUzg7XNs(9MdQ+fcX%C<|!zjQlL)lAdQ#L{&@Rjr40 zFPAQDu25kpo!@zwIYOay#_K@C1D?%48B6=pcKv0ZcvWh02cy!&V?K-?lZ6>?F&0gJ z$GBd&=D%JVKcjfs4rK-g2Y#gkX|I$gZ(xcM^O+#eFya6I{}WKaWD#aPfdzkFGrj)y TlJ)<~^?&~Vf4O;b5VH{gPc~z_ diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable1G/ResetVector.x64.port80.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable1G/ResetVector.x64.port80.raw index 51ad3ecde0e4e02e91ed299ec207e9f7460524b3..def0ec856d0d14b4ea11b0a33db1512077eae00f 100644 GIT binary patch delta 296 zcmZokXi3<>rckfTAi%(2%fP_!zbLY?LZIqEaY(6bV};0R+f%-!B8?Rid-LU{m2x*$ z$aFq8nN`a4S_P=8;%QG$=~196+b$XZ(mg;`Gfg`aOE&{mwI0^JT)L{cLWQApN#|ka z2!+zQuX#6Yc-F9EKM-^tef_WV=!T8Y8eUFfWMDA7J$br96r=g%PYP4a%Rc`9FTt=O z1t>QM=$;)67ykd}SGw`~=mxQ84Zn6XeCWHq`@~1RG=4_$v>nO}3=aHC2hv`xnY>p~ zfzw5u;Q~rcl3=nSp^pmqCDm!4}B)UliB;letu_u|lBgKygUvv&IUM)3&F4OYb&T zNbJp*n^t{?AX75Kkxp|qp$yU9^J6rckfTAi%(2%fP_!zbLY?LZIqEaY(6bV};0R+f%-!B8?Rid-LU{m2x*$ z$aFq8nN`a4S_P=8;%QG$=~196+b$XZ(mg;`Gfg`aOE&{mwI0^JT)L{cLWQApN#|ka z2!+zQuQ_+@2ZGL{um5!(ec8pxz+ia0^IqqRwC-4g$rcl3=nSp^pmqCDm!4}B)UliB;letu_u|lBgKygUvv&IUM)3&F4OYb&T zNbJp*n^tSd%lXob(@m2qS`Tp( zR?6L2A=CNXWL7EDYZaiXil;q2rAL9PY`bLqOZNa(%{1*yEZq!L)p}U>a_Oq(3KfRZ zC7p+vBNR&KzV=Mp^_Th03WbvIX}f+fZ%BFv;ZI(tP{w#@vZ~@O#y69crZBclo~q== zC_4F$l8(lW(EcZT?PRL23sKGe^FfXPv%m!#tMO|1H~bw&l)R4PTQXH zExp@VA+a}KZd&P;#tNCv=O(jCPrp_Hs;YR}(^Gl?sLHlW#=mqsP}NM+&cxDnKvk`W zbuX7LZLUyZD4pMVm^nhBbjIsI!vmhpKN(B=(suo2o_tk7YI297(&S?bK8yz@3oG7Y zd^P!<;uOYdlbe;?7=ws9pHVz*hcW|$1HaONv{yEhHI-x7z10~OeE$D` za-Xt|sK%eyOs~JaWc&Zp{LlaYFRlLqiMq}AmA`T;ynOX}0tf*8#t;_b#xP;R%gYcE Huh!SMFv=?PJc=951qOffI}`2W8I z!-f=~+#H~Lb}&r%|DRv!#_OXS#GW<$+RgBx@AmE!ANA7s8O76fC^IlP@GBiid$nfr z-b4jX7j=dUKh!#EoIXgqO?^5wP$C0AK}^xBvhE delta 272 zcmZp9z}WJDaRXaI{Z3{E1_oUQ0R{$JAme{gT=P%nQnkhkfvN+=A*Ih6D@0D)p7Jfd z+gKs7H(zdA>6OL`na<}Xvr13DRspK2c-qrbdH|@(woAspbURShOw-Q9(se*pt%r3l zmo9CtP+=&Y-+7ohLZNiVYf-}kp3OfQOZzr#c-F9E|Ni~F`#X=m{?~bQ!^UR~FZ(Aq zB*ZhCOn#6sg{R}=|NjyU8&ZJ6GbcABN(kTjsF%jiD4w=MnSsH9U+F;Ft9_GKCn~Tz zsxv$Qs-1i#(UR|V!^;PM|NnoP^AAXvOqNNKV4Sc~Z~?EvORY~6Kmh1PhOiJfh6xj1 K3PVJ|!V>^C=zwYf diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable2M/ResetVector.x64.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable2M/ResetVector.x64.raw index 3438dabefee950826a0541e9549f48311f194d43..b9f09dd46f2a8bfec0f0392235ae63ae50847388 100644 GIT binary patch delta 292 zcmZp9z}WJDaRXaIy)J_Q1A{FC1H=EK$i@nRssqI#rLv6`BByOn`Id?_R!Hp4mz!3~ z-B=;h`P^hyDbs5epsI?eJw2sIfvRk~Wc*9_09DO2?My7)3{=&6Sod=2s^$t6hSDXS zhnXW3O6R`j+_4`BI*-2o*Ln117b63M;qA_QoiEb5V+|%xPw-+ipZq9cN=Vwr|NkWz zUM>K-We3BA|Nr@wZoEGEYd6D(zT3OkeAG+hXB1D{q0GSGz^`;5?bQ^ZY5|5F4r~kz z{7Mhfc5pEC-RL{e_n_}Z--Xu!>I?^f@)IUZK9T6gSNZ?t|G)qLzbyO*Bn&spB%R=$ es34&5lIzn15CGc85EkObFk!;W&mX}e5CQ;x!HWO@ delta 293 zcmZp9z}WJDaRXaI{Z3{E1_oUQ0R{$JAme{gT=P%nQnkhkfvN+=A*Ih6D@0D)p7Jfd z+gKs7H(zdA>6OL`na<}Xvr13DRspK2c-qrbdH|@(woAspbURShOw-Q9(se*pt%r3l zmo9CtP+=&Y-+7ohLZNiVYeB;Up3OfQOZ#^02ZGL{uUY?f9(~y{xgsH)(RA{KgegH4 zAOHWCV0bwX=$IW06aN3_SGw`~2jh|6GZHF=gg9E?PfwWi4fT{%; zb~vyxFz_oqNZY}|(08NnK;MJD7kw9A`>8Wr0Lo9^k?6)({r~0rzyJTgEdB>1j5qTn eo#0h?DfMXr2mq~O2n%szm@wfbGeiU|JOKdfGK_No diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable2M/ResetVector.x64.serial.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/X64/PageTable2M/ResetVector.x64.serial.raw index 5ee3012482de343cfae8af590a49170c5b7f1d65..a76f8ad124eea6069c797b4450acbc8fba20e23e 100644 GIT binary patch delta 265 zcmZp9z}WJDaf56^{aR+j1G)?X3=Fmm3=IE^A{#3Nsty!~l*%?%h@7@P`lJPIy15`EBv@@}EGf-9QVcpB6tC}lR z7)qCP9%hbED4qM-Gi}#j<~J)8O1`J<`oX**=^cbWd0j#o+$zQoADhMdNy!Ckk2mn3D5EkObFk!;W!w?a$@B{!u C*?LU? delta 269 zcmZp9z}WJDaf56^{a$9n13Q@+7#MUJ1Q-}>fsFq}am_!OOVt`H1gZ`chm<~RtPnYE zd&;-;ZexYS-h8=frB@m&WICUl%ql(oS_P=8;%QG$=>ecB+b$XZ((OQ1Gfg`aOV +; Copyright (c) 2008 - 2022, Intel Corporation. All rights reserved.
; SPDX-License-Identifier: BSD-2-Clause-Patent ; ;------------------------------------------------------------------------------ @@ -32,7 +32,6 @@ BITS 32 Flat32SearchForBfvBase: xor eax, eax - mov ecx, 3 ; 3: FFS3 GUID, 2: FFS2 GUID, 1: Not Found searchingForBfvHeaderLoop: ; ; We check for a firmware volume at every 4KB address in the top 16MB @@ -40,21 +39,19 @@ searchingForBfvHeaderLoop: ; sub eax, 0x1000 cmp eax, 0xff000000 - jb searchingForBfvWithOtherFfsGuid - cmp ecx, 3 - jne searchingForFfs2Guid + jb searchedForBfvHeaderButNotFound ; ; Check FFS3 GUID ; cmp dword [eax + 0x10], FFS3_GUID_DWORD0 - jne searchingForBfvHeaderLoop + jne searchingForFfs2Guid cmp dword [eax + 0x14], FFS3_GUID_DWORD1 - jne searchingForBfvHeaderLoop + jne searchingForFfs2Guid cmp dword [eax + 0x18], FFS3_GUID_DWORD2 - jne searchingForBfvHeaderLoop + jne searchingForFfs2Guid cmp dword [eax + 0x1c], FFS3_GUID_DWORD3 - jne searchingForBfvHeaderLoop + jne searchingForFfs2Guid jmp checkingFvLength searchingForFfs2Guid: @@ -82,12 +79,6 @@ checkingFvLength: jmp searchedForBfvHeaderAndItWasFound -searchingForBfvWithOtherFfsGuid: - xor eax, eax - dec ecx - cmp ecx, 1 - jne searchingForBfvHeaderLoop - searchedForBfvHeaderButNotFound: ; ; Hang if the SEC entry point was not found