From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by mx.groups.io with SMTP id smtpd.web08.31550.1641822178073712146 for ; Mon, 10 Jan 2022 05:42:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@akeo-ie.20210112.gappssmtp.com header.s=20210112 header.b=szhFWuzx; spf=pass (domain: akeo.ie, ip: 209.85.128.44, mailfrom: pete@akeo.ie) Received: by mail-wm1-f44.google.com with SMTP id p1-20020a1c7401000000b00345c2d068bdso9745673wmc.3 for ; Mon, 10 Jan 2022 05:42:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ThfnQhxU36sfnur33aLv1UDEkfLNOhdfMxofcU7nHYs=; b=szhFWuzxBxl+RnIZaJInZ02hgX9AyVChuLKLLE4zteXifSAWzJTDLn9ZWJePV5iY+D v0WmAnV3T+eiZ5URcmUU12fhih/Hsu+4eYxYX0u18uWLZLeb7o0+k4lVoPwJ/r3NSlad f8UOhDQ6swj5YjBLAGjBYGmrGqpllU5eHXzU+VIr0K37tCGXd3KIbIZcGBuM55x1TOBc qgB0qxemjA7yknUBZuUWwO/f38dtDz758HauUOlBF2EpG+O4h7at2MQ8UhDj+d9FO5bv aUnTaeUPKLBFU1w6HztELfAlHsd0Gz+w4t9yqULGKP5+A1Q9iV1akXHHQNlFWXw8+/pA NhWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ThfnQhxU36sfnur33aLv1UDEkfLNOhdfMxofcU7nHYs=; b=eQLnVd+ty7LD34lC2ZYvFolJt56PnYO/d8MvGothmWoxPT7qd6+k2RQVnV6OrwhHGs N7ZMGKbvCTUe9JLTrzw/kHwrH/y0knmEnP9jzvtoECJgitzgyA6cTKvRBL2alkaGMgjL 61gWAPO1xqnNQwYPfrBXxRqsB+o8wVciYjDA//9uq33n10DPFFRU/8TH2PDYOdWLihE8 KBhghiBNl/rHaGJnmj0x4BrRPHRbcJrGsNqrAWushj4llVK4DvPDOxmjdul/8b7gXQwh 6OXDR74lqjsDeV/IV7mw6Ho3ecKF4Ah6GQCHn0J4d8nw9o/Gf3uEhqA13O4VllK3i1P2 uJeg== X-Gm-Message-State: AOAM533I1rlLfB4qVPlsrrGs88PXp28FsnPrfuE2vIhO616kehhkXVN4 Q77KLp4jxpSIRDwwxx/LTodyEhcf+CFO3A== X-Google-Smtp-Source: ABdhPJzNIznEI79Ti4293ADejNd2VDbiJFm7pQ9eRjaUvOIDS/FjEryaGGLnz+NkWmhoOHPv283Edw== X-Received: by 2002:a05:600c:5113:: with SMTP id o19mr22373591wms.145.1641822176056; Mon, 10 Jan 2022 05:42:56 -0800 (PST) Return-Path: Received: from localhost.localdomain ([84.203.88.76]) by smtp.gmail.com with ESMTPSA id bg12sm8937787wmb.5.2022.01.10.05.42.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jan 2022 05:42:55 -0800 (PST) From: "Pete Batard" To: devel@edk2.groups.io Cc: ardb+tianocore@kernel.org, leif@nuviainc.com, jeremy.linton@arm.com, samer.el-haj-mahmoud@arm.com Subject: [edk2-non-osi][PATCH 1/1] Platform/RaspberryPi: Update TF-A to v2.6 to enable the PCI SMCCC interface Date: Mon, 10 Jan 2022 13:42:41 +0000 Message-Id: <20220110134241.866-1-pete@akeo.ie> X-Mailer: git-send-email 2.33.0.windows.2 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The RPi4 has a single nonstandard PCI config region. It is broken into two pieces, the root port config registers and a window to a single device's config space which can move between devices. However there isn't (yet) an authoritative public document on this since the available BCM2711 reference notes that there is a PCIe root port in the memory map but doesn't describe it. Considering that it's not ECAM compliant, yet relatively simple, it is however possible to make use of the newly introduced PCI SMCCC interface that was added for the RPi4 platform as part of the TF-A 2.6 release. As a result, we update the RPi4 TF-A to the 2.6 release version, and, for good measure, the RPi3 also, using binaries that were built in an open and verifiable manner through the GitHub Actions build script located at https://github.com/pftf/pitf. For more details on the SMCCC interface, see DEN0115 available from: https://developer.arm.com/documentation/den0115/latest Tested for regression on Pi 3 Model B and Pi 4 Model B. Signed-off-by: Pete Batard --- Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md | 6 +++--- Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin | Bin 18853 -> 18853 b= ytes Platform/RaspberryPi/RPi3/TrustedFirmware/fip.bin | Bin 53988 -> 53988 b= ytes Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md | 6 +++--- Platform/RaspberryPi/RPi4/TrustedFirmware/bl31.bin | Bin 41067 -> 45163 b= ytes 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md b/Platform= /RaspberryPi/RPi3/TrustedFirmware/Readme.md index cd88e0345c91..a136cfb9e413 100644 --- a/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md +++ b/Platform/RaspberryPi/RPi3/TrustedFirmware/Readme.md @@ -2,14 +2,14 @@ ARM Trusted Firmware for Raspberry Pi 3 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D =0D The `bl1.bin` and `fip.bin` TF-A binaries found in this directory were bui= lt from the=0D -[official TF-A 2.5 release](https://git.trustedfirmware.org/TF-A/trusted-f= irmware-a.git/tag/?h=3Dv2.5)=0D +[official TF-A 2.6 release](https://git.trustedfirmware.org/TF-A/trusted-f= irmware-a.git/tag/?h=3Dv2.6)=0D through a [GitHub build script](https://github.com/pftf/pitf/blob/master/.= github/workflows/build.yml)=0D that is designed to provide evidence that these binaries match the vanilla= TF-A source.=0D =0D Per the [GitHub Actions log](https://github.com/pftf/pitf/runs/2822874196)= ,=0D the SHA-256 sums for the blobs can be validated to be as follows:=0D -- `bl1.bin`: `5ba701a7e977d308a19928e19937107387677d52a1a4d628a5c2bb4e795a= ae8b`=0D -- `fip.bin`: `0c3f8a3e8192e5dcb3bdc5867976e4277e9d948159a92ee71a54e92cb8dc= e9a3`=0D +- `bl1.bin`: `787acb2ca1c99678dcdec70a64b9602f8f8f658a4abb0b3f7edfa5f5efb2= 2f73`=0D +- `fip.bin`: `fd85f9a230aad88f6a59cf0c5d88e6067f23fb8080c6b8bdc61f1a5f6cbb= f9ec`=0D =0D For Raspberry Pi 3 usage, TF-A was built using the command:=0D ```=0D diff --git a/Platform/RaspberryPi/RPi3/TrustedFirmware/bl1.bin b/Platform/R= aspberryPi/RPi3/TrustedFirmware/bl1.bin index edfb46702e801a102c9d18e4a52bb4ab9bd72a47..cbbde5f744a7e2f50232a2e6c1a= 9de1d5254669c 100644 GIT binary patch delta 3943 zcmZ`*4RBP|6+ZX9&1SQSu)o=3D`n`Czr0?C5;;U_{s@{&aaRD>kf4xwfFQ&b9xi;@a8 zFCi+@R=3DC`qL8#MgR4`e!qzTr>sw`0%t*woVtDTIa3F7ErYcT=3DI6TL?p z`MKXc_uO;OIrkl5gsVT?1GrjPT>Ej04F=3Dp`XD?1FZhpx?k7yt;DFp(2+V>)O8bk<~XG(pRAkd2< zgc5M-(#SO%1kjI)V#w9BVJr;rij1ZN&`?+^*Z6e7-?^Id$4(0{hi}T6(KK=3D~f?5u+ghp$tx-QmNca86S zt8=3DFYEO|KgEqgB`zgdU78sB-MYg`2S3eFned9w2@k?Y>*asljze;Fws8?7Z>vr+c1 zHqnb_P&VLJaitK3Y`?p~K-XR`k4>iaC_fjA9efXM=3DHWYv;lOig9M(WxKFU@JD9&&8 zitNt}vVY^E3wbi(2}p;EKQkgyfJ-d5O5 z{~e3j)H!=3DBbZ!FMhR%)FS}`tWN#SuhgmF>F;!DSn;HL z=3DvbLiwo{TJDVSx)iB^vMS;s0!iFLi5uB*1I@v&+oWk?h~lSTF@ai*>CDrepT>RZl^ zk{xNcdli1%u#`;`+V5{z*5^ZqeMC0#oZ5{ez6P&?XJmQ;`7b30bpm`hB(~b~Fxu5F zpl3FV%6i#BpVa`z)$}){^}*HH+>H&QQUIWQiyI!_`4{z6`N;*)PN3D!N<{m0i`R%V zgh4B77H=3Df=3D>}AnL?qctVb;hNl!V|Uf_BhRJU>=3DP<^I|FlxY~v8@+1Kbta3H5)tc#o ziXwpY8ujx#RS3tjCQ(0IuK%F-05 zdmQ~bg$5m|4Sj7i_=3DY*wp*;R6SuU)3eCy?7sA=3D8CjW_$W>Sd{hd?Tq4as=3D zc@{~Z-YnTD2oSgr-zT*YaBbOjpjm)#WL#LyhyfcNL#KGz@tjYZII4};NwPlXXe8CO z??n=3DFV~O*U4+un0mdcSXv}?xhF%)b$(5{6>zW{ry(7s=3Dgde($ZQlDs8d|Cq6O@86w zo_?*=3DR}F@8zwl6x|A$@b1Qo1p=3Dy78|aL?4$R$?)Q(STbAt2n<0d2Tpv^q!t7T&&~w zpfH1Bi%H$Z_AL4`!9Iq&EZ4H946B>-k;S4c^Wj``#`<2ru%YL84=3D66fyy!`-q;wnr zoAV?{cC)T|w*E&+)752DsnsDq2`vYDO-RzX{Wir6Fo2E{B z06Ve;B!!>Ji&xlDlZ!>t95=3Dq{Rd!v)!sd+x^Dv0=3DnJ<8HR9ixio1Hu4l$5_;Wp;g8 zNq6v+SJ`;|9F&uDw*1eWSFW;0^aa)3a(@neV?1_{*`V7e!+M*>0&t#P(buJ7Gw22>mu=3DJKG!NntahXWDRDjlqpb3r$ z?~2Nhb9;{q%bkaaw}~W%hcE>V9SKZR8#TP^Rq!7A(2Wh~$V{mRdHMp@$5(j29p!a` zRD<|7q$1J{NYBJ#=3Dc|$8+IIB@;AOa0xOSjJexNg0L0U;O;1tNprpN>YJWDsdDYgO9J� z@fMEhRog{eawJ)Bcprp#9L$hONmx)M46zG>Bm5`AcNMyLu{PVGuLzHV=3DOI9MO(nns z*rMuG;~(YFJAm!Yn3k=3DIi*xA(T*sFw^~nOL&1eK=3D_O_`|sE@I4O_|nb@zi;CNg`%Z zKIWg7&_OoEJcE3~ZZSLcpWrypu9k7O)m%Xivo7=3DQy!lxC@uUB%8VtV{=3Dp5{)-=3DJ~q zblvU&w!-2~8}KSvy^1iv4qLpK=3Dbu^j;diTbANhz~wK}YWUIj4a`SlA>`7yQ^PwOBn z&a{z1wj^@_`INP0-iF@~GVjLkG@Bp4hi!M__neJus~mXKE`*Q`Wc zzhFk4IV2LfhR6Lj)Tu!YXHY(e@1OUIOB=3Dk{f8XxJ1F(Q5+vJp>amdzghs};!o+!?Y zx{)e8AE)Lgz1yZ32|3GJ>^5>gJ7k|hwz7BZi!EU%J&u0!zk*~p$zVB-*`$xHa!jxE zYugX=3D8{#2B2;pBCdPzKuDjq!T!mma~ZS9B6+2&AqwbbVqtRd`xjUBk+dhERI!Y|n| zhn4JN?>JoEG`Xf-Aou&QJ#qusvqLBJad1GJWoj2P8iP3I6L#Q4U87&y)Z;hFhm&^% z-)?VVwoJ$x)|FFB?(QAWaS&rU#(P-IM89kyAw`aOSdlYg8h`<(+DtDw_|L}MonQ3c z;F>{56PxdzZhs0J+uhm=3DtYaAV&Gw zw6U(d{Io|IQ871Ez`k?O z)^aXgV5WSJKE*=3D}*c2jdg}qDiR}h2V5RB}_Dl0NCidGW+IrhxdQVTCDf&(o$;KBhX zkaO&xQ@3O4-BDoEoyR))z+)9C(lId4}kOVBy=3D{@KH3CLkh2N>*LX`@|BNN{a}xRs ziFx}|m4{NyPX%@USj~Q<9u?35xEOp5ptpC;z1YJJgIqO~;6m*5GW?Aij0ga(h AcmMzZ delta 3868 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 diff --git a/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md b/Platform= /RaspberryPi/RPi4/TrustedFirmware/Readme.md index 6631c05400dc..6db49445073a 100644 --- a/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md +++ b/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md @@ -2,15 +2,15 @@ ARM Trusted Firmware for Raspberry Pi 4 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D =0D The `bl31.bin` TF-A binary found in this directory was built from the=0D -[official TF-A 2.5 release](https://git.trustedfirmware.org/TF-A/trusted-f= irmware-a.git/tag/?h=3Dv2.5)=0D +[official TF-A 2.6 release](https://git.trustedfirmware.org/TF-A/trusted-f= irmware-a.git/tag/?h=3Dv2.6)=0D through a [GitHub build script](https://github.com/pftf/pitf/blob/master/.= github/workflows/build.yml)=0D that is designed to provide evidence that these binaries match the vanilla= TF-A source.=0D =0D Per the [GitHub Actions log](https://github.com/pftf/pitf/runs/2822874196)= ,=0D the SHA-256 sum for the bin can be validated to be as follows:=0D -- `bl31.bin`: `59c4486a0a257c8d630d8ea39d6a13d038cd50be4fc9a81985bf2c32a7c= 3fca6`=0D +- `bl31.bin`: `48f129b3064fd44992c9903e8207eeee09f67edb6d06b14eba8e10614ac= 5c5b7`=0D =0D For Raspberry Pi 4 usage, TF-A was built using the command:=0D ```=0D -make PLAT=3Drpi4 RPI3_PRELOADED_DTB_BASE=3D0x1F0000 PRELOADED_BL33_BASE=3D= 0x20000 SUPPORT_VFP=3D1 DEBUG=3D0 all=0D +make PLAT=3Drpi4 RPI3_PRELOADED_DTB_BASE=3D0x1F0000 PRELOADED_BL33_BASE=3D= 0x20000 SUPPORT_VFP=3D1 SMC_PCI_SUPPORT=3D1 DEBUG=3D0 all=0D ```=0D diff --git a/Platform/RaspberryPi/RPi4/TrustedFirmware/bl31.bin b/Platform/= RaspberryPi/RPi4/TrustedFirmware/bl31.bin index c97aab3895bd3a831d1a3f8c6759959acf2dba04..37aa0c433e9ec4b32bacf383532= 125f722c1cfc9 100644 GIT binary patch delta 10813 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 ToKt?*i)yQtBVy?OBk}(ScM+JC --=20 2.33.0.windows.2