public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-non-osi: PATCH 0/1] Platform/RaspberryPi/RPi3: Update ATF
@ 2019-06-10 12:45 Pete Batard
  2019-06-10 12:45 ` [edk2-non-osi: PATCH 1/1] Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1 Pete Batard
  0 siblings, 1 reply; 3+ messages in thread
From: Pete Batard @ 2019-06-10 12:45 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif.lindholm

Following up on a discussion that we had during the initial Raspberry Pi 3
platform integration, the following patch updates the ATF for the platform to
the official 2.1 release (which also avoids a notice about ATF not being
a release version that is currentlly being issued during early boot).

Now, as opposed to an idea that was floated at the time, that proposed that we
remove the RPI3 ATF from non-osi and instead simply provide a link to pre-built
binaries (which could still be done if there is a majority pushing for it), I
would still suggest, as per this patch, that we do keep the provisioning of the
ATF binaries as part of the EDK2.

The reason for that is that the binaries are small enough not to increase
cloning times even if we update them on a semi regular basis, and I believe the
inconvenience of having to hunt and go through a download to be able to compile
the RPi3 firmware outweighs the push for trying to remove as many non-osi
components as we can from the EDK2.

With regards to how these binaries were built, I will point out that this was
achieved through a process that is designed to provide confidence that the files
can not have been altered in any way from the ones one would expect to be built
from vanilla source. As such, the build was enacted on build servers that we
don't have the possibility to alter in a concealed manner (AppVeyor) and where
every single step can be publicly validated not to have added unwarranted
elements. For instance, the log for the build that produced the attached files
can be found at: https://ci.appveyor.com/project/pbatard/pitf/builds/24506898

Also, as part of this public build process, we made sure to issue the SHA-256
sums of the binary, so they can easily be compared to the ones from the files
provided here.

For more details on these builds, you can check https://github.com/pbatard/pitf
which also hosts the resulting AppVeyor binary artefacts. One thing that should
be pointed out however is that the ATF builds are currently not reproducible as
the current build date is inserted into the binary, which means that, if you
clone the script above and issue your own AppVeyor builds, you will end up with
a different SHA-256. However, binary comparison can easily demonstrate that the
only difference between the binaries has to do with the build date.

Regards,

/Pete

Pete Batard (1):
  Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1

 Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt |   2 +-
 Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md   |  18 +++++++++++-------
 Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin     | Bin 18801 -> 18776 bytes
 Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin     | Bin 41714 -> 45792 bytes
 4 files changed, 12 insertions(+), 8 deletions(-)

-- 
2.21.0.windows.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [edk2-non-osi: PATCH 1/1] Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1
  2019-06-10 12:45 [edk2-non-osi: PATCH 0/1] Platform/RaspberryPi/RPi3: Update ATF Pete Batard
@ 2019-06-10 12:45 ` Pete Batard
  2019-06-10 14:59   ` Ard Biesheuvel
  0 siblings, 1 reply; 3+ messages in thread
From: Pete Batard @ 2019-06-10 12:45 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif.lindholm

This patch updates the ARM Trusted Firmware to the latest release
using AppVeyor built binaries that provide verifiable evidence that
the files have not been altered from a vanilla source compilation.

Signed-off-by: Pete Batard <pete@akeo.ie>
---
 Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt |   2 +-
 Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md   |  18 +++++++++++-------
 Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin     | Bin 18801 -> 18776 bytes
 Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin     | Bin 41714 -> 45792 bytes
 4 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt b/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
index b98dc643227e..48429979fec2 100644
--- a/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
+++ b/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
+Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md b/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
index 74bcec7d1f12..f0c4fcf414be 100644
--- a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
+++ b/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
@@ -1,17 +1,21 @@
 ARM Trusted Firmware for Raspberry Pi 3
 =======================================
 
-The `bl1` and `fip` ATF binaries, found in this directory, were built from
-the [official ATF source](https://github.com/ARM-software/arm-trusted-firmware)
-(commit c3859557) using Linaro's GCC 5.5 compiler with:
+The `bl1.bin` and `fip.bin` ATF binaries found in this directory were built from the
+[official ATF 2.1 release](https://github.com/ARM-software/arm-trusted-firmware/releases/tag/v2.1)
+through an [AppVeyor build script](https://github.com/pbatard/pitf/blob/master/appveyor.yml)
+that is designed to provide evidence that these binaries match the vanilla ATF source.
 
+As per the [AppVeyor build log](https://ci.appveyor.com/project/pbatard/pitf/builds/24506898),
+the SHA-256 sums for the blobs can be validated to be as follows:
+- `bl1.bin`: `57e30ed8572e6a3a161c231e68138ee2c78e9dfc6dc51be8c0b4d9c3fe9bbfad`
+- `fip.bin`: `b7eadad3a11088e322c52ab5fd2247a7bc79dc086a21db12cc8079a2ab4789f6`
+
+For Raspberry Pi 3 usage, ATF was built using the command:
 ```
-export CROSS_COMPILE=/usr/src/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
 make PLAT=rpi3 PRELOADED_BL33_BASE=0x30000 RPI3_PRELOADED_DTB_BASE=0x10000 SUPPORT_VFP=1 RPI3_USE_UEFI_MAP=1 fip all
 ```
-
-This results in the following memory mapping:
-
+which results in the following memory mapping:
 ```
     0x00000000 +-----------------+
                |       ROM       | BL1
diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin b/Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin
index e25138828d0a4ddb24772abb1a60eefc334666b5..cc3e79cc245fc07bedefd296bd9122eae2c9cce1 100644
GIT binary patch
delta 8168
zcmZ`;4|G)JmA~)LOok-rWG4Se0y7gp$%x9IghW*GG9cKht%O-?m7YujtO#s11l=gu
z_Y$JgM!UScbZMhoCIKp$(z8g2-RagPpxe5|ZDC?qx2I>F0E#tk3jrh#2(!QYW(K3j
z%{jyO?|$FC-~I0W-FqMBI)wK-gdDQB#KMI?8ztwop%1F1p*}sQK=`X(R{R~xnKneU
zJ?3?WN4@T8Ly094##&6_dAVwc-hFb=Bh$Hhq9A$0v2dVx=!FdG3=vg)AMFMQb?!i`
z70@vvS#Lq>3(wSjL`S>ymkSnjf*@oq5>IaT4fym1j00gw4}j<$tRGTnr~!wJiqv@t
zze<PxKLO!s!zawSw^Y{aMOj~g=>ekh`J}nxlG}fNMNRMc=C}6_NOdP#UQo=Qt)z!q
z74sVcb;hqHD#C8X+_j5zQPg7HZ;}48@v=}{F9;M2S1M6H#Y5D1-fa{y<%`($VIon$
z^H<T1Z~k@fxJ3H-6+-U?i6ZAEA;LEl+7#2esiv409~FB)lf=kHNs9EGBHfQO28_vK
zvHETFyh2jeutzc1u}mqMFFqQ$E;p|YOYX=n$ahl8kMO?p68RO#uZc>uyI3*1MKXzm
zEKQ{7|E475_6($Y9ukEgtcl_+%0q(YVqI)4pnHym_9<p5uJQs1-X@!ltDcKXtwp8K
ze}Dx2NSMrqkWFuuiRo&49u%SkrjP9-a|V(57cekB6${l%tEAr04T?EnqyDk4(gE(@
zBMJI2;f69*gr_SeYutxJ-F$12Dk{PBQmLpvT}nEy@0u>?qD_kp<Hm)cfqwl10#)$7
zVW}_@$NW!V6qqmb<J#rPg#v5Az(RaHQK8;IW;t%i2i|}~i~*@o-2@$&5S<q;p;e)?
zK0BGC=(AmtteDjrncS~#OSYv@l|YJFN5V)8tYduhp<Y4IV*L8Qgh?{37djr_e0VR(
zwA{<8!tGesUhv^|eDlAtwHSBGH@KkfEl`FA_pq!zPR66MN05xo^3>T{s3uCd>P#H)
zd`O7Skd@xmSE;u?o6N;{3qFh=@*3;^9l1odIv>lk;R|`TN@1??fbE;ksnEfDmRV@E
zPi2y6?6cjJBk9Ex*@i^plx^uZ+G?V84^JPn1aC_U&I+<FrPV||4r<)XjxAG;SNr^8
zX&EFa<}{u?F3FK$Ni>@56)Ftu*kd?1kxh-W?5wa~_kIKy;Q6&)yPkF%8$g6z<We!2
zlb%^Kc3QIeC&_ehk4*X@Cjcdp2+E*=E?ldy??>3*-(%Nze7a@u4CFZ|7PS8sGH+_0
zG4?!k2FHjHDaQPaDM|?AzIByjtc5tvy#z;LK$z%U;9tuw9hY(=;Y4D`XXvkiZkgU_
z&RAK-g7VAz_*aMnvdCm6K7kH;srtl+uuFJtWV0bS+|&3tR-NVj;S4?b?uRUtm?Rl~
z$DQ|YW2d9-OMwyGE_o^0F4h#2E+qSbE#L(!oQd^4p_w|AaeU8g<p5ee0fe)x44hsv
zUU#@vvQb61M~Q}t+G;5`ys?^SJ&6=loNcvAY8=P&c^zw)lS6E5!J6gbnygDixmLf#
zmV#Ybx25N>ZW-s3HhmY)_d*)lZ`Z#L3BUtV9AR9Y3j@bOp<Q2s1?#Y5sl&!>Iy;rM
zUY?=fg>@bqn<jb77C_mIVn9HkSdGcpI4tEw?n=#v;2Mm4ZN{6ED$Ax#q|W@Ddd8Qi
zHyBehXZcTN=*`y>I}F%LsMMjKKwrDY4y?smF&7|*eid^edyVl#X5O@m*OE{khd61w
zbW2*S9QW$%F?uq;>r=4ROW{$C21Z+4f*Ar{@T;qEEVYQDhmE_likJGJS?jWjOFs;_
z(OMn4Nc(FAS&3GYxPHKvT7NZHk7Au*)RsXawv2Cn%ZgIrabsPUUv1$BW4*rX(oaKY
zO5#!_Id{Y;{@N(aG3w1Gm&Z$u18KUoZv7P;`3Zh)HUyRpTRH%2BU*ZW%&m{%9Kox_
zSnwXu{DH?#CE5y8f|xKIaeaz@%67`m(|->F%2lFaAS7h1eHUXRls!xRu8ndT0$E!h
zL6c43%0~HDOOtQ*T9O~jyYA)lag(M+`T9jSnU8~(C9q7Zne;Ui$3%KP#>-(|c$FQK
z(Ptw;YSB0>Q;;z{PoYvB2lyvpU_}MQwPCg-R@dr$eL3bQ8IvcMsIv<6doh4-`wv*H
z+kXWo^QQ2`O}h(p4wlvd8w&M1Q?&CyJMnpdFS!=YzZB{mI8uPFry(J^e~Nxfa(|@i
zd=|g!k-amqk*}a2a>T*d15kuMJ1BQ&*8l=(T(U<PDKuCa=M~1ECeJQDiw@;18X|i7
z0H<F}z=-UlX~z5;Zc~3fMIVQN_k-C-GIf52OZ@_4cbN1|b|rcd7-gXlP1CoE<hlUx
z6`EI#9VY7MV@kDbU0ABs);qdi5t^rul_Lg+o3&cbG(s+lBEI_n5$Ew!-EXzI{#9rp
zV{O<@QRBi5PW6321*d<W?B>yKZ1z5*)snNN=u=BOZ(8=jZ(ach;3SEG^8zA8KLi5v
z*e4KNz#Ze^78lZ&%)fzhh-hA`ONlOVE*V?`5FpB**MbYxkaGc1-aKk9aanY-^X_>v
zvWdmnfk71^ss^S`R5;JKW$oZjWNkirtV5!fm{jz$(di^bY#A-FJ%!;>AK4;4=hiM`
z-;IDsSn^`{k~#|(#;QMiV`0S$Ko!<Q`u%=oT_<VoD%NN~*4f-8`ExgT#<<&g^EaQs
zs%i&sytDvB?-rB=6bAIzTWY%tf3}e*gD>hQXUP!T@JY~fo94u>o>nL&62?yFa^aL=
z%c-8ce>}0njTppoy=g4ZS*BLOLD)G4IHLkma)#A?vtm|)lIJOvX>~6a^e0nu8ql`q
z7R3x8dTIGew2o+G8&E6E8P_U7Z^g@V#<f00&+|{9&*vATg`-!r;Bhp&a;u5!vw2ua
zb~2{^#)7aFlICKZZ-TjmE+;D3SB$${bIOrDt=|Q1YzA>j@Hc<}&KS`|<qn1IZ>y+>
zCAl}eRnWt?ka?&McDB#uRb4=<WGeqVi-Xfnot<{lM{qKXd4K8dC8h{R^6r*RFAS7@
zMMMA{29v<b<_=`D5iylHjc-ocrIobbsJW5}I{D!&``tL_DYX4AQ6Ge(Fmiyeno1dx
z2;B{7Lw4kdM4upf1sgII^CZzhei`-}1zEvPQJkx}lxI6*T2Ygzm<%ry8K;@CbEFww
zfG}yM7ZDMX7iOMn-HC}z2~6u<iV0Uf$nNR=3Wl7Ut6pg+ftFGl@w@{kvBN{Rw-nU~
zTCE4qLEe@kavUxah|c<`SSL<in?qx)LB=;x`EhNjajV<y6T&amc1L$@B*zb8-qWv*
zo&slNYMmkY=x<=gA*0^yzWY_{q7%y^8D)_@V&!-!6F!qNB9|l^${{f_21q&yG*}E-
z0N|03@w(fsJ_@5aDdrv>Mn=Y2*<x9%eF$?$L^tN#5ed|MYmO1XinFAZ=)A{5YLrcv
zRxP$lr$>NIp6uXg4YcKvA4;_kC)@0msWvnk&j1MHwqbxT5^1$SOQCQG?PXj?LCc|2
z382o+7FRHmw=mW?F?NV6cr&NS_14^7LswYk&P79<2QsaY9gmSC9`llBF-o74RPmwS
zHe_`#(!d`-f(phZmGm>tfj`O)zNHjtqm28i$+M9U7s4;pwgEiawkXE$pz#(BuA?9o
zrN<9Q&i%1NU`7BsAaGYrM%7Stwlb<<Ux1VY3|GTDwOETIJbIX@_lP4|N2E*G@QXq(
z(cV~(T0my^D$;k&r)bziW(e*;UQz!qs5o6oTaT5Re+;oLoeHo}eB*kofl06w`;>>t
zs*1emuje=jO({s~dE5ZQ6tT|QWn)`|v9T|&Y_>8}fBj3y*eNj|tAeuXZN?A|B^`#4
zUo8B)F*UzHU4l@VPT-pGY7O?CUGul7gH7V*j%s>tv`G{r^so|b5Mh)BJG)rc6(#OS
z4P>pMISZP^XAhJ+Xrlm=X;ris(?7?iEuyx!z9d)~?+MhUwMdrM!SsVqVZ90KA$zlW
zK&;VXJ2R<~H-=nV*Lmw=zf8tKR5^L5EUq-!dapqE{w;aMTsV8*S9<$@N;y>!m@%nv
z`cT(-sqiQc{eg$Xk*3zxt^y<rn?&*GrP84;bG_V~Px<YgHw|^grOL?e70$BDs8)U{
ztCX|p{_=JcS}DO{hwXGcd?#LW8Gh1(Wke-ez^wIU5(THfsPs07h3zjsyJhSlR2Mzf
zWY&|=9+%1G!&oKv$l44Fejo}Xv(T1GsC{pw#sEo21LSVEoC;Zt4{LqZiuq~=s&;jm
zVtTM~@6|-G3CyQk9*7(jX|MIM<xVc3>631#tqYOf3y`B3LtTW=2BF)P=wlcQsOjo&
zN4mLXlW~UV=LieIxU3w|p1o`A6tLqYJpV(fz%MI|8B-#!RdV`N9C;1TpuScK)P!mU
zYDJQp5m}GP4@CC}T}cEPGA2TVxqeCSm8N?D75`y{6qWKv9*1BmZoJJ*1hp%P@-r`O
z>Ntfb^c5@7Q&JJ?yyD2;;!GCiEzFlW6!ZHoI(QS}a;Z~M%@1ZPqr;P-Uc??1{TB4A
zZ&gNX(ALqt=VW*o@|w$RICZjet|dEJ8MDzcLJrZScD8|jXm7qCwR2U>n*4zBMjE!S
zxV$Zkf*jXWQ5>1YeK0<R{yUiz%qlb<n&MLBEb2c4aNR)mqo*Ms(53$Z##=j--sgKr
z-%3*Zs?-Yyu<h+h)V~;X$n6f+QP#*Q%psQqNDGkwC1F^@zCjdk$?q}zi6uAkTZ{)v
z`N8u>0=UjlDFEdr=zuMNCkAgqp`5C=x$;hf$0xZ;FTRnqqi!8>*y#9Ma5hzRB$bc3
zZ5T%=^JtxrJ;Ij4boH=;YC#_10!u*AR0zxBJx8u3f``P+k*%<>Hp*;ogAYJi^2q5O
zJBw7&Hgd{3z%lY6#)n8==f#FI$dEasn+deBu$qI&U0%Ig)Lgyecx^dZm07_B^PJkG
zFThAu4=3jK0>aqOQ|)!_R!&fF{l!FZ$;HG$mi%KdhK&{kz<du{7Va&W<qQb%KE}q`
zqLLXJQjUo@lgub`BTdl%cVKr`A~mOYmdbAY4)nCjuW(@&Q!#!QV-2ZDSfqZ0n%YpU
za0jOmX~X9N6Bv-&Py{b*_VU*rowI}nWD?M6EHH=K>zaLIKFn8><6JjDnrZ$FnpM~%
zf@bwX1?ge#w<Bw6l_(z^MGnf9MhFD;SoEEJZtywGwfs;)5h%6efa7c-oU*hPv9QoJ
zdGuD~L<;iBf55K{6-*~?cpQxS=9H`!rhE%=LO`0~Lz=-wS32eBGJY|2vCw6lo2m-W
z8;#R$wyzEd&U+U3{dC#_QGEOMz7yUe(fD-wkIF)Mx_}5Lpd|Fg(Z`oFs~^hO1t;JT
zcM*^ewq7wJGYmm77R{`^zaF+iP@DrwlGd)S;<!8$hPvl$T@{RQJs>O?BHMi&w<R1<
zN76_Q_V9Sd+ErEZ+UZsBES+-(<4-e7RB$+s17kjbCMyE3Ho{E!I~i~4SsSWqSnI9g
zL}7gMuX;IKwShhz!p=*QpHZQIx}Y->e5-_9lH+jK8^FkrCcGkJ?3qR9T2~4=Z3C3k
zHm9{{_qv%?oHyW8k*e>ymgvvLjqo9$k<DY!PRpCVrx>VE<{oBq5%aUY_)#pGz$3NJ
zi34P_@G>DW_dXBhuipT3;F2`FuBnP4NyZwR4-1|an8R6lA-<chRFE;NVlT%k29qM9
zV~^bK(>eC#L7*x44Iqt1`dks0@~&49oV$Gv%t>KRAkX)7Qe$@s1q-oH!0#rGEW3rq
zIQ-tTUudjH>w{L9HZD!^Pvv#>J)u#_qu^SAhUZ<Ou?8Oyax=#&n-`IO6^VV}`R5Q+
z71Irs!_)k@m9B~IcEWqdCs9SeC}drbO8f}M5kB}m+}0Bp8p8l{&&NU|YcS2Q211!!
zi{Vn90in_B0B|`F2R++`#sR$f-pl9@P@@+DK?5!hAJs@dZiR3c#Iec{go0=J>FjeI
zTObrt8!)EGN_p&!Fw%`)q+fBV<Y-|AEk7j{`cLAPoWmnC&LtS;1p#N=Ht`Hijs6u(
zT1qJghS&HqgkUDj;A6~NuyCZjoj-nlfd+>#4Zn4ohN~AakDyvDcopaEl#=JMCRvOB
zjQKH+uQ+cX`rm`F`w}W35>jme(G}e6)s(uC$Z=g2N#8;cwb~0(vA+fYcOFdeZ6J#g
z@)a;rQ;hfw-p@i^O)+AjR)bOc=|W<W^>m>`!g{(wHH(&i1R{Q4Mow1uf8xzLq3(Jd
zcoISZuR21Ox<!9lApTz*7HTR4VqsdbH<VIwJ+w1nUzE$-RtQ>`(lDRPXL4bxGJLa2
zSlwSB!XZq=w@K6RZ7h3$fULEz5|9OBVenxfN%JLP_>vR&sKK-}UuHCcD9AVZDq+~N
z+1-x7q5}i8d@;aAok5L`KPQ4*uvzO_QZYwD3D1C(C1*1F*K_nNU@k1!PuO_b?0dui
zV>wfcxd8ZX{EXxNO@=l{c8p%dv*X7T9dl&|K7j2QOpOf<69+KpOB2kK9Ua`iPJoGx
z7&N5`=F5&+^jBObz{ETZ=BEkDa~<_76T#nH21p<GuQs%D$Z!QR;AhED0U6LAOpOf<
z69+KpOA{=B4BWp?fQgM5G^GhDAp`m=t`lHl9tQLA>(eWra2RpFO$|Kt_=Zj1h2FUp
z3+F9ZIA_6Z?*sMEc<0Xd&YLs$4tjdtZF6UBT(e<Kebbt<g*>9v-)=G4K^(RIWN3fl
z-&kt!DFWWazwFfb-efD$n1uW0*LKQDs+Usj{#1K9)ynw)0RG#SYL!%5m}--&s2x-E
zVFkw)6e+3sCvQ)7(yc<q^qN1ab>^p850ox?V9%1b{;B1+)tSrQbNt=?*M7Y8l^>No
zc=XLjDC@~1ulOHnR(7t*e5kdlb=wd3Zhrj_J=G69KYr$4_lVyAwjCS({)#`jm%V(;
zgPHd|yQu2KvA?`_^^>9dcC`Mae6;+H(-zZ|rjUH_pR+V6%EJL71PJ_PTK^KI7B1E#
z$6=!-aPu8Dknvx5QnF1`Rs28m_oV0hh68^u+?<ylerfy6FV6SvTrx+TMISFsG8s*^
zS5vKhS#sW)Y>nS9U1-c*7B;Rf`-X9B*)7J`@0}**PUCkpw0qm~_@emYli*G1Hf~J$
OnnxVC*;x3s+x`zjG|eFZ

delta 7916
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
M{L8OPD@nqC1H4~^z5oCK

diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin b/Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin
index eff727ca78dc07cbfe56f1b6717e93b91702c16a..57eb8757b29a4c0e0004dc849d4aa731c953279c 100644
GIT binary patch
literal 45792
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

literal 41714
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
F{9hQUX+r=2

-- 
2.21.0.windows.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [edk2-non-osi: PATCH 1/1] Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1
  2019-06-10 12:45 ` [edk2-non-osi: PATCH 1/1] Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1 Pete Batard
@ 2019-06-10 14:59   ` Ard Biesheuvel
  0 siblings, 0 replies; 3+ messages in thread
From: Ard Biesheuvel @ 2019-06-10 14:59 UTC (permalink / raw)
  To: Pete Batard; +Cc: edk2-devel-groups-io, Leif Lindholm

On Mon, 10 Jun 2019 at 14:45, Pete Batard <pete@akeo.ie> wrote:
>
> This patch updates the ARM Trusted Firmware to the latest release
> using AppVeyor built binaries that provide verifiable evidence that
> the files have not been altered from a vanilla source compilation.
>
> Signed-off-by: Pete Batard <pete@akeo.ie>

Thanks Pete

Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Pushed as 596043ffb61d..eb114ec4db68

> ---
>  Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt |   2 +-
>  Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md   |  18 +++++++++++-------
>  Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin     | Bin 18801 -> 18776 bytes
>  Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin     | Bin 41714 -> 45792 bytes
>  4 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt b/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
> index b98dc643227e..48429979fec2 100644
> --- a/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
> +++ b/Platform/RaspberryPi/RPi3/TrustedFirmware/License.txt
> @@ -1,4 +1,4 @@
> -Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
> +Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
>
>  Redistribution and use in source and binary forms, with or without modification,
>  are permitted provided that the following conditions are met:
> diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md b/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
> index 74bcec7d1f12..f0c4fcf414be 100644
> --- a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
> +++ b/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md
> @@ -1,17 +1,21 @@
>  ARM Trusted Firmware for Raspberry Pi 3
>  =======================================
>
> -The `bl1` and `fip` ATF binaries, found in this directory, were built from
> -the [official ATF source](https://github.com/ARM-software/arm-trusted-firmware)
> -(commit c3859557) using Linaro's GCC 5.5 compiler with:
> +The `bl1.bin` and `fip.bin` ATF binaries found in this directory were built from the
> +[official ATF 2.1 release](https://github.com/ARM-software/arm-trusted-firmware/releases/tag/v2.1)
> +through an [AppVeyor build script](https://github.com/pbatard/pitf/blob/master/appveyor.yml)
> +that is designed to provide evidence that these binaries match the vanilla ATF source.
>
> +As per the [AppVeyor build log](https://ci.appveyor.com/project/pbatard/pitf/builds/24506898),
> +the SHA-256 sums for the blobs can be validated to be as follows:
> +- `bl1.bin`: `57e30ed8572e6a3a161c231e68138ee2c78e9dfc6dc51be8c0b4d9c3fe9bbfad`
> +- `fip.bin`: `b7eadad3a11088e322c52ab5fd2247a7bc79dc086a21db12cc8079a2ab4789f6`
> +
> +For Raspberry Pi 3 usage, ATF was built using the command:
>  ```
> -export CROSS_COMPILE=/usr/src/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
>  make PLAT=rpi3 PRELOADED_BL33_BASE=0x30000 RPI3_PRELOADED_DTB_BASE=0x10000 SUPPORT_VFP=1 RPI3_USE_UEFI_MAP=1 fip all
>  ```
> -
> -This results in the following memory mapping:
> -
> +which results in the following memory mapping:
>  ```
>      0x00000000 +-----------------+
>                 |       ROM       | BL1

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-06-10 14:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-10 12:45 [edk2-non-osi: PATCH 0/1] Platform/RaspberryPi/RPi3: Update ATF Pete Batard
2019-06-10 12:45 ` [edk2-non-osi: PATCH 1/1] Platform/RaspberryPi/RPi3: Update ATF binaries to v2.1 Pete Batard
2019-06-10 14:59   ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox