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=-3.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=no 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 02B75C432C1 for ; Tue, 24 Sep 2019 18:12:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DEC3821928 for ; Tue, 24 Sep 2019 18:12:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2393935AbfIXSMz (ORCPT ); Tue, 24 Sep 2019 14:12:55 -0400 Received: from mx2.suse.de ([195.135.220.15]:43946 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2393874AbfIXSMy (ORCPT ); Tue, 24 Sep 2019 14:12:54 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 22E57AC93; Tue, 24 Sep 2019 18:12:51 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Cc: mbrugger@suse.com, robin.murphy@arm.com, f.fainelli@gmail.com, james.quinlan@broadcom.com, wahrenst@gmx.net, Nicolas Saenz Julienne , Dan Williams , freedreno@lists.freedesktop.org Subject: [PATCH 00/11] of: Fix DMA configuration for non-DT masters Date: Tue, 24 Sep 2019 20:12:31 +0200 Message-Id: <20190924181244.7159-1-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org Hi All, this series tries to address one of the issues blocking us from upstreaming Broadcom's STB PCIe controller[1]. Namely, the fact that devices not represented in DT which sit behind a PCI bus fail to get the bus' DMA addressing constraints. This is due to the fact that of_dma_configure() assumes it's receiving a DT node representing the device being configured, as opposed to the PCIe bridge node we currently pass. This causes the code to directly jump into PCI's parent node when checking for 'dma-ranges' and misses whatever was set there. To address this I create a new API in OF - inspired from Robin Murphys original proposal[2] - which accepts a bus DT node as it's input in order to configure a device's DMA constraints. The changes go deep into of/address.c's implementation, as a device being having a DT node assumption was pretty strong. On top of this work, I also cleaned up of_dma_configure() removing its redundant arguments and creating an alternative function for the special cases not applicable to either the above case or the default usage. IMO the resulting functions are more explicit. They will probably surface some hacky usages that can be properly fixed as I show with the DT fixes on the Layerscape platform. This was also tested on a Raspberry Pi 4 with a custom PCIe driver and on a Seattle AMD board. Regards, Nicolas [1] https://patchwork.kernel.org/patch/9650345/#20294961 [2] https://patchwork.kernel.org/patch/9650345/ --- Nicolas Saenz Julienne (11): of: address: clean-up unused variable in of_dma_get_range() of: base: introduce __of_n_*_cells_parent() of: address: use parent DT node in bus->count_cells() of: address: introduce of_translate_dma_address_parent() of: expose __of_get_dma_parent() to OF subsystem of: address: use parent OF node in of_dma_get_range() dts: arm64: layerscape: add dma-ranges property to qoric-mc node dts: arm64: layerscape: add dma-ranges property to pcie nodes of: device: remove comment in of_dma_configure() of: device: introduce of_dma_configure_parent() of: simplify of_dma_config()'s arguments .../arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 1 + .../arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 5 + .../arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 1 + drivers/base/platform.c | 2 +- drivers/bcma/main.c | 2 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 2 +- drivers/dma/qcom/hidma_mgmt.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 2 +- drivers/gpu/drm/xen/xen_drm_front.c | 2 +- drivers/gpu/host1x/bus.c | 4 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 +- drivers/of/address.c | 136 +++++++++--------- drivers/of/base.c | 69 +++++++-- drivers/of/device.c | 59 +++++++- drivers/of/of_private.h | 5 + drivers/pci/pci-driver.c | 3 +- drivers/xen/gntdev.c | 2 +- include/linux/of_address.h | 8 +- include/linux/of_device.h | 23 ++- 22 files changed, 223 insertions(+), 113 deletions(-) -- 2.23.0 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=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=no 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 F29FBC432C1 for ; Tue, 24 Sep 2019 18:13:55 +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 D1F3521655 for ; Tue, 24 Sep 2019 18:13:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="OC5A13wt" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D1F3521655 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de 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:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=XzwVxP1YR2H6IlWArt8OYXKGLx4MhWdxofbphSFiQlE=; b=OC5A13wtTJfVi0 tjPTvLZXx6x1DGHZ4nCAPry93K35Meu/Ba//9t+XNSclUaNTw97aQ+wRoaoYHhhPUw8U71hA/Gwnz aXzaW2ln1N4yAWXiUBw8h0yrmC/I3BMmOdEV1jRBilopnuXMcA8gbrDOd8Gaebz6aca0H7IuCoFMm Y4kvSCN2ttXsIOFYGw7cWWkE0Tq+RLGzem5941ximfA2jr2A0iNIBFssZxjETfHxX60C5r/LznszQ uG3FBO/9A2T/U0reNiJG/5r7FaW11HoAmwv2Jya1F5TxA+bypoIMyVHIEJcFlw3zQIDuk8baScpg+ G3pA05YFonV/mx6g+xaw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpJq-0003j9-Ua; Tue, 24 Sep 2019 18:13:47 +0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpJ1-00034C-Mz for linux-arm-kernel@lists.infradead.org; Tue, 24 Sep 2019 18:12:57 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 22E57AC93; Tue, 24 Sep 2019 18:12:51 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH 00/11] of: Fix DMA configuration for non-DT masters Date: Tue, 24 Sep 2019 20:12:31 +0200 Message-Id: <20190924181244.7159-1-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190924_111256_128175_58642537 X-CRM114-Status: GOOD ( 11.48 ) 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: f.fainelli@gmail.com, freedreno@lists.freedesktop.org, mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, Dan Williams , robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi All, this series tries to address one of the issues blocking us from upstreaming Broadcom's STB PCIe controller[1]. Namely, the fact that devices not represented in DT which sit behind a PCI bus fail to get the bus' DMA addressing constraints. This is due to the fact that of_dma_configure() assumes it's receiving a DT node representing the device being configured, as opposed to the PCIe bridge node we currently pass. This causes the code to directly jump into PCI's parent node when checking for 'dma-ranges' and misses whatever was set there. To address this I create a new API in OF - inspired from Robin Murphys original proposal[2] - which accepts a bus DT node as it's input in order to configure a device's DMA constraints. The changes go deep into of/address.c's implementation, as a device being having a DT node assumption was pretty strong. On top of this work, I also cleaned up of_dma_configure() removing its redundant arguments and creating an alternative function for the special cases not applicable to either the above case or the default usage. IMO the resulting functions are more explicit. They will probably surface some hacky usages that can be properly fixed as I show with the DT fixes on the Layerscape platform. This was also tested on a Raspberry Pi 4 with a custom PCIe driver and on a Seattle AMD board. Regards, Nicolas [1] https://patchwork.kernel.org/patch/9650345/#20294961 [2] https://patchwork.kernel.org/patch/9650345/ --- Nicolas Saenz Julienne (11): of: address: clean-up unused variable in of_dma_get_range() of: base: introduce __of_n_*_cells_parent() of: address: use parent DT node in bus->count_cells() of: address: introduce of_translate_dma_address_parent() of: expose __of_get_dma_parent() to OF subsystem of: address: use parent OF node in of_dma_get_range() dts: arm64: layerscape: add dma-ranges property to qoric-mc node dts: arm64: layerscape: add dma-ranges property to pcie nodes of: device: remove comment in of_dma_configure() of: device: introduce of_dma_configure_parent() of: simplify of_dma_config()'s arguments .../arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 1 + .../arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 5 + .../arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 1 + drivers/base/platform.c | 2 +- drivers/bcma/main.c | 2 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 2 +- drivers/dma/qcom/hidma_mgmt.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 2 +- drivers/gpu/drm/xen/xen_drm_front.c | 2 +- drivers/gpu/host1x/bus.c | 4 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 +- drivers/of/address.c | 136 +++++++++--------- drivers/of/base.c | 69 +++++++-- drivers/of/device.c | 59 +++++++- drivers/of/of_private.h | 5 + drivers/pci/pci-driver.c | 3 +- drivers/xen/gntdev.c | 2 +- include/linux/of_address.h | 8 +- include/linux/of_device.h | 23 ++- 22 files changed, 223 insertions(+), 113 deletions(-) -- 2.23.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-3.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=no 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 E4874C432C2 for ; Wed, 25 Sep 2019 04:16:33 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 ABDAD21841 for ; Wed, 25 Sep 2019 04:16:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABDAD21841 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCyj1-0000QF-74; Wed, 25 Sep 2019 04:16:23 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCpJ4-0000Ee-Dm for xen-devel@lists.xenproject.org; Tue, 24 Sep 2019 18:12:58 +0000 X-Inumbo-ID: ec33552e-def6-11e9-bf31-bc764e2007e4 Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id ec33552e-def6-11e9-bf31-bc764e2007e4; Tue, 24 Sep 2019 18:12:52 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 22E57AC93; Tue, 24 Sep 2019 18:12:51 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Date: Tue, 24 Sep 2019 20:12:31 +0200 Message-Id: <20190924181244.7159-1-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 25 Sep 2019 04:16:20 +0000 Subject: [Xen-devel] [PATCH 00/11] of: Fix DMA configuration for non-DT masters X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: f.fainelli@gmail.com, freedreno@lists.freedesktop.org, mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, Dan Williams , robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SGkgQWxsLAp0aGlzIHNlcmllcyB0cmllcyB0byBhZGRyZXNzIG9uZSBvZiB0aGUgaXNzdWVzIGJs b2NraW5nIHVzIGZyb20KdXBzdHJlYW1pbmcgQnJvYWRjb20ncyBTVEIgUENJZSBjb250cm9sbGVy WzFdLiBOYW1lbHksIHRoZSBmYWN0IHRoYXQKZGV2aWNlcyBub3QgcmVwcmVzZW50ZWQgaW4gRFQg d2hpY2ggc2l0IGJlaGluZCBhIFBDSSBidXMgZmFpbCB0byBnZXQgdGhlCmJ1cycgRE1BIGFkZHJl c3NpbmcgY29uc3RyYWludHMuCgpUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IG9mX2RtYV9j b25maWd1cmUoKSBhc3N1bWVzIGl0J3MgcmVjZWl2aW5nIGEKRFQgbm9kZSByZXByZXNlbnRpbmcg dGhlIGRldmljZSBiZWluZyBjb25maWd1cmVkLCBhcyBvcHBvc2VkIHRvIHRoZSBQQ0llCmJyaWRn ZSBub2RlIHdlIGN1cnJlbnRseSBwYXNzLiBUaGlzIGNhdXNlcyB0aGUgY29kZSB0byBkaXJlY3Rs eSBqdW1wCmludG8gUENJJ3MgcGFyZW50IG5vZGUgd2hlbiBjaGVja2luZyBmb3IgJ2RtYS1yYW5n ZXMnIGFuZCBtaXNzZXMKd2hhdGV2ZXIgd2FzIHNldCB0aGVyZS4KClRvIGFkZHJlc3MgdGhpcyBJ IGNyZWF0ZSBhIG5ldyBBUEkgaW4gT0YgLSBpbnNwaXJlZCBmcm9tIFJvYmluIE11cnBoeXMKb3Jp Z2luYWwgcHJvcG9zYWxbMl0gLSB3aGljaCBhY2NlcHRzIGEgYnVzIERUIG5vZGUgYXMgaXQncyBp bnB1dCBpbgpvcmRlciB0byBjb25maWd1cmUgYSBkZXZpY2UncyBETUEgY29uc3RyYWludHMuIFRo ZSBjaGFuZ2VzIGdvIGRlZXAgaW50bwpvZi9hZGRyZXNzLmMncyBpbXBsZW1lbnRhdGlvbiwgYXMg YSBkZXZpY2UgYmVpbmcgaGF2aW5nIGEgRFQgbm9kZQphc3N1bXB0aW9uIHdhcyBwcmV0dHkgc3Ry b25nLgoKT24gdG9wIG9mIHRoaXMgd29yaywgSSBhbHNvIGNsZWFuZWQgdXAgb2ZfZG1hX2NvbmZp Z3VyZSgpIHJlbW92aW5nIGl0cwpyZWR1bmRhbnQgYXJndW1lbnRzIGFuZCBjcmVhdGluZyBhbiBh bHRlcm5hdGl2ZSBmdW5jdGlvbiBmb3IgdGhlIHNwZWNpYWwgY2FzZXMKbm90IGFwcGxpY2FibGUg dG8gZWl0aGVyIHRoZSBhYm92ZSBjYXNlIG9yIHRoZSBkZWZhdWx0IHVzYWdlLgoKSU1PIHRoZSBy ZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGV4cGxpY2l0LiBUaGV5IHdpbGwgcHJvYmFibHkK c3VyZmFjZSBzb21lIGhhY2t5IHVzYWdlcyB0aGF0IGNhbiBiZSBwcm9wZXJseSBmaXhlZCBhcyBJ IHNob3cgd2l0aCB0aGUKRFQgZml4ZXMgb24gdGhlIExheWVyc2NhcGUgcGxhdGZvcm0uCgpUaGlz IHdhcyBhbHNvIHRlc3RlZCBvbiBhIFJhc3BiZXJyeSBQaSA0IHdpdGggYSBjdXN0b20gUENJZSBk cml2ZXIgYW5kCm9uIGEgU2VhdHRsZSBBTUQgYm9hcmQuCgpSZWdhcmRzLApOaWNvbGFzCgpbMV0g aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC85NjUwMzQ1LyMyMDI5NDk2MQpbMl0g aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC85NjUwMzQ1LwoKLS0tCgpOaWNvbGFz IFNhZW56IEp1bGllbm5lICgxMSk6CiAgb2Y6IGFkZHJlc3M6IGNsZWFuLXVwIHVudXNlZCB2YXJp YWJsZSBpbiBvZl9kbWFfZ2V0X3JhbmdlKCkKICBvZjogYmFzZTogaW50cm9kdWNlIF9fb2Zfbl8q X2NlbGxzX3BhcmVudCgpCiAgb2Y6IGFkZHJlc3M6IHVzZSBwYXJlbnQgRFQgbm9kZSBpbiBidXMt PmNvdW50X2NlbGxzKCkKICBvZjogYWRkcmVzczogaW50cm9kdWNlIG9mX3RyYW5zbGF0ZV9kbWFf YWRkcmVzc19wYXJlbnQoKQogIG9mOiBleHBvc2UgX19vZl9nZXRfZG1hX3BhcmVudCgpIHRvIE9G IHN1YnN5c3RlbQogIG9mOiBhZGRyZXNzOiB1c2UgcGFyZW50IE9GIG5vZGUgaW4gb2ZfZG1hX2dl dF9yYW5nZSgpCiAgZHRzOiBhcm02NDogbGF5ZXJzY2FwZTogYWRkIGRtYS1yYW5nZXMgcHJvcGVy dHkgdG8gcW9yaWMtbWMgbm9kZQogIGR0czogYXJtNjQ6IGxheWVyc2NhcGU6IGFkZCBkbWEtcmFu Z2VzIHByb3BlcnR5IHRvIHBjaWUgbm9kZXMKICBvZjogZGV2aWNlOiByZW1vdmUgY29tbWVudCBp biBvZl9kbWFfY29uZmlndXJlKCkKICBvZjogZGV2aWNlOiBpbnRyb2R1Y2Ugb2ZfZG1hX2NvbmZp Z3VyZV9wYXJlbnQoKQogIG9mOiBzaW1wbGlmeSBvZl9kbWFfY29uZmlnKCkncyBhcmd1bWVudHMK CiAuLi4vYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2kgfCAgIDEgKwog Li4uL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpIHwgICA1ICsKIC4u Li9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaSB8ICAgMSArCiBkcml2 ZXJzL2Jhc2UvcGxhdGZvcm0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZl cnMvYmNtYS9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVy cy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJz L2RtYS9xY29tL2hpZG1hX21nbXQuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmMgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYyAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dw dS9kcm0vc3VuNGkvc3VuNGlfYmFja2VuZC5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udC5jICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUv aG9zdDF4L2J1cy5jICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL3Fjb20vdmVudXMvZmlybXdhcmUuYyAgfCAgIDIgKy0KIGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vczVwLW1mYy9zNXBfbWZjLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9vZi9hZGRy ZXNzLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTM2ICsrKysrKysrKy0tLS0tLS0tLQog ZHJpdmVycy9vZi9iYXNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDY5ICsrKysr KystLQogZHJpdmVycy9vZi9kZXZpY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU5 ICsrKysrKystCiBkcml2ZXJzL29mL29mX3ByaXZhdGUuaCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKwogZHJpdmVycy9wY2kvcGNpLWRyaXZlci5jICAgICAgICAgICAgICAgICAgICAgIHwg ICAzICstCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIGluY2x1ZGUvbGludXgvb2ZfYWRkcmVzcy5oICAgICAgICAgICAgICAgICAgICB8ICAg OCArLQogaW5jbHVkZS9saW51eC9vZl9kZXZpY2UuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIz ICsrLQogMjIgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMo LSkKCi0tIAoyLjIzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs