diff --git a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-sbsa-ref.inc b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-sbsa-ref.inc index 450f6af2..f251aa46 100644 --- a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-sbsa-ref.inc +++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-sbsa-ref.inc @@ -1,5 +1,11 @@ COMPATIBLE_MACHINE:sbsa-ref = "sbsa-ref" +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI:append = " file://0001-BootLogoLib-align-logo-coords-to-be-even.patch" +# Need to use git as the BootLogo fix includes a binary patch, which quilt cannot handle +PATCHTOOL = "git" + DEPENDS:append:sbsa-ref = " trusted-firmware-a coreutils-native" EDK2_PLATFORM:sbsa-ref = "SbsaQemu" @@ -17,3 +23,4 @@ do_install:append:sbsa-ref() { # QEMU requires that the images be minimum of 256M in size truncate -s 256M ${D}/firmware/SBSA_FLASH*.fd } + diff --git a/meta-arm-bsp/recipes-bsp/uefi/files/0001-BootLogoLib-align-logo-coords-to-be-even.patch b/meta-arm-bsp/recipes-bsp/uefi/files/0001-BootLogoLib-align-logo-coords-to-be-even.patch new file mode 100644 index 00000000..bb8abdd6 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/uefi/files/0001-BootLogoLib-align-logo-coords-to-be-even.patch @@ -0,0 +1,302 @@ +From 84195804a1631c88c1356438d22f4a51681d8c55 Mon Sep 17 00:00:00 2001 +From: Marcin Juszkiewicz +Date: Mon, 17 Jun 2024 10:30:07 +0200 +Subject: [PATCH] BootLogoLib: align logo coords to be even + +If we draw logo at odd coords then BootLogoLib goes into exception and +boot process ends: + +Synchronous Exception at 0x00000101FB943E48 +PC 0x0101FB943E48 (0x0101FB93F000+0x00004E48) [ 0] QemuVideoDxe.dll +PC 0x0101FB943314 (0x0101FB93F000+0x00004314) [ 0] QemuVideoDxe.dll +PC 0x0101FB92F798 (0x0101FB92D000+0x00002798) [ 1] ConSplitterDxe.dll +PC 0x0101FBA96BC4 (0x0101FBA8E000+0x00008BC4) [ 2] BdsDxe.dll +PC 0x0101FF7FDF50 (0x0101FF7F3000+0x0000AF50) [ 3] DxeCore.dll + +This change resizes logo from 193x58 to 194x58px to make it's sizes +even. And if coords are odd then they are bumped a bit to make things +work. + +Signed-off-by: Marcin Juszkiewicz + +This is a temporary workaround for an alignment problem in EDK2/qemu, see the +discussion at https://mail.gnu.org/archive/html/qemu-devel/2024-06/msg02964.html. + +Upstream-Status: Inappropriate [workaround] +Signed-off-by: Ross Burton +--- + .../Library/BootLogoLib/BootLogoLib.c | 4 ++++ + MdeModulePkg/Logo/Logo.bmp | Bin 12446 -> 34010 bytes + 2 files changed, 4 insertions(+) + +diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c +index 478ec2d40e..3b7b5f3146 100644 +--- a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c ++++ b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c +@@ -205,6 +205,10 @@ BootLogoEnableLogo ( + DestX += OffsetX; + DestY += OffsetY; + ++ // align logo to even coords ++ if (DestX % 2 != 0) DestX++; ++ if (DestY % 2 != 0) DestY++; ++ + if ((DestX >= 0) && (DestY >= 0)) { + if (GraphicsOutput != NULL) { + Status = GraphicsOutput->Blt ( +diff --git a/MdeModulePkg/Logo/Logo.bmp b/MdeModulePkg/Logo/Logo.bmp +index 3e85229e17595ba1f9c59e13692a4f8362ebc850..136345a56ac44e3ea8d3c91114b5a2676dc90e2a 100644 +GIT binary patch +literal 34010 +zcmeI52UHcu9>%fvuF?36C5h3PVqP?f#;6GPh6M#h1$)5)h=rnJ!G^tH7klr$_uhL~ +z#E!k8qQ-f@*|~RF?ghjbPsDTBGpuvxPTQGpzJHn7t6hx?{cN;rFn53ccJTKne@Sd| +zaksIlW%^$Gpx=azjS4bF*j1|2dH9Zq!nN1s&5<|oUXo(Pie+ons?~S=rJOKfLYmTP +z&n7F}X!x&saU#i$A7mwoSKPy_|Q=3fu|Z>QwAp!%qL`=Tzyq}jLbT-7j9^Jcp{^-Gt^JlJ`6|!!2$d*NO*3X$vL$R^DExlRG5kF1V&SqVKUUw(IAWN)*R5)wDV2TZ +zWVY#(l}(pSizFwa$7>bHcJJo(Y5jY4s8FI~rBWW1|5CxTs;y_Was-bmrHOM7zkY51 +zhBea%^qM}P=ZrxCQ~LUWO^y^1{(WOw-5ec@&N!Afxh`lb6qugkaA- +zt0_XfTt*x2RdS`ed*j-ypuV2f%6e5R+qs5qY=Lb1)~^Z)>@h9S9|T#4xx)uc?%h57 +zS{P6|xo_vOom)&{$L6T`&MilGY(Bbu(-RFxH$yK2rO>mdE}l3Fj_%*NHET$}(Oudf +z-@P3&0$gO%m?(lfxQlrD6hJ+H@<@jjiC~Q(WbhDzh+1&R9m0aDG|9_{S8pOCNk>q^ +zTr4lr|CaIBO7bGDiI73viKwZNNv~h4IQhv&f+|Z+Ra|`}oj@WAf~@IvB>B1M7(Jm) +zvJsTfravT-U)4+^rC?P$M#PjyrpSJhN7bX!Ng=0}?Qb5677420!@GCJcI&u#;T$R_ +zQFRr1QgzDA@)6$1%&%B>@8sjWeM6$kKv(Iu>XN!g;pl}=y(+fplPd(-Wwenv%9=!v +z5U-q5;%Hi656`M)y{g9pNBuP%4V0{841j3n;NBtq{HP5fb#ku(M>?R)5gkW>X#Jd! +z{w*7It5a#1M=Rhne^ijW{qJ4tRG2xq4`OuR`qkt7ye9YdIe+xfx;fJhZdnh_ZJamb +z+J$qBRQR>4tEWvky?-~O!lOTb@_6&Y*#|eTL)4D!+-_8t_IuZ@+_QH1yb%LeP93*@ +z!|Ll7&##?1C8&L~txM)zJ$GvRvIUn;96ftz|IU?5&K)_hd-bvl#}1JV0;M+U1peEW +z%mMxznUi +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 +zL~5Wg0z|&tkG@jDlF| +zsx68b+fq5DMi%k>LHHf^2?)2tLQ(o~3Fz9qMTN$XO#ACM;@L}a=dlRA8x^kI7Z09` +zSFgp}XeN=dsEkuQ@{M@%Lfm*@Dtq;w2!AXqeEn8ETvQPa*qZ#)KN1-S8#)KoY +zr_mZmI7jdYyA;juQnUchI=miH<6wy4QRq0oEvvITX=?cWRx8g +zHU?;@QPHniBA`Rh0H#m|_pDukThFa{p&DOhtC%fAg>30-=FQG|h*?7d@eszg6chx) +z?u&7oM5O_ukf%uBSY&9Tg~lRFQ&HSk_|6lXPRXewv-QPPUkVqa*Nch+MD8{sgH}AV +zoA}OCIF1lAc8c4Nqs{q?*JA!Y@pVV>b64?$m$;z00IaK}tw+zr^c|x41X0{ieB~}O +zYQ3W7-~ENl7_srB#H00P#*xNH9-h@=B_ocAbgLuzh@EWYngt(40ZQ8i(fBA-J6L2s +z5MqXpPE1F4Y_i~^&@(68ivLtLoy}jVYyz6pzkT(Jb$?0Wc$`y_uS=!0DU;R)Z#2#k +z5}9FkK^*euESE8veWs-4GUAv|WtT~Yav4%o%bk(!P~d5wC1uIvHa_)gTseK5QYh=w +z2K20yBi*0LZ5sSoVCTxk7A>AVw9lhTIr{Tw3Y*bgJ&m})T4d9ua?W&YCY4Fcp{?ZQ +zGNiQ4kg{BcWc0x*4 +zXO~h3jzt7oL6jJ~gL|k&$)aq`XgI1D2acF?KxCgKDSIIbM+Y{oY5IH7vgvK`n%2sn +z)xUwm^Z@~Ew~guA0R-7+PQmn+&yp1XDmZ0R1S+9vd_J>+`c%o4u|!gvhChA7POPy% +z#KBRg%C>){mN**W)lug@gcsWw6|;jH8{70r>wcS?EtzqCojK0Yy3BtoWKC(CJ_%pd +zFPsmgThz&1dC!(eN!>`Kca`(QwExgWG7F((Pm!~g1c*&NIql?uu#Owfn=#wl&WM5@ +z5)tG{(@1>ZSu`3ey37`h$BG}kC8kIRj8vuL<>^Z?Y_%+s!A;`mz-5b0$&W~`_8}s* +z)-<@LS5*eeuC|;g%JmiL8p-}pb0$~eKi`s-j5zAy?NzN@Y)8{{KGO6fGap&);wxeT +zN1Ulq%CrT1^pDnjbnD6`uwa|vJviblkMj@Tlupe)VA2&+$0;05AK1HE?yP0fa7-Z? +zJBp|(5CQI9)(75BHmzzG$Yl%4GTBthkrMBfLWG8+zEyK&ESb#4xk!F%K4K5R-M$oU +zfum7fJay;fs*nlQa%TpTz}DTq#NM?l(6i_X0f@1q>sT;1NGF54-Cyk7=(G0pg&4X@ +zq-!GQnJG=%SX3P($>r7~@!*-1Dd*XS2eiH)NSxm$|?%f<6oazb<^2tfqnkT`#@$lpQEDmins5WUSJch3cpx4le6 +zenD0DpIO>yr*DX2zFNV0qF_gHI8-+NUOob+AX+g_)@EYj7V*k-2Gi7cY6w~-$p}?0 +zdvnokPP7csaTK>)Q~D8$7X4_>@ct4_(LtoaN^ZvDfxdP1O5AeITF<_D`C^Mdi?W8% +zeFB=qD%WDNZT4w +zI0AYSM?ZhNdyS=B!&HEe=nsT7qO(b^ahkD3sbUB_sFQX=aAHclF4v0ZQh1OanNeW#hI*k4?KAn`S7oh(ks*G??hA46&KP*905 +zCVb>NnFkaMUlS`If#M6dL=kV11cBHLJ!k>s)yTp#O;_OXnQG$2< +z`Vbr`drk3?wDLzpBO?hSb?$LsFU3bVk8~+!9kIp{Td)5&A8{_NSK~T%nNpOKyMd@e +zshx`C^Qc;yM7G9P&zQ_%@%n}HLs*EmMZv?3I5P23Y&fzr%QbJ4p1ouFLZ>46K~}}= +zY2ck0HR;eZCw=SJER{-%Hoy8c@GCInJI;xsU4>0u8H#q1wolyGsp}Fx;3$oY__do9 +zC9p=P>5?_lxr#y_vO??Y&EI1EaVZetvMg>QKqE4RquBH#+yGloi|j3B5%R!yoo9)* +zQ>4zN?rkQE){_NyubJ{IwEsm1qB#$u+T^#xm+iGl$pdX=bnE1%3UK_Yc=|^l! +z$DwD(grno}!4bz=t@R^@6Ez(Js#gA-b{SLIrcY5eU2<$FBA8JXv!$t=Gj)aRQqWlQ +zQPnS{ekA!QMm@Wdt))~oGzVwlczAH< +z7I~H)5;84X8{ +z0((7Rk<6m=5lFGtj}WYTFGw3ricz3cU$PPbb)TT(#+0;;M6IEcq4Z0~QRFMmCvm!m +zBXb;SiZO6#41jPRe*VZo?6R`^8e2fFq3Oo9^{RGa@pdbtN$*QM`6xCVq4GpLdBRcr +zxx)rRR52ZYfj(i+p%05bG<`Cpl5fi +zSPJzWph^8mJ4|NeBMvdf!AEH4V2~4ukHYUj6TurrN)%Z~sa|`|z*;o46jKy&19s4K +zDXSDH90u@_WHd*~N88TEPz-WeeMCd6qa`0nm^ext?Yk7MAUHa3$;3zG!Gy#*BjD1? +z-Bv0@1hjTcIcdi=lM#5zD3r}OqMvM#%U#wu!js21TsYEX-gi~ouxck(-Ax;_98N*? +zV1VNex*n_^DxUgLj5uPe4u$B#~8kNWqhm_2RjR5lLzvaFsqG1~A7!6E66mC73UNG?H0wxy;Yq5Jf0>dY$x7Nz(I +z7o#6xA;L!-@0O1CNYQVJu&FOW^hFCXWR-QH_otvVjaqBM(U+~n*bOlhfyGeY!3!Zr +zbE!{p8Tp9BX*;471f&;lOWy+$6IS}oU#vJH#pu3^V)JR~hXQ50𝔓x8y<2_E;dj +z>H1~H5vTG{4UIdla_d#?zN&55#dEhWT>yeO>A`_;4uSC=4%@BQE}bXB$IB;@%kv)6Em(TeS;RK{Tk|Fn3ymAHQYhtK>|@ +z2^RJ<$e`)jl8?X_ipx8Hs&okptuqq}-3KElx+*rEw~HbtC^e2sZ1 +zizvd-3e!5ihl<&Gi`1rO-W&_Z4j~!M)o-3j$^N3H7`j@^`r)^o=S9Y*5+j)YFU5D*eYl^bPTy2I)N!<(X=OAr}U967hIa70;-JJk6) +z2enbEdC8yG%$&+e8;W2a@)W#YS2<@IzJxg!DWZ!1_siH*~Yts^i-`tQo8?0ebsD&*lku#Hb1yqAW11IYg!#FEfrHUe1ANheJ#!s*PJ6 +z*kYLYoE~Sdl5vW1Fse;g^VX|0%CtBl(%48m<4UeEGjaQ~b-Ul_&!!2;wDGS+FtwS$ +zN?)XEQR-*jYvW}ej!ifE<(o=5Qrl&gR=9ilQm6LqR$Wp!Qhda*PheO%XL^^SU-Md= +zN0lVz4Fsl#*#(nAD +zqRudR&)Hg{fOPa@+dk4&pf1Trn%&P=AVtY9G$1tQ^i71*C<#OK{=j7>zcolC9RXLN +zzhu2%x|{smG>7{f7nR;0RlgZWC^EcHqB#{UUw@T=(rmF=gZsco(Qst7Yo_e`{|`sX +z4~Z;b270^3>ObN=2_#hM)Jaf1cuPb1vw0dGfphQ8e*eKPQ%bu`%s+cxDU{*HRNH4x +z%AOa_M&3cwX$2hdR!{XjS<9wN;#e>jTewwnWx&u=p!rfi{`=|5OGHXYC2w;c)G9!MKWTxJ}hFYsnA-Vn`~7!#BR^i(+F2O8wT +zqF500PjF<~7fJsfK03N%3$K!*4Pja$MuCt1OgzQ)3+EP%8HS4jT50fOUZ)~?>K4pJ +zggt)VN<4FLpHX*1d*Yo!UKwMvpW}Kc$Gm06VFImGPUj+dI3F;wvpX*Wag0-MMMWq} +z;^_l>c@Mg+ZSlGVb2@&Pi@;ln-D+1{F=ZUD!sviiMQ%J4?o%Wg;az04vvn261r6c! +zQ|b&3=9ZJ>ByC*sy`@)xf`z@LYk|Wj>Ox&Q9wr8_lw<^;RJ9xws2(Kd?UjxPYYC-aO6HgAt8*+XhEWJ8}S-BX?? +zi{oPE39(IbYz4_5cM-ld)f`(D=5#ZT418qq##z))g)A5yWT|JzBHiArAEC(b7PDi) +zoTwy?|NBk-!vAskxd5-ERQe(%-a`8SDO#v( +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 +z^l<1Szo^yaXZ(OY0J +zz}(Cp(tL@=A(9}G3)OX#qaEZ>4@760G%~N5^>TyF?X@keFdeX# +zND}dy<3mAOF$X;PhI*MyaZjcNcbZSP?;;1R<_trG0~V+UNC~~6GaNc*Bu)W3wQ@O9 +zy0S!uaGYF3#UTi1IiibH^T*^n?!r$AU;9`CsVQjCU`Swleb9np6$&k`-r1CuYl}WD +zCx^GzrJP?9Gi0|O&Iq!6G%Xw1{l$Zgk!{Zl5Fm2iQK(QBgXzl74r0Xu?am8!cXk#5 +zprNpbG{aa(w{vp9`4Rp~7BoIA#WC-B$UtT#6=h+zd;MszS`4<1Ad8Dz!V2cQgnJ!h +z*6v>9pg~g{=nEfzU?0Rpu!nl87_+hN=SAk;8|y8ZN-tQ){fxtHA%|27Z|s*sX|?b` +za=QZ)W(>T4I6ckxK#+*csZTptP7a6rh%E$ykN-oXIVc`A$5)tqBb4^Y+`@v3Qt{QDF}sHt~)E=sT_nwoE4sz`4n=H=5S_p3331o +psZq=L&dN7)FA