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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D01D2EE49AD for ; Wed, 23 Aug 2023 12:42:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232906AbjHWMmU (ORCPT ); Wed, 23 Aug 2023 08:42:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234515AbjHWMmU (ORCPT ); Wed, 23 Aug 2023 08:42:20 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 63597E46; Wed, 23 Aug 2023 05:42:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E5DAA650A5; Wed, 23 Aug 2023 12:42:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B64AAC433C8; Wed, 23 Aug 2023 12:42:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692794537; bh=8uzezK1wRKIpXgIyZFlOrbzbnhXdWBh2a3dmZMdQpRo=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=VWRpAmepzO+DtlYuaCJBkh8K15skd67DU6bGJvCLxJG1cfaX5G+SXYbb20zulpLkX AggySYVeZDxigKgcblRxCrKi+STjTGSymdfdQhoDBAfmWiOj/3nCa/67IgNAwNtRcP rskUJYcVSFFZy0cOMxRrXCegAjwyduZCKgh7TgYKbW0ODTSxJjyL4oR/mjtzRd0G7j B4nUgarpP/AdCbRGE1oageZ9eZo77tI+pjR74VbKtTMnAZ2Sz1Py4oIlntMpBzlp/R 0Gca63BpG1ZF6yRyI5QTpWLIS4o5TmYlYgLONr1tHedjxEHiJp2BNEuzZdw3SPhuU6 4uHQCNiHnQIBQ== Date: Wed, 23 Aug 2023 07:42:14 -0500 From: Bjorn Helgaas To: Lorenzo Pieralisi Cc: Jim Quinlan , linux-pci@vger.kernel.org, Nicolas Saenz Julienne , Bjorn Helgaas , Lorenzo Pieralisi , Cyril Brulebois , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Jim Quinlan , Florian Fainelli , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE" , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list Subject: Re: [PATCH v6 1/5] dt-bindings: PCI: brcmstb: Add brcm,enable-l1ss property Message-ID: <20230823124214.GA416689@bhelgaas> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Wed, Aug 23, 2023 at 09:30:48AM +0200, Lorenzo Pieralisi wrote: > On Mon, Aug 21, 2023 at 12:01:50PM -0400, Jim Quinlan wrote: > > On Mon, Aug 21, 2023 at 11:41 AM Lorenzo Pieralisi > > wrote: > > > On Mon, Aug 21, 2023 at 11:25:11AM -0400, Jim Quinlan wrote: > > > > On Mon, Aug 21, 2023 at 10:47 AM Lorenzo Pieralisi > > > > wrote: > > > > > On Fri, Jun 23, 2023 at 10:40:54AM -0400, Jim Quinlan wrote: > > > > > > This commit adds the boolean "brcm,enable-l1ss" property: > > > > > > > > > > > > The Broadcom STB/CM PCIe HW -- a core that is also used by RPi SOCs -- > > > > > > requires the driver probe() to deliberately place the HW one of three > > > > > > CLKREQ# modes: > > > > > > > > > > > > (a) CLKREQ# driven by the RC unconditionally > > > > > > (b) CLKREQ# driven by the EP for ASPM L0s, L1 > > > > > > (c) Bidirectional CLKREQ#, as used for L1 Substates (L1SS). > > > > > > > > > > > > The HW+driver can tell the difference between downstream devices that > > > > > > need (a) and (b), but does not know when to configure (c). All devices > > > > > > should work fine when the driver chooses (a) or (b), but (c) may be > > > > > > desired to realize the extra power savings that L1SS offers. So we > > > > > > introduce the boolean "brcm,enable-l1ss" property to inform the driver > > > > > > that (c) is desired. Setting this property only makes sense when the > > > > > > downstream device is L1SS-capable and the OS is configured to activate > > > > > > this mode (e.g. policy==powersupersave). > > > > > > > > > > > > This property is already present in the Raspian version of Linux, but the > > > > > > upstream driver implementation that follows adds more details and > > > > > > discerns between (a) and (b). > > > > > > > > > > > > Signed-off-by: Jim Quinlan > > > > > > Reviewed-by: Rob Herring > > > > > > --- > > > > > > Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 9 +++++++++ > > > > > > 1 file changed, 9 insertions(+) > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml > > > > > > index 7e15aae7d69e..8b61c2179608 100644 > > > > > > --- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml > > > > > > +++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml > > > > > > @@ -64,6 +64,15 @@ properties: > > > > > > > > > > > > aspm-no-l0s: true > > > > > > > > > > > > + brcm,enable-l1ss: > > > > > > + description: Indicates that PCIe L1SS power savings > > > > > > + are desired, the downstream device is L1SS-capable, and the > > > > > > + OS has been configured to enable this mode. For boards > > > > > > > > > > What does this mean ? I don't think DT properties are supposed > > > > > to carry information related to how the OS is configured. > > > > > > > > The DT setting in question is unrelated to the statement "and the OS > > > > has been configured to > > > > enable this mode". > > > > > > > > This is merely saying that even if you enable "brcm,l1ss-enable" > > > > that you may not get L1SS power savings w/o setting > > > > "CONFIG_PCIEASPM_POWER_SUPERSAVE=y". > > > > I mentioned that exact term but a reviewer nakked it because > > > > apparently DT descriptions should not be OS specific. > > > > > > > > I am actually open for this to be a command-line option but I wanted to honor > > > > what the Raspian OS folks have already done. RaspianOS already has > > > > "brcm,enable-l1ss" > > > > set in their DTS files. > > > > > > This is about the mainline kernel, I don't have any visibility into > > > downstream kernels (where that property management was added without DT > > > and PCI maintainers supervision). > > > > > > Raspian OS folks' choice is theirs but it can't and it shouldn't override > > > the mainline review process even though I understand the position you > > > are in. > > > > Understood, but using the command line has its warts as well; I now recall the > > discussion Bjorn and I had regarding this option. I'm pretty sure > > that upstreaam will not allow the following > > possible command line kernel params: > > > > brcm,enable-l1ss > > pci=brcm,entable-l1ss > > > > Bjorn suggested using the documented but (IMO) obscure and rarely > > used format > > > > pci=[:]:.[/.]*pci::[::] > > > > but this is just going in the wrong direction; here's why. Using the > > above iformat s completely dependent on the > > PCI "linux-domaiin" property, a non-HW related DT property I might > > add. Since "linux-domain" is already > > a valid and well-used DT property, and the value of the above > > command line format is dependent > > on the value of the "linux-domain", why not be consistent and let > > "brcm,enable-l1ss" be a Broadcom specific property? > > I am just asking to add a module_param to the host controller driver. A module_param sounds possible to me. IIRC the bidirectional CLKREQ# (config (c)) has been tested and there are no known problems even if the OS doesn't enable L1SS. The only issue (again, IIRC) is that the hardware engineer has unspecified reservations about it. Is there any room to make (c) the default and have a module_param to *disable* the L1SS support? I think the driver knows enough to then select (a) or (b) by itself. Bjorn 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 95C42EE49A0 for ; Wed, 23 Aug 2023 12:42:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Owner; bh=jQMg/OW4QDqFCJ2z3HAhf9LCI+5JBi8eawGryt+YeII=; b=1CyLqyub4+/vWR Vniyi2LXuSg9cT5uqvogEJBkfTkMR1298X6/PH2mc0o4lV1Jcbxwa6ASYyX2WYZX9H6BZzANmr287 FKLRBC+f0d2pvZXoJO1RtaGjxzPvr9kzZVUGlpQL65q6EsVpN3RePSyILzI6U/xmQv0UPIKdIVqcp GV9IE6GCTlS25HJ9oBGLL0w5HstcXN+HCYqqZVXvc9Hl157ReAtR0zYOiEpTHXDK2lzU4yiPw7oKS s9IIuQs5mHsUvL/LBcFw6pgxbndzOMpFWA1HCjp0KkKu1Myw74+tRS/Uf1Q00Gwg5ubYYDRKdd7eJ I8oVN+dKma57YCPo//8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qYnBm-000ZAz-0G; Wed, 23 Aug 2023 12:42:22 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qYnBj-000Z9q-0O; Wed, 23 Aug 2023 12:42:20 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id AADF464AF3; Wed, 23 Aug 2023 12:42:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B64AAC433C8; Wed, 23 Aug 2023 12:42:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692794537; bh=8uzezK1wRKIpXgIyZFlOrbzbnhXdWBh2a3dmZMdQpRo=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=VWRpAmepzO+DtlYuaCJBkh8K15skd67DU6bGJvCLxJG1cfaX5G+SXYbb20zulpLkX AggySYVeZDxigKgcblRxCrKi+STjTGSymdfdQhoDBAfmWiOj/3nCa/67IgNAwNtRcP rskUJYcVSFFZy0cOMxRrXCegAjwyduZCKgh7TgYKbW0ODTSxJjyL4oR/mjtzRd0G7j B4nUgarpP/AdCbRGE1oageZ9eZo77tI+pjR74VbKtTMnAZ2Sz1Py4oIlntMpBzlp/R 0Gca63BpG1ZF6yRyI5QTpWLIS4o5TmYlYgLONr1tHedjxEHiJp2BNEuzZdw3SPhuU6 4uHQCNiHnQIBQ== Date: Wed, 23 Aug 2023 07:42:14 -0500 From: Bjorn Helgaas To: Lorenzo Pieralisi Cc: Jim Quinlan , linux-pci@vger.kernel.org, Nicolas Saenz Julienne , Bjorn Helgaas , Lorenzo Pieralisi , Cyril Brulebois , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Jim Quinlan , Florian Fainelli , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE" , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list Subject: Re: [PATCH v6 1/5] dt-bindings: PCI: brcmstb: Add brcm,enable-l1ss property Message-ID: <20230823124214.GA416689@bhelgaas> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230823_054219_271391_AF536E26 X-CRM114-Status: GOOD ( 48.79 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBBdWcgMjMsIDIwMjMgYXQgMDk6MzA6NDhBTSArMDIwMCwgTG9yZW56byBQaWVyYWxp c2kgd3JvdGU6Cj4gT24gTW9uLCBBdWcgMjEsIDIwMjMgYXQgMTI6MDE6NTBQTSAtMDQwMCwgSmlt IFF1aW5sYW4gd3JvdGU6Cj4gPiBPbiBNb24sIEF1ZyAyMSwgMjAyMyBhdCAxMTo0MeKAr0FNIExv cmVuem8gUGllcmFsaXNpCj4gPiA8bHBpZXJhbGlzaUBrZXJuZWwub3JnPiB3cm90ZToKPiA+ID4g T24gTW9uLCBBdWcgMjEsIDIwMjMgYXQgMTE6MjU6MTFBTSAtMDQwMCwgSmltIFF1aW5sYW4gd3Jv dGU6Cj4gPiA+ID4gT24gTW9uLCBBdWcgMjEsIDIwMjMgYXQgMTA6NDfigK9BTSBMb3JlbnpvIFBp ZXJhbGlzaQo+ID4gPiA+IDxscGllcmFsaXNpQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gPiA+ID4g T24gRnJpLCBKdW4gMjMsIDIwMjMgYXQgMTA6NDA6NTRBTSAtMDQwMCwgSmltIFF1aW5sYW4gd3Jv dGU6Cj4gPiA+ID4gPiA+IFRoaXMgY29tbWl0IGFkZHMgdGhlIGJvb2xlYW4gImJyY20sZW5hYmxl LWwxc3MiIHByb3BlcnR5Ogo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgIFRoZSBCcm9hZGNvbSBT VEIvQ00gUENJZSBIVyAtLSBhIGNvcmUgdGhhdCBpcyBhbHNvIHVzZWQgYnkgUlBpIFNPQ3MgLS0K PiA+ID4gPiA+ID4gICByZXF1aXJlcyB0aGUgZHJpdmVyIHByb2JlKCkgdG8gZGVsaWJlcmF0ZWx5 IHBsYWNlIHRoZSBIVyBvbmUgb2YgdGhyZWUKPiA+ID4gPiA+ID4gICBDTEtSRVEjIG1vZGVzOgo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgIChhKSBDTEtSRVEjIGRyaXZlbiBieSB0aGUgUkMgdW5j b25kaXRpb25hbGx5Cj4gPiA+ID4gPiA+ICAgKGIpIENMS1JFUSMgZHJpdmVuIGJ5IHRoZSBFUCBm b3IgQVNQTSBMMHMsIEwxCj4gPiA+ID4gPiA+ICAgKGMpIEJpZGlyZWN0aW9uYWwgQ0xLUkVRIywg YXMgdXNlZCBmb3IgTDEgU3Vic3RhdGVzIChMMVNTKS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g ICBUaGUgSFcrZHJpdmVyIGNhbiB0ZWxsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bnN0cmVh bSBkZXZpY2VzIHRoYXQKPiA+ID4gPiA+ID4gICBuZWVkIChhKSBhbmQgKGIpLCBidXQgZG9lcyBu b3Qga25vdyB3aGVuIHRvIGNvbmZpZ3VyZSAoYykuICBBbGwgZGV2aWNlcwo+ID4gPiA+ID4gPiAg IHNob3VsZCB3b3JrIGZpbmUgd2hlbiB0aGUgZHJpdmVyIGNob29zZXMgKGEpIG9yIChiKSwgYnV0 IChjKSBtYXkgYmUKPiA+ID4gPiA+ID4gICBkZXNpcmVkIHRvIHJlYWxpemUgdGhlIGV4dHJhIHBv d2VyIHNhdmluZ3MgdGhhdCBMMVNTIG9mZmVycy4gIFNvIHdlCj4gPiA+ID4gPiA+ICAgaW50cm9k dWNlIHRoZSBib29sZWFuICJicmNtLGVuYWJsZS1sMXNzIiBwcm9wZXJ0eSB0byBpbmZvcm0gdGhl IGRyaXZlcgo+ID4gPiA+ID4gPiAgIHRoYXQgKGMpIGlzIGRlc2lyZWQuICBTZXR0aW5nIHRoaXMg cHJvcGVydHkgb25seSBtYWtlcyBzZW5zZSB3aGVuIHRoZQo+ID4gPiA+ID4gPiAgIGRvd25zdHJl YW0gZGV2aWNlIGlzIEwxU1MtY2FwYWJsZSBhbmQgdGhlIE9TIGlzIGNvbmZpZ3VyZWQgdG8gYWN0 aXZhdGUKPiA+ID4gPiA+ID4gICB0aGlzIG1vZGUgKGUuZy4gcG9saWN5PT1wb3dlcnN1cGVyc2F2 ZSkuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgVGhpcyBwcm9wZXJ0eSBpcyBhbHJlYWR5IHBy ZXNlbnQgaW4gdGhlIFJhc3BpYW4gdmVyc2lvbiBvZiBMaW51eCwgYnV0IHRoZQo+ID4gPiA+ID4g PiAgIHVwc3RyZWFtIGRyaXZlciBpbXBsZW1lbnRhdGlvbiB0aGF0IGZvbGxvd3MgYWRkcyBtb3Jl IGRldGFpbHMgYW5kCj4gPiA+ID4gPiA+ICAgZGlzY2VybnMgYmV0d2VlbiAoYSkgYW5kIChiKS4K PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSmltIFF1aW5sYW4gPGphbWVz LnF1aW5sYW5AYnJvYWRjb20uY29tPgo+ID4gPiA+ID4gPiBSZXZpZXdlZC1ieTogUm9iIEhlcnJp bmcgPHJvYmhAa2VybmVsLm9yZz4KPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ICBEb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2JyY20sc3RiLXBjaWUueWFtbCB8IDkgKysr KysrKysrCj4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvcGNpL2JyY20sc3RiLXBjaWUueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9wY2kvYnJjbSxzdGItcGNpZS55YW1sCj4gPiA+ID4gPiA+IGluZGV4IDdlMTVh YWU3ZDY5ZS4uOGI2MWMyMTc5NjA4IDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2JyY20sc3RiLXBjaWUueWFtbAo+ID4gPiA+ID4g PiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2JyY20sc3RiLXBj aWUueWFtbAo+ID4gPiA+ID4gPiBAQCAtNjQsNiArNjQsMTUgQEAgcHJvcGVydGllczoKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gICAgYXNwbS1uby1sMHM6IHRydWUKPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gKyAgYnJjbSxlbmFibGUtbDFzczoKPiA+ID4gPiA+ID4gKyAgICBkZXNjcmlwdGlvbjog SW5kaWNhdGVzIHRoYXQgUENJZSBMMVNTIHBvd2VyIHNhdmluZ3MKPiA+ID4gPiA+ID4gKyAgICAg IGFyZSBkZXNpcmVkLCB0aGUgZG93bnN0cmVhbSBkZXZpY2UgaXMgTDFTUy1jYXBhYmxlLCBhbmQg dGhlCj4gPiA+ID4gPiA+ICsgICAgICBPUyBoYXMgYmVlbiBjb25maWd1cmVkIHRvIGVuYWJsZSB0 aGlzIG1vZGUuICBGb3IgYm9hcmRzCj4gPiA+ID4gPgo+ID4gPiA+ID4gV2hhdCBkb2VzIHRoaXMg bWVhbiA/IEkgZG9uJ3QgdGhpbmsgRFQgcHJvcGVydGllcyBhcmUgc3VwcG9zZWQKPiA+ID4gPiA+ IHRvIGNhcnJ5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gaG93IHRoZSBPUyBpcyBjb25maWd1cmVk Lgo+ID4gPiA+Cj4gPiA+ID4gVGhlIERUIHNldHRpbmcgaW4gcXVlc3Rpb24gaXMgdW5yZWxhdGVk IHRvIHRoZSBzdGF0ZW1lbnQgImFuZCB0aGUgT1MKPiA+ID4gPiBoYXMgYmVlbiBjb25maWd1cmVk IHRvCj4gPiA+ID4gZW5hYmxlIHRoaXMgbW9kZSIuCj4gPiA+ID4KPiA+ID4gPiBUaGlzIGlzIG1l cmVseSBzYXlpbmcgdGhhdCBldmVuIGlmIHlvdSBlbmFibGUgImJyY20sbDFzcy1lbmFibGUiCj4g PiA+ID4gdGhhdCB5b3UgbWF5IG5vdCBnZXQgTDFTUyBwb3dlciBzYXZpbmdzIHcvbyBzZXR0aW5n Cj4gPiA+ID4gIkNPTkZJR19QQ0lFQVNQTV9QT1dFUl9TVVBFUlNBVkU9eSIuCj4gPiA+ID4gSSBt ZW50aW9uZWQgdGhhdCBleGFjdCB0ZXJtIGJ1dCBhIHJldmlld2VyIG5ha2tlZCBpdCBiZWNhdXNl Cj4gPiA+ID4gYXBwYXJlbnRseSBEVCBkZXNjcmlwdGlvbnMgc2hvdWxkIG5vdCBiZSBPUyBzcGVj aWZpYy4KPiA+ID4gPgo+ID4gPiA+IEkgYW0gYWN0dWFsbHkgb3BlbiBmb3IgdGhpcyB0byBiZSBh IGNvbW1hbmQtbGluZSBvcHRpb24gYnV0IEkgd2FudGVkIHRvIGhvbm9yCj4gPiA+ID4gd2hhdCB0 aGUgUmFzcGlhbiBPUyBmb2xrcyBoYXZlIGFscmVhZHkgZG9uZS4gIFJhc3BpYW5PUyBhbHJlYWR5 IGhhcwo+ID4gPiA+ICJicmNtLGVuYWJsZS1sMXNzIgo+ID4gPiA+IHNldCBpbiB0aGVpciBEVFMg ZmlsZXMuCj4gPiA+Cj4gPiA+IFRoaXMgaXMgYWJvdXQgdGhlIG1haW5saW5lIGtlcm5lbCwgSSBk b24ndCBoYXZlIGFueSB2aXNpYmlsaXR5IGludG8KPiA+ID4gZG93bnN0cmVhbSBrZXJuZWxzICh3 aGVyZSB0aGF0IHByb3BlcnR5IG1hbmFnZW1lbnQgd2FzIGFkZGVkIHdpdGhvdXQgRFQKPiA+ID4g YW5kIFBDSSBtYWludGFpbmVycyBzdXBlcnZpc2lvbikuCj4gPiA+Cj4gPiA+IFJhc3BpYW4gT1Mg Zm9sa3MnIGNob2ljZSBpcyB0aGVpcnMgYnV0IGl0IGNhbid0IGFuZCBpdCBzaG91bGRuJ3Qgb3Zl cnJpZGUKPiA+ID4gdGhlIG1haW5saW5lIHJldmlldyBwcm9jZXNzIGV2ZW4gdGhvdWdoIEkgdW5k ZXJzdGFuZCB0aGUgcG9zaXRpb24geW91Cj4gPiA+IGFyZSBpbi4KPiA+IAo+ID4gVW5kZXJzdG9v ZCwgYnV0IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaGFzIGl0cyB3YXJ0cyBhcyB3ZWxsOyBJIG5v dyByZWNhbGwgdGhlCj4gPiBkaXNjdXNzaW9uIEJqb3JuIGFuZCBJICBoYWQgcmVnYXJkaW5nIHRo aXMgb3B0aW9uLiAgSSdtIHByZXR0eSBzdXJlCj4gPiB0aGF0IHVwc3RyZWFhbSB3aWxsIG5vdCBh bGxvdyB0aGUgZm9sbG93aW5nCj4gPiBwb3NzaWJsZSBjb21tYW5kIGxpbmUga2VybmVsIHBhcmFt czoKPiA+IAo+ID4gICAgIGJyY20sZW5hYmxlLWwxc3MKPiA+ICAgICBwY2k9YnJjbSxlbnRhYmxl LWwxc3MKPiA+IAo+ID4gQmpvcm4gc3VnZ2VzdGVkIHVzaW5nIHRoZSAgZG9jdW1lbnRlZCBidXQg KElNTykgb2JzY3VyZSAgYW5kICByYXJlbHkKPiA+IHVzZWQgIGZvcm1hdAo+ID4gCj4gPiAgICAg cGNpPVs8ZG9tYWluPjpdPGJ1cz46PGRldj4uPGZ1bmM+Wy88ZGV2Pi48ZnVuYz5dKnBjaTo8dmVu ZG9yPjo8ZGV2aWNlPls6PHN1YnZlbmRvcj46PHN1YmRldmljZT5dCj4gPiAKPiA+IGJ1dCB0aGlz IGlzIGp1c3QgZ29pbmcgaW4gdGhlIHdyb25nIGRpcmVjdGlvbjsgaGVyZSdzIHdoeS4gIFVzaW5n IHRoZQo+ID4gYWJvdmUgaWZvcm1hdCBzIGNvbXBsZXRlbHkgZGVwZW5kZW50IG9uIHRoZQo+ID4g UENJICJsaW51eC1kb21haWluIiAgcHJvcGVydHksICBhIG5vbi1IVyByZWxhdGVkIERUIHByb3Bl cnR5IEkgIG1pZ2h0Cj4gPiBhZGQuICBTaW5jZSAibGludXgtZG9tYWluIiBpcyBhbHJlYWR5Cj4g PiBhIHZhbGlkIGFuZCB3ZWxsLXVzZWQgIERUIHByb3BlcnR5LCBhbmQgdGhlIHZhbHVlIG9mICB0 aGUgYWJvdmUKPiA+IGNvbW1hbmQgbGluZSBmb3JtYXQgaXMgZGVwZW5kZW50Cj4gPiBvbiB0aGUg dmFsdWUgb2YgdGhlICJsaW51eC1kb21haW4iLCB3aHkgbm90IGJlIGNvbnNpc3RlbnQgYW5kIGxl dAo+ID4gImJyY20sZW5hYmxlLWwxc3MiIGJlIGEgQnJvYWRjb20gc3BlY2lmaWMgcHJvcGVydHk/ Cj4gCj4gSSBhbSBqdXN0IGFza2luZyB0byBhZGQgYSBtb2R1bGVfcGFyYW0gdG8gdGhlIGhvc3Qg Y29udHJvbGxlciBkcml2ZXIuCgpBIG1vZHVsZV9wYXJhbSBzb3VuZHMgcG9zc2libGUgdG8gbWUu ICBJSVJDIHRoZSBiaWRpcmVjdGlvbmFsIENMS1JFUSMKKGNvbmZpZyAoYykpIGhhcyBiZWVuIHRl c3RlZCBhbmQgdGhlcmUgYXJlIG5vIGtub3duIHByb2JsZW1zIGV2ZW4gaWYKdGhlIE9TIGRvZXNu J3QgZW5hYmxlIEwxU1MuICBUaGUgb25seSBpc3N1ZSAoYWdhaW4sIElJUkMpIGlzIHRoYXQgdGhl CmhhcmR3YXJlIGVuZ2luZWVyIGhhcyB1bnNwZWNpZmllZCByZXNlcnZhdGlvbnMgYWJvdXQgaXQu CgpJcyB0aGVyZSBhbnkgcm9vbSB0byBtYWtlIChjKSB0aGUgZGVmYXVsdCBhbmQgaGF2ZSBhIG1v ZHVsZV9wYXJhbSB0bwoqZGlzYWJsZSogdGhlIEwxU1Mgc3VwcG9ydD8gIEkgdGhpbmsgdGhlIGRy aXZlciBrbm93cyBlbm91Z2ggdG8gdGhlbgpzZWxlY3QgKGEpIG9yIChiKSBieSBpdHNlbGYuCgpC am9ybgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=