From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; dkim=none Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2B0711F for ; Sun, 26 Nov 2023 14:36:11 -0800 (PST) Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-1cfb83211b9so7401745ad.3 for ; Sun, 26 Nov 2023 14:36:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701038171; x=1701642971; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+uk6RlcgU3djTkE7dMDEVAusZLaNDjC2rMU1uabPfZg=; b=PaJbm3lPob5Jis/jxBwQ7bbx9spzJ10YhaOnEOwWX4AcL40P8ufZcf5E3u2aAFndKq T3lfGRZE1joVoB2NOnN3osQnpU40oElkxbVEPB6GLucw2g4rU9Ko6cxY48PyQqs4LxLW cdv3ba3M0rl0ctRCOJ2D8+q33wKX4I9mR2gUBBRjl7l91+Y9LWTilacI6Ug9jqLlLXe4 mTCstUu0qstoNWlcWA+2gWcxcx83/vVNiz0FlIZTufLhZNpLEXPlgvL29tgSKZJ/Mw1J IItkujn1ptbXnEqYbOUX2CqVsxYBBUWuAXyPWpy+cMdGfJTQiWni53G57ai9M2xl54pr GE2w== X-Gm-Message-State: AOJu0YyFuhR5ifENgVzMD/qWUfzX4QqElFz6nYxfnjk9ryRCdSK8zaKT tTwQq3onfq65f8sI0rGYlLoBWQ== X-Google-Smtp-Source: AGHT+IE080+WEh7ZsFMHyjajn01nT5LRVtR2puIQ59I0DQVbOQIYpw1BZIiAxR98fBSoj/96zLMB7g== X-Received: by 2002:a17:902:64d0:b0:1ca:e4b:148d with SMTP id y16-20020a17090264d000b001ca0e4b148dmr8004394pli.65.1701038171313; Sun, 26 Nov 2023 14:36:11 -0800 (PST) Received: from localhost (75-172-121-199.tukw.qwest.net. [75.172.121.199]) by smtp.gmail.com with ESMTPSA id w4-20020a170902e88400b001c452f827casm6856621plg.257.2023.11.26.14.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Nov 2023 14:36:10 -0800 (PST) From: Kevin Hilman To: =?utf-8?Q?Th=C3=A9o?= Lebrun , Roger Quadros , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo , "Vardhan, Vibhore" Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, =?utf-8?Q?Gr=C3=A9gory?= Clement , Thomas Petazzoni Subject: Re: [PATCH 3/6] usb: cdns3-ti: add suspend/resume procedures for J7200 In-Reply-To: References: <20231113-j7200-usb-suspend-v1-0-ad1ee714835c@bootlin.com> <20231113-j7200-usb-suspend-v1-3-ad1ee714835c@bootlin.com> <5080372b-1f48-4cbc-a6c4-8689c28983cb@kernel.org> <3e00b2ad-b58f-4b09-9230-683c58d3bb92@kernel.org> <7h34wxfmwn.fsf@baylibre.com> Date: Sun, 26 Nov 2023 14:36:10 -0800 Message-ID: <7hil5odtwl.fsf@baylibre.com> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Th=C3=A9o Lebrun writes: > Hello, > > On Wed Nov 22, 2023 at 11:23 PM CET, Kevin Hilman wrote: >> Th=C3=A9o Lebrun writes: >> > On Fri Nov 17, 2023 at 12:51 PM CET, Roger Quadros wrote: >> >> On 17/11/2023 12:17, Th=C3=A9o Lebrun wrote: >> >> > On Thu Nov 16, 2023 at 10:44 PM CET, Roger Quadros wrote: >> >> >> On 16/11/2023 20:56, Th=C3=A9o Lebrun wrote: >> >> >>> On Thu Nov 16, 2023 at 1:40 PM CET, Roger Quadros wrote: >> >> >>>> On 15/11/2023 17:02, Th=C3=A9o Lebrun wrote: >> >> >>>>> On Wed Nov 15, 2023 at 12:37 PM CET, Roger Quadros wrote: >> >> >>>>>> You might want to check suspend/resume ops in cdns3-plat and >> >> >>>>>> do something similar here. >> >> >>>>> >> >> >>>>> I'm unsure what you are referring to specifically in cdns3-plat? >> >> >>>> >> >> >>>> What I meant is, calling pm_runtime_get/put() from system suspen= d/resume >> >> >>>> hooks doesn't seem right. >> >> >>>> >> >> >>>> How about using something like pm_runtime_forbid(dev) on devices= which >> >> >>>> loose USB context on runtime suspend e.g. J7200. >> >> >>>> So at probe we can get rid of the pm_runtime_get_sync() call. >> >> >>> >> >> >>> What is the goal of enabling PM runtime to then block (ie forbid)= it in >> >> >>> its enabled state until system suspend? >> >> >> >> >> >> If USB controller retains context on runtime_suspend on some platf= orms >> >> >> then we don't want to forbid PM runtime. >> >> >=20 >> >> > What's the point of runtime PM if nothing is done based on it? This= is >> >> > the current behavior of the driver. >> >> The point is to signal to the power domain the device is in that it can >> power on/off. These IP blocks are (re)used on many different SoCs, so >> the driver should not make any assumptions about what power domain it is >> in (if any.) > > On my platform, when the device is attached to the PD it gets turned on. > That feels logical to me: if a driver is not RPM aware it "just works". It "just works"... until the domain gets turned off. > Are there platforms where RPM must get enabled for the attached > power-domains to be turned on? Yes, but but more importantly, there are platforms where RPM must get enabled for the power domain to *stay* on. For example, the power domain might get turned on due to devices probing etc, but as soon as all the RPM-enabled drivers drop their refcount, the domain will turn off. If there is a device in that domain with a non-RPM enabled driver, that device will be powered off anc cause a crash. > The call chain that attaches & enables PD is platform_probe -> > dev_pm_domain_attach. That function takes a bool power_on which is > always true. In the genpd case, genpd_dev_pm_attach > calls __genpd_dev_pm_attach which does a genpd_power_on. > > Things I've not accounted for: > > - ACPI looks like it does the same but I've not checked. It gets passed > the power_on bool argument. > > - genpd_dev_pm_attach early returns with no error if there are multiple > PM domains attached to the device. There are many platforms in the > case according to some devicetree grepping. I can imagine a behavior > difference where dev_pm_domain callpaths handle that differently in > the RPM case. Is that what we are discussing? You're only looking at the attach, power-on phase. You need to think about when the domain powers off and powers back on. Kevin 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 C8C1CC4167B for ; Sun, 26 Nov 2023 22:36:54 +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:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JjyVrRlQmJFs/n+ecm6xsPzGI9Sk2J/jsVU3nW7XuXs=; b=3nElLBNgKjifIj H1bAXBoMDcxJ8359SksJl9n1oJ6undvWveQE9TZnWcJ3c3F1epFVKcumxBpprxH9dqJw+UeP4xCHZ l5fMifsvFAFQDxwSh+Wd/bWLB5UewBkFR2XWqWBuq61/lPD2ASBA3nMLercO2+tuJuYbobQgpe2wq NqPUioOuulq1b2/8S1v5v/LsKXnQMD+iRNpzGxLOiFU9PcOtcchOQk3y8vPjeC9+JT8E59aJsGeM1 FYZn/PzKcnbzS7bEJY1BcRLa9RS9Vyk701Guo8GTtv1Y2fwkRhb6Fu2oxrnKaZom+v1qixQt6wSaT RJw00MC+B8yK/Ty+lZtA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r7Njc-00GCqJ-1O; Sun, 26 Nov 2023 22:36:16 +0000 Received: from mail-pl1-f181.google.com ([209.85.214.181]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r7NjZ-00GCn0-0M for linux-arm-kernel@lists.infradead.org; Sun, 26 Nov 2023 22:36:15 +0000 Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1ce627400f6so26910065ad.2 for ; Sun, 26 Nov 2023 14:36:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701038171; x=1701642971; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+uk6RlcgU3djTkE7dMDEVAusZLaNDjC2rMU1uabPfZg=; b=jrGIRxVlSW8GcYs7Oa/DL+aNfAEdWPrIUBHBoeMphsRFdJ5RE65NLWSHxkpxW8FL4n zYcCJTXX4WCUjJe48/KoR5gwvm1AWpf7B1Ur8VQ07yC/D+5z2k1oqKjknmmLHGQ3gHv6 If58SzbdZkdCZpyde2LGcTqWPGi0/Nu8v4sF8GUCm0G1agRfhrtFp8L56R2MwNytmPpw X6bmbCR5nC6DwJjs4DxEZBKFKhVWYVq12p4AGfXFqSswYDGrB08yb6REfYfoVA3M7ZAS LRC2Mtzl7XGion5iiuCw10U+S+ky4JIBJp/DQZfemljuXyvzQRNKtwkrYd+RO8cH/4F2 FM9w== X-Gm-Message-State: AOJu0YwpQ/EQh97PIVg9ch/OcNWXun8k3yK2sJ6c9y+U2pInsyAEKXT7 VQ8GlWrOptBG7MQb1V+VbWS3Xw== X-Google-Smtp-Source: AGHT+IE080+WEh7ZsFMHyjajn01nT5LRVtR2puIQ59I0DQVbOQIYpw1BZIiAxR98fBSoj/96zLMB7g== X-Received: by 2002:a17:902:64d0:b0:1ca:e4b:148d with SMTP id y16-20020a17090264d000b001ca0e4b148dmr8004394pli.65.1701038171313; Sun, 26 Nov 2023 14:36:11 -0800 (PST) Received: from localhost (75-172-121-199.tukw.qwest.net. [75.172.121.199]) by smtp.gmail.com with ESMTPSA id w4-20020a170902e88400b001c452f827casm6856621plg.257.2023.11.26.14.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Nov 2023 14:36:10 -0800 (PST) From: Kevin Hilman To: =?utf-8?Q?Th=C3=A9o?= Lebrun , Roger Quadros , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo , "Vardhan, Vibhore" Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, =?utf-8?Q?Gr=C3=A9gory?= Clement , Thomas Petazzoni Subject: Re: [PATCH 3/6] usb: cdns3-ti: add suspend/resume procedures for J7200 In-Reply-To: References: <20231113-j7200-usb-suspend-v1-0-ad1ee714835c@bootlin.com> <20231113-j7200-usb-suspend-v1-3-ad1ee714835c@bootlin.com> <5080372b-1f48-4cbc-a6c4-8689c28983cb@kernel.org> <3e00b2ad-b58f-4b09-9230-683c58d3bb92@kernel.org> <7h34wxfmwn.fsf@baylibre.com> Date: Sun, 26 Nov 2023 14:36:10 -0800 Message-ID: <7hil5odtwl.fsf@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231126_143613_169664_53B638FE X-CRM114-Status: GOOD ( 26.87 ) 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 VGjDqW8gTGVicnVuIDx0aGVvLmxlYnJ1bkBib290bGluLmNvbT4gd3JpdGVzOgoKPiBIZWxsbywK Pgo+IE9uIFdlZCBOb3YgMjIsIDIwMjMgYXQgMTE6MjMgUE0gQ0VULCBLZXZpbiBIaWxtYW4gd3Jv dGU6Cj4+IFRow6lvIExlYnJ1biA8dGhlby5sZWJydW5AYm9vdGxpbi5jb20+IHdyaXRlczoKPj4g PiBPbiBGcmkgTm92IDE3LCAyMDIzIGF0IDEyOjUxIFBNIENFVCwgUm9nZXIgUXVhZHJvcyB3cm90 ZToKPj4gPj4gT24gMTcvMTEvMjAyMyAxMjoxNywgVGjDqW8gTGVicnVuIHdyb3RlOgo+PiA+PiA+ IE9uIFRodSBOb3YgMTYsIDIwMjMgYXQgMTA6NDQgUE0gQ0VULCBSb2dlciBRdWFkcm9zIHdyb3Rl Ogo+PiA+PiA+PiBPbiAxNi8xMS8yMDIzIDIwOjU2LCBUaMOpbyBMZWJydW4gd3JvdGU6Cj4+ID4+ ID4+PiBPbiBUaHUgTm92IDE2LCAyMDIzIGF0IDE6NDAgUE0gQ0VULCBSb2dlciBRdWFkcm9zIHdy b3RlOgo+PiA+PiA+Pj4+IE9uIDE1LzExLzIwMjMgMTc6MDIsIFRow6lvIExlYnJ1biB3cm90ZToK Pj4gPj4gPj4+Pj4gT24gV2VkIE5vdiAxNSwgMjAyMyBhdCAxMjozNyBQTSBDRVQsIFJvZ2VyIFF1 YWRyb3Mgd3JvdGU6Cj4+ID4+ID4+Pj4+PiBZb3UgbWlnaHQgd2FudCB0byBjaGVjayBzdXNwZW5k L3Jlc3VtZSBvcHMgaW4gY2RuczMtcGxhdCBhbmQKPj4gPj4gPj4+Pj4+IGRvIHNvbWV0aGluZyBz aW1pbGFyIGhlcmUuCj4+ID4+ID4+Pj4+Cj4+ID4+ID4+Pj4+IEknbSB1bnN1cmUgd2hhdCB5b3Ug YXJlIHJlZmVycmluZyB0byBzcGVjaWZpY2FsbHkgaW4gY2RuczMtcGxhdD8KPj4gPj4gPj4+Pgo+ PiA+PiA+Pj4+IFdoYXQgSSBtZWFudCBpcywgY2FsbGluZyBwbV9ydW50aW1lX2dldC9wdXQoKSBm cm9tIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZQo+PiA+PiA+Pj4+IGhvb2tzIGRvZXNuJ3Qgc2VlbSBy aWdodC4KPj4gPj4gPj4+Pgo+PiA+PiA+Pj4+IEhvdyBhYm91dCB1c2luZyBzb21ldGhpbmcgbGlr ZSBwbV9ydW50aW1lX2ZvcmJpZChkZXYpIG9uIGRldmljZXMgd2hpY2gKPj4gPj4gPj4+PiBsb29z ZSBVU0IgY29udGV4dCBvbiBydW50aW1lIHN1c3BlbmQgZS5nLiBKNzIwMC4KPj4gPj4gPj4+PiBT byBhdCBwcm9iZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcG1fcnVudGltZV9nZXRfc3luYygpIGNh bGwuCj4+ID4+ID4+Pgo+PiA+PiA+Pj4gV2hhdCBpcyB0aGUgZ29hbCBvZiBlbmFibGluZyBQTSBy dW50aW1lIHRvIHRoZW4gYmxvY2sgKGllIGZvcmJpZCkgaXQgaW4KPj4gPj4gPj4+IGl0cyBlbmFi bGVkIHN0YXRlIHVudGlsIHN5c3RlbSBzdXNwZW5kPwo+PiA+PiA+Pgo+PiA+PiA+PiBJZiBVU0Ig Y29udHJvbGxlciByZXRhaW5zIGNvbnRleHQgb24gcnVudGltZV9zdXNwZW5kIG9uIHNvbWUgcGxh dGZvcm1zCj4+ID4+ID4+IHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBmb3JiaWQgUE0gcnVudGltZS4K Pj4gPj4gPiAKPj4gPj4gPiBXaGF0J3MgdGhlIHBvaW50IG9mIHJ1bnRpbWUgUE0gaWYgbm90aGlu ZyBpcyBkb25lIGJhc2VkIG9uIGl0PyBUaGlzIGlzCj4+ID4+ID4gdGhlIGN1cnJlbnQgYmVoYXZp b3Igb2YgdGhlIGRyaXZlci4KPj4KPj4gVGhlIHBvaW50IGlzIHRvIHNpZ25hbCB0byB0aGUgcG93 ZXIgZG9tYWluIHRoZSBkZXZpY2UgaXMgaW4gdGhhdCBpdCBjYW4KPj4gcG93ZXIgb24vb2ZmLiAg VGhlc2UgSVAgYmxvY2tzIGFyZSAocmUpdXNlZCBvbiBtYW55IGRpZmZlcmVudCBTb0NzLCBzbwo+ PiB0aGUgZHJpdmVyIHNob3VsZCBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCBw b3dlciBkb21haW4gaXQgaXMKPj4gaW4gKGlmIGFueS4pCj4KPiBPbiBteSBwbGF0Zm9ybSwgd2hl biB0aGUgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIHRoZSBQRCBpdCBnZXRzIHR1cm5lZCBvbi4KPiBU aGF0IGZlZWxzIGxvZ2ljYWwgdG8gbWU6IGlmIGEgZHJpdmVyIGlzIG5vdCBSUE0gYXdhcmUgaXQg Imp1c3Qgd29ya3MiLgoKSXQgImp1c3Qgd29ya3MiLi4uIHVudGlsIHRoZSBkb21haW4gZ2V0cyB0 dXJuZWQgb2ZmLgoKPiBBcmUgdGhlcmUgcGxhdGZvcm1zIHdoZXJlIFJQTSBtdXN0IGdldCBlbmFi bGVkIGZvciB0aGUgYXR0YWNoZWQKPiBwb3dlci1kb21haW5zIHRvIGJlIHR1cm5lZCBvbj8KClll cywgYnV0IGJ1dCBtb3JlIGltcG9ydGFudGx5LCB0aGVyZSBhcmUgcGxhdGZvcm1zIHdoZXJlIFJQ TSBtdXN0IGdldAplbmFibGVkIGZvciB0aGUgcG93ZXIgZG9tYWluIHRvICpzdGF5KiBvbi4gIEZv ciBleGFtcGxlLCB0aGUgcG93ZXIKZG9tYWluIG1pZ2h0IGdldCB0dXJuZWQgb24gZHVlIHRvIGRl dmljZXMgcHJvYmluZyBldGMsIGJ1dCBhcyBzb29uIGFzCmFsbCB0aGUgUlBNLWVuYWJsZWQgZHJp dmVycyBkcm9wIHRoZWlyIHJlZmNvdW50LCB0aGUgZG9tYWluIHdpbGwgdHVybgpvZmYuICBJZiB0 aGVyZSBpcyBhIGRldmljZSBpbiB0aGF0IGRvbWFpbiB3aXRoIGEgbm9uLVJQTSBlbmFibGVkIGRy aXZlciwKdGhhdCBkZXZpY2Ugd2lsbCBiZSBwb3dlcmVkIG9mZiBhbmMgY2F1c2UgYSBjcmFzaC4K Cj4gVGhlIGNhbGwgY2hhaW4gdGhhdCBhdHRhY2hlcyAmIGVuYWJsZXMgUEQgaXMgcGxhdGZvcm1f cHJvYmUgLT4KPiBkZXZfcG1fZG9tYWluX2F0dGFjaC4gVGhhdCBmdW5jdGlvbiB0YWtlcyBhIGJv b2wgcG93ZXJfb24gd2hpY2ggaXMKPiBhbHdheXMgdHJ1ZS4gSW4gdGhlIGdlbnBkIGNhc2UsIGdl bnBkX2Rldl9wbV9hdHRhY2gKPiBjYWxscyBfX2dlbnBkX2Rldl9wbV9hdHRhY2ggd2hpY2ggZG9l cyBhIGdlbnBkX3Bvd2VyX29uLgo+Cj4gVGhpbmdzIEkndmUgbm90IGFjY291bnRlZCBmb3I6Cj4K PiAgLSBBQ1BJIGxvb2tzIGxpa2UgaXQgZG9lcyB0aGUgc2FtZSBidXQgSSd2ZSBub3QgY2hlY2tl ZC4gSXQgZ2V0cyBwYXNzZWQKPiAgICB0aGUgcG93ZXJfb24gYm9vbCBhcmd1bWVudC4KPgo+ICAt IGdlbnBkX2Rldl9wbV9hdHRhY2ggZWFybHkgcmV0dXJucyB3aXRoIG5vIGVycm9yIGlmIHRoZXJl IGFyZSBtdWx0aXBsZQo+ICAgIFBNIGRvbWFpbnMgYXR0YWNoZWQgdG8gdGhlIGRldmljZS4gVGhl cmUgYXJlIG1hbnkgcGxhdGZvcm1zIGluIHRoZQo+ICAgIGNhc2UgYWNjb3JkaW5nIHRvIHNvbWUg ZGV2aWNldHJlZSBncmVwcGluZy4gSSBjYW4gaW1hZ2luZSBhIGJlaGF2aW9yCj4gICAgZGlmZmVy ZW5jZSB3aGVyZSBkZXZfcG1fZG9tYWluIGNhbGxwYXRocyBoYW5kbGUgdGhhdCBkaWZmZXJlbnRs eSBpbgo+ICAgIHRoZSBSUE0gY2FzZS4gSXMgdGhhdCB3aGF0IHdlIGFyZSBkaXNjdXNzaW5nPwoK WW91J3JlIG9ubHkgbG9va2luZyBhdCB0aGUgYXR0YWNoLCBwb3dlci1vbiBwaGFzZS4gIFlvdSBu ZWVkIHRvIHRoaW5rCmFib3V0IHdoZW4gdGhlIGRvbWFpbiBwb3dlcnMgb2ZmIGFuZCBwb3dlcnMg YmFjayBvbi4KCktldmluCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=