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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, 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 C0496C432C0 for ; Mon, 18 Nov 2019 20:07:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 91D7D214DE for ; Mon, 18 Nov 2019 20:07:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="APzSWzS1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726776AbfKRUFc (ORCPT ); Mon, 18 Nov 2019 15:05:32 -0500 Received: from mail-lj1-f170.google.com ([209.85.208.170]:46022 "EHLO mail-lj1-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726250AbfKRUFc (ORCPT ); Mon, 18 Nov 2019 15:05:32 -0500 Received: by mail-lj1-f170.google.com with SMTP id n21so20392550ljg.12; Mon, 18 Nov 2019 12:05:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+lYduyo7vPgxp45RLwsY0ZnQLiYVsuFTry8aLXbx4kM=; b=APzSWzS1AWv0t0oARIksAL9UGz8A49gKk4636qenUrw+Td8W04Iz2y8qkPl3AHCr6m l/Y7ReHNWM+fX2S6YoWckzLWIag7992BEYqUq4Gn7ppw4+46i/FfNOopAHsAijIGhjKR tD7SA9PLTVi2s4wgrPZldc+6eFwRb93c5lbw3Ix93bgb7lhuXJ0PlExD9gV/yxANzVju ztDiniGHZn5D2BJ4iYP8hDynklw+eD4ahvr9rBJ6wzY3kA2s+pBf2hpwaxyTKPUB/KNS oCMyalrSMkpWiyay05T2MnJa3wwN2B5WySinWwolMDf4wTAKiDFgGzlR2428ByxDD+/O jcJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+lYduyo7vPgxp45RLwsY0ZnQLiYVsuFTry8aLXbx4kM=; b=AMrUuEqRyNQAn3dbqdRGGtTItKb5Fqwy8rXr3WzjZenWV+UtT10zk+EnoQkLWpjxBW qUGdlehbMOQYlf1cITyuSyeOjDbZt0W26wxL5tjvnHfkl5VyTsQmRQj6JsmEJ00GFDHk wpbo9+lDmAOlKtVBa77VW9e+iKzxr1RSCtnv7SGjfxQy93HGeFzTowEHaDlgDlgAo2or uSmCKuMPkLnhAjPjaAqPLQ1AE+uGSRg6grlGSAqDVYTO1xOp+mXfGojAFjdI3/SdDhY/ uoA1F7RKuq7rirncpEBEBzDHSjWzp8uKaih9+Y81U/cAL6oUzILxSilKxhypXJEljdjC BcJA== X-Gm-Message-State: APjAAAWPyEXjNhCZbod6A2BIvO7BmfM+DT0+MYhBcSc9JjBVzIr01DRJ v7ngAjC3ipwZPWfQOhAxjck= X-Google-Smtp-Source: APXvYqxptZWcgvS7sdySo1sH5FxDJRVUucG9P8wDoJrg5exzZstUPyRLwr6nfSCBfGL7tbiFLrJUzA== X-Received: by 2002:a2e:574d:: with SMTP id r13mr934150ljd.10.1574107529313; Mon, 18 Nov 2019 12:05:29 -0800 (PST) Received: from localhost.localdomain (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.gmail.com with ESMTPSA id j23sm9166942lji.41.2019.11.18.12.05.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Nov 2019 12:05:28 -0800 (PST) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Peter De Schrijver , Mikko Perttunen , Georgi Djakov , Rob Herring Cc: linux-tegra@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Subject: [PATCH v1 00/29] Introduce memory interconnect for NVIDIA Tegra SoCs Date: Mon, 18 Nov 2019 23:02:18 +0300 Message-Id: <20191118200247.3567-1-digetx@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Hello, This series brings initial support for memory interconnect to Tegra20, Terga30 and Tegra124 SoCs. The interconnect provides are quite generic and should be suitable for all Tegra SoCs, but currently upstream kernel has EMC/MC drivers only for those three generations of Tegra SoCs. For the start only display controllers are getting interconnect API support, others could be supported later on. The display controllers have the biggest demand for interconnect API right now because dynamic memory frequency scaling can't be done safely without taking into account bandwidth requirement from the displays. Dmitry Osipenko (29): dt-bindings: memory: tegra20: mc: Document new interconnect property dt-bindings: memory: tegra20: emc: Document new interconnect property dt-bindings: memory: tegra30: mc: Document new interconnect property dt-bindings: memory: tegra30: emc: Document new interconnect property dt-bindings: memory: tegra124: mc: Document new interconnect property dt-bindings: memory: tegra124: emc: Document new interconnect property dt-bindings: host1x: Document new interconnect properties dt-bindings: interconnect: tegra: Add initial IDs ARM: tegra: Add interconnect properties to Tegra20 device-tree ARM: tegra: Add interconnect properties to Tegra30 device-tree ARM: tegra: Add interconnect properties to Tegra124 device-tree interconnect: Add memory interconnection providers for NVIDIA Tegra SoCs memory: tegra: Register as interconnect provider memory: tegra: Add interconnect nodes for Terga20 display controllers memory: tegra: Add interconnect nodes for Terga30 display controllers memory: tegra: Add interconnect nodes for Terga124 display controllers memory: tegra20-emc: Use devm_platform_ioremap_resource memory: tegra20-emc: Continue probing if timings/IRQ are missing in device-tree memory: tegra20-emc: Register as interconnect provider memory: tegra30-emc: Continue probing if timings are missing in device-tree memory: tegra30-emc: Register as interconnect provider memory: tegra124-emc: Use devm_platform_ioremap_resource memory: tegra124-emc: Register as interconnect provider drm/tegra: dc: Use devm_platform_ioremap_resource drm/tegra: dc: Release PM and RGB output when client's registration fails drm/tegra: dc: Support memory bandwidth management ARM: tegra: Enable interconnect API in tegra_defconfig ARM: multi_v7_defconfig: Enable NVIDIA Tegra interconnect providers MAINTAINERS: Add maintainers for NVIDIA Tegra interconnect drivers .../display/tegra/nvidia,tegra20-host1x.txt | 67 +++++ .../nvidia,tegra124-emc.txt | 3 + .../nvidia,tegra124-mc.yaml | 5 + .../memory-controllers/nvidia,tegra20-emc.txt | 4 + .../memory-controllers/nvidia,tegra20-mc.txt | 4 + .../nvidia,tegra30-emc.yaml | 6 + .../memory-controllers/nvidia,tegra30-mc.yaml | 5 + MAINTAINERS | 9 + arch/arm/boot/dts/tegra124.dtsi | 10 + arch/arm/boot/dts/tegra20.dtsi | 11 +- arch/arm/boot/dts/tegra30.dtsi | 12 +- arch/arm/configs/multi_v7_defconfig | 2 + arch/arm/configs/tegra_defconfig | 2 + drivers/gpu/drm/tegra/dc.c | 252 +++++++++++++++++- drivers/gpu/drm/tegra/dc.h | 8 + drivers/gpu/drm/tegra/drm.c | 18 ++ drivers/gpu/drm/tegra/plane.c | 1 + drivers/gpu/drm/tegra/plane.h | 4 +- drivers/interconnect/Kconfig | 1 + drivers/interconnect/Makefile | 1 + drivers/interconnect/tegra/Kconfig | 6 + drivers/interconnect/tegra/Makefile | 4 + drivers/interconnect/tegra/tegra-icc-emc.c | 138 ++++++++++ drivers/interconnect/tegra/tegra-icc-mc.c | 130 +++++++++ drivers/memory/tegra/mc.c | 4 + drivers/memory/tegra/tegra124-emc.c | 28 +- drivers/memory/tegra/tegra124.c | 16 ++ drivers/memory/tegra/tegra20-emc.c | 91 ++++--- drivers/memory/tegra/tegra20.c | 14 + drivers/memory/tegra/tegra30-emc.c | 34 ++- drivers/memory/tegra/tegra30.c | 14 + include/dt-bindings/interconnect/tegra-icc.h | 11 + include/soc/tegra/mc.h | 26 ++ 33 files changed, 883 insertions(+), 58 deletions(-) create mode 100644 drivers/interconnect/tegra/Kconfig create mode 100644 drivers/interconnect/tegra/Makefile create mode 100644 drivers/interconnect/tegra/tegra-icc-emc.c create mode 100644 drivers/interconnect/tegra/tegra-icc-mc.c create mode 100644 include/dt-bindings/interconnect/tegra-icc.h -- 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.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,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 84C42C432C0 for ; Tue, 19 Nov 2019 08:05:48 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 65D7A222EF for ; Tue, 19 Nov 2019 08:05:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 65D7A222EF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E4FD06EBD9; Tue, 19 Nov 2019 08:04:36 +0000 (UTC) Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0C7A6E81F for ; Mon, 18 Nov 2019 20:05:30 +0000 (UTC) Received: by mail-lj1-x231.google.com with SMTP id g3so20409122ljl.11 for ; Mon, 18 Nov 2019 12:05:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+lYduyo7vPgxp45RLwsY0ZnQLiYVsuFTry8aLXbx4kM=; b=HKSasDqBRd0Xnx09NhMaSOSAQ5KBHqdhRfsK4yPH/OgVqpma7x9FEbl7h1RBT2QgHS IN0xohcd3XgFK3YKiqSQcMb0gyMfle1WTk0cL74KDjELxmkN9OzIy2fJWXZuotcT6UU+ 8RkHjEDAH4iPx35Xxebg5lBoky3YYtagXULijBu7x/vig7W+CMFDNmEX4HWwDZ0rNO0X SZB7wkt/gLr+Y2tRjt3qgwka2nMfW8Mjfpi68xriM7c7fRYHSQiXSbYNV6V3EblPJMIa XVkaNibgmL1BsRbtYOSe1/T6lD0mgwXjgFfJd7Se/yOn1ZFTfIQL7oPTc0pWaDr+sZDg K/3A== X-Gm-Message-State: APjAAAWWHUP9wvMkTZg85KkNXcGyobcV92APDRbe4k4ZOSODmFu29roq PvNr5H1fPNE6DmYX5WT/yzI= X-Google-Smtp-Source: APXvYqxptZWcgvS7sdySo1sH5FxDJRVUucG9P8wDoJrg5exzZstUPyRLwr6nfSCBfGL7tbiFLrJUzA== X-Received: by 2002:a2e:574d:: with SMTP id r13mr934150ljd.10.1574107529313; Mon, 18 Nov 2019 12:05:29 -0800 (PST) Received: from localhost.localdomain (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.gmail.com with ESMTPSA id j23sm9166942lji.41.2019.11.18.12.05.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Nov 2019 12:05:28 -0800 (PST) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Peter De Schrijver , Mikko Perttunen , Georgi Djakov , Rob Herring Subject: [PATCH v1 00/29] Introduce memory interconnect for NVIDIA Tegra SoCs Date: Mon, 18 Nov 2019 23:02:18 +0300 Message-Id: <20191118200247.3567-1-digetx@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 19 Nov 2019 08:04:07 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+lYduyo7vPgxp45RLwsY0ZnQLiYVsuFTry8aLXbx4kM=; b=APzSWzS1AWv0t0oARIksAL9UGz8A49gKk4636qenUrw+Td8W04Iz2y8qkPl3AHCr6m l/Y7ReHNWM+fX2S6YoWckzLWIag7992BEYqUq4Gn7ppw4+46i/FfNOopAHsAijIGhjKR tD7SA9PLTVi2s4wgrPZldc+6eFwRb93c5lbw3Ix93bgb7lhuXJ0PlExD9gV/yxANzVju ztDiniGHZn5D2BJ4iYP8hDynklw+eD4ahvr9rBJ6wzY3kA2s+pBf2hpwaxyTKPUB/KNS oCMyalrSMkpWiyay05T2MnJa3wwN2B5WySinWwolMDf4wTAKiDFgGzlR2428ByxDD+/O jcJw== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-pm@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191118200218.2zEww3o-tqfS_z6Ow8wRsv9annRJef2kDvPYzBncfOA@z> SGVsbG8sCgpUaGlzIHNlcmllcyBicmluZ3MgaW5pdGlhbCBzdXBwb3J0IGZvciBtZW1vcnkgaW50 ZXJjb25uZWN0IHRvIFRlZ3JhMjAsClRlcmdhMzAgYW5kIFRlZ3JhMTI0IFNvQ3MuIFRoZSBpbnRl cmNvbm5lY3QgcHJvdmlkZXMgYXJlIHF1aXRlIGdlbmVyaWMKYW5kIHNob3VsZCBiZSBzdWl0YWJs ZSBmb3IgYWxsIFRlZ3JhIFNvQ3MsIGJ1dCBjdXJyZW50bHkgdXBzdHJlYW0ga2VybmVsCmhhcyBF TUMvTUMgZHJpdmVycyBvbmx5IGZvciB0aG9zZSB0aHJlZSBnZW5lcmF0aW9ucyBvZiBUZWdyYSBT b0NzLgoKRm9yIHRoZSBzdGFydCBvbmx5IGRpc3BsYXkgY29udHJvbGxlcnMgYXJlIGdldHRpbmcg aW50ZXJjb25uZWN0IEFQSQpzdXBwb3J0LCBvdGhlcnMgY291bGQgYmUgc3VwcG9ydGVkIGxhdGVy IG9uLiBUaGUgZGlzcGxheSBjb250cm9sbGVycwpoYXZlIHRoZSBiaWdnZXN0IGRlbWFuZCBmb3Ig aW50ZXJjb25uZWN0IEFQSSByaWdodCBub3cgYmVjYXVzZSBkeW5hbWljCm1lbW9yeSBmcmVxdWVu Y3kgc2NhbGluZyBjYW4ndCBiZSBkb25lIHNhZmVseSB3aXRob3V0IHRha2luZyBpbnRvIGFjY291 bnQKYmFuZHdpZHRoIHJlcXVpcmVtZW50IGZyb20gdGhlIGRpc3BsYXlzLgoKRG1pdHJ5IE9zaXBl bmtvICgyOSk6CiAgZHQtYmluZGluZ3M6IG1lbW9yeTogdGVncmEyMDogbWM6IERvY3VtZW50IG5l dyBpbnRlcmNvbm5lY3QgcHJvcGVydHkKICBkdC1iaW5kaW5nczogbWVtb3J5OiB0ZWdyYTIwOiBl bWM6IERvY3VtZW50IG5ldyBpbnRlcmNvbm5lY3QgcHJvcGVydHkKICBkdC1iaW5kaW5nczogbWVt b3J5OiB0ZWdyYTMwOiBtYzogRG9jdW1lbnQgbmV3IGludGVyY29ubmVjdCBwcm9wZXJ0eQogIGR0 LWJpbmRpbmdzOiBtZW1vcnk6IHRlZ3JhMzA6IGVtYzogRG9jdW1lbnQgbmV3IGludGVyY29ubmVj dCBwcm9wZXJ0eQogIGR0LWJpbmRpbmdzOiBtZW1vcnk6IHRlZ3JhMTI0OiBtYzogRG9jdW1lbnQg bmV3IGludGVyY29ubmVjdCBwcm9wZXJ0eQogIGR0LWJpbmRpbmdzOiBtZW1vcnk6IHRlZ3JhMTI0 OiBlbWM6IERvY3VtZW50IG5ldyBpbnRlcmNvbm5lY3QgcHJvcGVydHkKICBkdC1iaW5kaW5nczog aG9zdDF4OiBEb2N1bWVudCBuZXcgaW50ZXJjb25uZWN0IHByb3BlcnRpZXMKICBkdC1iaW5kaW5n czogaW50ZXJjb25uZWN0OiB0ZWdyYTogQWRkIGluaXRpYWwgSURzCiAgQVJNOiB0ZWdyYTogQWRk IGludGVyY29ubmVjdCBwcm9wZXJ0aWVzIHRvIFRlZ3JhMjAgZGV2aWNlLXRyZWUKICBBUk06IHRl Z3JhOiBBZGQgaW50ZXJjb25uZWN0IHByb3BlcnRpZXMgdG8gVGVncmEzMCBkZXZpY2UtdHJlZQog IEFSTTogdGVncmE6IEFkZCBpbnRlcmNvbm5lY3QgcHJvcGVydGllcyB0byBUZWdyYTEyNCBkZXZp Y2UtdHJlZQogIGludGVyY29ubmVjdDogQWRkIG1lbW9yeSBpbnRlcmNvbm5lY3Rpb24gcHJvdmlk ZXJzIGZvciBOVklESUEgVGVncmEKICAgIFNvQ3MKICBtZW1vcnk6IHRlZ3JhOiBSZWdpc3RlciBh cyBpbnRlcmNvbm5lY3QgcHJvdmlkZXIKICBtZW1vcnk6IHRlZ3JhOiBBZGQgaW50ZXJjb25uZWN0 IG5vZGVzIGZvciBUZXJnYTIwIGRpc3BsYXkgY29udHJvbGxlcnMKICBtZW1vcnk6IHRlZ3JhOiBB ZGQgaW50ZXJjb25uZWN0IG5vZGVzIGZvciBUZXJnYTMwIGRpc3BsYXkgY29udHJvbGxlcnMKICBt ZW1vcnk6IHRlZ3JhOiBBZGQgaW50ZXJjb25uZWN0IG5vZGVzIGZvciBUZXJnYTEyNCBkaXNwbGF5 IGNvbnRyb2xsZXJzCiAgbWVtb3J5OiB0ZWdyYTIwLWVtYzogVXNlIGRldm1fcGxhdGZvcm1faW9y ZW1hcF9yZXNvdXJjZQogIG1lbW9yeTogdGVncmEyMC1lbWM6IENvbnRpbnVlIHByb2JpbmcgaWYg dGltaW5ncy9JUlEgYXJlIG1pc3NpbmcgaW4KICAgIGRldmljZS10cmVlCiAgbWVtb3J5OiB0ZWdy YTIwLWVtYzogUmVnaXN0ZXIgYXMgaW50ZXJjb25uZWN0IHByb3ZpZGVyCiAgbWVtb3J5OiB0ZWdy YTMwLWVtYzogQ29udGludWUgcHJvYmluZyBpZiB0aW1pbmdzIGFyZSBtaXNzaW5nIGluCiAgICBk ZXZpY2UtdHJlZQogIG1lbW9yeTogdGVncmEzMC1lbWM6IFJlZ2lzdGVyIGFzIGludGVyY29ubmVj dCBwcm92aWRlcgogIG1lbW9yeTogdGVncmExMjQtZW1jOiBVc2UgZGV2bV9wbGF0Zm9ybV9pb3Jl bWFwX3Jlc291cmNlCiAgbWVtb3J5OiB0ZWdyYTEyNC1lbWM6IFJlZ2lzdGVyIGFzIGludGVyY29u bmVjdCBwcm92aWRlcgogIGRybS90ZWdyYTogZGM6IFVzZSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBf cmVzb3VyY2UKICBkcm0vdGVncmE6IGRjOiBSZWxlYXNlIFBNIGFuZCBSR0Igb3V0cHV0IHdoZW4g Y2xpZW50J3MgcmVnaXN0cmF0aW9uCiAgICBmYWlscwogIGRybS90ZWdyYTogZGM6IFN1cHBvcnQg bWVtb3J5IGJhbmR3aWR0aCBtYW5hZ2VtZW50CiAgQVJNOiB0ZWdyYTogRW5hYmxlIGludGVyY29u bmVjdCBBUEkgaW4gdGVncmFfZGVmY29uZmlnCiAgQVJNOiBtdWx0aV92N19kZWZjb25maWc6IEVu YWJsZSBOVklESUEgVGVncmEgaW50ZXJjb25uZWN0IHByb3ZpZGVycwogIE1BSU5UQUlORVJTOiBB ZGQgbWFpbnRhaW5lcnMgZm9yIE5WSURJQSBUZWdyYSBpbnRlcmNvbm5lY3QgZHJpdmVycwoKIC4u Li9kaXNwbGF5L3RlZ3JhL252aWRpYSx0ZWdyYTIwLWhvc3QxeC50eHQgICB8ICA2NyArKysrKwog Li4uL252aWRpYSx0ZWdyYTEyNC1lbWMudHh0ICAgICAgICAgICAgICAgICAgIHwgICAzICsKIC4u Li9udmlkaWEsdGVncmExMjQtbWMueWFtbCAgICAgICAgICAgICAgICAgICB8ICAgNSArCiAuLi4v bWVtb3J5LWNvbnRyb2xsZXJzL252aWRpYSx0ZWdyYTIwLWVtYy50eHQgfCAgIDQgKwogLi4uL21l bW9yeS1jb250cm9sbGVycy9udmlkaWEsdGVncmEyMC1tYy50eHQgIHwgICA0ICsKIC4uLi9udmlk aWEsdGVncmEzMC1lbWMueWFtbCAgICAgICAgICAgICAgICAgICB8ICAgNiArCiAuLi4vbWVtb3J5 LWNvbnRyb2xsZXJzL252aWRpYSx0ZWdyYTMwLW1jLnlhbWwgfCAgIDUgKwogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGFyY2gvYXJtL2Jvb3Qv ZHRzL3RlZ3JhMTI0LmR0c2kgICAgICAgICAgICAgICB8ICAxMCArCiBhcmNoL2FybS9ib290L2R0 cy90ZWdyYTIwLmR0c2kgICAgICAgICAgICAgICAgfCAgMTEgKy0KIGFyY2gvYXJtL2Jvb3QvZHRz L3RlZ3JhMzAuZHRzaSAgICAgICAgICAgICAgICB8ICAxMiArLQogYXJjaC9hcm0vY29uZmlncy9t dWx0aV92N19kZWZjb25maWcgICAgICAgICAgIHwgICAyICsKIGFyY2gvYXJtL2NvbmZpZ3MvdGVn cmFfZGVmY29uZmlnICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEv ZGMuYyAgICAgICAgICAgICAgICAgICAgfCAyNTIgKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vdGVncmEvZGMuaCAgICAgICAgICAgICAgICAgICAgfCAgIDggKwogZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2RybS5jICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrCiBkcml2ZXJzL2dw dS9kcm0vdGVncmEvcGxhbmUuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL3RlZ3JhL3BsYW5lLmggICAgICAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2ludGVy Y29ubmVjdC9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9pbnRlcmNv bm5lY3QvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvaW50ZXJjb25u ZWN0L3RlZ3JhL0tjb25maWcgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2ludGVyY29ubmVj dC90ZWdyYS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9pbnRlcmNvbm5lY3Qv dGVncmEvdGVncmEtaWNjLWVtYy5jICAgIHwgMTM4ICsrKysrKysrKysKIGRyaXZlcnMvaW50ZXJj b25uZWN0L3RlZ3JhL3RlZ3JhLWljYy1tYy5jICAgICB8IDEzMCArKysrKysrKysKIGRyaXZlcnMv bWVtb3J5L3RlZ3JhL21jLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL21l bW9yeS90ZWdyYS90ZWdyYTEyNC1lbWMuYyAgICAgICAgICAgfCAgMjggKy0KIGRyaXZlcnMvbWVt b3J5L3RlZ3JhL3RlZ3JhMTI0LmMgICAgICAgICAgICAgICB8ICAxNiArKwogZHJpdmVycy9tZW1v cnkvdGVncmEvdGVncmEyMC1lbWMuYyAgICAgICAgICAgIHwgIDkxICsrKystLS0KIGRyaXZlcnMv bWVtb3J5L3RlZ3JhL3RlZ3JhMjAuYyAgICAgICAgICAgICAgICB8ICAxNCArCiBkcml2ZXJzL21l bW9yeS90ZWdyYS90ZWdyYTMwLWVtYy5jICAgICAgICAgICAgfCAgMzQgKystCiBkcml2ZXJzL21l bW9yeS90ZWdyYS90ZWdyYTMwLmMgICAgICAgICAgICAgICAgfCAgMTQgKwogaW5jbHVkZS9kdC1i aW5kaW5ncy9pbnRlcmNvbm5lY3QvdGVncmEtaWNjLmggIHwgIDExICsKIGluY2x1ZGUvc29jL3Rl Z3JhL21jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAyNiArKwogMzMgZmlsZXMgY2hhbmdl ZCwgODgzIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvaW50ZXJjb25uZWN0L3RlZ3JhL0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2ludGVyY29ubmVjdC90ZWdyYS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvaW50ZXJjb25uZWN0L3RlZ3JhL3RlZ3JhLWljYy1lbWMuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvaW50ZXJjb25uZWN0L3RlZ3JhL3RlZ3JhLWljYy1tYy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9pbnRlcmNvbm5lY3QvdGVncmEtaWNjLmgKCi0t IAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==