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=-5.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 CFC2AC432C0 for ; Thu, 28 Nov 2019 20:06:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9EF6D20880 for ; Thu, 28 Nov 2019 20:06:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="prlw5sTf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726692AbfK1UGK (ORCPT ); Thu, 28 Nov 2019 15:06:10 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:43172 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726545AbfK1UGK (ORCPT ); Thu, 28 Nov 2019 15:06:10 -0500 Received: by mail-lf1-f65.google.com with SMTP id l14so20854177lfh.10; Thu, 28 Nov 2019 12:06:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FjNGi4sGPAMOwSu//4rjJ+SnF7x7q5U9m2ivWbacmrs=; b=prlw5sTfXskWdLGt1n1eJ5Y/HudXYVV3XQf//ICFu7YD/09HJLyK1Gt/eUqntGMq7j MZxGrohvVH6Dt8zQSBdM82OBOsRclo678gkPc3GJTckx4aDYNkip2t+71xebU5f2nFFl cRMUsgK0E73k/jnILquqQdmjxai2nVLnwLBA4v9fcLobpDuuQr3LVRgjJ/EPJRHZFWXF jPYHvfhYr+VY1Z2o46InkqOw6/0HhGbhM5sncUxKEJGXgXyjGllKB/qXS0/NE1JeZX91 ADno3NmCgdKAKvCIXk9O2THtzM6650KH/LaL8O0n+gx+E4ocM+OlAOLPkN38n+r4qfB5 JUxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FjNGi4sGPAMOwSu//4rjJ+SnF7x7q5U9m2ivWbacmrs=; b=NsBPPyg0ZdcgXsioX+aFa5mzGCt3xY4vd/E6FMeI94h79QRHRkzBnRw/JkhFe9ACYH rxW4BXl+H9Q+EdU8YLuXqRVMou/uB5J8Q8jtIwdAl3iSuaFV9GiaIe5u5tHstJ92y3pE 71uZqKCtA73oipqQZxsPadrMRUpTAB5hdEFKPXawl8pKremOXlinTYF8bJyNmmZXQFT/ dU9n5ZKkQU+JQiswfZADKhYBiSEIDEowYj20/U2cl+qzj/WIq4CQ9u06i6ddQWvNfnyV D8w8vNnpwyQb2sbmiMUrtBci2sVo2DuBqJ9Dr8e7f56AfBQZqoXQBVfZ2ks/WNMhGwEe dOpg== X-Gm-Message-State: APjAAAUSYUcf2WOGS+QgiBOM/X1FsmefLdNve0H7nGpqZJHvYbWkPk88 /PqX5WUjeaRYTUfyHPebwXMprzXq X-Google-Smtp-Source: APXvYqzgPP9GLzInH7+s9jf2E5EQByrAmOEH9D4KiMZ3l/KM0WdjxySOJ/KXRCdKijAKz7DotGJUKQ== X-Received: by 2002:a19:6a15:: with SMTP id u21mr30911327lfu.31.1574971567031; Thu, 28 Nov 2019 12:06:07 -0800 (PST) Received: from [192.168.2.145] (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.googlemail.com with ESMTPSA id n30sm10178631lfi.54.2019.11.28.12.06.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 Nov 2019 12:06:06 -0800 (PST) Subject: Re: [PATCH v1 08/29] dt-bindings: interconnect: tegra: Add initial IDs To: Thierry Reding Cc: Jonathan Hunter , Peter De Schrijver , Mikko Perttunen , Georgi Djakov , Rob Herring , linux-tegra@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org References: <20191118200247.3567-1-digetx@gmail.com> <20191118200247.3567-9-digetx@gmail.com> <20191119062535.GC2462695@ulmo> <8cff3af3-42c7-3312-5f98-cd5eb98b7b7a@gmail.com> <20191125113218.GK1409040@ulmo> From: Dmitry Osipenko Message-ID: Date: Thu, 28 Nov 2019 23:06:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: <20191125113218.GK1409040@ulmo> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org 25.11.2019 14:32, Thierry Reding пишет: > On Thu, Nov 21, 2019 at 08:14:35PM +0300, Dmitry Osipenko wrote: >> 19.11.2019 19:56, Dmitry Osipenko пишет: >>> 19.11.2019 09:25, Thierry Reding пишет: >>>> On Mon, Nov 18, 2019 at 11:02:26PM +0300, Dmitry Osipenko wrote: >>>>> Define interconnect IDs for memory controller (MC), external memory >>>>> controller (EMC), external memory (EMEM) and memory clients of display >>>>> controllers (DC). >>>>> >>>>> Signed-off-by: Dmitry Osipenko >>>>> --- >>>>> include/dt-bindings/interconnect/tegra-icc.h | 11 +++++++++++ >>>>> 1 file changed, 11 insertions(+) >>>>> create mode 100644 include/dt-bindings/interconnect/tegra-icc.h >>> >>> >>> Hello Thierry, >>> >>>> There was a bit of discussion regarding this for a recent patch that I >>>> was working on, see: >>>> >>>> http://patchwork.ozlabs.org/project/linux-tegra/list/?series=140318 >>> >>> Thank you very much for the link. >>> >>>> I'd rather not use an additional set of definitions for this. The memory >>>> controller already has a set of native IDs for memory clients that I >>>> think we can reuse for this. >>> >>> I missed that it's fine to have multiple ICC connections defined >>> per-path, at quick glance looks like indeed it should be fine to re-use >>> MC IDs. >> >> Well, it is not quite correct to have multiple connections per-path. >> >> Please take look at interconnect's binding and core.c: >> >> 1. there should be one src->dst connection per-path >> 2. each connection should comprise of one source and one destination nodes >> >>>> I've only added these client IDs for Tegra194 because that's where we >>>> need it to actually describe a specific hardware quirk, but I can come >>>> up with the equivalent for older chips as well. >>> >>> Older Tegra SoCs have hardware units connected to MC through AHB bus, >>> like USB for example. These units do not have MC client IDs and there is >>> no MC ID defined for the AHB bus either, but probably it won't be a >>> problem to define IDs for them if will be necessary. >>> >> >> Since interconnect binding requires to define both source and >> destination nodes for the path, then MC IDs are not enough in order to >> define interconnect path because these IDs represent only the source >> nodes. Destination node should be either EMC or EMEM. > > This doesn't really map well to Tegra. The source of the path is always > the device and the destination is always the memory controller. We also > can have multiple paths between a device and the memory controller. The > typical case is to have at least a read and a write path, but there are > a number of devices that have multiple read and/or multiple write paths > to the memory controller. > > Or perhaps I'm looking at this the wrong way, and what we really ought > to describe is the paths with MC sitting in the middle. So it'd be > something like: > > MC ID --- source ---> MC --- destination ---> EMC Yes, this should be correct. > for write paths and: > > EMC --- source ---> MC --- destination ---> MC ID Both write and read paths have the same direction in terms of interconnect API. The source node requests bandwidth from the destination node, where source is memory client and destination is EMC/EMEM. > for read paths. I have no idea what would be a good connection ID for > EMC, since I don't think MC really differentiates at that level. Perhaps > #interconnect-cells = <0> for EMC would be appropriate. It should be fine to define ICC ID for EMC that doesn't overlap with the memory client IDs, say #1000. > This would make the bindings look more like this, taking a random sample > from the above series: > > ethernet@2490000 { > ... > interconnects = <&emc &mc TEGRA194_MEMORY_CLIENT_EQOSR>, > <&mc TEGRA194_MEMORY_CLIENT_EQOSW &emc>; > interconnect-names = "dma-mem", "dma-mem"; > ... > }; > > In words, the above would mean that for the ethernet device there is one > path (a read slave interface) where data flows from the EMC through the > MC to the device with memory client ID TEGRA194_MEMORY_CLIENT_EQOSR. The > second path (a write slave interface) describes data flowing from the > device (with memory client ID TEGRA194_MEMORY_CLIENT_EQOSW) through the > MC and towards the EMC. > > Irrespective of the above, I think we definitely need to keep separate > IDs for read and write paths because each of them have separate controls > for arbitration and latency allowance. So each of those may need to be > separately configurable. > > Does that make sense? I'll try to update this series to use ICC-path per display plane and see how it goes. In general, looks like should be fine to have ICC paths defined per memory client. 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=-5.0 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 78F87C432C0 for ; Sat, 30 Nov 2019 13:24:44 +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 5A32C2073C for ; Sat, 30 Nov 2019 13:24:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5A32C2073C 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 95DC46E112; Sat, 30 Nov 2019 13:24:37 +0000 (UTC) Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by gabe.freedesktop.org (Postfix) with ESMTPS id A8A166E043 for ; Thu, 28 Nov 2019 20:06:08 +0000 (UTC) Received: by mail-lf1-x142.google.com with SMTP id m30so19024701lfp.8 for ; Thu, 28 Nov 2019 12:06:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FjNGi4sGPAMOwSu//4rjJ+SnF7x7q5U9m2ivWbacmrs=; b=b+qEzljjw6O/IDXRCOtRBLwNEtJS7JwnguRdsqzyBBU8Kc0dAnuil0JaYnEXzKvFCw waMdTXJR8S6jKF7jbTjLnLoyVqy1ji01qcHBXIpITJR8bJ8RpFvHLIqVwcBIuQoe9Xw6 Aal8EmfT5lx4Mc0aDi1P0kgMinWWfsXRzcNrVfmNXf40CnUIT7o2+PfywcaiPIbqVN4o kYkpV6mtKCN/yDkRhPkaDtP1P5YJa3wvLKXiKo1uQChaKhL2DFzDxH09nwgmdorjsOjv 75UzX7gC7E6s2izUaaAR9/MaEcEtEGd16vteOUR0YB4AbhcVGBaSAdQ8h5HoR2c8qev5 iofg== X-Gm-Message-State: APjAAAX1CEVaI9a/PhwYVKmbZ1BjidLr6gGZ7C3mrG0zA7+0YsUEHjUg pRZNqNkEMpA2bpbGePp7QP4= X-Google-Smtp-Source: APXvYqzgPP9GLzInH7+s9jf2E5EQByrAmOEH9D4KiMZ3l/KM0WdjxySOJ/KXRCdKijAKz7DotGJUKQ== X-Received: by 2002:a19:6a15:: with SMTP id u21mr30911327lfu.31.1574971567031; Thu, 28 Nov 2019 12:06:07 -0800 (PST) Received: from [192.168.2.145] (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.googlemail.com with ESMTPSA id n30sm10178631lfi.54.2019.11.28.12.06.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 Nov 2019 12:06:06 -0800 (PST) Subject: Re: [PATCH v1 08/29] dt-bindings: interconnect: tegra: Add initial IDs To: Thierry Reding References: <20191118200247.3567-1-digetx@gmail.com> <20191118200247.3567-9-digetx@gmail.com> <20191119062535.GC2462695@ulmo> <8cff3af3-42c7-3312-5f98-cd5eb98b7b7a@gmail.com> <20191125113218.GK1409040@ulmo> From: Dmitry Osipenko Message-ID: Date: Thu, 28 Nov 2019 23:06:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: <20191125113218.GK1409040@ulmo> Content-Language: en-US X-Mailman-Approved-At: Sat, 30 Nov 2019 13:23:59 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FjNGi4sGPAMOwSu//4rjJ+SnF7x7q5U9m2ivWbacmrs=; b=prlw5sTfXskWdLGt1n1eJ5Y/HudXYVV3XQf//ICFu7YD/09HJLyK1Gt/eUqntGMq7j MZxGrohvVH6Dt8zQSBdM82OBOsRclo678gkPc3GJTckx4aDYNkip2t+71xebU5f2nFFl cRMUsgK0E73k/jnILquqQdmjxai2nVLnwLBA4v9fcLobpDuuQr3LVRgjJ/EPJRHZFWXF jPYHvfhYr+VY1Z2o46InkqOw6/0HhGbhM5sncUxKEJGXgXyjGllKB/qXS0/NE1JeZX91 ADno3NmCgdKAKvCIXk9O2THtzM6650KH/LaL8O0n+gx+E4ocM+OlAOLPkN38n+r4qfB5 JUxg== 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: devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Peter De Schrijver , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Mikko Perttunen , Rob Herring , linux-tegra@vger.kernel.org, Jonathan Hunter , Georgi Djakov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191128200605.nJ5TA_6oEbw2uJOvzzjdd2RZ_OEcKoCORnadOd6FiGk@z> MjUuMTEuMjAxOSAxNDozMiwgVGhpZXJyeSBSZWRpbmcg0L/QuNGI0LXRgjoKPiBPbiBUaHUsIE5v diAyMSwgMjAxOSBhdCAwODoxNDozNVBNICswMzAwLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+ IDE5LjExLjIwMTkgMTk6NTYsIERtaXRyeSBPc2lwZW5rbyDQv9C40YjQtdGCOgo+Pj4gMTkuMTEu MjAxOSAwOToyNSwgVGhpZXJyeSBSZWRpbmcg0L/QuNGI0LXRgjoKPj4+PiBPbiBNb24sIE5vdiAx OCwgMjAxOSBhdCAxMTowMjoyNlBNICswMzAwLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4+ IERlZmluZSBpbnRlcmNvbm5lY3QgSURzIGZvciBtZW1vcnkgY29udHJvbGxlciAoTUMpLCBleHRl cm5hbCBtZW1vcnkKPj4+Pj4gY29udHJvbGxlciAoRU1DKSwgZXh0ZXJuYWwgbWVtb3J5IChFTUVN KSBhbmQgbWVtb3J5IGNsaWVudHMgb2YgZGlzcGxheQo+Pj4+PiBjb250cm9sbGVycyAoREMpLgo+ Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgT3NpcGVua28gPGRpZ2V0eEBnbWFpbC5j b20+Cj4+Pj4+IC0tLQo+Pj4+PiAgaW5jbHVkZS9kdC1iaW5kaW5ncy9pbnRlcmNvbm5lY3QvdGVn cmEtaWNjLmggfCAxMSArKysrKysrKysrKwo+Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2Vy dGlvbnMoKykKPj4+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2R0LWJpbmRpbmdzL2lu dGVyY29ubmVjdC90ZWdyYS1pY2MuaAo+Pj4KPj4+Cj4+PiBIZWxsbyBUaGllcnJ5LAo+Pj4KPj4+ PiBUaGVyZSB3YXMgYSBiaXQgb2YgZGlzY3Vzc2lvbiByZWdhcmRpbmcgdGhpcyBmb3IgYSByZWNl bnQgcGF0Y2ggdGhhdCBJCj4+Pj4gd2FzIHdvcmtpbmcgb24sIHNlZToKPj4+Pgo+Pj4+IAlodHRw Oi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9saW51eC10ZWdyYS9saXN0Lz9zZXJpZXM9 MTQwMzE4Cj4+Pgo+Pj4gVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgdGhlIGxpbmsuCj4+Pgo+Pj4+ IEknZCByYXRoZXIgbm90IHVzZSBhbiBhZGRpdGlvbmFsIHNldCBvZiBkZWZpbml0aW9ucyBmb3Ig dGhpcy4gVGhlIG1lbW9yeQo+Pj4+IGNvbnRyb2xsZXIgYWxyZWFkeSBoYXMgYSBzZXQgb2YgbmF0 aXZlIElEcyBmb3IgbWVtb3J5IGNsaWVudHMgdGhhdCBJCj4+Pj4gdGhpbmsgd2UgY2FuIHJldXNl IGZvciB0aGlzLgo+Pj4KPj4+IEkgbWlzc2VkIHRoYXQgaXQncyBmaW5lIHRvIGhhdmUgbXVsdGlw bGUgSUNDIGNvbm5lY3Rpb25zIGRlZmluZWQKPj4+IHBlci1wYXRoLCBhdCBxdWljayBnbGFuY2Ug bG9va3MgbGlrZSBpbmRlZWQgaXQgc2hvdWxkIGJlIGZpbmUgdG8gcmUtdXNlCj4+PiBNQyBJRHMu Cj4+Cj4+IFdlbGwsIGl0IGlzIG5vdCBxdWl0ZSBjb3JyZWN0IHRvIGhhdmUgbXVsdGlwbGUgY29u bmVjdGlvbnMgcGVyLXBhdGguCj4+Cj4+IFBsZWFzZSB0YWtlIGxvb2sgYXQgaW50ZXJjb25uZWN0 J3MgYmluZGluZyBhbmQgY29yZS5jOgo+Pgo+PiAgIDEuIHRoZXJlIHNob3VsZCBiZSBvbmUgc3Jj LT5kc3QgY29ubmVjdGlvbiBwZXItcGF0aAo+PiAgIDIuIGVhY2ggY29ubmVjdGlvbiBzaG91bGQg Y29tcHJpc2Ugb2Ygb25lIHNvdXJjZSBhbmQgb25lIGRlc3RpbmF0aW9uIG5vZGVzCj4+Cj4+Pj4g SSd2ZSBvbmx5IGFkZGVkIHRoZXNlIGNsaWVudCBJRHMgZm9yIFRlZ3JhMTk0IGJlY2F1c2UgdGhh dCdzIHdoZXJlIHdlCj4+Pj4gbmVlZCBpdCB0byBhY3R1YWxseSBkZXNjcmliZSBhIHNwZWNpZmlj IGhhcmR3YXJlIHF1aXJrLCBidXQgSSBjYW4gY29tZQo+Pj4+IHVwIHdpdGggdGhlIGVxdWl2YWxl bnQgZm9yIG9sZGVyIGNoaXBzIGFzIHdlbGwuCj4+Pgo+Pj4gT2xkZXIgVGVncmEgU29DcyBoYXZl IGhhcmR3YXJlIHVuaXRzIGNvbm5lY3RlZCB0byBNQyB0aHJvdWdoIEFIQiBidXMsCj4+PiBsaWtl IFVTQiBmb3IgZXhhbXBsZS4gVGhlc2UgdW5pdHMgZG8gbm90IGhhdmUgTUMgY2xpZW50IElEcyBh bmQgdGhlcmUgaXMKPj4+IG5vIE1DIElEIGRlZmluZWQgZm9yIHRoZSBBSEIgYnVzIGVpdGhlciwg YnV0IHByb2JhYmx5IGl0IHdvbid0IGJlIGEKPj4+IHByb2JsZW0gdG8gZGVmaW5lIElEcyBmb3Ig dGhlbSBpZiB3aWxsIGJlIG5lY2Vzc2FyeS4KPj4+Cj4+Cj4+IFNpbmNlIGludGVyY29ubmVjdCBi aW5kaW5nIHJlcXVpcmVzIHRvIGRlZmluZSBib3RoIHNvdXJjZSBhbmQKPj4gZGVzdGluYXRpb24g bm9kZXMgZm9yIHRoZSBwYXRoLCB0aGVuIE1DIElEcyBhcmUgbm90IGVub3VnaCBpbiBvcmRlciB0 bwo+PiBkZWZpbmUgaW50ZXJjb25uZWN0IHBhdGggYmVjYXVzZSB0aGVzZSBJRHMgcmVwcmVzZW50 IG9ubHkgdGhlIHNvdXJjZQo+PiBub2Rlcy4gRGVzdGluYXRpb24gbm9kZSBzaG91bGQgYmUgZWl0 aGVyIEVNQyBvciBFTUVNLgo+IAo+IFRoaXMgZG9lc24ndCByZWFsbHkgbWFwIHdlbGwgdG8gVGVn cmEuIFRoZSBzb3VyY2Ugb2YgdGhlIHBhdGggaXMgYWx3YXlzCj4gdGhlIGRldmljZSBhbmQgdGhl IGRlc3RpbmF0aW9uIGlzIGFsd2F5cyB0aGUgbWVtb3J5IGNvbnRyb2xsZXIuIFdlIGFsc28KPiBj YW4gaGF2ZSBtdWx0aXBsZSBwYXRocyBiZXR3ZWVuIGEgZGV2aWNlIGFuZCB0aGUgbWVtb3J5IGNv bnRyb2xsZXIuIFRoZQo+IHR5cGljYWwgY2FzZSBpcyB0byBoYXZlIGF0IGxlYXN0IGEgcmVhZCBh bmQgYSB3cml0ZSBwYXRoLCBidXQgdGhlcmUgYXJlCj4gYSBudW1iZXIgb2YgZGV2aWNlcyB0aGF0 IGhhdmUgbXVsdGlwbGUgcmVhZCBhbmQvb3IgbXVsdGlwbGUgd3JpdGUgcGF0aHMKPiB0byB0aGUg bWVtb3J5IGNvbnRyb2xsZXIuCj4gCj4gT3IgcGVyaGFwcyBJJ20gbG9va2luZyBhdCB0aGlzIHRo ZSB3cm9uZyB3YXksIGFuZCB3aGF0IHdlIHJlYWxseSBvdWdodAo+IHRvIGRlc2NyaWJlIGlzIHRo ZSBwYXRocyB3aXRoIE1DIHNpdHRpbmcgaW4gdGhlIG1pZGRsZS4gU28gaXQnZCBiZQo+IHNvbWV0 aGluZyBsaWtlOgo+IAo+IAlNQyBJRCAtLS0gc291cmNlIC0tLT4gTUMgLS0tIGRlc3RpbmF0aW9u IC0tLT4gRU1DCgpZZXMsIHRoaXMgc2hvdWxkIGJlIGNvcnJlY3QuCgo+IGZvciB3cml0ZSBwYXRo cyBhbmQ6Cj4gCj4gCUVNQyAtLS0gc291cmNlIC0tLT4gTUMgLS0tIGRlc3RpbmF0aW9uIC0tLT4g TUMgSUQKCkJvdGggd3JpdGUgYW5kIHJlYWQgcGF0aHMgaGF2ZSB0aGUgc2FtZSBkaXJlY3Rpb24g aW4gdGVybXMgb2YKaW50ZXJjb25uZWN0IEFQSS4gVGhlIHNvdXJjZSBub2RlIHJlcXVlc3RzIGJh bmR3aWR0aCBmcm9tIHRoZQpkZXN0aW5hdGlvbiBub2RlLCB3aGVyZSBzb3VyY2UgaXMgbWVtb3J5 IGNsaWVudCBhbmQgZGVzdGluYXRpb24gaXMgRU1DL0VNRU0uCgo+IGZvciByZWFkIHBhdGhzLiBJ IGhhdmUgbm8gaWRlYSB3aGF0IHdvdWxkIGJlIGEgZ29vZCBjb25uZWN0aW9uIElEIGZvcgo+IEVN Qywgc2luY2UgSSBkb24ndCB0aGluayBNQyByZWFsbHkgZGlmZmVyZW50aWF0ZXMgYXQgdGhhdCBs ZXZlbC4gUGVyaGFwcwo+ICNpbnRlcmNvbm5lY3QtY2VsbHMgPSA8MD4gZm9yIEVNQyB3b3VsZCBi ZSBhcHByb3ByaWF0ZS4KCkl0IHNob3VsZCBiZSBmaW5lIHRvIGRlZmluZSBJQ0MgSUQgZm9yIEVN QyB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIHRoZQptZW1vcnkgY2xpZW50IElEcywgc2F5ICMx MDAwLgoKPiBUaGlzIHdvdWxkIG1ha2UgdGhlIGJpbmRpbmdzIGxvb2sgbW9yZSBsaWtlIHRoaXMs IHRha2luZyBhIHJhbmRvbSBzYW1wbGUKPiBmcm9tIHRoZSBhYm92ZSBzZXJpZXM6Cj4gCj4gCWV0 aGVybmV0QDI0OTAwMDAgewo+IAkJLi4uCj4gCQlpbnRlcmNvbm5lY3RzID0gPCZlbWMgJm1jIFRF R1JBMTk0X01FTU9SWV9DTElFTlRfRVFPU1I+LAo+IAkJCQk8Jm1jIFRFR1JBMTk0X01FTU9SWV9D TElFTlRfRVFPU1cgJmVtYz47Cj4gCQlpbnRlcmNvbm5lY3QtbmFtZXMgPSAiZG1hLW1lbSIsICJk bWEtbWVtIjsKPiAJCS4uLgo+IAl9Owo+IAo+IEluIHdvcmRzLCB0aGUgYWJvdmUgd291bGQgbWVh biB0aGF0IGZvciB0aGUgZXRoZXJuZXQgZGV2aWNlIHRoZXJlIGlzIG9uZQo+IHBhdGggKGEgcmVh ZCBzbGF2ZSBpbnRlcmZhY2UpIHdoZXJlIGRhdGEgZmxvd3MgZnJvbSB0aGUgRU1DIHRocm91Z2gg dGhlCj4gTUMgdG8gdGhlIGRldmljZSB3aXRoIG1lbW9yeSBjbGllbnQgSUQgVEVHUkExOTRfTUVN T1JZX0NMSUVOVF9FUU9TUi4gVGhlCj4gc2Vjb25kIHBhdGggKGEgd3JpdGUgc2xhdmUgaW50ZXJm YWNlKSBkZXNjcmliZXMgZGF0YSBmbG93aW5nIGZyb20gdGhlCj4gZGV2aWNlICh3aXRoIG1lbW9y eSBjbGllbnQgSUQgVEVHUkExOTRfTUVNT1JZX0NMSUVOVF9FUU9TVykgdGhyb3VnaCB0aGUKPiBN QyBhbmQgdG93YXJkcyB0aGUgRU1DLgo+IAo+IElycmVzcGVjdGl2ZSBvZiB0aGUgYWJvdmUsIEkg dGhpbmsgd2UgZGVmaW5pdGVseSBuZWVkIHRvIGtlZXAgc2VwYXJhdGUKPiBJRHMgZm9yIHJlYWQg YW5kIHdyaXRlIHBhdGhzIGJlY2F1c2UgZWFjaCBvZiB0aGVtIGhhdmUgc2VwYXJhdGUgY29udHJv bHMKPiBmb3IgYXJiaXRyYXRpb24gYW5kIGxhdGVuY3kgYWxsb3dhbmNlLiBTbyBlYWNoIG9mIHRo b3NlIG1heSBuZWVkIHRvIGJlCj4gc2VwYXJhdGVseSBjb25maWd1cmFibGUuCj4gCj4gRG9lcyB0 aGF0IG1ha2Ugc2Vuc2U/CgpJJ2xsIHRyeSB0byB1cGRhdGUgdGhpcyBzZXJpZXMgdG8gdXNlIElD Qy1wYXRoIHBlciBkaXNwbGF5IHBsYW5lIGFuZCBzZWUKaG93IGl0IGdvZXMuCgpJbiBnZW5lcmFs LCBsb29rcyBsaWtlIHNob3VsZCBiZSBmaW5lIHRvIGhhdmUgSUNDIHBhdGhzIGRlZmluZWQgcGVy Cm1lbW9yeSBjbGllbnQuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbA==