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 03DBAC71153 for ; Wed, 23 Aug 2023 18:17:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238076AbjHWSRK (ORCPT ); Wed, 23 Aug 2023 14:17:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35690 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238074AbjHWSRJ (ORCPT ); Wed, 23 Aug 2023 14:17:09 -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 B363ACD1; Wed, 23 Aug 2023 11:17:07 -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)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 42D2D6251E; Wed, 23 Aug 2023 18:17:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C6EAC433C8; Wed, 23 Aug 2023 18:17:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692814626; bh=v5gbbKQx580NwsJPzLlKgg+HN23Z3nlcACK/+A05KDI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=oRtgDNZtR0b3nGM0E6dijQnhJ/iVvKerQl5ziYWo2zFvA3fGoFyyg3LEsIVspVX8t MkGE0IoVIZf/z3jbvcgr4IICa1ibWtN3OPprNEl+1XAW02aySxe6sCthUrx85+txMl nHlfgrDXvQVEcGL/WLjv8eITez0VEzXkQgEwzArte4qamDGd1NZRBpWFJmubVeNKLF FymAiAl0uq2bBVM48W/c2j5qGQRWNTv4rCeJYoli5egOHUKnOgdyFHzFYjjdZ4bRZk ueL/Nf+CDHumwyQA7b9eBci8rwMKrq10gW1nC4uwPdg/I1O16WEuQKKpO0sowq9cRd xXpwNOX487obg== Date: Wed, 23 Aug 2023 23:46:50 +0530 From: Manivannan Sadhasivam To: Jim Quinlan 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, Florian Fainelli , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list Subject: Re: [PATCH v5 1/5] dt-bindings: PCI: brcmstb: Add brcm,enable-l1ss property Message-ID: <20230823181650.GL3737@thinkpad> References: <20230508220126.16241-1-jim2101024@gmail.com> <20230508220126.16241-2-jim2101024@gmail.com> <20230823074330.GF3737@thinkpad> 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:09:25AM -0400, Jim Quinlan wrote: > On Wed, Aug 23, 2023 at 3:43 AM Manivannan Sadhasivam wrote: > > > > On Mon, May 08, 2023 at 06:01:21PM -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 > > > + using a mini-card connector, this mode may not meet the > > > + TCRLon maximum time of 400ns, as specified in 3.2.5.2.2 > > > + of the PCI Express Mini CEM 2.0 specification. > > > > As Lorenzo said, this property doesn't belong in DT. DT is supposed to specify > > the hardware capability and not system/OS behavior. > > The "brcm,enable-l1ss" does NOT configure the OS behavior. > It sets or not a mode bit to enable l1SS HW, whether or not the OS is > configured for L1SS. > It compensates for a problem in the PCIe core: the HW is not capable > of dynamically > switching between ASPM modes powersave and superpowersave. I am actively > advocating for our HW to change but that will take years. > Okay, then I would say that the property name and commit message were a bit misleading. I had briefly gone through the driver patch now. As per my understanding, you have 2 modes in hw: 1. Clock PM - Refclk will be turned off by the host if CLKREQ# is deasserted by the device (driving high) when the link is in L1. 2. L1SS - CLKREQ# will be used to decide L1SS entry and exit by the host. Till now the driver only supported Clock PM through mode (1) but for supporting L1SS you need to enable mode (2). And you are using this property to select mode (2) when the L1SS supported devices are connected to the slot. Also, by selecting this mode, you are loosing the benefit of mode (1) as both are not compatible. My suggestion would be to just drop mode (1) and use mode (2) in the driver as most of the recent devices should support L1SS (ofc there are exemptions). But moving that decision to DT still doesn't seem right to me as the hardware supports both modes and you are (ab)using DT to choose one or the other. - Mani > If this flag specifies > > whether the PCIe controller supports L1SS or not, then it is fine but apparantly > > this specifies that all downstream devices are L1SS capable which you cannot > > guarantee unless you poke into their LNKCAP during runtime. > Not true at all. This setting affects only RC and whatever device is > connected to its single downstream > port. > > > > > You should handle this in the driver itself. > > The driver has no way of knowing if the PCI subsystem is going from power_save > to power_supersave or vice-versa -- there is no notification chain for this. So > what you say is not currently possible from the driver's perspective. > > Perhaps you would be happy if we changed it to "l1ss-support" in the > spirit of the > existing "clkreq-support" PCI parameter? > > Regards, > Jim Quinlan > Broadcom STB/CMi > > > > > - Mani > > > > > + type: boolean > > > + > > > brcm,scb-sizes: > > > description: u64 giving the 64bit PCIe memory > > > viewport size of a memory controller. There may be up to > > > -- > > > 2.17.1 > > > > > > > -- > > மணிவண்ணன் சதாசிவம் > Date: Tue, 22 Aug 2023 21:01:47 +0000 (UTC) > From: Florian Fainelli > To: james.quinlan@broadcom.com > Subject: Join me now in my Personal Room > > Hello, > > Join me now in my Personal Room. > > JOIN WEBEX MEETING > https://broadcom.webex.com/join/florian.fainelli | 490 282 179 > > > JOIN FROM A VIDEO CONFERENCING SYSTEM OR APPLICATION > Dial sip:florian.fainelli@broadcom.webex.com > You can also dial 173.243.2.68 and enter your meeting number. > > > > Can't join the meeting? > https://help.webex.com/docs/DOC-5412 > > PHONE DIALING GUIDELINES: > - Use Call Me when you are using office phone or Jabber. > - Use Call Using Computer when you are at home or traveling. > > In Office Calls: > - From Broadcom Office: 1-MEETING (1-6338464) > > Offsite Numbers Toll (Local) Calls: > - Canada, Richmond: +1-778-308-4007 > - China: +86-400-819-1044 > - Germany, Munich: +49-892-312-9611 > - Germany, Regensburg: +49-(9)419-923-5940 > - India: 00-080-0050-1631 > - Israel: +97-239-786-477 > - Japan, Tokyo: +81-366-344-937 > - Malaysia: +603-2053-5189 > - Singapore: +65-6349-2439 > - South Korea, Seoul: +82-70-4732-0218 > - Taiwan, Taipei: +886-277-047-765 > - US, Denver: +1-720-726-9995 > - US, Los Angeles: +1-310-616-5312 > - US, Philadelphia: +1-215-305-7603 > - UK, London: +44-207-660-8897 > - UK, Manchester: +44-161-619-8089 > > IMPORTANT NOTICE: Please note that this Webex service allows audio and other information sent during the session to be recorded, which may be discoverable in a legal matter. By joining this session, you automatically consent to such recordings. If you do not consent to being recorded, discuss your concerns with the host or do not join the session. -- மணிவண்ணன் சதாசிவம் 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 955B8C7113B for ; Wed, 23 Aug 2023 18:17:57 +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:References: 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: List-Owner; bh=KE0pUoPpj8DMiujPVHNqGJVzknklVcv6Cibz24BlR9s=; b=ZqvjEEJv1e5iIL kJXx9r/jgQRyPYJEEpFqHwMuA77LxkBHeqHqHo9qjjPmbhrPCOMTSrkjJyP7CCMwwq2wLPz7s9MBg TWwCu/CzziE8YFIOOzz/e65dydUJp+AbjN04vLCg+0D4AfuW8klQgVqxFDTI040ZYkSCxw6elnxdZ ocsF3nk//rwepOM+IYxbdwMdT+ykfqu9dHLfnuizy9+ozwHSoimKKXArM6/DKKK/jyRyFGf/4w51h 4qqpexCH5odIgilAvUc7wDrZaxq9Zes6ZEHCbvf3degYqZxAfmE5kK6eGp/atH/l5padDaxSP3IgH bRM3A0xZkalQKyK9Q6Hw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qYsQ0-001Ieb-03; Wed, 23 Aug 2023 18:17:24 +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 1qYsPk-001IX3-1F; Wed, 23 Aug 2023 18:17:10 +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 C461063D95; Wed, 23 Aug 2023 18:17:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C6EAC433C8; Wed, 23 Aug 2023 18:17:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692814626; bh=v5gbbKQx580NwsJPzLlKgg+HN23Z3nlcACK/+A05KDI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=oRtgDNZtR0b3nGM0E6dijQnhJ/iVvKerQl5ziYWo2zFvA3fGoFyyg3LEsIVspVX8t MkGE0IoVIZf/z3jbvcgr4IICa1ibWtN3OPprNEl+1XAW02aySxe6sCthUrx85+txMl nHlfgrDXvQVEcGL/WLjv8eITez0VEzXkQgEwzArte4qamDGd1NZRBpWFJmubVeNKLF FymAiAl0uq2bBVM48W/c2j5qGQRWNTv4rCeJYoli5egOHUKnOgdyFHzFYjjdZ4bRZk ueL/Nf+CDHumwyQA7b9eBci8rwMKrq10gW1nC4uwPdg/I1O16WEuQKKpO0sowq9cRd xXpwNOX487obg== Date: Wed, 23 Aug 2023 23:46:50 +0530 From: Manivannan Sadhasivam To: Jim Quinlan 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, Florian Fainelli , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list Subject: Re: [PATCH v5 1/5] dt-bindings: PCI: brcmstb: Add brcm,enable-l1ss property Message-ID: <20230823181650.GL3737@thinkpad> References: <20230508220126.16241-1-jim2101024@gmail.com> <20230508220126.16241-2-jim2101024@gmail.com> <20230823074330.GF3737@thinkpad> 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_111708_516883_CAEFB064 X-CRM114-Status: GOOD ( 51.94 ) 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 T24gV2VkLCBBdWcgMjMsIDIwMjMgYXQgMDk6MDk6MjVBTSAtMDQwMCwgSmltIFF1aW5sYW4gd3Jv dGU6Cj4gT24gV2VkLCBBdWcgMjMsIDIwMjMgYXQgMzo0M+KAr0FNIE1hbml2YW5uYW4gU2FkaGFz aXZhbSA8bWFuaUBrZXJuZWwub3JnPiB3cm90ZToKPiA+Cj4gPiBPbiBNb24sIE1heSAwOCwgMjAy MyBhdCAwNjowMToyMVBNIC0wNDAwLCBKaW0gUXVpbmxhbiB3cm90ZToKPiA+ID4gVGhpcyBjb21t aXQgYWRkcyB0aGUgYm9vbGVhbiAiYnJjbSxlbmFibGUtbDFzcyIgcHJvcGVydHk6Cj4gPiA+Cj4g PiA+ICAgVGhlIEJyb2FkY29tIFNUQi9DTSBQQ0llIEhXIC0tIGEgY29yZSB0aGF0IGlzIGFsc28g dXNlZCBieSBSUGkgU09DcyAtLQo+ID4gPiAgIHJlcXVpcmVzIHRoZSBkcml2ZXIgcHJvYmUoKSB0 byBkZWxpYmVyYXRlbHkgcGxhY2UgdGhlIEhXIG9uZSBvZiB0aHJlZQo+ID4gPiAgIENMS1JFUSMg bW9kZXM6Cj4gPiA+Cj4gPiA+ICAgKGEpIENMS1JFUSMgZHJpdmVuIGJ5IHRoZSBSQyB1bmNvbmRp dGlvbmFsbHkKPiA+ID4gICAoYikgQ0xLUkVRIyBkcml2ZW4gYnkgdGhlIEVQIGZvciBBU1BNIEww cywgTDEKPiA+ID4gICAoYykgQmlkaXJlY3Rpb25hbCBDTEtSRVEjLCBhcyB1c2VkIGZvciBMMSBT dWJzdGF0ZXMgKEwxU1MpLgo+ID4gPgo+ID4gPiAgIFRoZSBIVytkcml2ZXIgY2FuIHRlbGwgdGhl IGRpZmZlcmVuY2UgYmV0d2VlbiBkb3duc3RyZWFtIGRldmljZXMgdGhhdAo+ID4gPiAgIG5lZWQg KGEpIGFuZCAoYiksIGJ1dCBkb2VzIG5vdCBrbm93IHdoZW4gdG8gY29uZmlndXJlIChjKS4gIEFs bCBkZXZpY2VzCj4gPiA+ICAgc2hvdWxkIHdvcmsgZmluZSB3aGVuIHRoZSBkcml2ZXIgY2hvb3Nl cyAoYSkgb3IgKGIpLCBidXQgKGMpIG1heSBiZQo+ID4gPiAgIGRlc2lyZWQgdG8gcmVhbGl6ZSB0 aGUgZXh0cmEgcG93ZXIgc2F2aW5ncyB0aGF0IEwxU1Mgb2ZmZXJzLiAgU28gd2UKPiA+ID4gICBp bnRyb2R1Y2UgdGhlIGJvb2xlYW4gImJyY20sZW5hYmxlLWwxc3MiIHByb3BlcnR5IHRvIGluZm9y bSB0aGUgZHJpdmVyCj4gPiA+ICAgdGhhdCAoYykgaXMgZGVzaXJlZC4gIFNldHRpbmcgdGhpcyBw cm9wZXJ0eSBvbmx5IG1ha2VzIHNlbnNlIHdoZW4gdGhlCj4gPiA+ICAgZG93bnN0cmVhbSBkZXZp Y2UgaXMgTDFTUy1jYXBhYmxlIGFuZCB0aGUgT1MgaXMgY29uZmlndXJlZCB0byBhY3RpdmF0ZQo+ ID4gPiAgIHRoaXMgbW9kZSAoZS5nLiBwb2xpY3k9PXBvd2Vyc3VwZXJzYXZlKS4KPiA+ID4KPiA+ ID4gICBUaGlzIHByb3BlcnR5IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgUmFzcGlhbiB2ZXJz aW9uIG9mIExpbnV4LCBidXQgdGhlCj4gPiA+ICAgdXBzdHJlYW0gZHJpdmVyIGltcGxlbWVudGF0 aW9uIHRoYXQgZm9sbG93cyBhZGRzIG1vcmUgZGV0YWlscyBhbmQKPiA+ID4gICBkaXNjZXJucyBi ZXR3ZWVuIChhKSBhbmQgKGIpLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKaW0gUXVpbmxh biA8amltMjEwMTAyNEBnbWFpbC5jb20+Cj4gPiA+IFJldmlld2VkLWJ5OiBSb2IgSGVycmluZyA8 cm9iaEBrZXJuZWwub3JnPgo+ID4gPiAtLS0KPiA+ID4gIERvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9wY2kvYnJjbSxzdGItcGNpZS55YW1sIHwgOSArKysrKysrKysKPiA+ID4gIDEg ZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYnJjbSxzdGItcGNpZS55YW1sIGIv RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9icmNtLHN0Yi1wY2llLnlhbWwK PiA+ID4gaW5kZXggN2UxNWFhZTdkNjllLi44YjYxYzIxNzk2MDggMTAwNjQ0Cj4gPiA+IC0tLSBh L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYnJjbSxzdGItcGNpZS55YW1s Cj4gPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYnJjbSxz dGItcGNpZS55YW1sCj4gPiA+IEBAIC02NCw2ICs2NCwxNSBAQCBwcm9wZXJ0aWVzOgo+ID4gPgo+ ID4gPiAgICBhc3BtLW5vLWwwczogdHJ1ZQo+ID4gPgo+ID4gPiArICBicmNtLGVuYWJsZS1sMXNz Ogo+ID4gPiArICAgIGRlc2NyaXB0aW9uOiBJbmRpY2F0ZXMgdGhhdCBQQ0llIEwxU1MgcG93ZXIg c2F2aW5ncwo+ID4gPiArICAgICAgYXJlIGRlc2lyZWQsIHRoZSBkb3duc3RyZWFtIGRldmljZSBp cyBMMVNTLWNhcGFibGUsIGFuZCB0aGUKPiA+ID4gKyAgICAgIE9TIGhhcyBiZWVuIGNvbmZpZ3Vy ZWQgdG8gZW5hYmxlIHRoaXMgbW9kZS4gIEZvciBib2FyZHMKPiA+ID4gKyAgICAgIHVzaW5nIGEg bWluaS1jYXJkIGNvbm5lY3RvciwgdGhpcyBtb2RlIG1heSBub3QgbWVldCB0aGUKPiA+ID4gKyAg ICAgIFRDUkxvbiBtYXhpbXVtIHRpbWUgb2YgNDAwbnMsIGFzIHNwZWNpZmllZCBpbiAzLjIuNS4y LjIKPiA+ID4gKyAgICAgIG9mIHRoZSBQQ0kgRXhwcmVzcyBNaW5pIENFTSAyLjAgc3BlY2lmaWNh dGlvbi4KPiA+Cj4gPiBBcyBMb3JlbnpvIHNhaWQsIHRoaXMgcHJvcGVydHkgZG9lc24ndCBiZWxv bmcgaW4gRFQuIERUIGlzIHN1cHBvc2VkIHRvIHNwZWNpZnkKPiA+IHRoZSBoYXJkd2FyZSBjYXBh YmlsaXR5IGFuZCBub3Qgc3lzdGVtL09TIGJlaGF2aW9yLgo+IAo+IFRoZSAiYnJjbSxlbmFibGUt bDFzcyIgZG9lcyBOT1QgY29uZmlndXJlIHRoZSBPUyBiZWhhdmlvci4KPiBJdCBzZXRzIG9yIG5v dCBhIG1vZGUgYml0IHRvIGVuYWJsZSBsMVNTIEhXLCB3aGV0aGVyIG9yIG5vdCB0aGUgT1MgaXMK PiBjb25maWd1cmVkIGZvciBMMVNTLgo+IEl0IGNvbXBlbnNhdGVzIGZvciBhIHByb2JsZW0gaW4g dGhlIFBDSWUgY29yZTogdGhlIEhXIGlzIG5vdCBjYXBhYmxlCj4gb2YgZHluYW1pY2FsbHkKPiBz d2l0Y2hpbmcgYmV0d2VlbiBBU1BNIG1vZGVzIHBvd2Vyc2F2ZSBhbmQgc3VwZXJwb3dlcnNhdmUu ICBJIGFtIGFjdGl2ZWx5Cj4gYWR2b2NhdGluZyBmb3Igb3VyIEhXIHRvIGNoYW5nZSBidXQgdGhh dCB3aWxsIHRha2UgeWVhcnMuCj4gCgpPa2F5LCB0aGVuIEkgd291bGQgc2F5IHRoYXQgdGhlIHBy b3BlcnR5IG5hbWUgYW5kIGNvbW1pdCBtZXNzYWdlIHdlcmUgYSBiaXQKbWlzbGVhZGluZy4gCgpJ IGhhZCBicmllZmx5IGdvbmUgdGhyb3VnaCB0aGUgZHJpdmVyIHBhdGNoIG5vdy4gQXMgcGVyIG15 IHVuZGVyc3RhbmRpbmcsIHlvdQpoYXZlIDIgbW9kZXMgaW4gaHc6CgoxLiBDbG9jayBQTSAtIFJl ZmNsayB3aWxsIGJlIHR1cm5lZCBvZmYgYnkgdGhlIGhvc3QgaWYgQ0xLUkVRIyBpcyBkZWFzc2Vy dGVkIGJ5CnRoZSBkZXZpY2UgKGRyaXZpbmcgaGlnaCkgd2hlbiB0aGUgbGluayBpcyBpbiBMMS4K CjIuIEwxU1MgLSBDTEtSRVEjIHdpbGwgYmUgdXNlZCB0byBkZWNpZGUgTDFTUyBlbnRyeSBhbmQg ZXhpdCBieSB0aGUgaG9zdC4KClRpbGwgbm93IHRoZSBkcml2ZXIgb25seSBzdXBwb3J0ZWQgQ2xv Y2sgUE0gdGhyb3VnaCBtb2RlICgxKSBidXQgZm9yIHN1cHBvcnRpbmcKTDFTUyB5b3UgbmVlZCB0 byBlbmFibGUgbW9kZSAoMikuIEFuZCB5b3UgYXJlIHVzaW5nIHRoaXMgcHJvcGVydHkgdG8gc2Vs ZWN0IG1vZGUKKDIpIHdoZW4gdGhlIEwxU1Mgc3VwcG9ydGVkIGRldmljZXMgYXJlIGNvbm5lY3Rl ZCB0byB0aGUgc2xvdC4gQWxzbywgYnkKc2VsZWN0aW5nIHRoaXMgbW9kZSwgeW91IGFyZSBsb29z aW5nIHRoZSBiZW5lZml0IG9mIG1vZGUgKDEpIGFzIGJvdGggYXJlIG5vdApjb21wYXRpYmxlLgoK TXkgc3VnZ2VzdGlvbiB3b3VsZCBiZSB0byBqdXN0IGRyb3AgbW9kZSAoMSkgYW5kIHVzZSBtb2Rl ICgyKSBpbiB0aGUgZHJpdmVyIGFzCm1vc3Qgb2YgdGhlIHJlY2VudCBkZXZpY2VzIHNob3VsZCBz dXBwb3J0IEwxU1MgKG9mYyB0aGVyZSBhcmUgZXhlbXB0aW9ucykuCgpCdXQgbW92aW5nIHRoYXQg ZGVjaXNpb24gdG8gRFQgc3RpbGwgZG9lc24ndCBzZWVtIHJpZ2h0IHRvIG1lIGFzIHRoZSBoYXJk d2FyZQpzdXBwb3J0cyBib3RoIG1vZGVzIGFuZCB5b3UgYXJlIChhYil1c2luZyBEVCB0byBjaG9v c2Ugb25lIG9yIHRoZSBvdGhlci4KCi0gTWFuaQoKPiBJZiB0aGlzIGZsYWcgc3BlY2lmaWVzCj4g PiB3aGV0aGVyIHRoZSBQQ0llIGNvbnRyb2xsZXIgc3VwcG9ydHMgTDFTUyBvciBub3QsIHRoZW4g aXQgaXMgZmluZSBidXQgYXBwYXJhbnRseQo+ID4gdGhpcyBzcGVjaWZpZXMgdGhhdCBhbGwgZG93 bnN0cmVhbSBkZXZpY2VzIGFyZSBMMVNTIGNhcGFibGUgd2hpY2ggeW91IGNhbm5vdAo+ID4gZ3Vh cmFudGVlIHVubGVzcyB5b3UgcG9rZSBpbnRvIHRoZWlyIExOS0NBUCBkdXJpbmcgcnVudGltZS4K PiBOb3QgdHJ1ZSBhdCBhbGwuICBUaGlzIHNldHRpbmcgYWZmZWN0cyBvbmx5IFJDIGFuZCB3aGF0 ZXZlciBkZXZpY2UgaXMKPiBjb25uZWN0ZWQgdG8gaXRzIHNpbmdsZSBkb3duc3RyZWFtCj4gcG9y dC4KPiAKPiA+Cj4gPiBZb3Ugc2hvdWxkIGhhbmRsZSB0aGlzIGluIHRoZSBkcml2ZXIgaXRzZWxm Lgo+IAo+IFRoZSBkcml2ZXIgaGFzIG5vIHdheSBvZiBrbm93aW5nIGlmIHRoZSBQQ0kgc3Vic3lz dGVtIGlzIGdvaW5nIGZyb20gcG93ZXJfc2F2ZQo+IHRvIHBvd2VyX3N1cGVyc2F2ZSBvciB2aWNl LXZlcnNhIC0tIHRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBjaGFpbiBmb3IgdGhpcy4gIFNvCj4g d2hhdCB5b3Ugc2F5IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgZnJvbSB0aGUgZHJpdmVyJ3Mg cGVyc3BlY3RpdmUuCj4gCj4gUGVyaGFwcyB5b3Ugd291bGQgYmUgaGFwcHkgaWYgd2UgY2hhbmdl ZCBpdCB0byAibDFzcy1zdXBwb3J0IiBpbiB0aGUKPiBzcGlyaXQgb2YgdGhlCj4gZXhpc3Rpbmcg ImNsa3JlcS1zdXBwb3J0IiBQQ0kgcGFyYW1ldGVyPwo+IAo+IFJlZ2FyZHMsCj4gSmltIFF1aW5s YW4KPiBCcm9hZGNvbSBTVEIvQ01pCj4gCj4gPgo+ID4gLSBNYW5pCj4gPgo+ID4gPiArICAgIHR5 cGU6IGJvb2xlYW4KPiA+ID4gKwo+ID4gPiAgICBicmNtLHNjYi1zaXplczoKPiA+ID4gICAgICBk ZXNjcmlwdGlvbjogdTY0IGdpdmluZyB0aGUgNjRiaXQgUENJZSBtZW1vcnkKPiA+ID4gICAgICAg IHZpZXdwb3J0IHNpemUgb2YgYSBtZW1vcnkgY29udHJvbGxlci4gIFRoZXJlIG1heSBiZSB1cCB0 bwo+ID4gPiAtLQo+ID4gPiAyLjE3LjEKPiA+ID4KPiA+Cj4gPiAtLQo+ID4g4K6u4K6j4K6/4K61 4K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKPiBEYXRlOiBUdWUsIDIy IEF1ZyAyMDIzIDIxOjAxOjQ3ICswMDAwIChVVEMpCj4gRnJvbTogRmxvcmlhbiBGYWluZWxsaSA8 bWVzc2VuZ2VyQHdlYmV4LmNvbT4KPiBUbzogamFtZXMucXVpbmxhbkBicm9hZGNvbS5jb20KPiBT dWJqZWN0OiBKb2luIG1lIG5vdyBpbiBteSBQZXJzb25hbCBSb29tCj4gCj4gSGVsbG8sCj4gCj4g Sm9pbiBtZSBub3cgaW4gbXkgUGVyc29uYWwgUm9vbS4gCj4gCj4gSk9JTiBXRUJFWCBNRUVUSU5H Cj4gaHR0cHM6Ly9icm9hZGNvbS53ZWJleC5jb20vam9pbi9mbG9yaWFuLmZhaW5lbGxpICB8ICA0 OTAgMjgyIDE3OQo+IAo+IAo+IEpPSU4gRlJPTSBBIFZJREVPIENPTkZFUkVOQ0lORyBTWVNURU0g T1IgQVBQTElDQVRJT04KPiBEaWFsIHNpcDpmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLndlYmV4 LmNvbQo+IFlvdSBjYW4gYWxzbyBkaWFsIDE3My4yNDMuMi42OCBhbmQgZW50ZXIgeW91ciBtZWV0 aW5nIG51bWJlci4KPiAKPiAKPiAKPiBDYW4ndCBqb2luIHRoZSBtZWV0aW5nPwo+IGh0dHBzOi8v aGVscC53ZWJleC5jb20vZG9jcy9ET0MtNTQxMgo+IAo+IFBIT05FIERJQUxJTkcgR1VJREVMSU5F UzoKPiAgICAgICAgIC0gVXNlIENhbGwgTWUgd2hlbiB5b3UgYXJlIHVzaW5nIG9mZmljZSBwaG9u ZSBvciBKYWJiZXIuCj4gICAgICAgICAtIFVzZSBDYWxsIFVzaW5nIENvbXB1dGVyIHdoZW4geW91 IGFyZSBhdCBob21lIG9yIHRyYXZlbGluZy4KPiAKPiBJbiBPZmZpY2UgQ2FsbHM6Cj4gCS0gRnJv bSBCcm9hZGNvbSBPZmZpY2U6IDEtTUVFVElORyAoMS02MzM4NDY0KQo+IAo+IE9mZnNpdGUgTnVt YmVycyBUb2xsIChMb2NhbCkgQ2FsbHM6Cj4gCS0gQ2FuYWRhLCBSaWNobW9uZDogKzEtNzc4LTMw OC00MDA3Cj4gCS0gQ2hpbmE6ICs4Ni00MDAtODE5LTEwNDQKPiAJLSBHZXJtYW55LCBNdW5pY2g6 ICs0OS04OTItMzEyLTk2MTEKPiAgICAgICAgIC0gR2VybWFueSwgUmVnZW5zYnVyZzogKzQ5LSg5 KTQxOS05MjMtNTk0MAo+ICAgICAgICAgLSBJbmRpYTogMDAtMDgwLTAwNTAtMTYzMQo+IAktIElz cmFlbDogKzk3LTIzOS03ODYtNDc3Cj4gICAgICAgICAtIEphcGFuLCBUb2t5bzogKzgxLTM2Ni0z NDQtOTM3Cj4gICAgICAgICAtIE1hbGF5c2lhOiArNjAzLTIwNTMtNTE4OQo+IAktIFNpbmdhcG9y ZTogKzY1LTYzNDktMjQzOQo+IAktIFNvdXRoIEtvcmVhLCBTZW91bDogKzgyLTcwLTQ3MzItMDIx OAo+IAktIFRhaXdhbiwgVGFpcGVpOiArODg2LTI3Ny0wNDctNzY1Cj4gCS0gVVMsIERlbnZlcjog KzEtNzIwLTcyNi05OTk1Cj4gICAgICAgICAtIFVTLCBMb3MgQW5nZWxlczogKzEtMzEwLTYxNi01 MzEyCj4gICAgICAgICAtIFVTLCBQaGlsYWRlbHBoaWE6ICsxLTIxNS0zMDUtNzYwMwo+IAktIFVL LCBMb25kb246ICs0NC0yMDctNjYwLTg4OTcKPiAgICAgICAgIC0gVUssIE1hbmNoZXN0ZXI6ICs0 NC0xNjEtNjE5LTgwODkKPiAKPiBJTVBPUlRBTlQgTk9USUNFOiBQbGVhc2Ugbm90ZSB0aGF0IHRo aXMgV2ViZXggc2VydmljZSBhbGxvd3MgYXVkaW8gYW5kIG90aGVyIGluZm9ybWF0aW9uIHNlbnQg ZHVyaW5nIHRoZSBzZXNzaW9uIHRvIGJlIHJlY29yZGVkLCB3aGljaCBtYXkgYmUgZGlzY292ZXJh YmxlIGluIGEgbGVnYWwgbWF0dGVyLiBCeSBqb2luaW5nIHRoaXMgc2Vzc2lvbiwgeW91IGF1dG9t YXRpY2FsbHkgY29uc2VudCB0byBzdWNoIHJlY29yZGluZ3MuIElmIHlvdSBkbyBub3QgY29uc2Vu dCB0byBiZWluZyByZWNvcmRlZCwgZGlzY3VzcyB5b3VyIGNvbmNlcm5zIHdpdGggdGhlIGhvc3Qg b3IgZG8gbm90IGpvaW4gdGhlIHNlc3Npb24uCgoKCgoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCu o+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK