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=-7.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,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 088A6C43603 for ; Thu, 12 Dec 2019 08:47:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BD8A122527 for ; Thu, 12 Dec 2019 08:47:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="VkQiZyck" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728245AbfLLIrJ (ORCPT ); Thu, 12 Dec 2019 03:47:09 -0500 Received: from fllv0015.ext.ti.com ([198.47.19.141]:43934 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728211AbfLLIrJ (ORCPT ); Thu, 12 Dec 2019 03:47:09 -0500 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id xBC8klUL025899; Thu, 12 Dec 2019 02:46:47 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1576140407; bh=hTgzk3zArrJsIKnhM4tjir9aT8NyFMPzCGdqT6+n9J0=; h=Subject:From:To:CC:References:Date:In-Reply-To; b=VkQiZyck5rjKEyHhq768l7Rcmr73cbhu3EPvaNxSBFhyHivPWLSOBhnf95ystlzUd hTvEK4hldfppUGL1AmghM1eoTYowkQF7wyzW0QA+kAPcQk0wvMC7so/y/5EFSpn8wf xHuGbE/lxwJ1u2WGKnFI6elBaMelmV6hOvGcDTo8= Received: from DLEE114.ent.ti.com (dlee114.ent.ti.com [157.170.170.25]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id xBC8klgk093481 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 12 Dec 2019 02:46:47 -0600 Received: from DLEE102.ent.ti.com (157.170.170.32) by DLEE114.ent.ti.com (157.170.170.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Thu, 12 Dec 2019 02:46:46 -0600 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE102.ent.ti.com (157.170.170.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Thu, 12 Dec 2019 02:46:46 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id xBC8kgqP000513; Thu, 12 Dec 2019 02:46:42 -0600 Subject: Re: [PATCH v7 00/12] dmaengine/soc: Add Texas Instruments UDMA support From: Peter Ujfalusi To: , , , , , , CC: , , , , , , , , , , References: <20191209094332.4047-1-peter.ujfalusi@ti.com> Message-ID: Date: Thu, 12 Dec 2019 10:46:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20191209094332.4047-1-peter.ujfalusi@ti.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org On 09/12/2019 11.43, Peter Ujfalusi wrote: > Hi, > > Vinod, Nishanth, Tero, Santosh: the ti_sci patch in this series was sent > upstream over a month ago: > https://lore.kernel.org/lkml/20191025084715.25098-1-peter.ujfalusi@ti.com/ > > I'm still waiting on it's fate (Tero has given his r-b). > The ti_sci patch did not made it to 5.5-rc1, but I included it in the series and > let the maintainers decide if it can go via DMAengine for 5.6 or to later > releases (5.6 probably for the ti_sci and 5.7 for the UDMA driver patch). > > Changes since v6: > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=209455&state=*) > > - UDMAP DMAengine driver: > - Squashed the split patches > - Squashed the early TX completion handling update > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=210713&state=*) > - Hard reset fix for RX channels to avoid channel lockdown > - Correct completed descriptor's residue value I got build failure with allmodconfig: ERROR: "devm_ti_sci_get_of_resource" [drivers/soc/ti/k3-ringacc.ko] undefined! ERROR: "of_msi_get_domain" [drivers/soc/ti/k3-ringacc.ko] undefined! ERROR: "devm_ti_sci_get_of_resource" [drivers/dma/ti/k3-udma.ko] undefined! ERROR: "of_msi_get_domain" [drivers/dma/ti/k3-udma.ko] undefined! They are because both devm_ti_sci_get_of_resource and of_msi_get_domain is missing EXPORT_SYMBOL_GPL(), so they can not be used from modules. There were patches in the past to add it for of_msi_get_domain: https://lore.kernel.org/patchwork/patch/668123/ https://lore.kernel.org/patchwork/patch/716046/ I can not find a reason why these are not merged. Matthias's patch looks to be the earlier one, is it OK if I resend it within v8? > Changes since v5: > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=201051&state=*) > - Based on 5.4 > > - cppi5 header > - clear the bits before setting new value with '|=' > > - UDMAP DT bindings: > - valid compatibles as single enum list > > - UDMAP DMAengine driver: > - Fix udma_is_chan_running() > - Use flags for acc32, burst support instead of a bool in udma_match_data > struct > - TDTYPE handling (teardown completion handling for j721e) is moved to separate > patch as the tisci core patch has not moved for over a month. > Both ti_sci and the iterative patch to udma is included in the series. > > Changes since v4 > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=196619&state=*) > - Based on 5.4-rc7 > > - ringacc DT bindings: > - clarify the meaning of ti,sci-dev-id > > - ringacc driver: > - Remove 'default y' from Kconfig > - Fix struct comments > - Move try_module_get() earlier in k3_ringacc_request_ring() > > - PSI-L thread database: > - Add kernel style struct/enum documentation > - Add missing thread description for sa2ul second interface > - Change EXPORT_SYMBOL to EXPORT_SYMBOL_GPL > > - UDMAP DT bindings: > - move to dual license > - change compatible from const to enum > - items dropped for ti,sci-rm-ranges-* > - description text moved from literal block when it is sensible > - example fixed to compile cleanly > - added parent to provide correct address-cells > - navss is moved to simple-mfd from simple-bus > > - UDMAP DMAengine driver: > - move fd_ring/r_ring under rflow > - get rid of unused iomem for rflows > - Remove 'default y' from Kconfig > - Use defines for rflow src/dst tag selection > - Merge the udma_ring_callback() and udma_tr_event_callback() to their > corresponding interrupt handler > - Create new defines for tx/rx channel's tisci valid parameter flags > - Remove re-initialization to 0 of tisci request struct members > - Make sure that vchan tasklets are also stopped when removing the module > - Additional checkpatch --strict fixes when it made sense > - make W=1 was clean > > - UDMAP glue layer: > - Remove 'default y' from Kconfig > - commit message update for features needing the glue layer > > Changes since v3 > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=180679&state=*): > - Based on 5.4-rc5 > - Fixed typos pointed out by Tero > - Added reviewed-by tags from Tero > > - ring accelerator driver > - TODO_GS is removed from the header > - pm_runtime removed as NAVSS and it's components are always on > - Check validity of Message mode setup (element size > 8 bytes must use proxy) > > - cppi5 header > - add commit message > > - UDMAP DT bindings > - Drop the psil-config node use on the remote PSI-L side and use only one cell > which is the remote threadID: > > dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>; > dma-names = "tx", "rx"; > > - The PSI-L thread configuration description is moved to kernel as a new module: > k3-psil/k3-psil-am654/k3-psil-j721e > - ti,psil-base has been removed and moved to kernel > - removed the no longer needed dt-bindings/dma/k3-udma.h > - Convert the document to schema (yaml) > > - NEW PSI-L endpoint configuration database > - a simple database holding the remote end's configuration needed for UDMAP > configuration. All previous parameters from DT has been moved here and merged > with the linux only tr mode channel flag. > - Client drivers can update the remote endpoint configuration as it can be > different based on system configuration and the endpoint itself is under the > control of the peripheral driver. > - database for am654 and j721e > > - UDMAP DMAengine driver > - pm_runtime removed as NAVSS and it's components are always on > - rchan_oes_offset added to MSI dommain allocation > - Use the new PSI-L endpoint database for UDMAP configuration > - Support for waiting for PDMA teardown completion on j721e instead of > returning right away. depends on: > https://lkml.org/lkml/2019/10/25/189 > Not included in this series, but it is in the branch I have prepared. > - psil-base is moved from DT to be part of udma_match_data > - tr_thread maps is removed and using the PSI-L endpoint configuration for it > > - UDMAP glue layer > - pm_runtime removed as NAVSS and it's components are always on > - Use the new PSI-L endpoint database for UDMAP configuration > > Changes since v2 > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=152609&state=*) > - Based on 5.4-rc1 > - Support for Flow only data transfer for the glue layer > > - cppi5 header > - comments converted to kernel-doc style > - Remove the excessive WARN_ONs and rely on the user for sanity > - new macro for checking TearDown Completion Message > > - ring accelerator driver > - fixed up th commit message (SoB, TI-SCI) > - fixed ring reset > - CONFIG_TI_K3_RINGACC_DEBUG is removed along with the dbg_write/read functions > and use dev_dbg() > - k3_ringacc_ring_dump() is moved to static > - step numbering removed from k3_ringacc_ring_reset_dma() > - Add clarification comment for shared ring usage in k3_ringacc_ring_cfg() > - Magic shift values in k3_ringacc_ring_cfg_proxy() got defined > - K3_RINGACC_RING_MODE_QM is removed as it is not supported > > - UDMAP DT bindings > - Fix property prefixing: s/pdma,/ti,pdma- > - Add ti,notdpkt property to suppress teardown completion message on tchan > - example updated accordingly > > - UDMAP DMAengine driver > - Change __raw_readl/writel to readl/writel > - Split up the udma_tisci_channel_config() into m2m, tx and rx tisci > configuration functions for clarity > - DT bindings change: s/pdma,/ti,pdma- > - Cleanup of udma_tx_status(): > - residue calculation fix for m2m > - no need to read packet counter as it is not used > - peer byte counter only available in PDMAs > - Proper locking to avoid race with interrupt handler (polled m2m fix) > - Support for ti,notdpkt > - RFLOW management rework to support data movement without channel: > - the channel is not controlled by Linux but other core and we only have > rflows and rings to do the DMA transfers. > This mode is only supported by the Glue layer for now. > > - UDMAP glue layer > - Debug print improvements > - Support for rflow/ring only data movement > > Changes since v1 > (https://patchwork.kernel.org/project/linux-dmaengine/list/?series=114105&state=*) > - Added support for j721e > - Based on 5.3-rc2 > - dropped ti_sci API patch for RM management as it is already upstream > - dropped dmadev_get_slave_channel() patch, using __dma_request_channel() > - Added Rob's Reviewed-by to ringacc DT binding document patch > - DT bindings changes: > - linux,udma-mode is gone, I have a simple lookup table in the driver to flag > TR channels. > - Support for j721e > - Fix bug in of_node_put() handling in xlate function > > Changes since RFC (https://patchwork.kernel.org/cover/10612465/): > - Based on linux-next (20190506) which now have the ti_sci interrupt support > - The series can be applied and the UDMA via DMAengine API will be functional > - Included in the series: ti_sci Resource management API, cppi5 header and > driver for the ring accelerator. > - The DMAengine core patches have been updated as per the review comments for > earlier submittion. > - The DMAengine driver patch is artificially split up to 6 smaller patches > > The k3-udma driver implements the Data Movement Architecture described in > AM65x TRM (http://www.ti.com/lit/pdf/spruid7) and > j721e TRM (http://www.ti.com/lit/pdf/spruil1) > > This DMA architecture is a big departure from 'traditional' architecture where > we had either EDMA or sDMA as system DMA. > > Packet DMAs were used as dedicated DMAs to service only networking (Kesytone2) > or USB (am335x) while other peripherals were serviced by EDMA. > > In AM65x/j721e the UDMA (Unified DMA) is used for all data movment within the > SoC, tasked to service all peripherals (UART, McSPI, McASP, networking, etc). > > The NAVSS/UDMA is built around CPPI5 (Communications Port Programming Interface) > and it supports Packet mode (similar to CPPI4.1 in Keystone2 for networking) and > TR mode (similar to EDMA descriptor). > The data movement is done within a PSI-L fabric, peripherals (including the > UDMA-P) are not addressed by their I/O register as with traditional DMAs but > with their PSI-L thread ID. > > In AM65x/j721e we have two main type of peripherals: > Legacy: McASP, McSPI, UART, etc. > to provide connectivity they are serviced by PDMA (Peripheral DMA) > PDMA threads are locked to service a given peripheral, for example PSI-L thread > 0x4400/0xc400 is to service McASP0 rx/tx. > The PDMa configuration can be done via the UDMA Real Time Peer registers. > Native: Networking, security accelerator > these peripherals have native support for PSI-L. > > To be able to use the DMA the following generic steps need to be taken: > - configure a DMA channel (tchan for TX, rchan for RX) > - channel mode: Packet or TR mode > - for memcpy a tchan and rchan pair is used. > - for packet mode RX we also need to configure a receive flow to configure the > packet receiption > - the source and destination threads must be paired > - at minimum one pair of rings need to be configured: > - tx: transfer ring and transfer completion ring > - rx: free descriptor ring and receive ring > - two interrupts: UDMA-P channel interrupt and ring interrupt for tc_ring/r_ring > - If the channel is in packet mode or configured to memcpy then we only need > one interrupt from the ring, events from UDMAP is not used. > > When the channel setup is completed we only interract with the rings: > - TX: push a descriptor to t_ring and wait for it to be pushed to the tc_ring by > the UDMA-P > - RX: push a descriptor to the fd_ring and waith for UDMA-P to push it back to > the r_ring. > > Since we have FIFOs in the DMA fabric (UDMA-P, PSI-L and PDMA) which was not the > case in previous DMAs we need to report the amount of data held in these FIFOs > to clients (delay calculation for ALSA, UART FIFO flush support). > > Metadata support: > DMAengine user driver was posted upstream based/tested on the v1 of the UDMA > series: https://lkml.org/lkml/2019/6/28/20 > SA2UL is using the metadata DMAengine API. > > Note on the last patch: > In Keystone2 the networking had dedicated DMA (packet DMA) which is not the case > anymore and the DMAengine API currently missing support for the features we > would need to support networking, things like > - support for receive descriptor 'classification' > - we need to support several receive queues for a channel. > - the queues are used for packet priority handling for example, but they can be > used to have pools of descriptors for different sizes. > - out of order completion of descriptors on a channel > - when we have several queues to handle different priority packets the > descriptors will be completed 'out-of-order' > - NAPI type of operation (polling instead of interrupt driven transfer) > - without this we can not sustain gigabit speeds and we need to support NAPI > - not to limit this to networking, but other high performance operations > > It is my intention to work on these to be able to remove the 'glue' layer and > switch to DMAengine API - or have an API aside of DMAengine to have generic way > to support networking, but given how controversial and not trivial these changes > are we need something to support networking. > > The series (+DT patches to enabled DMA on AM65x and j721e) on top of 5.5-rc1 is > available: > https://github.com/omap-audio/linux-audio.git peter/udma/series_v7-5.5-rc1 > > Regards, > Peter > --- > Grygorii Strashko (3): > bindings: soc: ti: add documentation for k3 ringacc > soc: ti: k3: add navss ringacc driver > dmaengine: ti: k3-udma: Add glue layer for non DMAengine users > > Peter Ujfalusi (9): > dmaengine: doc: Add sections for per descriptor metadata support > dmaengine: Add metadata_ops for dma_async_tx_descriptor > dmaengine: Add support for reporting DMA cached data amount > dmaengine: ti: Add cppi5 header for K3 NAVSS/UDMA > dmaengine: ti: k3 PSI-L remote endpoint configuration > dt-bindings: dma: ti: Add document for K3 UDMA > dmaengine: ti: New driver for K3 UDMA > firmware: ti_sci: rm: Add support for tx_tdtype parameter for tx > channel > dmaengine: ti: k3-udma: Wait for peer teardown completion if supported > > .../devicetree/bindings/dma/ti/k3-udma.yaml | 185 + > .../devicetree/bindings/soc/ti/k3-ringacc.txt | 59 + > Documentation/driver-api/dmaengine/client.rst | 75 + > .../driver-api/dmaengine/provider.rst | 46 + > drivers/dma/dmaengine.c | 73 + > drivers/dma/dmaengine.h | 8 + > drivers/dma/ti/Kconfig | 24 + > drivers/dma/ti/Makefile | 3 + > drivers/dma/ti/k3-psil-am654.c | 175 + > drivers/dma/ti/k3-psil-j721e.c | 222 ++ > drivers/dma/ti/k3-psil-priv.h | 39 + > drivers/dma/ti/k3-psil.c | 97 + > drivers/dma/ti/k3-udma-glue.c | 1198 ++++++ > drivers/dma/ti/k3-udma-private.c | 133 + > drivers/dma/ti/k3-udma.c | 3452 +++++++++++++++++ > drivers/dma/ti/k3-udma.h | 151 + > drivers/firmware/ti_sci.c | 1 + > drivers/firmware/ti_sci.h | 7 + > drivers/soc/ti/Kconfig | 11 + > drivers/soc/ti/Makefile | 1 + > drivers/soc/ti/k3-ringacc.c | 1180 ++++++ > include/linux/dma/k3-psil.h | 71 + > include/linux/dma/k3-udma-glue.h | 134 + > include/linux/dma/ti-cppi5.h | 1061 +++++ > include/linux/dmaengine.h | 110 + > include/linux/soc/ti/k3-ringacc.h | 244 ++ > include/linux/soc/ti/ti_sci_protocol.h | 2 + > 27 files changed, 8762 insertions(+) > create mode 100644 Documentation/devicetree/bindings/dma/ti/k3-udma.yaml > create mode 100644 Documentation/devicetree/bindings/soc/ti/k3-ringacc.txt > create mode 100644 drivers/dma/ti/k3-psil-am654.c > create mode 100644 drivers/dma/ti/k3-psil-j721e.c > create mode 100644 drivers/dma/ti/k3-psil-priv.h > create mode 100644 drivers/dma/ti/k3-psil.c > create mode 100644 drivers/dma/ti/k3-udma-glue.c > create mode 100644 drivers/dma/ti/k3-udma-private.c > create mode 100644 drivers/dma/ti/k3-udma.c > create mode 100644 drivers/dma/ti/k3-udma.h > create mode 100644 drivers/soc/ti/k3-ringacc.c > create mode 100644 include/linux/dma/k3-psil.h > create mode 100644 include/linux/dma/k3-udma-glue.h > create mode 100644 include/linux/dma/ti-cppi5.h > create mode 100644 include/linux/soc/ti/k3-ringacc.h > - Péter 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=-7.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,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 0C759C43603 for ; Thu, 12 Dec 2019 08:47:08 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id C1CC322527 for ; Thu, 12 Dec 2019 08:47:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Ksa3VVtX"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="VkQiZyck" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C1CC322527 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+infradead-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=bombadil.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:References:To:From:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GZxCGbtdA0/URn6glxtydkPWbY+0akfE9A38hLpNFxU=; b=Ksa3VVtXG/jlQE JOMSPtJAoenbY3kZ8FEUekIMWSRvr6MJJn2/YjkdG3Ev5+lo18kpBni29qGQUXsBj3nEfDQhkJOjt qaBibBsyPINqgp+lsMTsV+2UEdVd9j8fhAYtCsQQynuZDCaOCMs0h3eH8psPCPWzRpmDOEYC3gxH/ 8ylQ1EtCPFAr2x49DFtKLOMGFwx8PsXgL5KDeVz000a9pHgmAnPdqBiaCrGt59FwUHh2VAqu5OxIh WSfWTVop7i9J7AxnCddpWKCflSitqEk/B3RvhRF7TCUG2ZaqEFMy0h/ot+7zMnhMa0ki617R2Wwmh +anJuevYif/EwEzVAYbg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ifK7m-0004Kn-Q6; Thu, 12 Dec 2019 08:47:06 +0000 Received: from fllv0015.ext.ti.com ([198.47.19.141]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ifK7i-0004Jd-HP for linux-arm-kernel@lists.infradead.org; Thu, 12 Dec 2019 08:47:05 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id xBC8klUL025899; Thu, 12 Dec 2019 02:46:47 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1576140407; bh=hTgzk3zArrJsIKnhM4tjir9aT8NyFMPzCGdqT6+n9J0=; h=Subject:From:To:CC:References:Date:In-Reply-To; b=VkQiZyck5rjKEyHhq768l7Rcmr73cbhu3EPvaNxSBFhyHivPWLSOBhnf95ystlzUd hTvEK4hldfppUGL1AmghM1eoTYowkQF7wyzW0QA+kAPcQk0wvMC7so/y/5EFSpn8wf xHuGbE/lxwJ1u2WGKnFI6elBaMelmV6hOvGcDTo8= Received: from DLEE114.ent.ti.com (dlee114.ent.ti.com [157.170.170.25]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id xBC8klgk093481 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 12 Dec 2019 02:46:47 -0600 Received: from DLEE102.ent.ti.com (157.170.170.32) by DLEE114.ent.ti.com (157.170.170.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Thu, 12 Dec 2019 02:46:46 -0600 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE102.ent.ti.com (157.170.170.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Thu, 12 Dec 2019 02:46:46 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id xBC8kgqP000513; Thu, 12 Dec 2019 02:46:42 -0600 Subject: Re: [PATCH v7 00/12] dmaengine/soc: Add Texas Instruments UDMA support From: Peter Ujfalusi To: , , , , , , References: <20191209094332.4047-1-peter.ujfalusi@ti.com> Message-ID: Date: Thu, 12 Dec 2019 10:46:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20191209094332.4047-1-peter.ujfalusi@ti.com> 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-20191212_004702_682118_51842B4E X-CRM114-Status: GOOD ( 45.51 ) 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: devicetree@vger.kernel.org, grygorii.strashko@ti.com, vigneshr@ti.com, lokeshvutla@ti.com, j-keerthy@ti.com, linux-kernel@vger.kernel.org, t-kristo@ti.com, tony@atomide.com, 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+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAwOS8xMi8yMDE5IDExLjQzLCBQZXRlciBVamZhbHVzaSB3cm90ZToKPiBIaSwKPiAKPiBW aW5vZCwgTmlzaGFudGgsIFRlcm8sIFNhbnRvc2g6IHRoZSB0aV9zY2kgcGF0Y2ggaW4gdGhpcyBz ZXJpZXMgd2FzIHNlbnQKPiB1cHN0cmVhbSBvdmVyIGEgbW9udGggYWdvOgo+IGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2xrbWwvMjAxOTEwMjUwODQ3MTUuMjUwOTgtMS1wZXRlci51amZhbHVzaUB0 aS5jb20vCj4gCj4gSSdtIHN0aWxsIHdhaXRpbmcgb24gaXQncyBmYXRlIChUZXJvIGhhcyBnaXZl biBoaXMgci1iKS4KPiBUaGUgdGlfc2NpIHBhdGNoIGRpZCBub3QgbWFkZSBpdCB0byA1LjUtcmMx LCBidXQgSSBpbmNsdWRlZCBpdCBpbiB0aGUgc2VyaWVzIGFuZAo+IGxldCB0aGUgbWFpbnRhaW5l cnMgZGVjaWRlIGlmIGl0IGNhbiBnbyB2aWEgRE1BZW5naW5lIGZvciA1LjYgb3IgdG8gbGF0ZXIK PiByZWxlYXNlcyAoNS42IHByb2JhYmx5IGZvciB0aGUgdGlfc2NpIGFuZCA1LjcgZm9yIHRoZSBV RE1BIGRyaXZlciBwYXRjaCkuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2NjoKPiAoaHR0cHM6Ly9wYXRj aHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LWRtYWVuZ2luZS9saXN0Lz9zZXJpZXM9MjA5 NDU1JnN0YXRlPSopCj4gCj4gLSBVRE1BUCBETUFlbmdpbmUgZHJpdmVyOgo+ICAtIFNxdWFzaGVk IHRoZSBzcGxpdCBwYXRjaGVzCj4gIC0gU3F1YXNoZWQgdGhlIGVhcmx5IFRYIGNvbXBsZXRpb24g aGFuZGxpbmcgdXBkYXRlCj4gICAgKGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVj dC9saW51eC1kbWFlbmdpbmUvbGlzdC8/c2VyaWVzPTIxMDcxMyZzdGF0ZT0qKQo+ICAtIEhhcmQg cmVzZXQgZml4IGZvciBSWCBjaGFubmVscyB0byBhdm9pZCBjaGFubmVsIGxvY2tkb3duCj4gIC0g Q29ycmVjdCBjb21wbGV0ZWQgZGVzY3JpcHRvcidzIHJlc2lkdWUgdmFsdWUKCkkgZ290IGJ1aWxk IGZhaWx1cmUgd2l0aCBhbGxtb2Rjb25maWc6CgpFUlJPUjogImRldm1fdGlfc2NpX2dldF9vZl9y ZXNvdXJjZSIgW2RyaXZlcnMvc29jL3RpL2szLXJpbmdhY2Mua29dCnVuZGVmaW5lZCEKRVJST1I6 ICJvZl9tc2lfZ2V0X2RvbWFpbiIgW2RyaXZlcnMvc29jL3RpL2szLXJpbmdhY2Mua29dIHVuZGVm aW5lZCEKRVJST1I6ICJkZXZtX3RpX3NjaV9nZXRfb2ZfcmVzb3VyY2UiIFtkcml2ZXJzL2RtYS90 aS9rMy11ZG1hLmtvXSB1bmRlZmluZWQhCkVSUk9SOiAib2ZfbXNpX2dldF9kb21haW4iIFtkcml2 ZXJzL2RtYS90aS9rMy11ZG1hLmtvXSB1bmRlZmluZWQhCgpUaGV5IGFyZSBiZWNhdXNlIGJvdGgg ZGV2bV90aV9zY2lfZ2V0X29mX3Jlc291cmNlIGFuZCBvZl9tc2lfZ2V0X2RvbWFpbgppcyBtaXNz aW5nIEVYUE9SVF9TWU1CT0xfR1BMKCksIHNvIHRoZXkgY2FuIG5vdCBiZSB1c2VkIGZyb20gbW9k dWxlcy4KClRoZXJlIHdlcmUgcGF0Y2hlcyBpbiB0aGUgcGFzdCB0byBhZGQgaXQgZm9yIG9mX21z aV9nZXRfZG9tYWluOgpodHRwczovL2xvcmUua2VybmVsLm9yZy9wYXRjaHdvcmsvcGF0Y2gvNjY4 MTIzLwpodHRwczovL2xvcmUua2VybmVsLm9yZy9wYXRjaHdvcmsvcGF0Y2gvNzE2MDQ2LwoKSSBj YW4gbm90IGZpbmQgYSByZWFzb24gd2h5IHRoZXNlIGFyZSBub3QgbWVyZ2VkLgpNYXR0aGlhcydz IHBhdGNoIGxvb2tzIHRvIGJlIHRoZSBlYXJsaWVyIG9uZSwgaXMgaXQgT0sgaWYgSSByZXNlbmQg aXQKd2l0aGluIHY4PwoKPiBDaGFuZ2VzIHNpbmNlIHY1Ogo+IChodHRwczovL3BhdGNod29yay5r ZXJuZWwub3JnL3Byb2plY3QvbGludXgtZG1hZW5naW5lL2xpc3QvP3Nlcmllcz0yMDEwNTEmc3Rh dGU9KikKPiAtIEJhc2VkIG9uIDUuNAo+IAo+IC0gY3BwaTUgaGVhZGVyCj4gIC0gY2xlYXIgdGhl IGJpdHMgYmVmb3JlIHNldHRpbmcgbmV3IHZhbHVlIHdpdGggJ3w9Jwo+IAo+IC0gVURNQVAgRFQg YmluZGluZ3M6Cj4gIC0gdmFsaWQgY29tcGF0aWJsZXMgYXMgc2luZ2xlIGVudW0gbGlzdAo+IAo+ IC0gVURNQVAgRE1BZW5naW5lIGRyaXZlcjoKPiAgLSBGaXggdWRtYV9pc19jaGFuX3J1bm5pbmco KQo+ICAtIFVzZSBmbGFncyBmb3IgYWNjMzIsIGJ1cnN0IHN1cHBvcnQgaW5zdGVhZCBvZiBhIGJv b2wgaW4gdWRtYV9tYXRjaF9kYXRhCj4gICAgc3RydWN0Cj4gIC0gVERUWVBFIGhhbmRsaW5nICh0 ZWFyZG93biBjb21wbGV0aW9uIGhhbmRsaW5nIGZvciBqNzIxZSkgaXMgbW92ZWQgdG8gc2VwYXJh dGUKPiAgICBwYXRjaCBhcyB0aGUgdGlzY2kgY29yZSBwYXRjaCBoYXMgbm90IG1vdmVkIGZvciBv dmVyIGEgbW9udGguCj4gICAgQm90aCB0aV9zY2kgYW5kIHRoZSBpdGVyYXRpdmUgcGF0Y2ggdG8g dWRtYSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VyaWVzLgo+IAo+IENoYW5nZXMgc2luY2UgdjQKPiAo aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LWRtYWVuZ2luZS9saXN0 Lz9zZXJpZXM9MTk2NjE5JnN0YXRlPSopCj4gLSBCYXNlZCBvbiA1LjQtcmM3Cj4gCj4gLSByaW5n YWNjIERUIGJpbmRpbmdzOgo+ICAtIGNsYXJpZnkgdGhlIG1lYW5pbmcgb2YgdGksc2NpLWRldi1p ZAo+IAo+IC0gcmluZ2FjYyBkcml2ZXI6Cj4gIC0gUmVtb3ZlICdkZWZhdWx0IHknIGZyb20gS2Nv bmZpZwo+ICAtIEZpeCBzdHJ1Y3QgY29tbWVudHMKPiAgLSBNb3ZlIHRyeV9tb2R1bGVfZ2V0KCkg ZWFybGllciBpbiBrM19yaW5nYWNjX3JlcXVlc3RfcmluZygpCj4gCj4gLSBQU0ktTCB0aHJlYWQg ZGF0YWJhc2U6Cj4gIC0gQWRkIGtlcm5lbCBzdHlsZSBzdHJ1Y3QvZW51bSBkb2N1bWVudGF0aW9u Cj4gIC0gQWRkIG1pc3NpbmcgdGhyZWFkIGRlc2NyaXB0aW9uIGZvciBzYTJ1bCBzZWNvbmQgaW50 ZXJmYWNlCj4gIC0gQ2hhbmdlIEVYUE9SVF9TWU1CT0wgdG8gRVhQT1JUX1NZTUJPTF9HUEwKPiAK PiAtIFVETUFQIERUIGJpbmRpbmdzOgo+ICAtIG1vdmUgdG8gZHVhbCBsaWNlbnNlCj4gIC0gY2hh bmdlIGNvbXBhdGlibGUgZnJvbSBjb25zdCB0byBlbnVtCj4gIC0gaXRlbXMgZHJvcHBlZCBmb3Ig dGksc2NpLXJtLXJhbmdlcy0qCj4gIC0gZGVzY3JpcHRpb24gdGV4dCBtb3ZlZCBmcm9tIGxpdGVy YWwgYmxvY2sgd2hlbiBpdCBpcyBzZW5zaWJsZQo+ICAtIGV4YW1wbGUgZml4ZWQgdG8gY29tcGls ZSBjbGVhbmx5Cj4gICAtIGFkZGVkIHBhcmVudCB0byBwcm92aWRlIGNvcnJlY3QgYWRkcmVzcy1j ZWxscwo+ICAgLSBuYXZzcyBpcyBtb3ZlZCB0byBzaW1wbGUtbWZkIGZyb20gc2ltcGxlLWJ1cwo+ IAo+IC0gVURNQVAgRE1BZW5naW5lIGRyaXZlcjoKPiAgLSBtb3ZlIGZkX3Jpbmcvcl9yaW5nIHVu ZGVyIHJmbG93Cj4gIC0gZ2V0IHJpZCBvZiB1bnVzZWQgaW9tZW0gZm9yIHJmbG93cwo+ICAtIFJl bW92ZSAnZGVmYXVsdCB5JyBmcm9tIEtjb25maWcKPiAgLSBVc2UgZGVmaW5lcyBmb3IgcmZsb3cg c3JjL2RzdCB0YWcgc2VsZWN0aW9uCj4gIC0gTWVyZ2UgdGhlIHVkbWFfcmluZ19jYWxsYmFjaygp IGFuZCB1ZG1hX3RyX2V2ZW50X2NhbGxiYWNrKCkgdG8gdGhlaXIKPiAgICBjb3JyZXNwb25kaW5n IGludGVycnVwdCBoYW5kbGVyCj4gIC0gQ3JlYXRlIG5ldyBkZWZpbmVzIGZvciB0eC9yeCBjaGFu bmVsJ3MgdGlzY2kgdmFsaWQgcGFyYW1ldGVyIGZsYWdzCj4gIC0gUmVtb3ZlIHJlLWluaXRpYWxp emF0aW9uIHRvIDAgb2YgdGlzY2kgcmVxdWVzdCBzdHJ1Y3QgbWVtYmVycwo+ICAtIE1ha2Ugc3Vy ZSB0aGF0IHZjaGFuIHRhc2tsZXRzIGFyZSBhbHNvIHN0b3BwZWQgd2hlbiByZW1vdmluZyB0aGUg bW9kdWxlCj4gIC0gQWRkaXRpb25hbCBjaGVja3BhdGNoIC0tc3RyaWN0IGZpeGVzIHdoZW4gaXQg bWFkZSBzZW5zZQo+ICAgLSBtYWtlIFc9MSB3YXMgY2xlYW4KPiAKPiAtIFVETUFQIGdsdWUgbGF5 ZXI6Cj4gIC0gUmVtb3ZlICdkZWZhdWx0IHknIGZyb20gS2NvbmZpZwo+ICAtIGNvbW1pdCBtZXNz YWdlIHVwZGF0ZSBmb3IgZmVhdHVyZXMgbmVlZGluZyB0aGUgZ2x1ZSBsYXllcgo+IAo+IENoYW5n ZXMgc2luY2UgdjMKPiAoaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4 LWRtYWVuZ2luZS9saXN0Lz9zZXJpZXM9MTgwNjc5JnN0YXRlPSopOgo+IC0gQmFzZWQgb24gNS40 LXJjNQo+IC0gRml4ZWQgdHlwb3MgcG9pbnRlZCBvdXQgYnkgVGVybwo+IC0gQWRkZWQgcmV2aWV3 ZWQtYnkgdGFncyBmcm9tIFRlcm8KPiAKPiAtIHJpbmcgYWNjZWxlcmF0b3IgZHJpdmVyCj4gIC0g VE9ET19HUyBpcyByZW1vdmVkIGZyb20gdGhlIGhlYWRlcgo+ICAtIHBtX3J1bnRpbWUgcmVtb3Zl ZCBhcyBOQVZTUyBhbmQgaXQncyBjb21wb25lbnRzIGFyZSBhbHdheXMgb24KPiAgLSBDaGVjayB2 YWxpZGl0eSBvZiBNZXNzYWdlIG1vZGUgc2V0dXAgKGVsZW1lbnQgc2l6ZSA+IDggYnl0ZXMgbXVz dCB1c2UgcHJveHkpCj4gCj4gLSBjcHBpNSBoZWFkZXIKPiAgLSBhZGQgY29tbWl0IG1lc3NhZ2UK PiAKPiAtIFVETUFQIERUIGJpbmRpbmdzCj4gIC0gRHJvcCB0aGUgcHNpbC1jb25maWcgbm9kZSB1 c2Ugb24gdGhlIHJlbW90ZSBQU0ktTCBzaWRlIGFuZCB1c2Ugb25seSBvbmUgY2VsbAo+ICAgIHdo aWNoIGlzIHRoZSByZW1vdGUgdGhyZWFkSUQ6Cj4gCj4gICAgICBkbWFzID0gPCZtYWluX3VkbWFw IDB4YzQwMD4sIDwmbWFpbl91ZG1hcCAweDQ0MDA+Owo+ICAgICAgZG1hLW5hbWVzID0gInR4Iiwg InJ4IjsKPiAKPiAgLSBUaGUgUFNJLUwgdGhyZWFkIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRpb24g aXMgbW92ZWQgdG8ga2VybmVsIGFzIGEgbmV3IG1vZHVsZToKPiAgICBrMy1wc2lsL2szLXBzaWwt YW02NTQvazMtcHNpbC1qNzIxZQo+ICAtIHRpLHBzaWwtYmFzZSBoYXMgYmVlbiByZW1vdmVkIGFu ZCBtb3ZlZCB0byBrZXJuZWwKPiAgLSByZW1vdmVkIHRoZSBubyBsb25nZXIgbmVlZGVkIGR0LWJp bmRpbmdzL2RtYS9rMy11ZG1hLmgKPiAgLSBDb252ZXJ0IHRoZSBkb2N1bWVudCB0byBzY2hlbWEg KHlhbWwpCj4gCj4gLSBORVcgUFNJLUwgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBkYXRhYmFzZQo+ ICAtIGEgc2ltcGxlIGRhdGFiYXNlIGhvbGRpbmcgdGhlIHJlbW90ZSBlbmQncyBjb25maWd1cmF0 aW9uIG5lZWRlZCBmb3IgVURNQVAKPiAgICBjb25maWd1cmF0aW9uLiBBbGwgcHJldmlvdXMgcGFy YW1ldGVycyBmcm9tIERUIGhhcyBiZWVuIG1vdmVkIGhlcmUgYW5kIG1lcmdlZAo+ICAgIHdpdGgg dGhlIGxpbnV4IG9ubHkgdHIgbW9kZSBjaGFubmVsIGZsYWcuCj4gIC0gQ2xpZW50IGRyaXZlcnMg Y2FuIHVwZGF0ZSB0aGUgcmVtb3RlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gYXMgaXQgY2FuIGJl Cj4gICAgZGlmZmVyZW50IGJhc2VkIG9uIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCB0aGUgZW5k cG9pbnQgaXRzZWxmIGlzIHVuZGVyIHRoZQo+ICAgIGNvbnRyb2wgb2YgdGhlIHBlcmlwaGVyYWwg ZHJpdmVyLgo+ICAtIGRhdGFiYXNlIGZvciBhbTY1NCBhbmQgajcyMWUKPiAKPiAtIFVETUFQIERN QWVuZ2luZSBkcml2ZXIKPiAgLSBwbV9ydW50aW1lIHJlbW92ZWQgYXMgTkFWU1MgYW5kIGl0J3Mg Y29tcG9uZW50cyBhcmUgYWx3YXlzIG9uCj4gIC0gcmNoYW5fb2VzX29mZnNldCBhZGRlZCB0byBN U0kgZG9tbWFpbiBhbGxvY2F0aW9uCj4gIC0gVXNlIHRoZSBuZXcgUFNJLUwgZW5kcG9pbnQgZGF0 YWJhc2UgZm9yIFVETUFQIGNvbmZpZ3VyYXRpb24KPiAgLSBTdXBwb3J0IGZvciB3YWl0aW5nIGZv ciBQRE1BIHRlYXJkb3duIGNvbXBsZXRpb24gb24gajcyMWUgaW5zdGVhZCBvZgo+ICAgIHJldHVy bmluZyByaWdodCBhd2F5LiBkZXBlbmRzIG9uOgo+ICAgIGh0dHBzOi8vbGttbC5vcmcvbGttbC8y MDE5LzEwLzI1LzE4OQo+ICAgIE5vdCBpbmNsdWRlZCBpbiB0aGlzIHNlcmllcywgYnV0IGl0IGlz IGluIHRoZSBicmFuY2ggSSBoYXZlIHByZXBhcmVkLgo+ICAtIHBzaWwtYmFzZSBpcyBtb3ZlZCBm cm9tIERUIHRvIGJlIHBhcnQgb2YgdWRtYV9tYXRjaF9kYXRhCj4gIC0gdHJfdGhyZWFkIG1hcHMg aXMgcmVtb3ZlZCBhbmQgdXNpbmcgdGhlIFBTSS1MIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZm9y IGl0Cj4gCj4gLSBVRE1BUCBnbHVlIGxheWVyCj4gIC0gcG1fcnVudGltZSByZW1vdmVkIGFzIE5B VlNTIGFuZCBpdCdzIGNvbXBvbmVudHMgYXJlIGFsd2F5cyBvbgo+ICAtIFVzZSB0aGUgbmV3IFBT SS1MIGVuZHBvaW50IGRhdGFiYXNlIGZvciBVRE1BUCBjb25maWd1cmF0aW9uCj4gCj4gQ2hhbmdl cyBzaW5jZSB2Mgo+IChodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgt ZG1hZW5naW5lL2xpc3QvP3Nlcmllcz0xNTI2MDkmc3RhdGU9KikKPiAtIEJhc2VkIG9uIDUuNC1y YzEKPiAtIFN1cHBvcnQgZm9yIEZsb3cgb25seSBkYXRhIHRyYW5zZmVyIGZvciB0aGUgZ2x1ZSBs YXllcgo+IAo+IC0gY3BwaTUgaGVhZGVyCj4gIC0gY29tbWVudHMgY29udmVydGVkIHRvIGtlcm5l bC1kb2Mgc3R5bGUKPiAgLSBSZW1vdmUgdGhlIGV4Y2Vzc2l2ZSBXQVJOX09OcyBhbmQgcmVseSBv biB0aGUgdXNlciBmb3Igc2FuaXR5Cj4gIC0gbmV3IG1hY3JvIGZvciBjaGVja2luZyBUZWFyRG93 biBDb21wbGV0aW9uIE1lc3NhZ2UKPiAKPiAtIHJpbmcgYWNjZWxlcmF0b3IgZHJpdmVyCj4gIC0g Zml4ZWQgdXAgdGggY29tbWl0IG1lc3NhZ2UgKFNvQiwgVEktU0NJKQo+ICAtIGZpeGVkIHJpbmcg cmVzZXQKPiAgLSBDT05GSUdfVElfSzNfUklOR0FDQ19ERUJVRyBpcyByZW1vdmVkIGFsb25nIHdp dGggdGhlIGRiZ193cml0ZS9yZWFkIGZ1bmN0aW9ucwo+ICAgIGFuZCB1c2UgZGV2X2RiZygpCj4g IC0gazNfcmluZ2FjY19yaW5nX2R1bXAoKSBpcyBtb3ZlZCB0byBzdGF0aWMKPiAgLSBzdGVwIG51 bWJlcmluZyByZW1vdmVkIGZyb20gazNfcmluZ2FjY19yaW5nX3Jlc2V0X2RtYSgpCj4gIC0gQWRk IGNsYXJpZmljYXRpb24gY29tbWVudCBmb3Igc2hhcmVkIHJpbmcgdXNhZ2UgaW4gazNfcmluZ2Fj Y19yaW5nX2NmZygpCj4gIC0gTWFnaWMgc2hpZnQgdmFsdWVzIGluIGszX3JpbmdhY2NfcmluZ19j ZmdfcHJveHkoKSBnb3QgZGVmaW5lZAo+ICAtIEszX1JJTkdBQ0NfUklOR19NT0RFX1FNIGlzIHJl bW92ZWQgYXMgaXQgaXMgbm90IHN1cHBvcnRlZAo+IAo+IC0gVURNQVAgRFQgYmluZGluZ3MKPiAg LSBGaXggcHJvcGVydHkgcHJlZml4aW5nOiBzL3BkbWEsL3RpLHBkbWEtCj4gIC0gQWRkIHRpLG5v dGRwa3QgcHJvcGVydHkgdG8gc3VwcHJlc3MgdGVhcmRvd24gY29tcGxldGlvbiBtZXNzYWdlIG9u IHRjaGFuCj4gIC0gZXhhbXBsZSB1cGRhdGVkIGFjY29yZGluZ2x5Cj4gCj4gLSBVRE1BUCBETUFl bmdpbmUgZHJpdmVyCj4gIC0gQ2hhbmdlIF9fcmF3X3JlYWRsL3dyaXRlbCB0byByZWFkbC93cml0 ZWwKPiAgLSBTcGxpdCB1cCB0aGUgdWRtYV90aXNjaV9jaGFubmVsX2NvbmZpZygpIGludG8gbTJt LCB0eCBhbmQgcnggdGlzY2kKPiAgICBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBmb3IgY2xhcml0 eQo+ICAtIERUIGJpbmRpbmdzIGNoYW5nZTogcy9wZG1hLC90aSxwZG1hLQo+ICAtIENsZWFudXAg b2YgdWRtYV90eF9zdGF0dXMoKToKPiAgIC0gcmVzaWR1ZSBjYWxjdWxhdGlvbiBmaXggZm9yIG0y bQo+ICAgLSBubyBuZWVkIHRvIHJlYWQgcGFja2V0IGNvdW50ZXIgYXMgaXQgaXMgbm90IHVzZWQK PiAgIC0gcGVlciBieXRlIGNvdW50ZXIgb25seSBhdmFpbGFibGUgaW4gUERNQXMKPiAgIC0gUHJv cGVyIGxvY2tpbmcgdG8gYXZvaWQgcmFjZSB3aXRoIGludGVycnVwdCBoYW5kbGVyIChwb2xsZWQg bTJtIGZpeCkKPiAgLSBTdXBwb3J0IGZvciB0aSxub3RkcGt0Cj4gIC0gUkZMT1cgbWFuYWdlbWVu dCByZXdvcmsgdG8gc3VwcG9ydCBkYXRhIG1vdmVtZW50IHdpdGhvdXQgY2hhbm5lbDoKPiAgIC0g dGhlIGNoYW5uZWwgaXMgbm90IGNvbnRyb2xsZWQgYnkgTGludXggYnV0IG90aGVyIGNvcmUgYW5k IHdlIG9ubHkgaGF2ZQo+ICAgICByZmxvd3MgYW5kIHJpbmdzIHRvIGRvIHRoZSBETUEgdHJhbnNm ZXJzLgo+ICAgICBUaGlzIG1vZGUgaXMgb25seSBzdXBwb3J0ZWQgYnkgdGhlIEdsdWUgbGF5ZXIg Zm9yIG5vdy4KPiAKPiAtIFVETUFQIGdsdWUgbGF5ZXIKPiAgLSBEZWJ1ZyBwcmludCBpbXByb3Zl bWVudHMKPiAgLSBTdXBwb3J0IGZvciByZmxvdy9yaW5nIG9ubHkgZGF0YSBtb3ZlbWVudAo+IAo+ IENoYW5nZXMgc2luY2UgdjEKPiAoaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0 L2xpbnV4LWRtYWVuZ2luZS9saXN0Lz9zZXJpZXM9MTE0MTA1JnN0YXRlPSopCj4gLSBBZGRlZCBz dXBwb3J0IGZvciBqNzIxZQo+IC0gQmFzZWQgb24gNS4zLXJjMgo+IC0gZHJvcHBlZCB0aV9zY2kg QVBJIHBhdGNoIGZvciBSTSBtYW5hZ2VtZW50IGFzIGl0IGlzIGFscmVhZHkgdXBzdHJlYW0KPiAt IGRyb3BwZWQgZG1hZGV2X2dldF9zbGF2ZV9jaGFubmVsKCkgcGF0Y2gsIHVzaW5nIF9fZG1hX3Jl cXVlc3RfY2hhbm5lbCgpCj4gLSBBZGRlZCBSb2IncyBSZXZpZXdlZC1ieSB0byByaW5nYWNjIERU IGJpbmRpbmcgZG9jdW1lbnQgcGF0Y2gKPiAtIERUIGJpbmRpbmdzIGNoYW5nZXM6Cj4gIC0gbGlu dXgsdWRtYS1tb2RlIGlzIGdvbmUsIEkgaGF2ZSBhIHNpbXBsZSBsb29rdXAgdGFibGUgaW4gdGhl IGRyaXZlciB0byBmbGFnCj4gICAgVFIgY2hhbm5lbHMuCj4gIC0gU3VwcG9ydCBmb3IgajcyMWUK PiAtIEZpeCBidWcgaW4gb2Zfbm9kZV9wdXQoKSBoYW5kbGluZyBpbiB4bGF0ZSBmdW5jdGlvbgo+ IAo+IENoYW5nZXMgc2luY2UgUkZDIChodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVy LzEwNjEyNDY1Lyk6Cj4gLSBCYXNlZCBvbiBsaW51eC1uZXh0ICgyMDE5MDUwNikgd2hpY2ggbm93 IGhhdmUgdGhlIHRpX3NjaSBpbnRlcnJ1cHQgc3VwcG9ydAo+IC0gVGhlIHNlcmllcyBjYW4gYmUg YXBwbGllZCBhbmQgdGhlIFVETUEgdmlhIERNQWVuZ2luZSBBUEkgd2lsbCBiZSBmdW5jdGlvbmFs Cj4gLSBJbmNsdWRlZCBpbiB0aGUgc2VyaWVzOiB0aV9zY2kgUmVzb3VyY2UgbWFuYWdlbWVudCBB UEksIGNwcGk1IGhlYWRlciBhbmQKPiAgIGRyaXZlciBmb3IgdGhlIHJpbmcgYWNjZWxlcmF0b3Iu Cj4gLSBUaGUgRE1BZW5naW5lIGNvcmUgcGF0Y2hlcyBoYXZlIGJlZW4gdXBkYXRlZCBhcyBwZXIg dGhlIHJldmlldyBjb21tZW50cyBmb3IKPiAgIGVhcmxpZXIgc3VibWl0dGlvbi4KPiAtIFRoZSBE TUFlbmdpbmUgZHJpdmVyIHBhdGNoIGlzIGFydGlmaWNpYWxseSBzcGxpdCB1cCB0byA2IHNtYWxs ZXIgcGF0Y2hlcwo+IAo+IFRoZSBrMy11ZG1hIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBEYXRhIE1v dmVtZW50IEFyY2hpdGVjdHVyZSBkZXNjcmliZWQgaW4KPiBBTTY1eCBUUk0gKGh0dHA6Ly93d3cu dGkuY29tL2xpdC9wZGYvc3BydWlkNykgYW5kCj4gajcyMWUgVFJNIChodHRwOi8vd3d3LnRpLmNv bS9saXQvcGRmL3NwcnVpbDEpCj4gCj4gVGhpcyBETUEgYXJjaGl0ZWN0dXJlIGlzIGEgYmlnIGRl cGFydHVyZSBmcm9tICd0cmFkaXRpb25hbCcgYXJjaGl0ZWN0dXJlIHdoZXJlCj4gd2UgaGFkIGVp dGhlciBFRE1BIG9yIHNETUEgYXMgc3lzdGVtIERNQS4KPiAKPiBQYWNrZXQgRE1BcyB3ZXJlIHVz ZWQgYXMgZGVkaWNhdGVkIERNQXMgdG8gc2VydmljZSBvbmx5IG5ldHdvcmtpbmcgKEtlc3l0b25l MikKPiBvciBVU0IgKGFtMzM1eCkgd2hpbGUgb3RoZXIgcGVyaXBoZXJhbHMgd2VyZSBzZXJ2aWNl ZCBieSBFRE1BLgo+IAo+IEluIEFNNjV4L2o3MjFlIHRoZSBVRE1BIChVbmlmaWVkIERNQSkgaXMg dXNlZCBmb3IgYWxsIGRhdGEgbW92bWVudCB3aXRoaW4gdGhlCj4gU29DLCB0YXNrZWQgdG8gc2Vy dmljZSBhbGwgcGVyaXBoZXJhbHMgKFVBUlQsIE1jU1BJLCBNY0FTUCwgbmV0d29ya2luZywgZXRj KS4gCj4gCj4gVGhlIE5BVlNTL1VETUEgaXMgYnVpbHQgYXJvdW5kIENQUEk1IChDb21tdW5pY2F0 aW9ucyBQb3J0IFByb2dyYW1taW5nIEludGVyZmFjZSkKPiBhbmQgaXQgc3VwcG9ydHMgUGFja2V0 IG1vZGUgKHNpbWlsYXIgdG8gQ1BQSTQuMSBpbiBLZXlzdG9uZTIgZm9yIG5ldHdvcmtpbmcpIGFu ZAo+IFRSIG1vZGUgKHNpbWlsYXIgdG8gRURNQSBkZXNjcmlwdG9yKS4KPiBUaGUgZGF0YSBtb3Zl bWVudCBpcyBkb25lIHdpdGhpbiBhIFBTSS1MIGZhYnJpYywgcGVyaXBoZXJhbHMgKGluY2x1ZGlu ZyB0aGUKPiBVRE1BLVApIGFyZSBub3QgYWRkcmVzc2VkIGJ5IHRoZWlyIEkvTyByZWdpc3RlciBh cyB3aXRoIHRyYWRpdGlvbmFsIERNQXMgYnV0Cj4gd2l0aCB0aGVpciBQU0ktTCB0aHJlYWQgSUQu Cj4gCj4gSW4gQU02NXgvajcyMWUgd2UgaGF2ZSB0d28gbWFpbiB0eXBlIG9mIHBlcmlwaGVyYWxz Ogo+IExlZ2FjeTogTWNBU1AsIE1jU1BJLCBVQVJULCBldGMuCj4gIHRvIHByb3ZpZGUgY29ubmVj dGl2aXR5IHRoZXkgYXJlIHNlcnZpY2VkIGJ5IFBETUEgKFBlcmlwaGVyYWwgRE1BKQo+ICBQRE1B IHRocmVhZHMgYXJlIGxvY2tlZCB0byBzZXJ2aWNlIGEgZ2l2ZW4gcGVyaXBoZXJhbCwgZm9yIGV4 YW1wbGUgUFNJLUwgdGhyZWFkCj4gIDB4NDQwMC8weGM0MDAgaXMgdG8gc2VydmljZSBNY0FTUDAg cngvdHguCj4gIFRoZSBQRE1hIGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRvbmUgdmlhIHRoZSBVRE1B IFJlYWwgVGltZSBQZWVyIHJlZ2lzdGVycy4KPiBOYXRpdmU6IE5ldHdvcmtpbmcsIHNlY3VyaXR5 IGFjY2VsZXJhdG9yCj4gIHRoZXNlIHBlcmlwaGVyYWxzIGhhdmUgbmF0aXZlIHN1cHBvcnQgZm9y IFBTSS1MLgo+IAo+IFRvIGJlIGFibGUgdG8gdXNlIHRoZSBETUEgdGhlIGZvbGxvd2luZyBnZW5l cmljIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW46Cj4gLSBjb25maWd1cmUgYSBETUEgY2hhbm5lbCAo dGNoYW4gZm9yIFRYLCByY2hhbiBmb3IgUlgpCj4gIC0gY2hhbm5lbCBtb2RlOiBQYWNrZXQgb3Ig VFIgbW9kZQo+ICAtIGZvciBtZW1jcHkgYSB0Y2hhbiBhbmQgcmNoYW4gcGFpciBpcyB1c2VkLgo+ ICAtIGZvciBwYWNrZXQgbW9kZSBSWCB3ZSBhbHNvIG5lZWQgdG8gY29uZmlndXJlIGEgcmVjZWl2 ZSBmbG93IHRvIGNvbmZpZ3VyZSB0aGUKPiAgICBwYWNrZXQgcmVjZWlwdGlvbgo+IC0gdGhlIHNv dXJjZSBhbmQgZGVzdGluYXRpb24gdGhyZWFkcyBtdXN0IGJlIHBhaXJlZAo+IC0gYXQgbWluaW11 bSBvbmUgcGFpciBvZiByaW5ncyBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQ6Cj4gIC0gdHg6IHRyYW5z ZmVyIHJpbmcgYW5kIHRyYW5zZmVyIGNvbXBsZXRpb24gcmluZwo+ICAtIHJ4OiBmcmVlIGRlc2Ny aXB0b3IgcmluZyBhbmQgcmVjZWl2ZSByaW5nCj4gLSB0d28gaW50ZXJydXB0czogVURNQS1QIGNo YW5uZWwgaW50ZXJydXB0IGFuZCByaW5nIGludGVycnVwdCBmb3IgdGNfcmluZy9yX3JpbmcKPiAg LSBJZiB0aGUgY2hhbm5lbCBpcyBpbiBwYWNrZXQgbW9kZSBvciBjb25maWd1cmVkIHRvIG1lbWNw eSB0aGVuIHdlIG9ubHkgbmVlZAo+ICAgIG9uZSBpbnRlcnJ1cHQgZnJvbSB0aGUgcmluZywgZXZl bnRzIGZyb20gVURNQVAgaXMgbm90IHVzZWQuCj4gCj4gV2hlbiB0aGUgY2hhbm5lbCBzZXR1cCBp cyBjb21wbGV0ZWQgd2Ugb25seSBpbnRlcnJhY3Qgd2l0aCB0aGUgcmluZ3M6Cj4gLSBUWDogcHVz aCBhIGRlc2NyaXB0b3IgdG8gdF9yaW5nIGFuZCB3YWl0IGZvciBpdCB0byBiZSBwdXNoZWQgdG8g dGhlIHRjX3JpbmcgYnkKPiAgIHRoZSBVRE1BLVAKPiAtIFJYOiBwdXNoIGEgZGVzY3JpcHRvciB0 byB0aGUgZmRfcmluZyBhbmQgd2FpdGggZm9yIFVETUEtUCB0byBwdXNoIGl0IGJhY2sgdG8KPiAg IHRoZSByX3JpbmcuCj4gCj4gU2luY2Ugd2UgaGF2ZSBGSUZPcyBpbiB0aGUgRE1BIGZhYnJpYyAo VURNQS1QLCBQU0ktTCBhbmQgUERNQSkgd2hpY2ggd2FzIG5vdCB0aGUKPiBjYXNlIGluIHByZXZp b3VzIERNQXMgd2UgbmVlZCB0byByZXBvcnQgdGhlIGFtb3VudCBvZiBkYXRhIGhlbGQgaW4gdGhl c2UgRklGT3MKPiB0byBjbGllbnRzIChkZWxheSBjYWxjdWxhdGlvbiBmb3IgQUxTQSwgVUFSVCBG SUZPIGZsdXNoIHN1cHBvcnQpLgo+IAo+IE1ldGFkYXRhIHN1cHBvcnQ6Cj4gRE1BZW5naW5lIHVz ZXIgZHJpdmVyIHdhcyBwb3N0ZWQgdXBzdHJlYW0gYmFzZWQvdGVzdGVkIG9uIHRoZSB2MSBvZiB0 aGUgVURNQQo+IHNlcmllczogaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTkvNi8yOC8yMAo+IFNB MlVMIGlzIHVzaW5nIHRoZSBtZXRhZGF0YSBETUFlbmdpbmUgQVBJLgo+IAo+IE5vdGUgb24gdGhl IGxhc3QgcGF0Y2g6Cj4gSW4gS2V5c3RvbmUyIHRoZSBuZXR3b3JraW5nIGhhZCBkZWRpY2F0ZWQg RE1BIChwYWNrZXQgRE1BKSB3aGljaCBpcyBub3QgdGhlIGNhc2UKPiBhbnltb3JlIGFuZCB0aGUg RE1BZW5naW5lIEFQSSBjdXJyZW50bHkgbWlzc2luZyBzdXBwb3J0IGZvciB0aGUgZmVhdHVyZXMg d2UKPiB3b3VsZCBuZWVkIHRvIHN1cHBvcnQgbmV0d29ya2luZywgdGhpbmdzIGxpa2UKPiAtIHN1 cHBvcnQgZm9yIHJlY2VpdmUgZGVzY3JpcHRvciAnY2xhc3NpZmljYXRpb24nCj4gIC0gd2UgbmVl ZCB0byBzdXBwb3J0IHNldmVyYWwgcmVjZWl2ZSBxdWV1ZXMgZm9yIGEgY2hhbm5lbC4KPiAgLSB0 aGUgcXVldWVzIGFyZSB1c2VkIGZvciBwYWNrZXQgcHJpb3JpdHkgaGFuZGxpbmcgZm9yIGV4YW1w bGUsIGJ1dCB0aGV5IGNhbiBiZQo+ICAgIHVzZWQgdG8gaGF2ZSBwb29scyBvZiBkZXNjcmlwdG9y cyBmb3IgZGlmZmVyZW50IHNpemVzLgo+IC0gb3V0IG9mIG9yZGVyIGNvbXBsZXRpb24gb2YgZGVz Y3JpcHRvcnMgb24gYSBjaGFubmVsCj4gIC0gd2hlbiB3ZSBoYXZlIHNldmVyYWwgcXVldWVzIHRv IGhhbmRsZSBkaWZmZXJlbnQgcHJpb3JpdHkgcGFja2V0cyB0aGUKPiAgICBkZXNjcmlwdG9ycyB3 aWxsIGJlIGNvbXBsZXRlZCAnb3V0LW9mLW9yZGVyJwo+IC0gTkFQSSB0eXBlIG9mIG9wZXJhdGlv biAocG9sbGluZyBpbnN0ZWFkIG9mIGludGVycnVwdCBkcml2ZW4gdHJhbnNmZXIpCj4gIC0gd2l0 aG91dCB0aGlzIHdlIGNhbiBub3Qgc3VzdGFpbiBnaWdhYml0IHNwZWVkcyBhbmQgd2UgbmVlZCB0 byBzdXBwb3J0IE5BUEkKPiAgLSBub3QgdG8gbGltaXQgdGhpcyB0byBuZXR3b3JraW5nLCBidXQg b3RoZXIgaGlnaCBwZXJmb3JtYW5jZSBvcGVyYXRpb25zCj4gCj4gSXQgaXMgbXkgaW50ZW50aW9u IHRvIHdvcmsgb24gdGhlc2UgdG8gYmUgYWJsZSB0byByZW1vdmUgdGhlICdnbHVlJyBsYXllciBh bmQKPiBzd2l0Y2ggdG8gRE1BZW5naW5lIEFQSSAtIG9yIGhhdmUgYW4gQVBJIGFzaWRlIG9mIERN QWVuZ2luZSB0byBoYXZlIGdlbmVyaWMgd2F5Cj4gdG8gc3VwcG9ydCBuZXR3b3JraW5nLCBidXQg Z2l2ZW4gaG93IGNvbnRyb3ZlcnNpYWwgYW5kIG5vdCB0cml2aWFsIHRoZXNlIGNoYW5nZXMKPiBh cmUgd2UgbmVlZCBzb21ldGhpbmcgdG8gc3VwcG9ydCBuZXR3b3JraW5nLgo+IAo+IFRoZSBzZXJp ZXMgKCtEVCBwYXRjaGVzIHRvIGVuYWJsZWQgRE1BIG9uIEFNNjV4IGFuZCBqNzIxZSkgb24gdG9w IG9mIDUuNS1yYzEgaXMKPiBhdmFpbGFibGU6Cj4gaHR0cHM6Ly9naXRodWIuY29tL29tYXAtYXVk aW8vbGludXgtYXVkaW8uZ2l0IHBldGVyL3VkbWEvc2VyaWVzX3Y3LTUuNS1yYzEKPiAKPiBSZWdh cmRzLAo+IFBldGVyCj4gLS0tCj4gR3J5Z29yaWkgU3RyYXNoa28gKDMpOgo+ICAgYmluZGluZ3M6 IHNvYzogdGk6IGFkZCBkb2N1bWVudGF0aW9uIGZvciBrMyByaW5nYWNjCj4gICBzb2M6IHRpOiBr MzogYWRkIG5hdnNzIHJpbmdhY2MgZHJpdmVyCj4gICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1hOiBB ZGQgZ2x1ZSBsYXllciBmb3Igbm9uIERNQWVuZ2luZSB1c2Vycwo+IAo+IFBldGVyIFVqZmFsdXNp ICg5KToKPiAgIGRtYWVuZ2luZTogZG9jOiBBZGQgc2VjdGlvbnMgZm9yIHBlciBkZXNjcmlwdG9y IG1ldGFkYXRhIHN1cHBvcnQKPiAgIGRtYWVuZ2luZTogQWRkIG1ldGFkYXRhX29wcyBmb3IgZG1h X2FzeW5jX3R4X2Rlc2NyaXB0b3IKPiAgIGRtYWVuZ2luZTogQWRkIHN1cHBvcnQgZm9yIHJlcG9y dGluZyBETUEgY2FjaGVkIGRhdGEgYW1vdW50Cj4gICBkbWFlbmdpbmU6IHRpOiBBZGQgY3BwaTUg aGVhZGVyIGZvciBLMyBOQVZTUy9VRE1BCj4gICBkbWFlbmdpbmU6IHRpOiBrMyBQU0ktTCByZW1v dGUgZW5kcG9pbnQgY29uZmlndXJhdGlvbgo+ICAgZHQtYmluZGluZ3M6IGRtYTogdGk6IEFkZCBk b2N1bWVudCBmb3IgSzMgVURNQQo+ICAgZG1hZW5naW5lOiB0aTogTmV3IGRyaXZlciBmb3IgSzMg VURNQQo+ICAgZmlybXdhcmU6IHRpX3NjaTogcm06IEFkZCBzdXBwb3J0IGZvciB0eF90ZHR5cGUg cGFyYW1ldGVyIGZvciB0eAo+ICAgICBjaGFubmVsCj4gICBkbWFlbmdpbmU6IHRpOiBrMy11ZG1h OiBXYWl0IGZvciBwZWVyIHRlYXJkb3duIGNvbXBsZXRpb24gaWYgc3VwcG9ydGVkCj4gCj4gIC4u Li9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS9rMy11ZG1hLnlhbWwgICB8ICAxODUgKwo+ICAu Li4vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvdGkvazMtcmluZ2FjYy50eHQgfCAgIDU5ICsKPiAg RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYWVuZ2luZS9jbGllbnQucnN0IHwgICA3NSArCj4g IC4uLi9kcml2ZXItYXBpL2RtYWVuZ2luZS9wcm92aWRlci5yc3QgICAgICAgICB8ICAgNDYgKwo+ ICBkcml2ZXJzL2RtYS9kbWFlbmdpbmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDczICsK PiAgZHJpdmVycy9kbWEvZG1hZW5naW5lLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr Cj4gIGRyaXZlcnMvZG1hL3RpL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQg Kwo+ICBkcml2ZXJzL2RtYS90aS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICsKPiAgZHJpdmVycy9kbWEvdGkvazMtcHNpbC1hbTY1NC5jICAgICAgICAgICAgICAgIHwgIDE3 NSArCj4gIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwtajcyMWUuYyAgICAgICAgICAgICAgICB8ICAy MjIgKysKPiAgZHJpdmVycy9kbWEvdGkvazMtcHNpbC1wcml2LmggICAgICAgICAgICAgICAgIHwg ICAzOSArCj4gIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwuYyAgICAgICAgICAgICAgICAgICAgICB8 ICAgOTcgKwo+ICBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLWdsdWUuYyAgICAgICAgICAgICAgICAg fCAxMTk4ICsrKysrKwo+ICBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLXByaXZhdGUuYyAgICAgICAg ICAgICAgfCAgMTMzICsKPiAgZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jICAgICAgICAgICAgICAg ICAgICAgIHwgMzQ1MiArKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2RtYS90aS9rMy11ZG1h LmggICAgICAgICAgICAgICAgICAgICAgfCAgMTUxICsKPiAgZHJpdmVycy9maXJtd2FyZS90aV9z Y2kuYyAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvZmlybXdhcmUvdGlf c2NpLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKwo+ICBkcml2ZXJzL3NvYy90aS9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKPiAgZHJpdmVycy9zb2MvdGkvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvc29jL3RpL2sz LXJpbmdhY2MuYyAgICAgICAgICAgICAgICAgICB8IDExODAgKysrKysrCj4gIGluY2x1ZGUvbGlu dXgvZG1hL2szLXBzaWwuaCAgICAgICAgICAgICAgICAgICB8ICAgNzEgKwo+ICBpbmNsdWRlL2xp bnV4L2RtYS9rMy11ZG1hLWdsdWUuaCAgICAgICAgICAgICAgfCAgMTM0ICsKPiAgaW5jbHVkZS9s aW51eC9kbWEvdGktY3BwaTUuaCAgICAgICAgICAgICAgICAgIHwgMTA2MSArKysrKwo+ICBpbmNs dWRlL2xpbnV4L2RtYWVuZ2luZS5oICAgICAgICAgICAgICAgICAgICAgfCAgMTEwICsKPiAgaW5j bHVkZS9saW51eC9zb2MvdGkvazMtcmluZ2FjYy5oICAgICAgICAgICAgIHwgIDI0NCArKwo+ICBp bmNsdWRlL2xpbnV4L3NvYy90aS90aV9zY2lfcHJvdG9jb2wuaCAgICAgICAgfCAgICAyICsKPiAg MjcgZmlsZXMgY2hhbmdlZCwgODc2MiBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3RpL2szLXVkbWEueWFtbAo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Nv Yy90aS9rMy1yaW5nYWNjLnR4dAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEvdGkv azMtcHNpbC1hbTY1NC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS90aS9rMy1w c2lsLWo3MjFlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL3RpL2szLXBzaWwt cHJpdi5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS90aS9rMy1wc2lsLmMKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL3RpL2szLXVkbWEtZ2x1ZS5jCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLXByaXZhdGUuYwo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c29jL3RpL2szLXJpbmdhY2MuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9k bWEvazMtcHNpbC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2RtYS9rMy11 ZG1hLWdsdWUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9kbWEvdGktY3Bw aTUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9zb2MvdGkvazMtcmluZ2Fj Yy5oCj4gCgotIFDDqXRlcgoKVGV4YXMgSW5zdHJ1bWVudHMgRmlubGFuZCBPeSwgUG9ya2thbGFu a2F0dSAyMiwgMDAxODAgSGVsc2lua2kuClktdHVubnVzL0J1c2luZXNzIElEOiAwNjE1NTIxLTQu IEtvdGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtpCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==