From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DEC19CCA476 for ; Fri, 10 Oct 2025 05:58:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=xgaWLkUQudW1gRzQJX9a+JE2wjsayudgCQrMGfMm4zI=; b=sLyC5vGrW3GjNiy+NzCRZKHb7J mfob/tOclaA0mu6yEVFYV/y5TRuBO8bxUReSg8QqXONLdYEC0HtvQa6JGi7Uy7bzveQttHBK3TV/F +/4WUu4rIVzHvfYF8/GRsVx2Qr3G9j6bsES97JCJnS2MGZKCYAxtcqs6bLMRAiQ/T3pS2er2IOzBj JAALMMFv5UAWj4YoSZ7JMc7VvLkm4sTanUHzN++FCR6jC1XhAlInwjgxFo81fboaFq/ywf2KqwsLb 5Cg90Qiief2w1tB4uRTjsrS7tDEQXT7Kn6Is6wxYUiCU/VUVoKV57lzVakdpertGIU5sp4gKDrI+w F9R+UhBg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v7691-00000007jrZ-35ay; Fri, 10 Oct 2025 05:58:23 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v768y-00000007jrE-3vF5 for linux-arm-kernel@lists.infradead.org; Fri, 10 Oct 2025 05:58:22 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 933CB489DA; Fri, 10 Oct 2025 05:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83535C4CEF1; Fri, 10 Oct 2025 05:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760075900; bh=B5mzjs18/78/AD2RXdtHyRsQIVALLNfkycZggkol9qc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QgylEpd2hrygc4PFI8BZoJyin+K0USvt05snBCqNgDEFpu6e6uGfj0abiblfUoNMO zeG8bPUZQ2tvZa/goZXkGJUl02H9ggTMc9aiRyrt73SNyP3LgDKdDrw+Xj/L7Stinc hEiLGRvruIeVzGgihSWKxuCW91g0WDdXAVFlxdzbyOMlALOf7De0NiCqg2fCeqfP5b VdKn90Zj3K/9Og2UP8hkGl2NBGkcOLeZq9KeIl3TNnkvPxhOBzZxwZrCm6P9N+i53G 5dMaON3FsGQCx0lB+K3PeVN73YNAVVMH+xuV5vIqtxRmgQ5VVf+K1jiGSSBZXzpYNw Y1Sg59ngBO6IQ== Date: Fri, 10 Oct 2025 11:28:18 +0530 From: Sumit Garg To: Mathieu Poirier Cc: Arnaud POULIQUEN , Abdellatif El Khlifi , quic_hdev@quicinc.com, devicetree@vger.kernel.org, Conor Dooley , op-tee@lists.trustedfirmware.org, Bjorn Andersson , linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, Rob Herring , Krzysztof Kozlowski , Jens Wiklander , linux-arm-kernel@lists.infradead.org Subject: Re: [Linux-stm32] [PATCH v19 4/6] dt-bindings: remoteproc: Add compatibility for TEE support Message-ID: References: <20250625094028.758016-1-arnaud.pouliquen@foss.st.com> <20250625094028.758016-5-arnaud.pouliquen@foss.st.com> <62bdb238-7440-451b-84ef-79f846b10ba0@foss.st.com> <8d385f2e-6470-4d66-be0b-a2a448a81fa4@foss.st.com> <0e5a44df-f60a-4523-a791-6318b3c81425@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251009_225821_024695_F9868A21 X-CRM114-Status: GOOD ( 77.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Mathieu, On Wed, Oct 08, 2025 at 10:38:07AM -0600, Mathieu Poirier wrote: > On Tue, 7 Oct 2025 at 07:50, Arnaud POULIQUEN > wrote: > > > > Hello Bjorn, Mathieu, Sumit, > > > > On 9/22/25 10:57, Arnaud POULIQUEN wrote: > > > > > > > > > On 9/19/25 08:46, Sumit Garg wrote: > > >> On Wed, Sep 17, 2025 at 03:47:40PM +0200, Arnaud POULIQUEN wrote: > > >>> > > >>> On 9/17/25 12:08, Sumit Garg wrote: > > >>>> On Tue, Sep 16, 2025 at 03:26:47PM +0200, Arnaud POULIQUEN wrote: > > >>>>> Hello Sumit, > > >>>>> > > >>>>> On 9/16/25 11:14, Sumit Garg wrote: > > >>>>>> Hi Arnaud, > > >>>>>> > > >>>>>> First of all apologies for such a late review comment as previously I > > >>>>>> wasn't CCed or involved in the review of this patch-set. In case > > >>>>>> any of > > >>>>>> my following comments have been discussed in the past then feel > > >>>>>> free to > > >>>>>> point me at relevant discussions. > > >>>>> No worries, there are too many versions of this series to follow > > >>>>> all the > > >>>>> past discussions. I sometimes have difficulty remembering all the > > >>>>> discussions myself :) > > >>>>> > > >>>>>> On Wed, Jun 25, 2025 at 11:40:26AM +0200, Arnaud Pouliquen wrote: > > >>>>>>> The "st,stm32mp1-m4-tee" compatible is utilized in a system > > >>>>>>> configuration > > >>>>>>> where the Cortex-M4 firmware is loaded by the Trusted Execution > > >>>>>>> Environment > > >>>>>>> (TEE). > > >>>>>> Having a DT based compatible for a TEE service to me just feels > > >>>>>> like it > > >>>>>> is redundant here. I can see you have also used a TEE bus based > > >>>>>> device > > >>>>>> too but that is not being properly used. I know subsystems like > > >>>>>> remoteproc, SCMI and others heavily rely on DT to hardcode > > >>>>>> properties of > > >>>>>> system firmware which are rather better to be discovered dynamically. > > >>>>>> > > >>>>>> So I have an open question for you and the remoteproc subsystem > > >>>>>> maintainers being: > > >>>>>> > > >>>>>> Is it feasible to rather leverage the benefits of a fully > > >>>>>> discoverable > > >>>>>> TEE bus rather than relying on platform bus/ DT to hardcode firmware > > >>>>>> properties? > > >>>>> The discoverable TEE bus does not works if the remoteproc is probed > > >>>>> before the OP-TEE bus, in such case no possibility to know if the TEE > > >>>>> TA is not yet available or not available at all. > > >>>>> This point is mentioned in a comment in rproc_tee_register(). > > >>> For the discussion, it’s probably better if I provide more details on > > >>> the > > >>> current OP-TEE implementation and the stm32mp processors. > > >>> > > >>> 1) STM32MP topology: > > >>> - STM32MP1: only a Cortex-M4 remote processor > > >>> - STM32MP2x: a Cortex-M33 and a Cortex-M0 remote processors > > >>> At this stage, only the STM32MP15 is upstreamed; the STM32MP25 is > > >>> waiting > > >>> for this series to be merged. > > >>> > > >>> 2) OP-TEE architecture: > > >>> - A platform-agnostic Trusted Application (TA) handles the bus > > >>> service.[1] > > >>> This TA supports managing multiple remote processors. It can be > > >>> embedded > > >>> regardless of the number of remote processors managed in OP-TEE. > > >>> The decision to embed this service is made at build time based on the > > >>> presence of the remoteproc driver, so it is not device tree > > >>> dependent. > > >>> - STM32MP15: TA activated only if the remoteproc OP-TEE driver is > > >>> probed > > >>> - STM32MP2x: TA always activated as the OP-TEE remoteproc driver > > >>> is always > > >>> probed > > >>> > > >>> - A pseudo Trusted Application implements the platform porting[2], > > >>> relying on registered remoteproc platform drivers. > > >>> > > >>> - Platform driver(s) manage the remote processors.[3][4] > > >>> - If remoteproc is managed by OP-TEE: manages the remoteproc > > >>> lifecycle > > >>> - If remoteproc is managed by Linux: provides access rights to > > >>> Linux to > > >>> manage > > >>> the remoteproc > > >>> > > >>> - STM32MP15: driver probed only if the remoteproc is managed in > > >>> OP-TEE > > >>> - STM32MP2x: driver probed in both cases for the Cortex-M33 > > >>> For the STM32MP25, the TA is always present and queries the > > >>> driver to > > >>> check > > >>> if it supports secure loading. > > >>> > > >>> > > >>> [1] https://elixir.bootlin.com/op-tee/4.7.0/source/ta/remoteproc > > >>> [2] https://elixir.bootlin.com/op-tee/4.7.0/source/core/pta/stm32mp/ > > >>> remoteproc_pta.c > > >>> [3]https://elixir.bootlin.com/op-tee/4.7.0/source/core/drivers/ > > >>> remoteproc/stm32_remoteproc.c > > >>> [4]https://github.com/STMicroelectronics/optee_os/blob/4.0.0-stm32mp/ > > >>> core/drivers/remoteproc/stm32_remoteproc.c > > >> Thanks for the background here. > > >> > > >>>> The reason here is that you are mixing platform and TEE bus for > > >>>> remoteproc > > >>>> driver. For probe, you rely on platform bus and then try to migrate to > > >>>> TEE bus via rproc_tee_register() is the problem here. Instead you > > >>>> should > > >>>> rather probe remoteproc device on TEE bus from the beginning. > > >>> The approach is interesting, but how can we rely on Device Tree (DT) for > > >>> hardware configuration in this case? > > >>> At a minimum, I need to define memory regions and mailboxes. > > >> The hardware configuration in DT should be consumed by OP-TEE and the > > >> kernel probes remoteproc properties from OP-TEE since it's an OP-TEE > > >> mediated remoteproc service you are adding here. > > >>> From my perspective, I would still need a driver probed by DT that > > >>> registers > > >>> a driver on the TEE bus. Therefore, I still need a mechanism to decide > > >>> whether the remote firmware is managed by the secure or non-secure > > >>> context. > > >> As I mentioned below, this should be achievable using the secure-status > > >> property without introducing the new compatible: > > >> > > >> Kernel managed remoteproc: > > >> status = "okay"; secure-status = "disabled"; /* NS-only */ > > >> > > >> OP-TEE managed remoteproc: > > >> status = "disabled"; secure-status = "okay"; /* S-only */ > > >> > > >>> Another issue would be to be able to share the remoteproc TEE service > > >>> between > > >>> several platform remoteproc drivers, in case of multi remote processor > > >>> support. > > >> Making the TEE based remoteproc service independent of DT will surely > > >> make it more scalable to other platforms too. Have a look at how OP-TEE > > >> based HWRNG service scales across platforms. > > > > > > Another important service is SCMI, which drivers use to manage clocks > > > and resets. > > > These clocks and resets are declared in the Device Tree (DT). It seems > > > to me that > > > in this case, we are closer to SCMI than to the RNG service. > > > > > > I propose we discuss this based on a concrete example with the STM32MP25. > > > Although not yet upstreamed, our plan is to manage signed firmware for the > > > Cortex-M33 and Cortex-M0. > > > > > > Please find below my view of the DT resources to address. > > > > > > STM32MP25 Cortex-M33 and Cortex-M0 nodes: > > > > > > m33_rproc { > > > /* M33 watchdog interrupt */ > > > interrupt-parent = <&intc>; > > > interrupts = ; > > > /* power domain management */ > > > power-domains = <&cluster_pd>, <&ret_pd>; > > > power-domain-names = "default", "sleep"; > > > /* RPMsg mailboxes + M33 graceful shutdown request */ > > > mboxes = <&ipcc1 0x0>, <&ipcc1 0x1>, <&ipcc1 2>; > > > mbox-names = "vq0", "vq1", "shutdown"; > > > memory-region = <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>; > > > status = "okay"; > > > }; > > > > > > m0_rproc { > > > /* mailbox for graceful shutdown */ > > > mboxes = <&ipcc2 2>; > > > mbox-names = "shutdown"; > > > /* M0 watchdog */ > > > interrupt-parent = <&intc>; > > > interrupts = ; > > > /* M0 peripheral clocking (not accessible by the M0) */ > > > clocks = <&scmi_clk CK_SCMI_GPIOZ_AM>, > > > <&scmi_clk CK_SCMI_GPIOZ>, > > > <&scmi_clk CK_SCMI_IPCC2>, > > > <&scmi_clk CK_SCMI_IPCC2_AM>, > > > <&rcc CK_LPTIM3_AM>, > > > <&rcc CK_LPUART1_AM>, > > > <&rcc CK_CPU3_AM>, > > > <&rcc CK_CPU3>, > > > <&rcc CK_LPUART1_C3>, > > > <&rcc CK_GPIOZ_C3>, > > > <&rcc CK_LPTIM3_C3>, > > > <&rcc CK_KER_LPUART1>, > > > <&rcc CK_KER_LPTIM3>, > > > <&scmi_clk CK_SCMI_GPIOZ>, > > > <&scmi_clk CK_SCMI_IPCC2>; > > > status = "okay"; > > > }; > > > > > > If we want to remove the DT, we need to consider: > > > > > > - Mechanism to differentiate Cortex-M33 and Cortex-M0: > > > Similar to SCMI, the remoteproc OP-TEE service should support > > > multiprocessor setups without instantiating multiple services. > > > > > > - Mailboxes: > > > > > > A phandle is needed because the mailbox driver is managed by the > > > Linux mailbox driver. STM32MP2 has two mailboxes. > > > Moving towards your proposal would imply creating a mailbox service > > > in TEE to manage non-secure mailboxes for non-secure IPC. This might > > > not be efficient for inter-processor communication. Hardware-wise, it > > > would require the IRQ to be handled by the secure context. > > > > > > - Memory regions: > > > - Hardware limitation: OP-TEE is limited in the number of memory regions > > > it can declare due to Firewall configuration. Moving IPC memory regions > > > reaches this limit. Currently, OP-TEE defines a single region with > > > shareable > > > access rights, which Linux splits into at least three memory regions > > > for RPMsg. > > > - Memory mapping: Memory regions still need to be declared in Linux to > > > prevent > > > Linux from using them. > > > - Virtio/RPMsg: Memory region names are fixed (e.g., devvring), > > > so OP-TEE > > > must declare memory regions in its DT according to Linux naming > > > conventions. > > > > > > - Clock and reset: > > > Some clocks and resets are managed via SCMI, others are not. This > > > would require > > > managing all clocks and resets through SCMI, with possible side > > > effect on the > > > "unused" clock mechanism in Linux ( to be confirmed) > > > > > > - Power domain: > > > Information is needed at the Linux level to determine the low power > > > mode. > > > > > > - Watchdog interrupt: > > > Should be managed by OP-TEE, which requires the hardware to have an > > > associated > > > secure IRQ. > > > > > > - Miscellaneous vendor DT properties: > > > How to be sure that these can be addressed through TEE services? > > > > > > Regarding the existing DT needs, it seems to me that removing the DT > > > would require > > > moving all node resource management into TEE ( if really possible). This > > > would > > > increase TEE complexity and footprint, reduce system efficiency, and > > > make supporting > > > other platforms less scalable. > > > > > > That said, it probably also depends on the TEE implementation. > > > And we should support both. This could be done by introducing a second > > > UUID. > > > but in this case should it be the same driver? > > > > I am unsure how to move forward here. It seems to me that addressing Sumit's > > request for a TEE without a device tree is not compatible with the current > > OP-TEE implementation, at least for the STM32MP platforms. > > > > Perhaps the simplest approach is to abandon the effort to make this generic > > and instead rename tee_remoteproc.c to stm32_tee_remoteproc.c, making it > > platform-dependent. Then, if another platform wants to reuse it with OP-TEE > > FFA or another TEE, the file can be renamed. > > > > Does this proposal would make sense to you? > > I would certainly like to see a consensus, and more specifically, an > implementation that follows what other drivers that interact with the > secure world do. I currently do not have a clear understanding of > what those other drivers do, and doing the research will take > bandwidth that I also currently do not have. The major problem I see with this patchset is the probing of remoteproc on platform bus and then try to move to a discoverable TEE bus. As I replied in the other thread, we should address the unavoidable DT dependency following what other discoverable buses like PCI etc. does. -Sumit > This situation is > expected to persist at least until December. > > As such I see two avenues for this patchset: > (1) You seek to find a solution that is amenable to you, Sumit, > Abdellatif and Harshal (I had to add the latter two to this email > thread). > (2) You wait until December, and likely beyond, until I have time to > do the research needed to advise on the way forward. > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.trustedfirmware.org (lists.trustedfirmware.org [18.214.241.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 47797CCA476 for ; Fri, 10 Oct 2025 05:58:38 +0000 (UTC) Received: from lists.trustedfirmware.org (localhost [127.0.0.1]) by lists.trustedfirmware.org (Postfix) with ESMTP id 7EC4242F1F for ; Fri, 10 Oct 2025 05:58:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.trustedfirmware.org; s=2024; t=1760075917; bh=bBABW50/2sOO5iPHXnvEQBXp0pkhQcLnrJIlkCNC2iA=; h=Date:To:Subject:References:In-Reply-To:CC:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Reply-To:From; b=rHywjjc8WtUKWVrEUOvJPuh+mvyZBAOpVfh7gZTmotw90GSO56C4GXo84AeqIOzh8 s5yJreRt7rueD4Ujobw4k6K+17UBlXaUW6ph11eIT7C1piUJY/MxXbeQYqzx5iZ7Og 0jPqUu84z20jNq7sFPV13c60tbNW1dtQh5OfBFbgq4WZLedLYC6Y6l4XHCe28VN8zg Sd6eeE7JMItQOeAo65fASEd6ru0SGgE0dBWJXhV/6777aHiPQ0wvdhksTbA2+VjOlj iM4eKopTCqv9IsDOnqLqgr1xKKaUF1MKcX6wZAJ6R6J+VOCL/3SaeSi3gG0zoqEmaw HSFdzYIGg9DCw== Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by lists.trustedfirmware.org (Postfix) with ESMTPS id 60AA141A5E for ; Fri, 10 Oct 2025 05:58:21 +0000 (UTC) Authentication-Results: lists.trustedfirmware.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=QgylEpd2; dkim-atps=neutral Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 933CB489DA; Fri, 10 Oct 2025 05:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83535C4CEF1; Fri, 10 Oct 2025 05:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760075900; bh=B5mzjs18/78/AD2RXdtHyRsQIVALLNfkycZggkol9qc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QgylEpd2hrygc4PFI8BZoJyin+K0USvt05snBCqNgDEFpu6e6uGfj0abiblfUoNMO zeG8bPUZQ2tvZa/goZXkGJUl02H9ggTMc9aiRyrt73SNyP3LgDKdDrw+Xj/L7Stinc hEiLGRvruIeVzGgihSWKxuCW91g0WDdXAVFlxdzbyOMlALOf7De0NiCqg2fCeqfP5b VdKn90Zj3K/9Og2UP8hkGl2NBGkcOLeZq9KeIl3TNnkvPxhOBzZxwZrCm6P9N+i53G 5dMaON3FsGQCx0lB+K3PeVN73YNAVVMH+xuV5vIqtxRmgQ5VVf+K1jiGSSBZXzpYNw Y1Sg59ngBO6IQ== Date: Fri, 10 Oct 2025 11:28:18 +0530 To: Mathieu Poirier Subject: Re: [Linux-stm32] [PATCH v19 4/6] dt-bindings: remoteproc: Add compatibility for TEE support Message-ID: References: <20250625094028.758016-1-arnaud.pouliquen@foss.st.com> <20250625094028.758016-5-arnaud.pouliquen@foss.st.com> <62bdb238-7440-451b-84ef-79f846b10ba0@foss.st.com> <8d385f2e-6470-4d66-be0b-a2a448a81fa4@foss.st.com> <0e5a44df-f60a-4523-a791-6318b3c81425@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: X-Rspamd-Queue-Id: 60AA141A5E X-Spamd-Bar: --- X-Spamd-Result: default: False [-4.00 / 15.00]; BAYES_HAM(-3.00)[99.99%]; DWL_DNSWL_MED(-2.00)[kernel.org:dkim]; SUSPICIOUS_RECIPS(1.50)[]; DMARC_POLICY_ALLOW(-0.50)[kernel.org,quarantine]; MID_RHS_NOT_FQDN(0.50)[]; R_SPF_ALLOW(-0.20)[+ip4:172.234.252.31]; R_DKIM_ALLOW(-0.20)[kernel.org:s=k20201202]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; ASN(0.00)[asn:63949, ipnet:172.234.224.0/19, country:SG]; MISSING_XM_UA(0.00)[]; MIME_TRACE(0.00)[0:+]; RCPT_COUNT_TWELVE(0.00)[15]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TAGGED_RCPT(0.00)[dt]; FROM_HAS_DN(0.00)[]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_HAM(-0.00)[-0.999]; DKIM_TRACE(0.00)[kernel.org:+] X-Rspamd-Action: no action X-Rspamd-Server: lists.trustedfirmware.org Message-ID-Hash: LLNBB6OG6KEYQROQ433FI3C5K2RO4J4M X-Message-ID-Hash: LLNBB6OG6KEYQROQ433FI3C5K2RO4J4M X-MailFrom: sumit.garg@kernel.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-op-tee.lists.trustedfirmware.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Arnaud POULIQUEN , Abdellatif El Khlifi , quic_hdev@quicinc.com, devicetree@vger.kernel.org, Conor Dooley , op-tee@lists.trustedfirmware.org, Bjorn Andersson , linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, Rob Herring , Krzysztof Kozlowski , linux-arm-kernel@lists.infradead.org X-Mailman-Version: 3.3.5 Precedence: list List-Id: Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Sumit Garg via OP-TEE Reply-To: Sumit Garg SGkgTWF0aGlldSwNCg0KT24gV2VkLCBPY3QgMDgsIDIwMjUgYXQgMTA6Mzg6MDdBTSAtMDYwMCwg TWF0aGlldSBQb2lyaWVyIHdyb3RlOg0KPiBPbiBUdWUsIDcgT2N0IDIwMjUgYXQgMDc6NTAsIEFy bmF1ZCBQT1VMSVFVRU4NCj4gPGFybmF1ZC5wb3VsaXF1ZW5AZm9zcy5zdC5jb20+IHdyb3RlOg0K PiA+DQo+ID4gSGVsbG8gQmpvcm4sIE1hdGhpZXUsIFN1bWl0LA0KPiA+DQo+ID4gT24gOS8yMi8y NSAxMDo1NywgQXJuYXVkIFBPVUxJUVVFTiB3cm90ZToNCj4gPiA+DQo+ID4gPg0KPiA+ID4gT24g OS8xOS8yNSAwODo0NiwgU3VtaXQgR2FyZyB3cm90ZToNCj4gPiA+PiBPbiBXZWQsIFNlcCAxNywg MjAyNSBhdCAwMzo0Nzo0MFBNICswMjAwLCBBcm5hdWQgUE9VTElRVUVOIHdyb3RlOg0KPiA+ID4+ Pg0KPiA+ID4+PiBPbiA5LzE3LzI1IDEyOjA4LCBTdW1pdCBHYXJnIHdyb3RlOg0KPiA+ID4+Pj4g T24gVHVlLCBTZXAgMTYsIDIwMjUgYXQgMDM6MjY6NDdQTSArMDIwMCwgQXJuYXVkIFBPVUxJUVVF TiB3cm90ZToNCj4gPiA+Pj4+PiBIZWxsbyBTdW1pdCwNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IE9u IDkvMTYvMjUgMTE6MTQsIFN1bWl0IEdhcmcgd3JvdGU6DQo+ID4gPj4+Pj4+IEhpIEFybmF1ZCwN Cj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gRmlyc3Qgb2YgYWxsIGFwb2xvZ2llcyBmb3Igc3VjaCBh IGxhdGUgcmV2aWV3IGNvbW1lbnQgYXMgcHJldmlvdXNseSBJDQo+ID4gPj4+Pj4+IHdhc24ndCBD Q2VkIG9yIGludm9sdmVkIGluIHRoZSByZXZpZXcgb2YgdGhpcyBwYXRjaC1zZXQuIEluIGNhc2UN Cj4gPiA+Pj4+Pj4gYW55IG9mDQo+ID4gPj4+Pj4+IG15IGZvbGxvd2luZyBjb21tZW50cyBoYXZl IGJlZW4gZGlzY3Vzc2VkIGluIHRoZSBwYXN0IHRoZW4gZmVlbA0KPiA+ID4+Pj4+PiBmcmVlIHRv DQo+ID4gPj4+Pj4+IHBvaW50IG1lIGF0IHJlbGV2YW50IGRpc2N1c3Npb25zLg0KPiA+ID4+Pj4+ IE5vIHdvcnJpZXMsIHRoZXJlIGFyZSB0b28gbWFueSB2ZXJzaW9ucyBvZiB0aGlzIHNlcmllcyB0 byBmb2xsb3cNCj4gPiA+Pj4+PiBhbGwgdGhlDQo+ID4gPj4+Pj4gcGFzdCBkaXNjdXNzaW9ucy4g SSBzb21ldGltZXMgaGF2ZSBkaWZmaWN1bHR5IHJlbWVtYmVyaW5nIGFsbCB0aGUNCj4gPiA+Pj4+ PiBkaXNjdXNzaW9ucyBteXNlbGYgOikNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+PiBPbiBXZWQsIEp1 biAyNSwgMjAyNSBhdCAxMTo0MDoyNkFNICswMjAwLCBBcm5hdWQgUG91bGlxdWVuIHdyb3RlOg0K PiA+ID4+Pj4+Pj4gVGhlICJzdCxzdG0zMm1wMS1tNC10ZWUiIGNvbXBhdGlibGUgaXMgdXRpbGl6 ZWQgaW4gYSBzeXN0ZW0NCj4gPiA+Pj4+Pj4+IGNvbmZpZ3VyYXRpb24NCj4gPiA+Pj4+Pj4+IHdo ZXJlIHRoZSBDb3J0ZXgtTTQgZmlybXdhcmUgaXMgbG9hZGVkIGJ5IHRoZSBUcnVzdGVkIEV4ZWN1 dGlvbg0KPiA+ID4+Pj4+Pj4gRW52aXJvbm1lbnQNCj4gPiA+Pj4+Pj4+IChURUUpLg0KPiA+ID4+ Pj4+PiBIYXZpbmcgYSBEVCBiYXNlZCBjb21wYXRpYmxlIGZvciBhIFRFRSBzZXJ2aWNlIHRvIG1l IGp1c3QgZmVlbHMNCj4gPiA+Pj4+Pj4gbGlrZSBpdA0KPiA+ID4+Pj4+PiBpcyByZWR1bmRhbnQg aGVyZS4gSSBjYW4gc2VlIHlvdSBoYXZlIGFsc28gdXNlZCBhIFRFRSBidXMgYmFzZWQNCj4gPiA+ Pj4+Pj4gZGV2aWNlDQo+ID4gPj4+Pj4+IHRvbyBidXQgdGhhdCBpcyBub3QgYmVpbmcgcHJvcGVy bHkgdXNlZC4gSSBrbm93IHN1YnN5c3RlbXMgbGlrZQ0KPiA+ID4+Pj4+PiByZW1vdGVwcm9jLCBT Q01JIGFuZCBvdGhlcnMgaGVhdmlseSByZWx5IG9uIERUIHRvIGhhcmRjb2RlDQo+ID4gPj4+Pj4+ IHByb3BlcnRpZXMgb2YNCj4gPiA+Pj4+Pj4gc3lzdGVtIGZpcm13YXJlIHdoaWNoIGFyZSByYXRo ZXIgYmV0dGVyIHRvIGJlIGRpc2NvdmVyZWQgZHluYW1pY2FsbHkuDQo+ID4gPj4+Pj4+DQo+ID4g Pj4+Pj4+IFNvIEkgaGF2ZSBhbiBvcGVuIHF1ZXN0aW9uIGZvciB5b3UgYW5kIHRoZSByZW1vdGVw cm9jIHN1YnN5c3RlbQ0KPiA+ID4+Pj4+PiBtYWludGFpbmVycyBiZWluZzoNCj4gPiA+Pj4+Pj4N Cj4gPiA+Pj4+Pj4gSXMgaXQgZmVhc2libGUgdG8gcmF0aGVyIGxldmVyYWdlIHRoZSBiZW5lZml0 cyBvZiBhIGZ1bGx5DQo+ID4gPj4+Pj4+IGRpc2NvdmVyYWJsZQ0KPiA+ID4+Pj4+PiBURUUgYnVz IHJhdGhlciB0aGFuIHJlbHlpbmcgb24gcGxhdGZvcm0gYnVzLyBEVCB0byBoYXJkY29kZSBmaXJt d2FyZQ0KPiA+ID4+Pj4+PiBwcm9wZXJ0aWVzPw0KPiA+ID4+Pj4+IFRoZSBkaXNjb3ZlcmFibGUg VEVFIGJ1cyBkb2VzIG5vdCB3b3JrcyBpZiB0aGUgcmVtb3RlcHJvYyBpcyBwcm9iZWQNCj4gPiA+ Pj4+PiBiZWZvcmUgdGhlIE9QLVRFRSBidXMsIGluIHN1Y2ggY2FzZSAgbm8gcG9zc2liaWxpdHkg dG8ga25vdyBpZiB0aGUgVEVFDQo+ID4gPj4+Pj4gVEEgaXMgbm90IHlldCBhdmFpbGFibGUgb3Ig bm90IGF2YWlsYWJsZSBhdCBhbGwuDQo+ID4gPj4+Pj4gVGhpcyBwb2ludCBpcyBtZW50aW9uZWQg aW4gYSBjb21tZW50IGluIHJwcm9jX3RlZV9yZWdpc3RlcigpLg0KPiA+ID4+PiBGb3IgdGhlIGRp c2N1c3Npb24sIGl04oCZcyBwcm9iYWJseSBiZXR0ZXIgaWYgSSBwcm92aWRlIG1vcmUgZGV0YWls cyBvbg0KPiA+ID4+PiB0aGUNCj4gPiA+Pj4gY3VycmVudCBPUC1URUUgaW1wbGVtZW50YXRpb24g YW5kIHRoZSBzdG0zMm1wIHByb2Nlc3NvcnMuDQo+ID4gPj4+DQo+ID4gPj4+IDEpIFNUTTMyTVAg dG9wb2xvZ3k6DQo+ID4gPj4+ICAgIC0gU1RNMzJNUDE6IG9ubHkgYSBDb3J0ZXgtTTQgcmVtb3Rl IHByb2Nlc3Nvcg0KPiA+ID4+PiAgICAtICBTVE0zMk1QMng6IGEgQ29ydGV4LU0zMyBhbmQgYSBD b3J0ZXgtTTAgcmVtb3RlIHByb2Nlc3NvcnMNCj4gPiA+Pj4gICAgQXQgdGhpcyBzdGFnZSwgb25s eSB0aGUgU1RNMzJNUDE1IGlzIHVwc3RyZWFtZWQ7IHRoZSBTVE0zMk1QMjUgaXMNCj4gPiA+Pj4g d2FpdGluZw0KPiA+ID4+PiAgICBmb3IgdGhpcyBzZXJpZXMgdG8gYmUgbWVyZ2VkLg0KPiA+ID4+ Pg0KPiA+ID4+PiAyKSBPUC1URUUgYXJjaGl0ZWN0dXJlOg0KPiA+ID4+PiAtIEEgcGxhdGZvcm0t YWdub3N0aWMgVHJ1c3RlZCBBcHBsaWNhdGlvbiAoVEEpIGhhbmRsZXMgdGhlIGJ1cw0KPiA+ID4+ PiBzZXJ2aWNlLlsxXQ0KPiA+ID4+PiAgICBUaGlzIFRBIHN1cHBvcnRzIG1hbmFnaW5nIG11bHRp cGxlIHJlbW90ZSBwcm9jZXNzb3JzLiBJdCBjYW4gYmUNCj4gPiA+Pj4gZW1iZWRkZWQNCj4gPiA+ Pj4gICAgcmVnYXJkbGVzcyBvZiB0aGUgbnVtYmVyIG9mIHJlbW90ZSBwcm9jZXNzb3JzIG1hbmFn ZWQgaW4gT1AtVEVFLg0KPiA+ID4+PiAgICBUaGUgZGVjaXNpb24gdG8gZW1iZWQgdGhpcyBzZXJ2 aWNlIGlzIG1hZGUgYXQgYnVpbGQgdGltZSBiYXNlZCBvbiB0aGUNCj4gPiA+Pj4gICAgcHJlc2Vu Y2Ugb2YgdGhlIHJlbW90ZXByb2MgZHJpdmVyLCBzbyBpdCBpcyBub3QgZGV2aWNlIHRyZWUNCj4g PiA+Pj4gZGVwZW5kZW50Lg0KPiA+ID4+PiAgICAtIFNUTTMyTVAxNTogVEEgYWN0aXZhdGVkIG9u bHkgaWYgdGhlIHJlbW90ZXByb2MgT1AtVEVFIGRyaXZlciBpcw0KPiA+ID4+PiBwcm9iZWQNCj4g PiA+Pj4gICAgLSBTVE0zMk1QMng6IFRBIGFsd2F5cyBhY3RpdmF0ZWQgYXMgdGhlIE9QLVRFRSBy ZW1vdGVwcm9jIGRyaXZlcg0KPiA+ID4+PiBpcyBhbHdheXMNCj4gPiA+Pj4gcHJvYmVkDQo+ID4g Pj4+DQo+ID4gPj4+IC0gQSBwc2V1ZG8gVHJ1c3RlZCBBcHBsaWNhdGlvbiBpbXBsZW1lbnRzIHRo ZSBwbGF0Zm9ybSBwb3J0aW5nWzJdLA0KPiA+ID4+PiAgICByZWx5aW5nIG9uIHJlZ2lzdGVyZWQg cmVtb3RlcHJvYyBwbGF0Zm9ybSBkcml2ZXJzLg0KPiA+ID4+Pg0KPiA+ID4+PiAtIFBsYXRmb3Jt IGRyaXZlcihzKSBtYW5hZ2UgdGhlIHJlbW90ZSBwcm9jZXNzb3JzLlszXVs0XQ0KPiA+ID4+PiAg ICAtIElmIHJlbW90ZXByb2MgaXMgbWFuYWdlZCBieSBPUC1URUU6IG1hbmFnZXMgdGhlIHJlbW90 ZXByb2MNCj4gPiA+Pj4gbGlmZWN5Y2xlDQo+ID4gPj4+ICAgIC0gSWYgcmVtb3RlcHJvYyBpcyBt YW5hZ2VkIGJ5IExpbnV4OiBwcm92aWRlcyBhY2Nlc3MgcmlnaHRzIHRvDQo+ID4gPj4+IExpbnV4 IHRvDQo+ID4gPj4+IG1hbmFnZQ0KPiA+ID4+PiAgICAgIHRoZSByZW1vdGVwcm9jDQo+ID4gPj4+ DQo+ID4gPj4+ICAgIC0gU1RNMzJNUDE1OiBkcml2ZXIgcHJvYmVkIG9ubHkgaWYgdGhlIHJlbW90 ZXByb2MgaXMgbWFuYWdlZCBpbg0KPiA+ID4+PiBPUC1URUUNCj4gPiA+Pj4gICAgLSBTVE0zMk1Q Mng6IGRyaXZlciBwcm9iZWQgaW4gYm90aCBjYXNlcyBmb3IgdGhlIENvcnRleC1NMzMNCj4gPiA+ Pj4gICAgICBGb3IgdGhlIFNUTTMyTVAyNSwgdGhlIFRBIGlzIGFsd2F5cyBwcmVzZW50IGFuZCBx dWVyaWVzIHRoZQ0KPiA+ID4+PiBkcml2ZXIgdG8NCj4gPiA+Pj4gY2hlY2sNCj4gPiA+Pj4gICAg ICBpZiBpdCBzdXBwb3J0cyBzZWN1cmUgbG9hZGluZy4NCj4gPiA+Pj4NCj4gPiA+Pj4NCj4gPiA+ Pj4gWzFdIGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL29wLXRlZS80LjcuMC9zb3VyY2UvdGEv cmVtb3RlcHJvYw0KPiA+ID4+PiBbMl0gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vb3AtdGVl LzQuNy4wL3NvdXJjZS9jb3JlL3B0YS9zdG0zMm1wLw0KPiA+ID4+PiByZW1vdGVwcm9jX3B0YS5j DQo+ID4gPj4+IFszXWh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL29wLXRlZS80LjcuMC9zb3Vy Y2UvY29yZS9kcml2ZXJzLw0KPiA+ID4+PiByZW1vdGVwcm9jL3N0bTMyX3JlbW90ZXByb2MuYw0K PiA+ID4+PiBbNF1odHRwczovL2dpdGh1Yi5jb20vU1RNaWNyb2VsZWN0cm9uaWNzL29wdGVlX29z L2Jsb2IvNC4wLjAtc3RtMzJtcC8NCj4gPiA+Pj4gY29yZS9kcml2ZXJzL3JlbW90ZXByb2Mvc3Rt MzJfcmVtb3RlcHJvYy5jDQo+ID4gPj4gVGhhbmtzIGZvciB0aGUgYmFja2dyb3VuZCBoZXJlLg0K PiA+ID4+DQo+ID4gPj4+PiBUaGUgcmVhc29uIGhlcmUgaXMgdGhhdCB5b3UgYXJlIG1peGluZyBw bGF0Zm9ybSBhbmQgVEVFIGJ1cyBmb3INCj4gPiA+Pj4+IHJlbW90ZXByb2MNCj4gPiA+Pj4+IGRy aXZlci4gRm9yIHByb2JlLCB5b3UgcmVseSBvbiBwbGF0Zm9ybSBidXMgYW5kIHRoZW4gdHJ5IHRv IG1pZ3JhdGUgdG8NCj4gPiA+Pj4+IFRFRSBidXMgdmlhIHJwcm9jX3RlZV9yZWdpc3RlcigpIGlz IHRoZSBwcm9ibGVtIGhlcmUuIEluc3RlYWQgeW91DQo+ID4gPj4+PiBzaG91bGQNCj4gPiA+Pj4+ IHJhdGhlciBwcm9iZSByZW1vdGVwcm9jIGRldmljZSBvbiBURUUgYnVzIGZyb20gdGhlIGJlZ2lu bmluZy4NCj4gPiA+Pj4gVGhlIGFwcHJvYWNoIGlzIGludGVyZXN0aW5nLCBidXQgaG93IGNhbiB3 ZSByZWx5IG9uIERldmljZSBUcmVlIChEVCkgZm9yDQo+ID4gPj4+IGhhcmR3YXJlIGNvbmZpZ3Vy YXRpb24gaW4gdGhpcyBjYXNlPw0KPiA+ID4+PiBBdCBhIG1pbmltdW0sIEkgbmVlZCB0byBkZWZp bmUgbWVtb3J5IHJlZ2lvbnMgYW5kIG1haWxib3hlcy4NCj4gPiA+PiBUaGUgaGFyZHdhcmUgY29u ZmlndXJhdGlvbiBpbiBEVCBzaG91bGQgYmUgY29uc3VtZWQgYnkgT1AtVEVFIGFuZCB0aGUNCj4g PiA+PiBrZXJuZWwgcHJvYmVzIHJlbW90ZXByb2MgcHJvcGVydGllcyBmcm9tIE9QLVRFRSBzaW5j ZSBpdCdzIGFuIE9QLVRFRQ0KPiA+ID4+IG1lZGlhdGVkIHJlbW90ZXByb2Mgc2VydmljZSB5b3Ug YXJlIGFkZGluZyBoZXJlLg0KPiA+ID4+PiAgRnJvbSBteSBwZXJzcGVjdGl2ZSwgSSB3b3VsZCBz dGlsbCBuZWVkIGEgZHJpdmVyIHByb2JlZCBieSBEVCB0aGF0DQo+ID4gPj4+IHJlZ2lzdGVycw0K PiA+ID4+PiBhIGRyaXZlciBvbiB0aGUgVEVFIGJ1cy4gVGhlcmVmb3JlLCBJIHN0aWxsIG5lZWQg YSBtZWNoYW5pc20gdG8gZGVjaWRlDQo+ID4gPj4+IHdoZXRoZXIgdGhlIHJlbW90ZSBmaXJtd2Fy ZSBpcyBtYW5hZ2VkIGJ5IHRoZSBzZWN1cmUgb3Igbm9uLXNlY3VyZQ0KPiA+ID4+PiBjb250ZXh0 Lg0KPiA+ID4+IEFzIEkgbWVudGlvbmVkIGJlbG93LCB0aGlzIHNob3VsZCBiZSBhY2hpZXZhYmxl IHVzaW5nIHRoZSBzZWN1cmUtc3RhdHVzDQo+ID4gPj4gcHJvcGVydHkgd2l0aG91dCBpbnRyb2R1 Y2luZyB0aGUgbmV3IGNvbXBhdGlibGU6DQo+ID4gPj4NCj4gPiA+PiBLZXJuZWwgbWFuYWdlZCBy ZW1vdGVwcm9jOg0KPiA+ID4+ICAgICBzdGF0dXMgPSAib2theSI7IHNlY3VyZS1zdGF0dXMgPSAi ZGlzYWJsZWQiOyAgICAgLyogTlMtb25seSAqLw0KPiA+ID4+DQo+ID4gPj4gT1AtVEVFIG1hbmFn ZWQgcmVtb3RlcHJvYzoNCj4gPiA+PiAgICAgc3RhdHVzID0gImRpc2FibGVkIjsgc2VjdXJlLXN0 YXR1cyA9ICJva2F5IjsgICAgIC8qIFMtb25seSAqLw0KPiA+ID4+DQo+ID4gPj4+IEFub3RoZXIg aXNzdWUgd291bGQgYmUgdG8gYmUgYWJsZSB0byBzaGFyZSB0aGUgcmVtb3RlcHJvYyBURUUgc2Vy dmljZQ0KPiA+ID4+PiBiZXR3ZWVuDQo+ID4gPj4+IHNldmVyYWwgcGxhdGZvcm0gcmVtb3RlcHJv YyBkcml2ZXJzLCBpbiBjYXNlIG9mIG11bHRpIHJlbW90ZSBwcm9jZXNzb3INCj4gPiA+Pj4gc3Vw cG9ydC4NCj4gPiA+PiBNYWtpbmcgdGhlIFRFRSBiYXNlZCByZW1vdGVwcm9jIHNlcnZpY2UgaW5k ZXBlbmRlbnQgb2YgRFQgd2lsbCBzdXJlbHkNCj4gPiA+PiBtYWtlIGl0IG1vcmUgc2NhbGFibGUg dG8gb3RoZXIgcGxhdGZvcm1zIHRvby4gSGF2ZSBhIGxvb2sgYXQgaG93IE9QLVRFRQ0KPiA+ID4+ IGJhc2VkIEhXUk5HIHNlcnZpY2Ugc2NhbGVzIGFjcm9zcyBwbGF0Zm9ybXMuDQo+ID4gPg0KPiA+ ID4gQW5vdGhlciBpbXBvcnRhbnQgc2VydmljZSBpcyBTQ01JLCB3aGljaCBkcml2ZXJzIHVzZSB0 byBtYW5hZ2UgY2xvY2tzDQo+ID4gPiBhbmQgcmVzZXRzLg0KPiA+ID4gVGhlc2UgY2xvY2tzIGFu ZCByZXNldHMgYXJlIGRlY2xhcmVkIGluIHRoZSBEZXZpY2UgVHJlZSAoRFQpLiBJdCBzZWVtcw0K PiA+ID4gdG8gbWUgdGhhdA0KPiA+ID4gaW4gdGhpcyBjYXNlLCB3ZSBhcmUgY2xvc2VyIHRvIFND TUkgdGhhbiB0byB0aGUgUk5HIHNlcnZpY2UuDQo+ID4gPg0KPiA+ID4gSSBwcm9wb3NlIHdlIGRp c2N1c3MgdGhpcyBiYXNlZCBvbiBhIGNvbmNyZXRlIGV4YW1wbGUgd2l0aCB0aGUgU1RNMzJNUDI1 Lg0KPiA+ID4gQWx0aG91Z2ggbm90IHlldCB1cHN0cmVhbWVkLCBvdXIgcGxhbiBpcyB0byBtYW5h Z2Ugc2lnbmVkIGZpcm13YXJlIGZvciB0aGUNCj4gPiA+IENvcnRleC1NMzMgYW5kIENvcnRleC1N MC4NCj4gPiA+DQo+ID4gPiBQbGVhc2UgZmluZCBiZWxvdyBteSB2aWV3IG9mIHRoZSBEVCByZXNv dXJjZXMgdG8gYWRkcmVzcy4NCj4gPiA+DQo+ID4gPiBTVE0zMk1QMjUgIENvcnRleC1NMzMgYW5k IENvcnRleC1NMCBub2RlczoNCj4gPiA+DQo+ID4gPiBtMzNfcnByb2Mgew0KPiA+ID4gICAgLyog TTMzIHdhdGNoZG9nIGludGVycnVwdCAqLw0KPiA+ID4gICAgaW50ZXJydXB0LXBhcmVudCA9IDwm aW50Yz47DQo+ID4gPiAgICBpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNCBJUlFfVFlQRV9MRVZFTF9I SUdIPjsNCj4gPiA+ICAgIC8qIHBvd2VyIGRvbWFpbiBtYW5hZ2VtZW50ICovDQo+ID4gPiAgICBw b3dlci1kb21haW5zID0gPCZjbHVzdGVyX3BkPiwgPCZyZXRfcGQ+Ow0KPiA+ID4gICAgcG93ZXIt ZG9tYWluLW5hbWVzID0gImRlZmF1bHQiLCAic2xlZXAiOw0KPiA+ID4gICAgLyogUlBNc2cgbWFp bGJveGVzICsgTTMzIGdyYWNlZnVsIHNodXRkb3duIHJlcXVlc3QgKi8NCj4gPiA+ICAgIG1ib3hl cyA9IDwmaXBjYzEgMHgwPiwgPCZpcGNjMSAweDE+LCA8JmlwY2MxIDI+Ow0KPiA+ID4gICAgbWJv eC1uYW1lcyA9ICJ2cTAiLCAidnExIiwgInNodXRkb3duIjsNCj4gPiA+ICAgIG1lbW9yeS1yZWdp b24gPSA8JnZkZXYwdnJpbmcwPiwgPCZ2ZGV2MHZyaW5nMT4sIDwmdmRldjBidWZmZXI+Ow0KPiA+ ID4gICAgc3RhdHVzID0gIm9rYXkiOw0KPiA+ID4gfTsNCj4gPiA+DQo+ID4gPiBtMF9ycHJvYyB7 DQo+ID4gPiAgICAvKiBtYWlsYm94IGZvciBncmFjZWZ1bCBzaHV0ZG93biAqLw0KPiA+ID4gICAg bWJveGVzID0gPCZpcGNjMiAyPjsNCj4gPiA+ICAgIG1ib3gtbmFtZXMgPSAic2h1dGRvd24iOw0K PiA+ID4gICAgLyogTTAgd2F0Y2hkb2cgKi8NCj4gPiA+ICAgaW50ZXJydXB0LXBhcmVudCA9IDwm aW50Yz47DQo+ID4gPiAgIGludGVycnVwdHMgPSA8R0lDX1NQSSA3IElSUV9UWVBFX0xFVkVMX0hJ R0g+Ow0KPiA+ID4gICAvKiBNMCBwZXJpcGhlcmFsIGNsb2NraW5nIChub3QgYWNjZXNzaWJsZSBi eSB0aGUgTTApICovDQo+ID4gPiAgIGNsb2NrcyA9IDwmc2NtaV9jbGsgQ0tfU0NNSV9HUElPWl9B TT4sDQo+ID4gPiAgIDwmc2NtaV9jbGsgQ0tfU0NNSV9HUElPWj4sDQo+ID4gPiAgIDwmc2NtaV9j bGsgQ0tfU0NNSV9JUENDMj4sDQo+ID4gPiAgIDwmc2NtaV9jbGsgQ0tfU0NNSV9JUENDMl9BTT4s DQo+ID4gPiAgIDwmcmNjIENLX0xQVElNM19BTT4sDQo+ID4gPiAgIDwmcmNjIENLX0xQVUFSVDFf QU0+LA0KPiA+ID4gICA8JnJjYyBDS19DUFUzX0FNPiwNCj4gPiA+ICAgPCZyY2MgQ0tfQ1BVMz4s DQo+ID4gPiAgIDwmcmNjIENLX0xQVUFSVDFfQzM+LA0KPiA+ID4gICA8JnJjYyBDS19HUElPWl9D Mz4sDQo+ID4gPiAgIDwmcmNjIENLX0xQVElNM19DMz4sDQo+ID4gPiAgIDwmcmNjIENLX0tFUl9M UFVBUlQxPiwNCj4gPiA+ICAgPCZyY2MgQ0tfS0VSX0xQVElNMz4sDQo+ID4gPiAgIDwmc2NtaV9j bGsgQ0tfU0NNSV9HUElPWj4sDQo+ID4gPiAgIDwmc2NtaV9jbGsgQ0tfU0NNSV9JUENDMj47DQo+ ID4gPiAgIHN0YXR1cyA9ICJva2F5IjsNCj4gPiA+IH07DQo+ID4gPg0KPiA+ID4gSWYgd2Ugd2Fu dCB0byByZW1vdmUgdGhlIERULCB3ZSBuZWVkIHRvIGNvbnNpZGVyOg0KPiA+ID4NCj4gPiA+IC0g TWVjaGFuaXNtIHRvIGRpZmZlcmVudGlhdGUgQ29ydGV4LU0zMyBhbmQgQ29ydGV4LU0wOg0KPiA+ ID4gICAgU2ltaWxhciB0byBTQ01JLCB0aGUgcmVtb3RlcHJvYyBPUC1URUUgc2VydmljZSBzaG91 bGQgc3VwcG9ydA0KPiA+ID4gICBtdWx0aXByb2Nlc3NvciBzZXR1cHMgd2l0aG91dCBpbnN0YW50 aWF0aW5nIG11bHRpcGxlIHNlcnZpY2VzLg0KPiA+ID4NCj4gPiA+IC0gTWFpbGJveGVzOg0KPiA+ ID4NCj4gPiA+ICAgIEEgcGhhbmRsZSBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgbWFpbGJveCBkcml2 ZXIgaXMgbWFuYWdlZCBieSB0aGUNCj4gPiA+ICAgIExpbnV4IG1haWxib3ggZHJpdmVyLiBTVE0z Mk1QMiBoYXMgdHdvIG1haWxib3hlcy4NCj4gPiA+ICAgIE1vdmluZyB0b3dhcmRzIHlvdXIgcHJv cG9zYWwgd291bGQgaW1wbHkgY3JlYXRpbmcgYSBtYWlsYm94IHNlcnZpY2UNCj4gPiA+ICAgIGlu IFRFRSB0byBtYW5hZ2Ugbm9uLXNlY3VyZSBtYWlsYm94ZXMgZm9yIG5vbi1zZWN1cmUgSVBDLiBU aGlzIG1pZ2h0DQo+ID4gPiAgICBub3QgYmUgZWZmaWNpZW50IGZvciBpbnRlci1wcm9jZXNzb3Ig Y29tbXVuaWNhdGlvbi4gSGFyZHdhcmUtd2lzZSwgaXQNCj4gPiA+ICAgIHdvdWxkIHJlcXVpcmUg dGhlIElSUSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBzZWN1cmUgY29udGV4dC4NCj4gPiA+DQo+ID4g PiAtIE1lbW9yeSByZWdpb25zOg0KPiA+ID4gICAtIEhhcmR3YXJlIGxpbWl0YXRpb246IE9QLVRF RSBpcyBsaW1pdGVkIGluIHRoZSBudW1iZXIgb2YgbWVtb3J5IHJlZ2lvbnMNCj4gPiA+ICAgICBp dCBjYW4gZGVjbGFyZSBkdWUgdG8gRmlyZXdhbGwgY29uZmlndXJhdGlvbi4gTW92aW5nIElQQyBt ZW1vcnkgcmVnaW9ucw0KPiA+ID4gICAgIHJlYWNoZXMgdGhpcyBsaW1pdC4gQ3VycmVudGx5LCBP UC1URUUgZGVmaW5lcyBhIHNpbmdsZSByZWdpb24gd2l0aA0KPiA+ID4gc2hhcmVhYmxlDQo+ID4g PiAgICAgYWNjZXNzIHJpZ2h0cywgd2hpY2ggTGludXggc3BsaXRzIGludG8gYXQgbGVhc3QgdGhy ZWUgbWVtb3J5IHJlZ2lvbnMNCj4gPiA+IGZvciBSUE1zZy4NCj4gPiA+ICAgLSBNZW1vcnkgbWFw cGluZzogTWVtb3J5IHJlZ2lvbnMgc3RpbGwgbmVlZCB0byBiZSBkZWNsYXJlZCBpbiBMaW51eCB0 bw0KPiA+ID4gcHJldmVudA0KPiA+ID4gICAgIExpbnV4IGZyb20gdXNpbmcgdGhlbS4NCj4gPiA+ ICAgLSBWaXJ0aW8vUlBNc2c6IE1lbW9yeSByZWdpb24gbmFtZXMgYXJlIGZpeGVkIChlLmcuLCBk ZXY8WD52cmluZzxZPiksDQo+ID4gPiBzbyBPUC1URUUNCj4gPiA+ICAgIG11c3QgZGVjbGFyZSBt ZW1vcnkgcmVnaW9ucyBpbiBpdHMgRFQgYWNjb3JkaW5nIHRvIExpbnV4IG5hbWluZw0KPiA+ID4g Y29udmVudGlvbnMuDQo+ID4gPg0KPiA+ID4gLSBDbG9jayBhbmQgcmVzZXQ6DQo+ID4gPiAgICAg U29tZSBjbG9ja3MgYW5kIHJlc2V0cyBhcmUgbWFuYWdlZCB2aWEgU0NNSSwgb3RoZXJzIGFyZSBu b3QuIFRoaXMNCj4gPiA+IHdvdWxkIHJlcXVpcmUNCj4gPiA+ICAgIG1hbmFnaW5nIGFsbCBjbG9j a3MgYW5kIHJlc2V0cyB0aHJvdWdoIFNDTUksIHdpdGggcG9zc2libGUgc2lkZQ0KPiA+ID4gZWZm ZWN0IG9uIHRoZQ0KPiA+ID4gICAgInVudXNlZCIgY2xvY2sgbWVjaGFuaXNtIGluIExpbnV4ICgg dG8gYmUgY29uZmlybWVkKQ0KPiA+ID4NCj4gPiA+IC0gUG93ZXIgZG9tYWluOg0KPiA+ID4gICAg SW5mb3JtYXRpb24gaXMgbmVlZGVkIGF0IHRoZSBMaW51eCBsZXZlbCB0byBkZXRlcm1pbmUgdGhl IGxvdyBwb3dlcg0KPiA+ID4gbW9kZS4NCj4gPiA+DQo+ID4gPiAtIFdhdGNoZG9nIGludGVycnVw dDoNCj4gPiA+ICAgIFNob3VsZCBiZSBtYW5hZ2VkIGJ5IE9QLVRFRSwgd2hpY2ggcmVxdWlyZXMg dGhlIGhhcmR3YXJlIHRvIGhhdmUgYW4NCj4gPiA+IGFzc29jaWF0ZWQNCj4gPiA+ICAgIHNlY3Vy ZSBJUlEuDQo+ID4gPg0KPiA+ID4gLSBNaXNjZWxsYW5lb3VzIHZlbmRvciBEVCBwcm9wZXJ0aWVz Og0KPiA+ID4gICAgIEhvdyB0byBiZSBzdXJlIHRoYXQgdGhlc2UgY2FuIGJlIGFkZHJlc3NlZCB0 aHJvdWdoIFRFRSBzZXJ2aWNlcz8NCj4gPiA+DQo+ID4gPiBSZWdhcmRpbmcgdGhlIGV4aXN0aW5n IERUIG5lZWRzLCBpdCBzZWVtcyB0byBtZSB0aGF0IHJlbW92aW5nIHRoZSBEVA0KPiA+ID4gd291 bGQgcmVxdWlyZQ0KPiA+ID4gbW92aW5nIGFsbCBub2RlIHJlc291cmNlIG1hbmFnZW1lbnQgaW50 byBURUUgKCBpZiByZWFsbHkgcG9zc2libGUpLiBUaGlzDQo+ID4gPiB3b3VsZA0KPiA+ID4gaW5j cmVhc2UgVEVFIGNvbXBsZXhpdHkgYW5kIGZvb3RwcmludCwgcmVkdWNlIHN5c3RlbSBlZmZpY2ll bmN5LCBhbmQNCj4gPiA+IG1ha2Ugc3VwcG9ydGluZw0KPiA+ID4gb3RoZXIgcGxhdGZvcm1zIGxl c3Mgc2NhbGFibGUuDQo+ID4gPg0KPiA+ID4gVGhhdCBzYWlkLCBpdCBwcm9iYWJseSBhbHNvIGRl cGVuZHMgb24gdGhlIFRFRSBpbXBsZW1lbnRhdGlvbi4NCj4gPiA+IEFuZCAgd2Ugc2hvdWxkIHN1 cHBvcnQgYm90aC4gVGhpcyBjb3VsZCBiZSBkb25lIGJ5IGludHJvZHVjaW5nIGEgc2Vjb25kDQo+ ID4gPiBVVUlELg0KPiA+ID4gYnV0IGluIHRoaXMgY2FzZSBzaG91bGQgaXQgYmUgdGhlIHNhbWUg ZHJpdmVyPw0KPiA+DQo+ID4gSSBhbSB1bnN1cmUgaG93IHRvIG1vdmUgZm9yd2FyZCBoZXJlLiBJ dCBzZWVtcyB0byBtZSB0aGF0IGFkZHJlc3NpbmcgU3VtaXQncw0KPiA+IHJlcXVlc3QgZm9yIGEg VEVFIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJy ZW50DQo+ID4gT1AtVEVFIGltcGxlbWVudGF0aW9uLCBhdCBsZWFzdCBmb3IgdGhlIFNUTTMyTVAg cGxhdGZvcm1zLg0KPiA+DQo+ID4gUGVyaGFwcyB0aGUgc2ltcGxlc3QgYXBwcm9hY2ggaXMgdG8g YWJhbmRvbiB0aGUgZWZmb3J0IHRvIG1ha2UgdGhpcyBnZW5lcmljDQo+ID4gYW5kIGluc3RlYWQg cmVuYW1lIHRlZV9yZW1vdGVwcm9jLmMgdG8gc3RtMzJfdGVlX3JlbW90ZXByb2MuYywgbWFraW5n IGl0DQo+ID4gcGxhdGZvcm0tZGVwZW5kZW50LiBUaGVuLCBpZiBhbm90aGVyIHBsYXRmb3JtIHdh bnRzIHRvIHJldXNlIGl0IHdpdGggT1AtVEVFDQo+ID4gRkZBIG9yIGFub3RoZXIgVEVFLCB0aGUg ZmlsZSBjYW4gYmUgcmVuYW1lZC4NCj4gPg0KPiA+IERvZXMgdGhpcyBwcm9wb3NhbCB3b3VsZCBt YWtlIHNlbnNlIHRvIHlvdT8NCj4gDQo+IEkgd291bGQgY2VydGFpbmx5IGxpa2UgdG8gc2VlIGEg Y29uc2Vuc3VzLCBhbmQgbW9yZSBzcGVjaWZpY2FsbHksIGFuDQo+IGltcGxlbWVudGF0aW9uIHRo YXQgZm9sbG93cyB3aGF0IG90aGVyIGRyaXZlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZQ0KPiBz ZWN1cmUgd29ybGQgZG8uICBJIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBhIGNsZWFyIHVuZGVyc3Rh bmRpbmcgb2YNCj4gd2hhdCB0aG9zZSBvdGhlciBkcml2ZXJzIGRvLCBhbmQgZG9pbmcgdGhlIHJl c2VhcmNoIHdpbGwgdGFrZQ0KPiBiYW5kd2lkdGggdGhhdCBJIGFsc28gY3VycmVudGx5IGRvIG5v dCBoYXZlLg0KDQpUaGUgbWFqb3IgcHJvYmxlbSBJIHNlZSB3aXRoIHRoaXMgcGF0Y2hzZXQgaXMg dGhlIHByb2Jpbmcgb2YgcmVtb3RlcHJvYw0Kb24gcGxhdGZvcm0gYnVzIGFuZCB0aGVuIHRyeSB0 byBtb3ZlIHRvIGEgZGlzY292ZXJhYmxlIFRFRSBidXMuIEFzIEkgcmVwbGllZA0KaW4gdGhlIG90 aGVyIHRocmVhZCwgd2Ugc2hvdWxkIGFkZHJlc3MgdGhlIHVuYXZvaWRhYmxlIERUIGRlcGVuZGVu Y3kgZm9sbG93aW5nDQp3aGF0IG90aGVyIGRpc2NvdmVyYWJsZSBidXNlcyBsaWtlIFBDSSBldGMu IGRvZXMuDQoNCi1TdW1pdA0KDQo+IFRoaXMgc2l0dWF0aW9uIGlzDQo+IGV4cGVjdGVkIHRvIHBl cnNpc3QgYXQgbGVhc3QgdW50aWwgRGVjZW1iZXIuDQo+IA0KPiBBcyBzdWNoIEkgc2VlIHR3byBh dmVudWVzIGZvciB0aGlzIHBhdGNoc2V0Og0KPiAoMSkgWW91IHNlZWsgdG8gZmluZCBhIHNvbHV0 aW9uIHRoYXQgaXMgYW1lbmFibGUgdG8geW91LCBTdW1pdCwNCj4gQWJkZWxsYXRpZiBhbmQgSGFy c2hhbCAoSSBoYWQgdG8gYWRkIHRoZSBsYXR0ZXIgdHdvIHRvIHRoaXMgZW1haWwNCj4gdGhyZWFk KS4NCj4gKDIpIFlvdSB3YWl0IHVudGlsIERlY2VtYmVyLCBhbmQgbGlrZWx5IGJleW9uZCwgdW50 aWwgSSBoYXZlIHRpbWUgdG8NCj4gZG8gdGhlIHJlc2VhcmNoIG5lZWRlZCB0byBhZHZpc2Ugb24g dGhlIHdheSBmb3J3YXJkLg0KPiANCg==