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 9FF3DCCD18D for ; Fri, 10 Oct 2025 05:44:35 +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=OL8ULvkkghdM2o/t9GsTpAYnRu9wovyGTUGOAYGMpNw=; b=2HaPk041pGahUVubLF+HVRbhqq rEWEzXSTNcek6PZyz3FTpVvXfK4NMIiTPcqwG1i3iW4TEFsphpKeBnvp3YuDJ4BrdvBEWPwWYXDXX uTu9SA0RTctbS+QI+IeODtRcbgnyitsJ882GWXRhPGFw7dnc90f9easW9TwIEhOjTC8AHXHoAUz/F PN01/YHxmbSiMxTXqbM3Usd+ePHd/kdcev3SLGLrAbBEwDmzE9Ak1ABvYc6PdMY2LbC/bN2u74tY5 FIis9lMeOq9S5o0XBwIWXY4v5q/Qi1wrjHU/4zFHZ9bnqr+VMtP1us9VEVyoSrKnDnbLfZJekVw9U VWz6GErg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v75vZ-00000007j1h-0IOt; Fri, 10 Oct 2025 05:44:29 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v75vX-00000007j1K-0po9 for linux-arm-kernel@lists.infradead.org; Fri, 10 Oct 2025 05:44:28 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 0486940BF1; Fri, 10 Oct 2025 05:44:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0BDF0C4CEF1; Fri, 10 Oct 2025 05:44:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760075065; bh=YIJcEBVtXxzCQkN+HtqyCSCesdpX4rRXD+kwngl+uOI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lwc/+PvBd6FtlnV8QkIxMh6j2VFqopATRwrAkQVLbJ3V5XnDfIfSS0BnPZukjJh2H EyMuIN7We5MF63tpUL0kTSv0Ff2RFdvSe3DgF4HdWHnFX1V6p+XoWlWqseTUcicZq9 8fwxTZdOWtRCfBPBlQRxKa7XHsab7B0GFwFf4HB5iDuZURcO8koB+nc7xiMLbkrmMO xjoS1fHW5xQbm9zrLk8/Juel2r7SqmBUJ6TxtXWs5oA4qO1NALvY3KpXBgwSdsqYfj 8Ih55bI174Un7uEe/sOKFc1fPqgfXAgbS9u1PiEutHJfneBuQqLPgx68KjFMhnXtmf 3Y7ApWNAuJzZQ== Date: Fri, 10 Oct 2025 11:14:23 +0530 From: Sumit Garg To: Arnaud POULIQUEN Cc: devicetree@vger.kernel.org, Conor Dooley , Mathieu Poirier , 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_224427_308271_E0A66ACB X-CRM114-Status: GOOD ( 79.00 ) 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 Arnaud, It's been some holidays followed by business travel leading to delay in my response here. On Tue, Oct 07, 2025 at 03:50:32PM +0200, 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. I can see your arguments regarding some DT properties which are hard to discover via OP-TEE service and I have been trying to think of how to handle it in a proper manner for a device on discoverable TEE bus. One of my fellow kernel maintainers pointed out that other discoverable buses in the kernel like PCI etc. already solved this DT dependencies via having device specific bindings. You can have a look at a one particular example of PCI device binding here [1]. In case of OP-TEE, you can have a similar device binding with UUID under the OP-TEE firmware DT node. The current approach you are taking via probing device on platform bus and then trying to move onto TEE bus isn't at all the compatible with the driver model, it simply sets a bad example for the driver model. [1] Documentation/devicetree/bindings/net/wireless/qcom,ath11k-pci.yaml > > > > 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? No, we should try to avoid a vendor specific TEE driver especially if it's based on similar OP-TEE based service which should be able to abstract out the vendor implementation for the kernel. -Sumit 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 F39C1CCD18E for ; Fri, 10 Oct 2025 05:44:41 +0000 (UTC) Received: from lists.trustedfirmware.org (localhost [127.0.0.1]) by lists.trustedfirmware.org (Postfix) with ESMTP id 29FC443070 for ; Fri, 10 Oct 2025 05:44:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.trustedfirmware.org; s=2024; t=1760075081; bh=/jSRssUYmdF7QGSRxJIJXYh1A+lUIeGyH4CpSVktNgs=; 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=f4w8vhJCUq/ACMZtavZRzhrlf9Glcy+QFWjAt7LQPO1qk8GdNLO2s/N/oBTxkEZIR Uz3hptc9ZH+z9B+jGB4FX/hKbhHRzbwFC+6ZHqt/UIf3y/8Y6LsiJruNAAxnzdeyq0 ny8dDFZtw2Tf4IPMmDCM627VAuPgw+7Vu1XYWs8zuTJQz7lJuvLFwzAs0BXLt83Ze+ cqDoq7jGDp7KIi1ByjFg2CaZtPJgqxR0wYF0XvXKEfChex2VIHkgwTxXCiRM3imE+r hTVh0noczzvTRndYSd7An6XYtcijFy5ljweLh1XWsC+dARIsusc9YtKyAVgq4uslw8 s5UhEmOiCIT+w== Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by lists.trustedfirmware.org (Postfix) with ESMTPS id C2B0E42CD7 for ; Fri, 10 Oct 2025 05:44:26 +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=lwc/+PvB; 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 0486940BF1; Fri, 10 Oct 2025 05:44:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0BDF0C4CEF1; Fri, 10 Oct 2025 05:44:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760075065; bh=YIJcEBVtXxzCQkN+HtqyCSCesdpX4rRXD+kwngl+uOI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lwc/+PvBd6FtlnV8QkIxMh6j2VFqopATRwrAkQVLbJ3V5XnDfIfSS0BnPZukjJh2H EyMuIN7We5MF63tpUL0kTSv0Ff2RFdvSe3DgF4HdWHnFX1V6p+XoWlWqseTUcicZq9 8fwxTZdOWtRCfBPBlQRxKa7XHsab7B0GFwFf4HB5iDuZURcO8koB+nc7xiMLbkrmMO xjoS1fHW5xQbm9zrLk8/Juel2r7SqmBUJ6TxtXWs5oA4qO1NALvY3KpXBgwSdsqYfj 8Ih55bI174Un7uEe/sOKFc1fPqgfXAgbS9u1PiEutHJfneBuQqLPgx68KjFMhnXtmf 3Y7ApWNAuJzZQ== Date: Fri, 10 Oct 2025 11:14:23 +0530 To: Arnaud POULIQUEN 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: C2B0E42CD7 X-Spamd-Bar: -- X-Spamd-Result: default: False [-3.00 / 15.00]; BAYES_HAM(-3.00)[99.99%]; SUSPICIOUS_RECIPS(1.50)[]; DWL_DNSWL_LOW(-1.00)[kernel.org:dkim]; 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]; TO_DN_SOME(0.00)[]; ASN(0.00)[asn:63949, ipnet:172.234.224.0/19, country:SG]; RCPT_COUNT_TWELVE(0.00)[13]; MISSING_XM_UA(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_VIA_SMTP_AUTH(0.00)[]; DNSWL_BLOCKED(0.00)[172.234.252.31:from]; TAGGED_RCPT(0.00)[dt]; RCVD_TLS_LAST(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM(-0.00)[-1.000]; FROM_HAS_DN(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[kernel.org:+] X-Rspamd-Action: no action X-Rspamd-Server: lists.trustedfirmware.org Message-ID-Hash: KEXCAD2GQPYX7JSU6GLK7UVM47GBC3EN X-Message-ID-Hash: KEXCAD2GQPYX7JSU6GLK7UVM47GBC3EN 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: devicetree@vger.kernel.org, Conor Dooley , Mathieu Poirier , 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 SGkgQXJuYXVkLA0KDQpJdCdzIGJlZW4gc29tZSBob2xpZGF5cyBmb2xsb3dlZCBieSBidXNpbmVz cyB0cmF2ZWwgbGVhZGluZyB0byBkZWxheSBpbg0KbXkgcmVzcG9uc2UgaGVyZS4NCg0KT24gVHVl LCBPY3QgMDcsIDIwMjUgYXQgMDM6NTA6MzJQTSArMDIwMCwgQXJuYXVkIFBPVUxJUVVFTiB3cm90 ZToNCj4gSGVsbG8gQmpvcm4sIE1hdGhpZXUsIFN1bWl0LA0KPiANCj4gT24gOS8yMi8yNSAxMDo1 NywgQXJuYXVkIFBPVUxJUVVFTiB3cm90ZToNCj4gPiANCj4gPiANCj4gPiBPbiA5LzE5LzI1IDA4 OjQ2LCBTdW1pdCBHYXJnIHdyb3RlOg0KPiA+ID4gT24gV2VkLCBTZXAgMTcsIDIwMjUgYXQgMDM6 NDc6NDBQTSArMDIwMCwgQXJuYXVkIFBPVUxJUVVFTiB3cm90ZToNCj4gPiA+ID4gDQo+ID4gPiA+ IE9uIDkvMTcvMjUgMTI6MDgsIFN1bWl0IEdhcmcgd3JvdGU6DQo+ID4gPiA+ID4gT24gVHVlLCBT ZXAgMTYsIDIwMjUgYXQgMDM6MjY6NDdQTSArMDIwMCwgQXJuYXVkIFBPVUxJUVVFTiB3cm90ZToN Cj4gPiA+ID4gPiA+IEhlbGxvIFN1bWl0LA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBPbiA5 LzE2LzI1IDExOjE0LCBTdW1pdCBHYXJnIHdyb3RlOg0KPiA+ID4gPiA+ID4gPiBIaSBBcm5hdWQs DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBGaXJzdCBvZiBhbGwgYXBvbG9naWVzIGZv ciBzdWNoIGEgbGF0ZSByZXZpZXcgY29tbWVudCBhcyBwcmV2aW91c2x5IEkNCj4gPiA+ID4gPiA+ ID4gd2Fzbid0IENDZWQgb3IgaW52b2x2ZWQgaW4gdGhlIHJldmlldyBvZiB0aGlzDQo+ID4gPiA+ ID4gPiA+IHBhdGNoLXNldC4gSW4gY2FzZSBhbnkgb2YNCj4gPiA+ID4gPiA+ID4gbXkgZm9sbG93 aW5nIGNvbW1lbnRzIGhhdmUgYmVlbiBkaXNjdXNzZWQgaW4gdGhlDQo+ID4gPiA+ID4gPiA+IHBh c3QgdGhlbiBmZWVsIGZyZWUgdG8NCj4gPiA+ID4gPiA+ID4gcG9pbnQgbWUgYXQgcmVsZXZhbnQg ZGlzY3Vzc2lvbnMuDQo+ID4gPiA+ID4gPiBObyB3b3JyaWVzLCB0aGVyZSBhcmUgdG9vIG1hbnkg dmVyc2lvbnMgb2YgdGhpcyBzZXJpZXMNCj4gPiA+ID4gPiA+IHRvIGZvbGxvdyBhbGwgdGhlDQo+ ID4gPiA+ID4gPiBwYXN0IGRpc2N1c3Npb25zLiBJIHNvbWV0aW1lcyBoYXZlIGRpZmZpY3VsdHkg cmVtZW1iZXJpbmcgYWxsIHRoZQ0KPiA+ID4gPiA+ID4gZGlzY3Vzc2lvbnMgbXlzZWxmIDopDQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gT24gV2VkLCBKdW4gMjUsIDIwMjUgYXQgMTE6NDA6 MjZBTSArMDIwMCwgQXJuYXVkIFBvdWxpcXVlbiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiBUaGUg InN0LHN0bTMybXAxLW00LXRlZSIgY29tcGF0aWJsZSBpcyB1dGlsaXplZA0KPiA+ID4gPiA+ID4g PiA+IGluIGEgc3lzdGVtIGNvbmZpZ3VyYXRpb24NCj4gPiA+ID4gPiA+ID4gPiB3aGVyZSB0aGUg Q29ydGV4LU00IGZpcm13YXJlIGlzIGxvYWRlZCBieSB0aGUNCj4gPiA+ID4gPiA+ID4gPiBUcnVz dGVkIEV4ZWN1dGlvbiBFbnZpcm9ubWVudA0KPiA+ID4gPiA+ID4gPiA+IChURUUpLg0KPiA+ID4g PiA+ID4gPiBIYXZpbmcgYSBEVCBiYXNlZCBjb21wYXRpYmxlIGZvciBhIFRFRSBzZXJ2aWNlIHRv IG1lDQo+ID4gPiA+ID4gPiA+IGp1c3QgZmVlbHMgbGlrZSBpdA0KPiA+ID4gPiA+ID4gPiBpcyBy ZWR1bmRhbnQgaGVyZS4gSSBjYW4gc2VlIHlvdSBoYXZlIGFsc28gdXNlZCBhDQo+ID4gPiA+ID4g PiA+IFRFRSBidXMgYmFzZWQgZGV2aWNlDQo+ID4gPiA+ID4gPiA+IHRvbyBidXQgdGhhdCBpcyBu b3QgYmVpbmcgcHJvcGVybHkgdXNlZC4gSSBrbm93IHN1YnN5c3RlbXMgbGlrZQ0KPiA+ID4gPiA+ ID4gPiByZW1vdGVwcm9jLCBTQ01JIGFuZCBvdGhlcnMgaGVhdmlseSByZWx5IG9uIERUIHRvDQo+ ID4gPiA+ID4gPiA+IGhhcmRjb2RlIHByb3BlcnRpZXMgb2YNCj4gPiA+ID4gPiA+ID4gc3lzdGVt IGZpcm13YXJlIHdoaWNoIGFyZSByYXRoZXIgYmV0dGVyIHRvIGJlIGRpc2NvdmVyZWQgZHluYW1p Y2FsbHkuDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBTbyBJIGhhdmUgYW4gb3BlbiBx dWVzdGlvbiBmb3IgeW91IGFuZCB0aGUgcmVtb3RlcHJvYyBzdWJzeXN0ZW0NCj4gPiA+ID4gPiA+ ID4gbWFpbnRhaW5lcnMgYmVpbmc6DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBJcyBp dCBmZWFzaWJsZSB0byByYXRoZXIgbGV2ZXJhZ2UgdGhlIGJlbmVmaXRzIG9mIGENCj4gPiA+ID4g PiA+ID4gZnVsbHkgZGlzY292ZXJhYmxlDQo+ID4gPiA+ID4gPiA+IFRFRSBidXMgcmF0aGVyIHRo YW4gcmVseWluZyBvbiBwbGF0Zm9ybSBidXMvIERUIHRvIGhhcmRjb2RlIGZpcm13YXJlDQo+ID4g PiA+ID4gPiA+IHByb3BlcnRpZXM/DQo+ID4gPiA+ID4gPiBUaGUgZGlzY292ZXJhYmxlIFRFRSBi dXMgZG9lcyBub3Qgd29ya3MgaWYgdGhlIHJlbW90ZXByb2MgaXMgcHJvYmVkDQo+ID4gPiA+ID4g PiBiZWZvcmUgdGhlIE9QLVRFRSBidXMsIGluIHN1Y2ggY2FzZcKgIG5vIHBvc3NpYmlsaXR5IHRv IGtub3cgaWYgdGhlIFRFRQ0KPiA+ID4gPiA+ID4gVEEgaXMgbm90IHlldCBhdmFpbGFibGUgb3Ig bm90IGF2YWlsYWJsZSBhdCBhbGwuDQo+ID4gPiA+ID4gPiBUaGlzIHBvaW50IGlzIG1lbnRpb25l ZCBpbiBhIGNvbW1lbnQgaW4gcnByb2NfdGVlX3JlZ2lzdGVyKCkuDQo+ID4gPiA+IEZvciB0aGUg ZGlzY3Vzc2lvbiwgaXTigJlzIHByb2JhYmx5IGJldHRlciBpZiBJIHByb3ZpZGUgbW9yZQ0KPiA+ ID4gPiBkZXRhaWxzIG9uIHRoZQ0KPiA+ID4gPiBjdXJyZW50IE9QLVRFRSBpbXBsZW1lbnRhdGlv biBhbmQgdGhlIHN0bTMybXAgcHJvY2Vzc29ycy4NCj4gPiA+ID4gDQo+ID4gPiA+IDEpIFNUTTMy TVAgdG9wb2xvZ3k6DQo+ID4gPiA+IMKgwqAgLSBTVE0zMk1QMTogb25seSBhIENvcnRleC1NNCBy ZW1vdGUgcHJvY2Vzc29yDQo+ID4gPiA+IMKgwqAgLcKgIFNUTTMyTVAyeDogYSBDb3J0ZXgtTTMz IGFuZCBhIENvcnRleC1NMCByZW1vdGUgcHJvY2Vzc29ycw0KPiA+ID4gPiDCoMKgIEF0IHRoaXMg c3RhZ2UsIG9ubHkgdGhlIFNUTTMyTVAxNSBpcyB1cHN0cmVhbWVkOyB0aGUNCj4gPiA+ID4gU1RN MzJNUDI1IGlzIHdhaXRpbmcNCj4gPiA+ID4gwqDCoCBmb3IgdGhpcyBzZXJpZXMgdG8gYmUgbWVy Z2VkLg0KPiA+ID4gPiANCj4gPiA+ID4gMikgT1AtVEVFIGFyY2hpdGVjdHVyZToNCj4gPiA+ID4g LSBBIHBsYXRmb3JtLWFnbm9zdGljIFRydXN0ZWQgQXBwbGljYXRpb24gKFRBKSBoYW5kbGVzIHRo ZSBidXMNCj4gPiA+ID4gc2VydmljZS5bMV0NCj4gPiA+ID4gwqDCoCBUaGlzIFRBIHN1cHBvcnRz IG1hbmFnaW5nIG11bHRpcGxlIHJlbW90ZSBwcm9jZXNzb3JzLiBJdCBjYW4NCj4gPiA+ID4gYmUg ZW1iZWRkZWQNCj4gPiA+ID4gwqDCoCByZWdhcmRsZXNzIG9mIHRoZSBudW1iZXIgb2YgcmVtb3Rl IHByb2Nlc3NvcnMgbWFuYWdlZCBpbiBPUC1URUUuDQo+ID4gPiA+IMKgwqAgVGhlIGRlY2lzaW9u IHRvIGVtYmVkIHRoaXMgc2VydmljZSBpcyBtYWRlIGF0IGJ1aWxkIHRpbWUgYmFzZWQgb24gdGhl DQo+ID4gPiA+IMKgwqAgcHJlc2VuY2Ugb2YgdGhlIHJlbW90ZXByb2MgZHJpdmVyLCBzbyBpdCBp cyBub3QgZGV2aWNlIHRyZWUNCj4gPiA+ID4gZGVwZW5kZW50Lg0KPiA+ID4gPiDCoMKgIC0gU1RN MzJNUDE1OiBUQSBhY3RpdmF0ZWQgb25seSBpZiB0aGUgcmVtb3RlcHJvYyBPUC1URUUNCj4gPiA+ ID4gZHJpdmVyIGlzIHByb2JlZA0KPiA+ID4gPiDCoMKgIC0gU1RNMzJNUDJ4OiBUQSBhbHdheXMg YWN0aXZhdGVkIGFzIHRoZSBPUC1URUUgcmVtb3RlcHJvYw0KPiA+ID4gPiBkcml2ZXIgaXMgYWx3 YXlzDQo+ID4gPiA+IHByb2JlZA0KPiA+ID4gPiANCj4gPiA+ID4gLSBBIHBzZXVkbyBUcnVzdGVk IEFwcGxpY2F0aW9uIGltcGxlbWVudHMgdGhlIHBsYXRmb3JtIHBvcnRpbmdbMl0sDQo+ID4gPiA+ IMKgwqAgcmVseWluZyBvbiByZWdpc3RlcmVkIHJlbW90ZXByb2MgcGxhdGZvcm0gZHJpdmVycy4N Cj4gPiA+ID4gDQo+ID4gPiA+IC0gUGxhdGZvcm0gZHJpdmVyKHMpIG1hbmFnZSB0aGUgcmVtb3Rl IHByb2Nlc3NvcnMuWzNdWzRdDQo+ID4gPiA+IMKgwqAgLSBJZiByZW1vdGVwcm9jIGlzIG1hbmFn ZWQgYnkgT1AtVEVFOiBtYW5hZ2VzIHRoZSByZW1vdGVwcm9jDQo+ID4gPiA+IGxpZmVjeWNsZQ0K PiA+ID4gPiDCoMKgIC0gSWYgcmVtb3RlcHJvYyBpcyBtYW5hZ2VkIGJ5IExpbnV4OiBwcm92aWRl cyBhY2Nlc3MgcmlnaHRzDQo+ID4gPiA+IHRvIExpbnV4IHRvDQo+ID4gPiA+IG1hbmFnZQ0KPiA+ ID4gPiDCoMKgIMKgIHRoZSByZW1vdGVwcm9jDQo+ID4gPiA+IA0KPiA+ID4gPiDCoMKgIC0gU1RN MzJNUDE1OiBkcml2ZXIgcHJvYmVkIG9ubHkgaWYgdGhlIHJlbW90ZXByb2MgaXMgbWFuYWdlZA0K PiA+ID4gPiBpbiBPUC1URUUNCj4gPiA+ID4gwqDCoCAtIFNUTTMyTVAyeDogZHJpdmVyIHByb2Jl ZCBpbiBib3RoIGNhc2VzIGZvciB0aGUgQ29ydGV4LU0zMw0KPiA+ID4gPiDCoMKgwqDCoCBGb3Ig dGhlIFNUTTMyTVAyNSwgdGhlIFRBIGlzIGFsd2F5cyBwcmVzZW50IGFuZCBxdWVyaWVzIHRoZQ0K PiA+ID4gPiBkcml2ZXIgdG8NCj4gPiA+ID4gY2hlY2sNCj4gPiA+ID4gwqDCoCDCoCBpZiBpdCBz dXBwb3J0cyBzZWN1cmUgbG9hZGluZy4NCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBbMV0g aHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vb3AtdGVlLzQuNy4wL3NvdXJjZS90YS9yZW1vdGVw cm9jDQo+ID4gPiA+IFsyXQ0KPiA+ID4gPiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9vcC10 ZWUvNC43LjAvc291cmNlL2NvcmUvcHRhL3N0bTMybXAvDQo+ID4gPiA+IHJlbW90ZXByb2NfcHRh LmMNCj4gPiA+ID4gWzNdaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vb3AtdGVlLzQuNy4wL3Nv dXJjZS9jb3JlL2RyaXZlcnMvDQo+ID4gPiA+IHJlbW90ZXByb2Mvc3RtMzJfcmVtb3RlcHJvYy5j DQo+ID4gPiA+IFs0XWh0dHBzOi8vZ2l0aHViLmNvbS9TVE1pY3JvZWxlY3Ryb25pY3Mvb3B0ZWVf b3MvYmxvYi80LjAuMC1zdG0zMm1wLw0KPiA+ID4gPiBjb3JlL2RyaXZlcnMvcmVtb3RlcHJvYy9z dG0zMl9yZW1vdGVwcm9jLmMNCj4gPiA+IFRoYW5rcyBmb3IgdGhlIGJhY2tncm91bmQgaGVyZS4N Cj4gPiA+IA0KPiA+ID4gPiA+IFRoZSByZWFzb24gaGVyZSBpcyB0aGF0IHlvdSBhcmUgbWl4aW5n IHBsYXRmb3JtIGFuZCBURUUgYnVzDQo+ID4gPiA+ID4gZm9yIHJlbW90ZXByb2MNCj4gPiA+ID4g PiBkcml2ZXIuIEZvciBwcm9iZSwgeW91IHJlbHkgb24gcGxhdGZvcm0gYnVzIGFuZCB0aGVuIHRy eSB0byBtaWdyYXRlIHRvDQo+ID4gPiA+ID4gVEVFIGJ1cyB2aWEgcnByb2NfdGVlX3JlZ2lzdGVy KCkgaXMgdGhlIHByb2JsZW0gaGVyZS4NCj4gPiA+ID4gPiBJbnN0ZWFkIHlvdSBzaG91bGQNCj4g PiA+ID4gPiByYXRoZXIgcHJvYmUgcmVtb3RlcHJvYyBkZXZpY2Ugb24gVEVFIGJ1cyBmcm9tIHRo ZSBiZWdpbm5pbmcuDQo+ID4gPiA+IFRoZSBhcHByb2FjaCBpcyBpbnRlcmVzdGluZywgYnV0IGhv dyBjYW4gd2UgcmVseSBvbiBEZXZpY2UgVHJlZSAoRFQpIGZvcg0KPiA+ID4gPiBoYXJkd2FyZSBj b25maWd1cmF0aW9uIGluIHRoaXMgY2FzZT8NCj4gPiA+ID4gQXQgYSBtaW5pbXVtLCBJIG5lZWQg dG8gZGVmaW5lIG1lbW9yeSByZWdpb25zIGFuZCBtYWlsYm94ZXMuDQo+ID4gPiBUaGUgaGFyZHdh cmUgY29uZmlndXJhdGlvbiBpbiBEVCBzaG91bGQgYmUgY29uc3VtZWQgYnkgT1AtVEVFIGFuZCB0 aGUNCj4gPiA+IGtlcm5lbCBwcm9iZXMgcmVtb3RlcHJvYyBwcm9wZXJ0aWVzIGZyb20gT1AtVEVF IHNpbmNlIGl0J3MgYW4gT1AtVEVFDQo+ID4gPiBtZWRpYXRlZCByZW1vdGVwcm9jIHNlcnZpY2Ug eW91IGFyZSBhZGRpbmcgaGVyZS4NCj4gPiA+ID4gwqBGcm9tIG15IHBlcnNwZWN0aXZlLCBJIHdv dWxkIHN0aWxsIG5lZWQgYSBkcml2ZXIgcHJvYmVkIGJ5IERUDQo+ID4gPiA+IHRoYXQgcmVnaXN0 ZXJzDQo+ID4gPiA+IGEgZHJpdmVyIG9uIHRoZSBURUUgYnVzLiBUaGVyZWZvcmUsIEkgc3RpbGwg bmVlZCBhIG1lY2hhbmlzbSB0byBkZWNpZGUNCj4gPiA+ID4gd2hldGhlciB0aGUgcmVtb3RlIGZp cm13YXJlIGlzIG1hbmFnZWQgYnkgdGhlIHNlY3VyZSBvcg0KPiA+ID4gPiBub24tc2VjdXJlIGNv bnRleHQuDQo+ID4gPiBBcyBJIG1lbnRpb25lZCBiZWxvdywgdGhpcyBzaG91bGQgYmUgYWNoaWV2 YWJsZSB1c2luZyB0aGUgc2VjdXJlLXN0YXR1cw0KPiA+ID4gcHJvcGVydHkgd2l0aG91dCBpbnRy b2R1Y2luZyB0aGUgbmV3IGNvbXBhdGlibGU6DQo+ID4gPiANCj4gPiA+IEtlcm5lbCBtYW5hZ2Vk IHJlbW90ZXByb2M6DQo+ID4gPiDCoMKgwqAgc3RhdHVzID0gIm9rYXkiOyBzZWN1cmUtc3RhdHVz ID0gImRpc2FibGVkIjvCoMKgwqDCoCAvKiBOUy1vbmx5ICovDQo+ID4gPiANCj4gPiA+IE9QLVRF RSBtYW5hZ2VkIHJlbW90ZXByb2M6DQo+ID4gPiDCoMKgwqAgc3RhdHVzID0gImRpc2FibGVkIjsg c2VjdXJlLXN0YXR1cyA9ICJva2F5IjvCoMKgwqDCoCAvKiBTLW9ubHkgKi8NCj4gPiA+IA0KPiA+ ID4gPiBBbm90aGVyIGlzc3VlIHdvdWxkIGJlIHRvIGJlIGFibGUgdG8gc2hhcmUgdGhlIHJlbW90 ZXByb2MgVEVFIHNlcnZpY2UNCj4gPiA+ID4gYmV0d2Vlbg0KPiA+ID4gPiBzZXZlcmFsIHBsYXRm b3JtIHJlbW90ZXByb2MgZHJpdmVycywgaW4gY2FzZSBvZiBtdWx0aSByZW1vdGUgcHJvY2Vzc29y DQo+ID4gPiA+IHN1cHBvcnQuDQo+ID4gPiBNYWtpbmcgdGhlIFRFRSBiYXNlZCByZW1vdGVwcm9j IHNlcnZpY2UgaW5kZXBlbmRlbnQgb2YgRFQgd2lsbCBzdXJlbHkNCj4gPiA+IG1ha2UgaXQgbW9y ZSBzY2FsYWJsZSB0byBvdGhlciBwbGF0Zm9ybXMgdG9vLiBIYXZlIGEgbG9vayBhdCBob3cgT1At VEVFDQo+ID4gPiBiYXNlZCBIV1JORyBzZXJ2aWNlIHNjYWxlcyBhY3Jvc3MgcGxhdGZvcm1zLg0K PiA+IA0KPiA+IEFub3RoZXIgaW1wb3J0YW50IHNlcnZpY2UgaXMgU0NNSSwgd2hpY2ggZHJpdmVy cyB1c2UgdG8gbWFuYWdlIGNsb2Nrcw0KPiA+IGFuZCByZXNldHMuDQo+ID4gVGhlc2UgY2xvY2tz IGFuZCByZXNldHMgYXJlIGRlY2xhcmVkIGluIHRoZSBEZXZpY2UgVHJlZSAoRFQpLiBJdCBzZWVt cw0KPiA+IHRvIG1lIHRoYXQNCj4gPiBpbiB0aGlzIGNhc2UsIHdlIGFyZSBjbG9zZXIgdG8gU0NN SSB0aGFuIHRvIHRoZSBSTkcgc2VydmljZS4NCj4gPiANCj4gPiBJIHByb3Bvc2Ugd2UgZGlzY3Vz cyB0aGlzIGJhc2VkIG9uIGEgY29uY3JldGUgZXhhbXBsZSB3aXRoIHRoZSBTVE0zMk1QMjUuDQo+ ID4gQWx0aG91Z2ggbm90IHlldCB1cHN0cmVhbWVkLCBvdXIgcGxhbiBpcyB0byBtYW5hZ2Ugc2ln bmVkIGZpcm13YXJlIGZvciB0aGUNCj4gPiBDb3J0ZXgtTTMzIGFuZCBDb3J0ZXgtTTAuDQo+ID4g DQo+ID4gUGxlYXNlIGZpbmQgYmVsb3cgbXkgdmlldyBvZiB0aGUgRFQgcmVzb3VyY2VzIHRvIGFk ZHJlc3MuDQo+ID4gDQo+ID4gU1RNMzJNUDI1wqAgQ29ydGV4LU0zMyBhbmQgQ29ydGV4LU0wIG5v ZGVzOg0KPiA+IA0KPiA+IG0zM19ycHJvYyB7DQo+ID4gIMKgIC8qIE0zMyB3YXRjaGRvZyBpbnRl cnJ1cHQgKi8NCj4gPiAgwqAgaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47DQo+ID4gIMKgIGlu dGVycnVwdHMgPSA8R0lDX1NQSSA0IElSUV9UWVBFX0xFVkVMX0hJR0g+Ow0KPiA+ICDCoCAvKiBw b3dlciBkb21haW4gbWFuYWdlbWVudCAqLw0KPiA+ICDCoCBwb3dlci1kb21haW5zID0gPCZjbHVz dGVyX3BkPiwgPCZyZXRfcGQ+Ow0KPiA+ICDCoCBwb3dlci1kb21haW4tbmFtZXMgPSAiZGVmYXVs dCIsICJzbGVlcCI7DQo+ID4gIMKgIC8qIFJQTXNnIG1haWxib3hlcyArIE0zMyBncmFjZWZ1bCBz aHV0ZG93biByZXF1ZXN0ICovDQo+ID4gIMKgIG1ib3hlcyA9IDwmaXBjYzEgMHgwPiwgPCZpcGNj MSAweDE+LCA8JmlwY2MxIDI+Ow0KPiA+ICDCoCBtYm94LW5hbWVzID0gInZxMCIsICJ2cTEiLCAi c2h1dGRvd24iOw0KPiA+ICDCoCBtZW1vcnktcmVnaW9uID0gPCZ2ZGV2MHZyaW5nMD4sIDwmdmRl djB2cmluZzE+LCA8JnZkZXYwYnVmZmVyPjsNCj4gPiAgwqAgc3RhdHVzID0gIm9rYXkiOw0KPiA+ IH07DQo+ID4gDQo+ID4gbTBfcnByb2Mgew0KPiA+ICDCoCAvKiBtYWlsYm94IGZvciBncmFjZWZ1 bCBzaHV0ZG93biAqLw0KPiA+ICDCoCBtYm94ZXMgPSA8JmlwY2MyIDI+Ow0KPiA+ICDCoCBtYm94 LW5hbWVzID0gInNodXRkb3duIjsNCj4gPiAgwqAgLyogTTAgd2F0Y2hkb2cgKi8NCj4gPiAgwqBp bnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsNCj4gPiAgwqBpbnRlcnJ1cHRzID0gPEdJQ19TUEkg NyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsNCj4gPiAgwqAvKiBNMCBwZXJpcGhlcmFsIGNsb2NraW5n IChub3QgYWNjZXNzaWJsZSBieSB0aGUgTTApICovDQo+ID4gIMKgY2xvY2tzID0gPCZzY21pX2Ns ayBDS19TQ01JX0dQSU9aX0FNPiwNCj4gPiAgwqA8JnNjbWlfY2xrIENLX1NDTUlfR1BJT1o+LA0K PiA+ICDCoDwmc2NtaV9jbGsgQ0tfU0NNSV9JUENDMj4sDQo+ID4gIMKgPCZzY21pX2NsayBDS19T Q01JX0lQQ0MyX0FNPiwNCj4gPiAgwqA8JnJjYyBDS19MUFRJTTNfQU0+LA0KPiA+ICDCoDwmcmNj IENLX0xQVUFSVDFfQU0+LA0KPiA+ICDCoDwmcmNjIENLX0NQVTNfQU0+LA0KPiA+ICDCoDwmcmNj IENLX0NQVTM+LA0KPiA+ICDCoDwmcmNjIENLX0xQVUFSVDFfQzM+LA0KPiA+ICDCoDwmcmNjIENL X0dQSU9aX0MzPiwNCj4gPiAgwqA8JnJjYyBDS19MUFRJTTNfQzM+LA0KPiA+ICDCoDwmcmNjIENL X0tFUl9MUFVBUlQxPiwNCj4gPiAgwqA8JnJjYyBDS19LRVJfTFBUSU0zPiwNCj4gPiAgwqA8JnNj bWlfY2xrIENLX1NDTUlfR1BJT1o+LA0KPiA+ICDCoDwmc2NtaV9jbGsgQ0tfU0NNSV9JUENDMj47 DQo+ID4gIMKgc3RhdHVzID0gIm9rYXkiOw0KPiA+IH07DQo+ID4gDQo+ID4gSWYgd2Ugd2FudCB0 byByZW1vdmUgdGhlIERULCB3ZSBuZWVkIHRvIGNvbnNpZGVyOg0KPiA+IA0KPiA+IC0gTWVjaGFu aXNtIHRvIGRpZmZlcmVudGlhdGUgQ29ydGV4LU0zMyBhbmQgQ29ydGV4LU0wOg0KPiA+ICDCoCBT aW1pbGFyIHRvIFNDTUksIHRoZSByZW1vdGVwcm9jIE9QLVRFRSBzZXJ2aWNlIHNob3VsZCBzdXBw b3J0DQo+ID4gIMKgbXVsdGlwcm9jZXNzb3Igc2V0dXBzIHdpdGhvdXQgaW5zdGFudGlhdGluZyBt dWx0aXBsZSBzZXJ2aWNlcy4NCj4gPiANCj4gPiAtIE1haWxib3hlczoNCj4gPiANCj4gPiAgwqAg QSBwaGFuZGxlIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBtYWlsYm94IGRyaXZlciBpcyBtYW5hZ2Vk IGJ5IHRoZQ0KPiA+ICDCoCBMaW51eCBtYWlsYm94IGRyaXZlci4gU1RNMzJNUDIgaGFzIHR3byBt YWlsYm94ZXMuDQo+ID4gIMKgIE1vdmluZyB0b3dhcmRzIHlvdXIgcHJvcG9zYWwgd291bGQgaW1w bHkgY3JlYXRpbmcgYSBtYWlsYm94IHNlcnZpY2UNCj4gPiAgwqAgaW4gVEVFIHRvIG1hbmFnZSBu b24tc2VjdXJlIG1haWxib3hlcyBmb3Igbm9uLXNlY3VyZSBJUEMuIFRoaXMgbWlnaHQNCj4gPiAg wqAgbm90IGJlIGVmZmljaWVudCBmb3IgaW50ZXItcHJvY2Vzc29yIGNvbW11bmljYXRpb24uIEhh cmR3YXJlLXdpc2UsIGl0DQo+ID4gIMKgIHdvdWxkIHJlcXVpcmUgdGhlIElSUSB0byBiZSBoYW5k bGVkIGJ5IHRoZSBzZWN1cmUgY29udGV4dC4NCj4gPiANCj4gPiAtIE1lbW9yeSByZWdpb25zOg0K PiA+ICDCoC0gSGFyZHdhcmUgbGltaXRhdGlvbjogT1AtVEVFIGlzIGxpbWl0ZWQgaW4gdGhlIG51 bWJlciBvZiBtZW1vcnkgcmVnaW9ucw0KPiA+ICDCoCDCoGl0IGNhbiBkZWNsYXJlIGR1ZSB0byBG aXJld2FsbCBjb25maWd1cmF0aW9uLiBNb3ZpbmcgSVBDIG1lbW9yeSByZWdpb25zDQo+ID4gIMKg IMKgcmVhY2hlcyB0aGlzIGxpbWl0LiBDdXJyZW50bHksIE9QLVRFRSBkZWZpbmVzIGEgc2luZ2xl IHJlZ2lvbiB3aXRoDQo+ID4gc2hhcmVhYmxlDQo+ID4gIMKgIMKgYWNjZXNzIHJpZ2h0cywgd2hp Y2ggTGludXggc3BsaXRzIGludG8gYXQgbGVhc3QgdGhyZWUgbWVtb3J5IHJlZ2lvbnMNCj4gPiBm b3IgUlBNc2cuDQo+ID4gIMKgLSBNZW1vcnkgbWFwcGluZzogTWVtb3J5IHJlZ2lvbnMgc3RpbGwg bmVlZCB0byBiZSBkZWNsYXJlZCBpbiBMaW51eCB0bw0KPiA+IHByZXZlbnQNCj4gPiAgwqAgwqBM aW51eCBmcm9tIHVzaW5nIHRoZW0uDQo+ID4gIMKgLSBWaXJ0aW8vUlBNc2c6IE1lbW9yeSByZWdp b24gbmFtZXMgYXJlIGZpeGVkIChlLmcuLCBkZXY8WD52cmluZzxZPiksDQo+ID4gc28gT1AtVEVF DQo+ID4gIMKgIG11c3QgZGVjbGFyZSBtZW1vcnkgcmVnaW9ucyBpbiBpdHMgRFQgYWNjb3JkaW5n IHRvIExpbnV4IG5hbWluZw0KPiA+IGNvbnZlbnRpb25zLg0KPiA+IA0KPiA+IC0gQ2xvY2sgYW5k IHJlc2V0Og0KPiA+ICDCoCDCoFNvbWUgY2xvY2tzIGFuZCByZXNldHMgYXJlIG1hbmFnZWQgdmlh IFNDTUksIG90aGVycyBhcmUgbm90LiBUaGlzDQo+ID4gd291bGQgcmVxdWlyZQ0KPiA+ICDCoCBt YW5hZ2luZyBhbGwgY2xvY2tzIGFuZCByZXNldHMgdGhyb3VnaCBTQ01JLCB3aXRoIHBvc3NpYmxl IHNpZGUNCj4gPiBlZmZlY3Qgb24gdGhlDQo+ID4gIMKgICJ1bnVzZWQiIGNsb2NrIG1lY2hhbmlz bSBpbiBMaW51eCAoIHRvIGJlIGNvbmZpcm1lZCkNCj4gPiANCj4gPiAtIFBvd2VyIGRvbWFpbjoN Cj4gPiAgwqAgSW5mb3JtYXRpb24gaXMgbmVlZGVkIGF0IHRoZSBMaW51eCBsZXZlbCB0byBkZXRl cm1pbmUgdGhlIGxvdyBwb3dlcg0KPiA+IG1vZGUuDQo+ID4gDQo+ID4gLSBXYXRjaGRvZyBpbnRl cnJ1cHQ6DQo+ID4gIMKgIFNob3VsZCBiZSBtYW5hZ2VkIGJ5IE9QLVRFRSwgd2hpY2ggcmVxdWly ZXMgdGhlIGhhcmR3YXJlIHRvIGhhdmUgYW4NCj4gPiBhc3NvY2lhdGVkDQo+ID4gIMKgIHNlY3Vy ZSBJUlEuDQo+ID4gDQo+ID4gLSBNaXNjZWxsYW5lb3VzIHZlbmRvciBEVCBwcm9wZXJ0aWVzOg0K PiA+ICDCoCDCoEhvdyB0byBiZSBzdXJlIHRoYXQgdGhlc2UgY2FuIGJlIGFkZHJlc3NlZCB0aHJv dWdoIFRFRSBzZXJ2aWNlcz8NCj4gPiANCj4gPiBSZWdhcmRpbmcgdGhlIGV4aXN0aW5nIERUIG5l ZWRzLCBpdCBzZWVtcyB0byBtZSB0aGF0IHJlbW92aW5nIHRoZSBEVA0KPiA+IHdvdWxkIHJlcXVp cmUNCj4gPiBtb3ZpbmcgYWxsIG5vZGUgcmVzb3VyY2UgbWFuYWdlbWVudCBpbnRvIFRFRSAoIGlm IHJlYWxseSBwb3NzaWJsZSkuIFRoaXMNCj4gPiB3b3VsZA0KPiA+IGluY3JlYXNlIFRFRSBjb21w bGV4aXR5IGFuZCBmb290cHJpbnQsIHJlZHVjZSBzeXN0ZW0gZWZmaWNpZW5jeSwgYW5kDQo+ID4g bWFrZSBzdXBwb3J0aW5nDQo+ID4gb3RoZXIgcGxhdGZvcm1zIGxlc3Mgc2NhbGFibGUuDQoNCkkg Y2FuIHNlZSB5b3VyIGFyZ3VtZW50cyByZWdhcmRpbmcgc29tZSBEVCBwcm9wZXJ0aWVzIHdoaWNo IGFyZSBoYXJkIHRvDQpkaXNjb3ZlciB2aWEgT1AtVEVFIHNlcnZpY2UgYW5kIEkgaGF2ZSBiZWVu IHRyeWluZyB0byB0aGluayBvZiBob3cgdG8NCmhhbmRsZSBpdCBpbiBhIHByb3BlciBtYW5uZXIg Zm9yIGEgZGV2aWNlIG9uIGRpc2NvdmVyYWJsZSBURUUgYnVzLiBPbmUNCm9mIG15IGZlbGxvdyBr ZXJuZWwgbWFpbnRhaW5lcnMgcG9pbnRlZCBvdXQgdGhhdCBvdGhlciBkaXNjb3ZlcmFibGUNCmJ1 c2VzIGluIHRoZSBrZXJuZWwgbGlrZSBQQ0kgZXRjLiBhbHJlYWR5IHNvbHZlZCB0aGlzIERUIGRl cGVuZGVuY2llcw0KdmlhIGhhdmluZyBkZXZpY2Ugc3BlY2lmaWMgYmluZGluZ3MuIFlvdSBjYW4g aGF2ZSBhIGxvb2sgYXQgYSBvbmUNCnBhcnRpY3VsYXIgZXhhbXBsZSBvZiBQQ0kgZGV2aWNlIGJp bmRpbmcgaGVyZSBbMV0uIEluIGNhc2Ugb2YgT1AtVEVFLA0KeW91IGNhbiBoYXZlIGEgc2ltaWxh ciBkZXZpY2UgYmluZGluZyB3aXRoIFVVSUQgdW5kZXIgdGhlIE9QLVRFRQ0KZmlybXdhcmUgRFQg bm9kZS4NCg0KVGhlIGN1cnJlbnQgYXBwcm9hY2ggeW91IGFyZSB0YWtpbmcgdmlhIHByb2Jpbmcg ZGV2aWNlIG9uIHBsYXRmb3JtIGJ1cw0KYW5kIHRoZW4gdHJ5aW5nIHRvIG1vdmUgb250byBURUUg YnVzIGlzbid0IGF0IGFsbCB0aGUgY29tcGF0aWJsZSB3aXRoDQp0aGUgZHJpdmVyIG1vZGVsLCBp dCBzaW1wbHkgc2V0cyBhIGJhZCBleGFtcGxlIGZvciB0aGUgZHJpdmVyIG1vZGVsLg0KDQpbMV0g RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEx ay1wY2kueWFtbA0KDQo+ID4gDQo+ID4gVGhhdCBzYWlkLCBpdCBwcm9iYWJseSBhbHNvIGRlcGVu ZHMgb24gdGhlIFRFRSBpbXBsZW1lbnRhdGlvbi4NCj4gPiBBbmTCoCB3ZSBzaG91bGQgc3VwcG9y dCBib3RoLiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgaW50cm9kdWNpbmcgYSBzZWNvbmQNCj4gPiBV VUlELg0KPiA+IGJ1dCBpbiB0aGlzIGNhc2Ugc2hvdWxkIGl0IGJlIHRoZSBzYW1lIGRyaXZlcj8N Cj4gDQo+IEkgYW0gdW5zdXJlIGhvdyB0byBtb3ZlIGZvcndhcmQgaGVyZS4gSXQgc2VlbXMgdG8g bWUgdGhhdCBhZGRyZXNzaW5nIFN1bWl0J3MNCj4gcmVxdWVzdCBmb3IgYSBURUUgd2l0aG91dCBh IGRldmljZSB0cmVlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQNCj4gT1AtVEVF IGltcGxlbWVudGF0aW9uLCBhdCBsZWFzdCBmb3IgdGhlIFNUTTMyTVAgcGxhdGZvcm1zLg0KPiAN Cj4gUGVyaGFwcyB0aGUgc2ltcGxlc3QgYXBwcm9hY2ggaXMgdG8gYWJhbmRvbiB0aGUgZWZmb3J0 IHRvIG1ha2UgdGhpcyBnZW5lcmljDQo+IGFuZCBpbnN0ZWFkIHJlbmFtZSB0ZWVfcmVtb3RlcHJv Yy5jIHRvIHN0bTMyX3RlZV9yZW1vdGVwcm9jLmMsIG1ha2luZyBpdA0KPiBwbGF0Zm9ybS1kZXBl bmRlbnQuIFRoZW4sIGlmIGFub3RoZXIgcGxhdGZvcm0gd2FudHMgdG8gcmV1c2UgaXQgd2l0aCBP UC1URUUNCj4gRkZBIG9yIGFub3RoZXIgVEVFLCB0aGUgZmlsZSBjYW4gYmUgcmVuYW1lZC4NCj4g DQo+IERvZXMgdGhpcyBwcm9wb3NhbCB3b3VsZCBtYWtlIHNlbnNlIHRvIHlvdT8NCg0KTm8sIHdl IHNob3VsZCB0cnkgdG8gYXZvaWQgYSB2ZW5kb3Igc3BlY2lmaWMgVEVFIGRyaXZlciBlc3BlY2lh bGx5IGlmIGl0J3MgYmFzZWQNCm9uIHNpbWlsYXIgT1AtVEVFIGJhc2VkIHNlcnZpY2Ugd2hpY2gg c2hvdWxkIGJlIGFibGUgdG8gYWJzdHJhY3Qgb3V0IHRoZSB2ZW5kb3INCmltcGxlbWVudGF0aW9u IGZvciB0aGUga2VybmVsLg0KDQotU3VtaXQNCg==