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 X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57A15C4361B for ; Mon, 7 Dec 2020 07:30:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2ACDA22BE8 for ; Mon, 7 Dec 2020 07:30:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726068AbgLGHaY (ORCPT ); Mon, 7 Dec 2020 02:30:24 -0500 Received: from fllv0016.ext.ti.com ([198.47.19.142]:58202 "EHLO fllv0016.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725783AbgLGHaY (ORCPT ); Mon, 7 Dec 2020 02:30:24 -0500 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 0B77Sb7T099914; Mon, 7 Dec 2020 01:28:37 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1607326117; bh=E26GSIN7nbh9QhT/f26Saq/Sje3zJwJEZvIk5wJ8pT0=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=GVPB+L2y1FoWMi1d9e7HtfhOpan1SpVGu4CZ0/SOn6kXv30G21bacMJS7UQ2Noo6s UxLSssuMPdV8OxgsZWFGR0fZnAFMFO+1X25VwCaXZm8s/SDmJoEHWXHLrhTQoQC0q+ NtHvpyaZXq5leCCK7wroCd7EOhNLFJS1xBLFVFs0= Received: from DFLE109.ent.ti.com (dfle109.ent.ti.com [10.64.6.30]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 0B77SbsG000916 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 7 Dec 2020 01:28:37 -0600 Received: from DFLE114.ent.ti.com (10.64.6.35) by DFLE109.ent.ti.com (10.64.6.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Mon, 7 Dec 2020 01:28:36 -0600 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE114.ent.ti.com (10.64.6.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Mon, 7 Dec 2020 01:28:36 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 0B77SXRT084474; Mon, 7 Dec 2020 01:28:34 -0600 Subject: Re: [PATCH v2 00/19] dmaengine/soc: k3-udma: Add support for BCDMA and PKTDMA To: Vinod Koul , , CC: , , , , , , , , , References: <20201117105656.5236-1-peter.ujfalusi@ti.com> <20201124170856.GR8403@vkoul-mobl> From: Peter Ujfalusi Message-ID: <54416232-31b4-e866-82e9-0e9314528a81@ti.com> Date: Mon, 7 Dec 2020 09:29:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <20201124170856.GR8403@vkoul-mobl> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org Hi Santosh, On 24/11/2020 19.08, Vinod Koul wrote: > On 17-11-20, 12:56, Peter Ujfalusi wrote: >> Hi, >> >> The series have build dependency on ti_sci/soc series (v2): >> https://lore.kernel.org/lkml/20201008115224.1591-1-peter.ujfalusi@ti.com/ >> >> Santosh kindly created immutable branch holdinf the series: >> git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git for_5.11/drivers-soc > > Santosh, Can I have a signed tag for this please? Can you please provide a tag for Vinod? I'm ready to send v3 with few small fixes and waiting for Rob to get to the binding documents before I do. Thanks, - Péter >> >> The unmapped event handling in INTA is already mainline. >> >> Changes since v1: >> - Both DT binding document has been updated to address all comments and >> suggestions from Rob, all checks are passing on them >> - included new patch to fix the normal channel start offset when ultra-high >> capacity channels are available for the UDMA and updated the BCDMA/PKTDMA >> patches along the same line >> - Re-arranged the patches for Vinod so that the preparational patches and fixes >> can be picked up separately (they still have dependency on Santosh's branch): >> >> patch 1-5: Fixes and new features for existing devices using UDMA, but the >> the BCDMA/PKTDMA support is building on top of these. >> Build dependency on Santosh's branch >> patch 6: Optional second stage router configuration callback support in core >> patch 7-9: Per channel coherency support in core and use it in dmatest. >> patch 10-: Initial AM64 BCDMA and PKTDMA support >> >> The DMSS introduced within AM64 as a simplified Data movement engine is built >> on similar grounds as the K3 NAVSS and UDMAP, but with significant architectural >> changes. >> >> - Rings are built into the DMAs >> The DMAs no longer use the general purpose ringacc, all rings has been moved >> inside of the DMAs. The new rings within the DMAs are simplified to be dual >> directional compared to the uni-directional rings in ringacc. >> There is no more of a concept of generic purpose rings, all rings are assigned >> to specific channels or flows. >> >> - Per channel coherency support >> The DMAs use the 'ASEL' bits to select data and configuration fetch path. The >> ASEL bits are placed at the unused parts of any address field used by the >> DMAs (pointers to descriptors, addresses in descriptors, ring base addresses). >> The ASEL is not part of the address (the DMAs can address 48bits). >> Individual channels can be configured to be coherent (via ACP port) or non >> coherent individually by configuring the ASEL to appropriate value. >> >> - Two different DMAs (well, three actually) >> PKTDMA >> Similar to UDMAP channels configured in packet mode. >> The flow configuration of the channels has changed significantly in a way that >> each channel have at least one flow assigned at design time and each flow is >> directly mapped to corresponding ring. >> When multiple flows are set, the channel can only use the flows within it's >> assigned range. >> PKTDMA also introduced multiple tflows which did not existed in UDMAP. >> >> BCDMA >> It has two types of channels: >> - split channels (tchan/rchan): Similar to UDMAP channels configured in TR mode. >> - Block copy channels (bchan): Similar to EDMA or traditional DMA channels, they >> can be used for mem2mem type of transfers or to service peripherals not >> accessible via PSI-L by using external triggers for the TR. >> BCDMA channels do not have support for multiple flows >> >> With the introduction of the new DMAs (especially the BCDMA) we also need to >> update the resource manager code to support the second range from sysfw for >> UDMA channels. >> >> The two outstanding change in the series in my view is >> the handling of the DMAs sideband signal of ASEL to select path to provide >> coherency or non coherency. >> >> The smaller one is the device_router_config callback to allow the configuration >> of the triggers when BCDMA is servicing a triggering peripheral to solve a >> chicken-egg situation: >> The router needs to know the event number to send which in turn depends on the >> channel we got for servicing the peripheral. >> >> Regards, >> Peter >> --- >> Grygorii Strashko (1): >> soc: ti: k3-ringacc: add AM64 DMA rings support. >> >> Peter Ujfalusi (17): >> dmaengine: ti: k3-udma: Correct normal channel offset when uchan_cnt >> is not 0 >> dmaengine: ti: k3-udma: Wait for peer teardown completion if supported >> dmaengine: ti: k3-udma: Add support for second resource range from >> sysfw >> dmaengine: ti: k3-udma-glue: Add function to get device pointer for >> DMA API >> dmaengine: ti: k3-udma-glue: Configure the dma_dev for rings >> dmaengine: of-dma: Add support for optional router configuration >> callback >> dmaengine: Add support for per channel coherency handling >> dmaengine: doc: client: Update for dmaengine_get_dma_device() usage >> dmaengine: dmatest: Use dmaengine_get_dma_device >> dt-bindings: dma: ti: Add document for K3 BCDMA >> dt-bindings: dma: ti: Add document for K3 PKTDMA >> dmaengine: ti: k3-psil: Extend psil_endpoint_config for K3 PKTDMA >> dmaengine: ti: k3-psil: Add initial map for AM64 >> dmaengine: ti: Add support for k3 event routers >> dmaengine: ti: k3-udma: Initial support for K3 BCDMA >> dmaengine: ti: k3-udma: Add support for BCDMA channel TPL handling >> dmaengine: ti: k3-udma: Initial support for K3 PKTDMA >> >> Vignesh Raghavendra (1): >> dmaengine: ti: k3-udma-glue: Add support for K3 PKTDMA >> >> .../devicetree/bindings/dma/ti/k3-bcdma.yaml | 175 ++ >> .../devicetree/bindings/dma/ti/k3-pktdma.yaml | 183 ++ >> Documentation/driver-api/dmaengine/client.rst | 4 +- >> drivers/dma/dmatest.c | 13 +- >> drivers/dma/of-dma.c | 10 + >> drivers/dma/ti/Makefile | 3 +- >> drivers/dma/ti/k3-psil-am64.c | 75 + >> drivers/dma/ti/k3-psil-priv.h | 1 + >> drivers/dma/ti/k3-psil.c | 1 + >> drivers/dma/ti/k3-udma-glue.c | 294 ++- >> drivers/dma/ti/k3-udma-private.c | 39 + >> drivers/dma/ti/k3-udma.c | 1968 +++++++++++++++-- >> drivers/dma/ti/k3-udma.h | 27 +- >> drivers/soc/ti/k3-ringacc.c | 325 ++- >> include/linux/dma/k3-event-router.h | 16 + >> include/linux/dma/k3-psil.h | 16 + >> include/linux/dma/k3-udma-glue.h | 12 + >> include/linux/dmaengine.h | 14 + >> include/linux/soc/ti/k3-ringacc.h | 17 + >> 19 files changed, 2973 insertions(+), 220 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml >> create mode 100644 Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml >> create mode 100644 drivers/dma/ti/k3-psil-am64.c >> create mode 100644 include/linux/dma/k3-event-router.h >> >> -- >> Peter >> >> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. >> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki 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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3E03C4361B for ; Mon, 7 Dec 2020 07:30:13 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8B481229C6 for ; Mon, 7 Dec 2020 07:30:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B481229C6 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=z82Pxs+HhaueOQxHifMyXjUpeHNmbCbJYyAk27R1N2Y=; b=Iwbp1kx4Msg+3NLs3B6v7PN7o G80KdL5PpH3NPDMXkHj+7J5BBtFp/u4f3fHf5xXJeFPIVO8vSh84HMdaqrBjwW8n4c+MUbza6vzmq CcDB/3R0FozaAoqxcYwsoV/wqyK5afjRVomvxx4YR97tQtx+aqD93ZN8vwznJcHRtNXFt4v+cMEoI ybEh16exznDuTyFdhEpCLx72c0UcFfLtAHIRBe20Ud7TOkQifi5O5lMwjE1tZJsPtW1qhKY67ddVz tf/9GkBEw3R1OAjKezGkV4auMpCjmO7PLVsnS4snmrZtP1iS+oOceAQXi64cNfl3vID45L8pZsCxh CJaTlaTxg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kmAwv-0004Ws-TN; Mon, 07 Dec 2020 07:28:45 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kmAws-0004WF-MT for linux-arm-kernel@lists.infradead.org; Mon, 07 Dec 2020 07:28:43 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 0B77Sb7T099914; Mon, 7 Dec 2020 01:28:37 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1607326117; bh=E26GSIN7nbh9QhT/f26Saq/Sje3zJwJEZvIk5wJ8pT0=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=GVPB+L2y1FoWMi1d9e7HtfhOpan1SpVGu4CZ0/SOn6kXv30G21bacMJS7UQ2Noo6s UxLSssuMPdV8OxgsZWFGR0fZnAFMFO+1X25VwCaXZm8s/SDmJoEHWXHLrhTQoQC0q+ NtHvpyaZXq5leCCK7wroCd7EOhNLFJS1xBLFVFs0= Received: from DFLE109.ent.ti.com (dfle109.ent.ti.com [10.64.6.30]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 0B77SbsG000916 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 7 Dec 2020 01:28:37 -0600 Received: from DFLE114.ent.ti.com (10.64.6.35) by DFLE109.ent.ti.com (10.64.6.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Mon, 7 Dec 2020 01:28:36 -0600 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE114.ent.ti.com (10.64.6.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Mon, 7 Dec 2020 01:28:36 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 0B77SXRT084474; Mon, 7 Dec 2020 01:28:34 -0600 Subject: Re: [PATCH v2 00/19] dmaengine/soc: k3-udma: Add support for BCDMA and PKTDMA To: Vinod Koul , , References: <20201117105656.5236-1-peter.ujfalusi@ti.com> <20201124170856.GR8403@vkoul-mobl> From: Peter Ujfalusi Message-ID: <54416232-31b4-e866-82e9-0e9314528a81@ti.com> Date: Mon, 7 Dec 2020 09:29:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <20201124170856.GR8403@vkoul-mobl> Content-Language: en-US X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201207_022842_869655_7BDB0F0B X-CRM114-Status: GOOD ( 28.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nm@ti.com, devicetree@vger.kernel.org, grygorii.strashko@ti.com, vigneshr@ti.com, linux-kernel@vger.kernel.org, t-kristo@ti.com, robh+dt@kernel.org, dmaengine@vger.kernel.org, dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgU2FudG9zaCwKCk9uIDI0LzExLzIwMjAgMTkuMDgsIFZpbm9kIEtvdWwgd3JvdGU6Cj4gT24g MTctMTEtMjAsIDEyOjU2LCBQZXRlciBVamZhbHVzaSB3cm90ZToKPj4gSGksCj4+Cj4+IFRoZSBz ZXJpZXMgaGF2ZSBidWlsZCBkZXBlbmRlbmN5IG9uIHRpX3NjaS9zb2Mgc2VyaWVzICh2Mik6Cj4+ IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMDEwMDgxMTUyMjQuMTU5MS0xLXBldGVy LnVqZmFsdXNpQHRpLmNvbS8KPj4KPj4gU2FudG9zaCBraW5kbHkgY3JlYXRlZCBpbW11dGFibGUg YnJhbmNoIGhvbGRpbmYgdGhlIHNlcmllczoKPj4gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj bS9saW51eC9rZXJuZWwvZ2l0L3NzYW50b3NoL2xpbnV4LWtleXN0b25lLmdpdCBmb3JfNS4xMS9k cml2ZXJzLXNvYyAKPiAKPiBTYW50b3NoLCBDYW4gSSBoYXZlIGEgc2lnbmVkIHRhZyBmb3IgdGhp cyBwbGVhc2U/CgpDYW4geW91IHBsZWFzZSBwcm92aWRlIGEgdGFnIGZvciBWaW5vZD8KCkknbSBy ZWFkeSB0byBzZW5kIHYzIHdpdGggZmV3IHNtYWxsIGZpeGVzIGFuZCB3YWl0aW5nIGZvciBSb2Ig dG8gZ2V0IHRvCnRoZSBiaW5kaW5nIGRvY3VtZW50cyBiZWZvcmUgSSBkby4KClRoYW5rcywKLSBQ w6l0ZXIKCj4+Cj4+IFRoZSB1bm1hcHBlZCBldmVudCBoYW5kbGluZyBpbiBJTlRBIGlzIGFscmVh ZHkgbWFpbmxpbmUuCj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0gQm90aCBEVCBiaW5kaW5n IGRvY3VtZW50IGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWRkcmVzcyBhbGwgY29tbWVudHMgYW5kCj4+ ICAgc3VnZ2VzdGlvbnMgZnJvbSBSb2IsIGFsbCBjaGVja3MgYXJlIHBhc3Npbmcgb24gdGhlbQo+ PiAtIGluY2x1ZGVkIG5ldyBwYXRjaCB0byBmaXggdGhlIG5vcm1hbCBjaGFubmVsIHN0YXJ0IG9m ZnNldCB3aGVuIHVsdHJhLWhpZ2gKPj4gICBjYXBhY2l0eSBjaGFubmVscyBhcmUgYXZhaWxhYmxl IGZvciB0aGUgVURNQSBhbmQgdXBkYXRlZCB0aGUgQkNETUEvUEtURE1BCj4+ICAgcGF0Y2hlcyBh bG9uZyB0aGUgc2FtZSBsaW5lCj4+IC0gUmUtYXJyYW5nZWQgdGhlIHBhdGNoZXMgZm9yIFZpbm9k IHNvIHRoYXQgdGhlIHByZXBhcmF0aW9uYWwgcGF0Y2hlcyBhbmQgZml4ZXMKPj4gICBjYW4gYmUg cGlja2VkIHVwIHNlcGFyYXRlbHkgKHRoZXkgc3RpbGwgaGF2ZSBkZXBlbmRlbmN5IG9uIFNhbnRv c2gncyBicmFuY2gpOgo+Pgo+PiAgIHBhdGNoIDEtNTogRml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBm b3IgZXhpc3RpbmcgZGV2aWNlcyB1c2luZyBVRE1BLCBidXQgdGhlCj4+ICAgICAgICAgICAgICB0 aGUgQkNETUEvUEtURE1BIHN1cHBvcnQgaXMgYnVpbGRpbmcgb24gdG9wIG9mIHRoZXNlLgo+PiAg ICAgICAgICAgICAgQnVpbGQgZGVwZW5kZW5jeSBvbiBTYW50b3NoJ3MgYnJhbmNoCj4+ICAgcGF0 Y2ggNjogT3B0aW9uYWwgc2Vjb25kIHN0YWdlIHJvdXRlciBjb25maWd1cmF0aW9uIGNhbGxiYWNr IHN1cHBvcnQgaW4gY29yZQo+PiAgIHBhdGNoIDctOTogUGVyIGNoYW5uZWwgY29oZXJlbmN5IHN1 cHBvcnQgaW4gY29yZSBhbmQgdXNlIGl0IGluIGRtYXRlc3QuCj4+ICAgcGF0Y2ggMTAtOiBJbml0 aWFsIEFNNjQgQkNETUEgYW5kIFBLVERNQSBzdXBwb3J0Cj4+Cj4+IFRoZSBETVNTIGludHJvZHVj ZWQgd2l0aGluIEFNNjQgYXMgYSBzaW1wbGlmaWVkIERhdGEgbW92ZW1lbnQgZW5naW5lIGlzIGJ1 aWx0Cj4+IG9uIHNpbWlsYXIgZ3JvdW5kcyBhcyB0aGUgSzMgTkFWU1MgYW5kIFVETUFQLCBidXQg d2l0aCBzaWduaWZpY2FudCBhcmNoaXRlY3R1cmFsCj4+IGNoYW5nZXMuCj4+Cj4+IC0gUmluZ3Mg YXJlIGJ1aWx0IGludG8gdGhlIERNQXMKPj4gVGhlIERNQXMgbm8gbG9uZ2VyIHVzZSB0aGUgZ2Vu ZXJhbCBwdXJwb3NlIHJpbmdhY2MsIGFsbCByaW5ncyBoYXMgYmVlbiBtb3ZlZAo+PiBpbnNpZGUg b2YgdGhlIERNQXMuIFRoZSBuZXcgcmluZ3Mgd2l0aGluIHRoZSBETUFzIGFyZSBzaW1wbGlmaWVk IHRvIGJlIGR1YWwKPj4gZGlyZWN0aW9uYWwgY29tcGFyZWQgdG8gdGhlIHVuaS1kaXJlY3Rpb25h bCByaW5ncyBpbiByaW5nYWNjLgo+PiBUaGVyZSBpcyBubyBtb3JlIG9mIGEgY29uY2VwdCBvZiBn ZW5lcmljIHB1cnBvc2UgcmluZ3MsIGFsbCByaW5ncyBhcmUgYXNzaWduZWQKPj4gdG8gc3BlY2lm aWMgY2hhbm5lbHMgb3IgZmxvd3MuCj4+Cj4+IC0gUGVyIGNoYW5uZWwgY29oZXJlbmN5IHN1cHBv cnQKPj4gVGhlIERNQXMgdXNlIHRoZSAnQVNFTCcgYml0cyB0byBzZWxlY3QgZGF0YSBhbmQgY29u ZmlndXJhdGlvbiBmZXRjaCBwYXRoLiBUaGUKPj4gQVNFTCBiaXRzIGFyZSBwbGFjZWQgYXQgdGhl IHVudXNlZCBwYXJ0cyBvZiBhbnkgYWRkcmVzcyBmaWVsZCB1c2VkIGJ5IHRoZQo+PiBETUFzIChw b2ludGVycyB0byBkZXNjcmlwdG9ycywgYWRkcmVzc2VzIGluIGRlc2NyaXB0b3JzLCByaW5nIGJh c2UgYWRkcmVzc2VzKS4KPj4gVGhlIEFTRUwgaXMgbm90IHBhcnQgb2YgdGhlIGFkZHJlc3MgKHRo ZSBETUFzIGNhbiBhZGRyZXNzIDQ4Yml0cykuCj4+IEluZGl2aWR1YWwgY2hhbm5lbHMgY2FuIGJl IGNvbmZpZ3VyZWQgdG8gYmUgY29oZXJlbnQgKHZpYSBBQ1AgcG9ydCkgb3Igbm9uCj4+IGNvaGVy ZW50IGluZGl2aWR1YWxseSBieSBjb25maWd1cmluZyB0aGUgQVNFTCB0byBhcHByb3ByaWF0ZSB2 YWx1ZS4KPj4KPj4gLSBUd28gZGlmZmVyZW50IERNQXMgKHdlbGwsIHRocmVlIGFjdHVhbGx5KQo+ PiBQS1RETUEKPj4gU2ltaWxhciB0byBVRE1BUCBjaGFubmVscyBjb25maWd1cmVkIGluIHBhY2tl dCBtb2RlLgo+PiBUaGUgZmxvdyBjb25maWd1cmF0aW9uIG9mIHRoZSBjaGFubmVscyBoYXMgY2hh bmdlZCBzaWduaWZpY2FudGx5IGluIGEgd2F5IHRoYXQKPj4gZWFjaCBjaGFubmVsIGhhdmUgYXQg bGVhc3Qgb25lIGZsb3cgYXNzaWduZWQgYXQgZGVzaWduIHRpbWUgYW5kIGVhY2ggZmxvdyBpcwo+ PiBkaXJlY3RseSBtYXBwZWQgdG8gY29ycmVzcG9uZGluZyByaW5nLgo+PiBXaGVuIG11bHRpcGxl IGZsb3dzIGFyZSBzZXQsIHRoZSBjaGFubmVsIGNhbiBvbmx5IHVzZSB0aGUgZmxvd3Mgd2l0aGlu IGl0J3MKPj4gYXNzaWduZWQgcmFuZ2UuCj4+IFBLVERNQSBhbHNvIGludHJvZHVjZWQgbXVsdGlw bGUgdGZsb3dzIHdoaWNoIGRpZCBub3QgZXhpc3RlZCBpbiBVRE1BUC4KPj4KPj4gQkNETUEKPj4g SXQgaGFzIHR3byB0eXBlcyBvZiBjaGFubmVsczoKPj4gLSBzcGxpdCBjaGFubmVscyAodGNoYW4v cmNoYW4pOiBTaW1pbGFyIHRvIFVETUFQIGNoYW5uZWxzIGNvbmZpZ3VyZWQgaW4gVFIgbW9kZS4K Pj4gLSBCbG9jayBjb3B5IGNoYW5uZWxzIChiY2hhbik6IFNpbWlsYXIgdG8gRURNQSBvciB0cmFk aXRpb25hbCBETUEgY2hhbm5lbHMsIHRoZXkKPj4gICBjYW4gYmUgdXNlZCBmb3IgbWVtMm1lbSB0 eXBlIG9mIHRyYW5zZmVycyBvciB0byBzZXJ2aWNlIHBlcmlwaGVyYWxzIG5vdAo+PiAgIGFjY2Vz c2libGUgdmlhIFBTSS1MIGJ5IHVzaW5nIGV4dGVybmFsIHRyaWdnZXJzIGZvciB0aGUgVFIuCj4+ IEJDRE1BIGNoYW5uZWxzIGRvIG5vdCBoYXZlIHN1cHBvcnQgZm9yIG11bHRpcGxlIGZsb3dzCj4+ Cj4+IFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgbmV3IERNQXMgKGVzcGVjaWFsbHkgdGhl IEJDRE1BKSB3ZSBhbHNvIG5lZWQgdG8KPj4gdXBkYXRlIHRoZSByZXNvdXJjZSBtYW5hZ2VyIGNv ZGUgdG8gc3VwcG9ydCB0aGUgc2Vjb25kIHJhbmdlIGZyb20gc3lzZncgZm9yCj4+IFVETUEgY2hh bm5lbHMuCj4+Cj4+IFRoZSB0d28gb3V0c3RhbmRpbmcgY2hhbmdlIGluIHRoZSBzZXJpZXMgaW4g bXkgdmlldyBpcwo+PiB0aGUgaGFuZGxpbmcgb2YgdGhlIERNQXMgc2lkZWJhbmQgc2lnbmFsIG9m IEFTRUwgdG8gc2VsZWN0IHBhdGggdG8gcHJvdmlkZQo+PiBjb2hlcmVuY3kgb3Igbm9uIGNvaGVy ZW5jeS4KPj4KPj4gVGhlIHNtYWxsZXIgb25lIGlzIHRoZSBkZXZpY2Vfcm91dGVyX2NvbmZpZyBj YWxsYmFjayB0byBhbGxvdyB0aGUgY29uZmlndXJhdGlvbgo+PiBvZiB0aGUgdHJpZ2dlcnMgd2hl biBCQ0RNQSBpcyBzZXJ2aWNpbmcgYSB0cmlnZ2VyaW5nIHBlcmlwaGVyYWwgdG8gc29sdmUgYQo+ PiBjaGlja2VuLWVnZyBzaXR1YXRpb246Cj4+IFRoZSByb3V0ZXIgbmVlZHMgdG8ga25vdyB0aGUg ZXZlbnQgbnVtYmVyIHRvIHNlbmQgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIHRoZQo+PiBjaGFu bmVsIHdlIGdvdCBmb3Igc2VydmljaW5nIHRoZSBwZXJpcGhlcmFsLgo+Pgo+PiBSZWdhcmRzLAo+ PiBQZXRlcgo+PiAtLS0KPj4gR3J5Z29yaWkgU3RyYXNoa28gKDEpOgo+PiAgIHNvYzogdGk6IGsz LXJpbmdhY2M6IGFkZCBBTTY0IERNQSByaW5ncyBzdXBwb3J0Lgo+Pgo+PiBQZXRlciBVamZhbHVz aSAoMTcpOgo+PiAgIGRtYWVuZ2luZTogdGk6IGszLXVkbWE6IENvcnJlY3Qgbm9ybWFsIGNoYW5u ZWwgb2Zmc2V0IHdoZW4gdWNoYW5fY250Cj4+ICAgICBpcyBub3QgMAo+PiAgIGRtYWVuZ2luZTog dGk6IGszLXVkbWE6IFdhaXQgZm9yIHBlZXIgdGVhcmRvd24gY29tcGxldGlvbiBpZiBzdXBwb3J0 ZWQKPj4gICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1hOiBBZGQgc3VwcG9ydCBmb3Igc2Vjb25kIHJl c291cmNlIHJhbmdlIGZyb20KPj4gICAgIHN5c2Z3Cj4+ICAgZG1hZW5naW5lOiB0aTogazMtdWRt YS1nbHVlOiBBZGQgZnVuY3Rpb24gdG8gZ2V0IGRldmljZSBwb2ludGVyIGZvcgo+PiAgICAgRE1B IEFQSQo+PiAgIGRtYWVuZ2luZTogdGk6IGszLXVkbWEtZ2x1ZTogQ29uZmlndXJlIHRoZSBkbWFf ZGV2IGZvciByaW5ncwo+PiAgIGRtYWVuZ2luZTogb2YtZG1hOiBBZGQgc3VwcG9ydCBmb3Igb3B0 aW9uYWwgcm91dGVyIGNvbmZpZ3VyYXRpb24KPj4gICAgIGNhbGxiYWNrCj4+ICAgZG1hZW5naW5l OiBBZGQgc3VwcG9ydCBmb3IgcGVyIGNoYW5uZWwgY29oZXJlbmN5IGhhbmRsaW5nCj4+ICAgZG1h ZW5naW5lOiBkb2M6IGNsaWVudDogVXBkYXRlIGZvciBkbWFlbmdpbmVfZ2V0X2RtYV9kZXZpY2Uo KSB1c2FnZQo+PiAgIGRtYWVuZ2luZTogZG1hdGVzdDogVXNlIGRtYWVuZ2luZV9nZXRfZG1hX2Rl dmljZQo+PiAgIGR0LWJpbmRpbmdzOiBkbWE6IHRpOiBBZGQgZG9jdW1lbnQgZm9yIEszIEJDRE1B Cj4+ICAgZHQtYmluZGluZ3M6IGRtYTogdGk6IEFkZCBkb2N1bWVudCBmb3IgSzMgUEtURE1BCj4+ ICAgZG1hZW5naW5lOiB0aTogazMtcHNpbDogRXh0ZW5kIHBzaWxfZW5kcG9pbnRfY29uZmlnIGZv ciBLMyBQS1RETUEKPj4gICBkbWFlbmdpbmU6IHRpOiBrMy1wc2lsOiBBZGQgaW5pdGlhbCBtYXAg Zm9yIEFNNjQKPj4gICBkbWFlbmdpbmU6IHRpOiBBZGQgc3VwcG9ydCBmb3IgazMgZXZlbnQgcm91 dGVycwo+PiAgIGRtYWVuZ2luZTogdGk6IGszLXVkbWE6IEluaXRpYWwgc3VwcG9ydCBmb3IgSzMg QkNETUEKPj4gICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1hOiBBZGQgc3VwcG9ydCBmb3IgQkNETUEg Y2hhbm5lbCBUUEwgaGFuZGxpbmcKPj4gICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1hOiBJbml0aWFs IHN1cHBvcnQgZm9yIEszIFBLVERNQQo+Pgo+PiBWaWduZXNoIFJhZ2hhdmVuZHJhICgxKToKPj4g ICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1hLWdsdWU6IEFkZCBzdXBwb3J0IGZvciBLMyBQS1RETUEK Pj4KPj4gIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS9rMy1iY2RtYS55YW1sICB8ICAx NzUgKysKPj4gIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS9rMy1wa3RkbWEueWFtbCB8 ICAxODMgKysKPj4gIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWFlbmdpbmUvY2xpZW50LnJz dCB8ICAgIDQgKy0KPj4gIGRyaXZlcnMvZG1hL2RtYXRlc3QuYyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTMgKy0KPj4gIGRyaXZlcnMvZG1hL29mLWRtYS5jICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMTAgKwo+PiAgZHJpdmVycy9kbWEvdGkvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMyArLQo+PiAgZHJpdmVycy9kbWEvdGkvazMtcHNpbC1hbTY0LmMgICAg ICAgICAgICAgICAgIHwgICA3NSArCj4+ICBkcml2ZXJzL2RtYS90aS9rMy1wc2lsLXByaXYuaCAg ICAgICAgICAgICAgICAgfCAgICAxICsKPj4gIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwuYyAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+PiAgZHJpdmVycy9kbWEvdGkvazMtdWRtYS1nbHVl LmMgICAgICAgICAgICAgICAgIHwgIDI5NCArKy0KPj4gIGRyaXZlcnMvZG1hL3RpL2szLXVkbWEt cHJpdmF0ZS5jICAgICAgICAgICAgICB8ICAgMzkgKwo+PiAgZHJpdmVycy9kbWEvdGkvazMtdWRt YS5jICAgICAgICAgICAgICAgICAgICAgIHwgMTk2OCArKysrKysrKysrKysrKystLQo+PiAgZHJp dmVycy9kbWEvdGkvazMtdWRtYS5oICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArLQo+PiAg ZHJpdmVycy9zb2MvdGkvazMtcmluZ2FjYy5jICAgICAgICAgICAgICAgICAgIHwgIDMyNSArKy0K Pj4gIGluY2x1ZGUvbGludXgvZG1hL2szLWV2ZW50LXJvdXRlci5oICAgICAgICAgICB8ICAgMTYg Kwo+PiAgaW5jbHVkZS9saW51eC9kbWEvazMtcHNpbC5oICAgICAgICAgICAgICAgICAgIHwgICAx NiArCj4+ICBpbmNsdWRlL2xpbnV4L2RtYS9rMy11ZG1hLWdsdWUuaCAgICAgICAgICAgICAgfCAg IDEyICsKPj4gIGluY2x1ZGUvbGludXgvZG1hZW5naW5lLmggICAgICAgICAgICAgICAgICAgICB8 ICAgMTQgKwo+PiAgaW5jbHVkZS9saW51eC9zb2MvdGkvazMtcmluZ2FjYy5oICAgICAgICAgICAg IHwgICAxNyArCj4+ICAxOSBmaWxlcyBjaGFuZ2VkLCAyOTczIGluc2VydGlvbnMoKyksIDIyMCBk ZWxldGlvbnMoLSkKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvZG1hL3RpL2szLWJjZG1hLnlhbWwKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3RpL2szLXBrdGRtYS55YW1sCj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEvdGkvazMtcHNpbC1hbTY0LmMKPj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2RtYS9rMy1ldmVudC1yb3V0ZXIuaAo+Pgo+ PiAtLSAKPj4gUGV0ZXIKPj4KPj4gVGV4YXMgSW5zdHJ1bWVudHMgRmlubGFuZCBPeSwgUG9ya2th bGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuCj4+IFktdHVubnVzL0J1c2luZXNzIElEOiAwNjE1 NTIxLTQuIEtvdGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtpCj4gCgoKVGV4YXMgSW5zdHJ1bWVu dHMgRmlubGFuZCBPeSwgUG9ya2thbGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuClktdHVubnVz L0J1c2luZXNzIElEOiAwNjE1NTIxLTQuIEtvdGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtpCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==