From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 49D40FBE8; Thu, 16 Nov 2023 12:41:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="naPC5FlE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47BD7C433C8; Thu, 16 Nov 2023 12:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700138513; bh=vLGyRyE7xZ4srKu6DV6MaEhKkGUc+EK7JixMRPPZLu8=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=naPC5FlEcHUpIG7KPTqcFrWgDAQBrCPlZNLUlBMx+SgTqAoTsIt+Ie6lwGNcVw8HT mO48U9xc+J7nkmTCu+PPbnnSdK4v98ieT4m16G1gEhQQw6F5YmbnNZ+JBznpqzLLh5 3NtPrgxClTTHbd0JbVdhToJwnyfv/KOO7bLAchKCNmcd+nUA0rDctkb0L3jkNvcRDJ AfHz6Ps0lUxXCMpzwQ68hlSZcfnXOPM97yEuP/w8qXyaMfSn415m3amGbkANCNTEqp vqn6KzXtjjj8gXOySCTcw/qFJEU2fc3Quu30FGy95JSgr/OSEcgW/TGCzu4rNhUML7 clsYg4Cr/Jf5w== Message-ID: Date: Thu, 16 Nov 2023 14:40:55 +0200 Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/6] usb: cdns3-ti: add suspend/resume procedures for J7200 Content-Language: en-US To: =?UTF-8?Q?Th=C3=A9o_Lebrun?= , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org 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> From: Roger Quadros In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 15/11/2023 17:02, Théo Lebrun wrote: > Hi Roger, > > On Wed Nov 15, 2023 at 12:37 PM CET, Roger Quadros wrote: >> On 13/11/2023 16:26, Théo Lebrun wrote: >>> Hardware initialisation is only done at probe. The J7200 USB controller >>> is reset at resume because of power-domains toggling off & on. We >>> therefore (1) toggle PM runtime at suspend/resume & (2) reconfigure the >>> hardware at resume. >> >> at probe we are doing a pm_runtime_get() and never doing a put thus >> preventing any runtime PM. > > Indeed. The get() from probe/resume are in symmetry with the put() from > suspend. Is this wrong in some manner? > >>> index c331bcd2faeb..50b38c4b9c87 100644 >>> --- a/drivers/usb/cdns3/cdns3-ti.c >>> +++ b/drivers/usb/cdns3/cdns3-ti.c >>> @@ -197,6 +197,50 @@ static int cdns_ti_probe(struct platform_device *pdev) >>> return error; >>> } >>> >>> +#ifdef CONFIG_PM >>> + >>> +static int cdns_ti_suspend(struct device *dev) >>> +{ >>> + struct cdns_ti *data = dev_get_drvdata(dev); >>> + >>> + if (!of_device_is_compatible(dev_of_node(dev), "ti,j7200-usb")) >>> + return 0; >>> + >>> + pm_runtime_put_sync(data->dev); >>> + >>> + return 0; >> >> 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 suspend/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. e.g. pm_runtime_set_active(dev); pm_runtime_enable(dev); if (cnds_ti->can_loose_context) pm_runtime_forbid(dev); pm_runtime_set_autosuspend_delay(dev, CNDS_TI_AUTOSUSPEND_DELAY); /* could be 20ms? */ pm_runtime_mark_last_busy(dev); pm_runtime_use_autosuspend(dev); You will need to modify the suspend/resume handlers accordingly. https://docs.kernel.org/power/runtime_pm.html#runtime-pm-and-system-sleep What I'm not sure of is if there are any TI platforms that retain USB context on power domain off. Let me get back on this. Till then we can assume that all platforms loose USB context on power domain off. One comment below. > + return ret; > +} > > - Using pm_runtime_status_suspended() to get the current PM runtime > state & act on it? I don't see why because we know the pm_runtime > state is a single put() at probe. > > - Having a `in_lpm` flag to track low-power mode state? I wouldn't see > why we'd want that as we don't register runtime_suspend & > runtime_resume callbacks and system syspend/resume can be assumed to > be called in the right order. > > - Checking the `device_may_wakeup()`? That doesn't apply to this driver > which cannot be a wakeup source. > > Thanks for your review! > Regards, > > --> +static int cdns_ti_resume(struct device *dev) > +{ > + struct cdns_ti *data = dev_get_drvdata(dev); > + int ret; > + > + if (!of_device_is_compatible(dev_of_node(dev), "ti,j7200-usb")) > + return 0; > + > + ret = pm_runtime_get_sync(dev); > + if (ret < 0) { > + dev_err(dev, "pm_runtime_get_sync failed: %d\n", ret); > + goto err; > + } > + > + cdns_ti_init_hw(data); > + > + return 0; > + > +err: > + pm_runtime_put_sync(data->dev); > + pm_runtime_disable(data->dev); Why do you do a pm_runtime_disable() here? > + return ret; > +} > Théo Lebrun, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > > ------------------------------------------------------------------------ > > -- cheers, -roger 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 1563DC54FB9 for ; Thu, 16 Nov 2023 12:42:25 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2As2C7D7kYnvJ6c2d/IXi2SF+4/u46iXZCwu2JJm5as=; b=LbbpbqYvCfKjFn xazdrO1eCK8k8bYU9IulKF7HNTd03n6FkdlzzLeyz8mTUeGWpOdBXVDeh5J+vMX6TcpadsTs0bmCQ vbVNsywlw1IkOMQzorWJJSbSKr+osMx8qa2LLet5yBANXrn4s6p5g+nP3NoBBEdE0422I8yHYiJQ8 TnH6UKZEJ8QWBhFFdH8dCCHb5BuxkDnAmR+4xTaicHsTo8zWzy+VCND5nw0GBAk8XLHvs9XIhKosx JbBF77PvJsF8EQYmJ4Wv5RtmqwoBzJpf4A+reWNDeguxk4f9FK0tZYIKMWX1mHf+xbx4AHO34m/BW EdbEAbcjWpxxByTKALPg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r3bh1-003VVM-2r; Thu, 16 Nov 2023 12:41:59 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r3bgy-003VUL-0H for linux-arm-kernel@lists.infradead.org; Thu, 16 Nov 2023 12:41:58 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 7B0E7CE1EC2; Thu, 16 Nov 2023 12:41:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47BD7C433C8; Thu, 16 Nov 2023 12:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700138513; bh=vLGyRyE7xZ4srKu6DV6MaEhKkGUc+EK7JixMRPPZLu8=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=naPC5FlEcHUpIG7KPTqcFrWgDAQBrCPlZNLUlBMx+SgTqAoTsIt+Ie6lwGNcVw8HT mO48U9xc+J7nkmTCu+PPbnnSdK4v98ieT4m16G1gEhQQw6F5YmbnNZ+JBznpqzLLh5 3NtPrgxClTTHbd0JbVdhToJwnyfv/KOO7bLAchKCNmcd+nUA0rDctkb0L3jkNvcRDJ AfHz6Ps0lUxXCMpzwQ68hlSZcfnXOPM97yEuP/w8qXyaMfSn415m3amGbkANCNTEqp vqn6KzXtjjj8gXOySCTcw/qFJEU2fc3Quu30FGy95JSgr/OSEcgW/TGCzu4rNhUML7 clsYg4Cr/Jf5w== Message-ID: Date: Thu, 16 Nov 2023 14:40:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/6] usb: cdns3-ti: add suspend/resume procedures for J7200 Content-Language: en-US To: =?UTF-8?Q?Th=C3=A9o_Lebrun?= , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org 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> From: Roger Quadros In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231116_044156_467694_A3E70A1B X-CRM114-Status: GOOD ( 28.85 ) 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 CgpPbiAxNS8xMS8yMDIzIDE3OjAyLCBUaMOpbyBMZWJydW4gd3JvdGU6Cj4gSGkgUm9nZXIsCj4g Cj4gT24gV2VkIE5vdiAxNSwgMjAyMyBhdCAxMjozNyBQTSBDRVQsIFJvZ2VyIFF1YWRyb3Mgd3Jv dGU6Cj4+IE9uIDEzLzExLzIwMjMgMTY6MjYsIFRow6lvIExlYnJ1biB3cm90ZToKPj4+IEhhcmR3 YXJlIGluaXRpYWxpc2F0aW9uIGlzIG9ubHkgZG9uZSBhdCBwcm9iZS4gVGhlIEo3MjAwIFVTQiBj b250cm9sbGVyCj4+PiBpcyByZXNldCBhdCByZXN1bWUgYmVjYXVzZSBvZiBwb3dlci1kb21haW5z IHRvZ2dsaW5nIG9mZiAmIG9uLiBXZQo+Pj4gdGhlcmVmb3JlICgxKSB0b2dnbGUgUE0gcnVudGlt ZSBhdCBzdXNwZW5kL3Jlc3VtZSAmICgyKSByZWNvbmZpZ3VyZSB0aGUKPj4+IGhhcmR3YXJlIGF0 IHJlc3VtZS4KPj4KPj4gYXQgcHJvYmUgd2UgYXJlIGRvaW5nIGEgcG1fcnVudGltZV9nZXQoKSBh bmQgbmV2ZXIgZG9pbmcgYSBwdXQgdGh1cwo+PiBwcmV2ZW50aW5nIGFueSBydW50aW1lIFBNLgo+ IAo+IEluZGVlZC4gVGhlIGdldCgpIGZyb20gcHJvYmUvcmVzdW1lIGFyZSBpbiBzeW1tZXRyeSB3 aXRoIHRoZSBwdXQoKSBmcm9tCj4gc3VzcGVuZC4gSXMgdGhpcyB3cm9uZyBpbiBzb21lIG1hbm5l cj8KPiAKPj4+IGluZGV4IGMzMzFiY2QyZmFlYi4uNTBiMzhjNGI5Yzg3IDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy91c2IvY2RuczMvY2RuczMtdGkuYwo+Pj4gKysrIGIvZHJpdmVycy91c2IvY2Ru czMvY2RuczMtdGkuYwo+Pj4gQEAgLTE5Nyw2ICsxOTcsNTAgQEAgc3RhdGljIGludCBjZG5zX3Rp X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiAgCXJldHVybiBlcnJvcjsK Pj4+ICB9Cj4+PiAgCj4+PiArI2lmZGVmIENPTkZJR19QTQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg Y2Ruc190aV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+ICt7Cj4+PiArCXN0cnVjdCBj ZG5zX3RpICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+PiArCj4+PiArCWlmICghb2Zf ZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2X29mX25vZGUoZGV2KSwgInRpLGo3MjAwLXVzYiIpKQo+ Pj4gKwkJcmV0dXJuIDA7Cj4+PiArCj4+PiArCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGF0YS0+ZGV2 KTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+Cj4+IFlvdSBtaWdodCB3YW50IHRvIGNoZWNrIHN1 c3BlbmQvcmVzdW1lIG9wcyBpbiBjZG5zMy1wbGF0IGFuZAo+PiBkbyBzb21ldGhpbmcgc2ltaWxh ciBoZXJlLgo+IAo+IEknbSB1bnN1cmUgd2hhdCB5b3UgYXJlIHJlZmVycmluZyB0byBzcGVjaWZp Y2FsbHkgaW4gY2RuczMtcGxhdD8KCldoYXQgSSBtZWFudCBpcywgY2FsbGluZyBwbV9ydW50aW1l X2dldC9wdXQoKSBmcm9tIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZQpob29rcyBkb2Vzbid0IHNlZW0g cmlnaHQuCgpIb3cgYWJvdXQgdXNpbmcgc29tZXRoaW5nIGxpa2UgcG1fcnVudGltZV9mb3JiaWQo ZGV2KSBvbiBkZXZpY2VzIHdoaWNoCmxvb3NlIFVTQiBjb250ZXh0IG9uIHJ1bnRpbWUgc3VzcGVu ZCBlLmcuIEo3MjAwLgpTbyBhdCBwcm9iZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcG1fcnVudGlt ZV9nZXRfc3luYygpIGNhbGwuCmUuZy4KCiAgICAgICAgcG1fcnVudGltZV9zZXRfYWN0aXZlKGRl dik7CiAgICAgICAgcG1fcnVudGltZV9lbmFibGUoZGV2KTsKICAgICAgICBpZiAoY25kc190aS0+ Y2FuX2xvb3NlX2NvbnRleHQpCiAgICAgICAgICAgICAgICBwbV9ydW50aW1lX2ZvcmJpZChkZXYp OwoKICAgICAgICBwbV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShkZXYsIENORFNfVElf QVVUT1NVU1BFTkRfREVMQVkpOwkvKiBjb3VsZCBiZSAyMG1zPyAqLwogICAgICAgIHBtX3J1bnRp bWVfbWFya19sYXN0X2J1c3koZGV2KTsKICAgICAgICBwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVu ZChkZXYpOwoKWW91IHdpbGwgbmVlZCB0byBtb2RpZnkgdGhlIHN1c3BlbmQvcmVzdW1lIGhhbmRs ZXJzIGFjY29yZGluZ2x5LgpodHRwczovL2RvY3Mua2VybmVsLm9yZy9wb3dlci9ydW50aW1lX3Bt Lmh0bWwjcnVudGltZS1wbS1hbmQtc3lzdGVtLXNsZWVwCgpXaGF0IEknbSBub3Qgc3VyZSBvZiBp cyBpZiB0aGVyZSBhcmUgYW55IFRJIHBsYXRmb3JtcyB0aGF0IHJldGFpbiBVU0IgY29udGV4dApv biBwb3dlciBkb21haW4gb2ZmLiBMZXQgbWUgZ2V0IGJhY2sgb24gdGhpcy4gVGlsbCB0aGVuIHdl IGNhbiBhc3N1bWUgdGhhdAphbGwgcGxhdGZvcm1zIGxvb3NlIFVTQiBjb250ZXh0IG9uIHBvd2Vy IGRvbWFpbiBvZmYuCgpPbmUgY29tbWVudCBiZWxvdy4KCj4gKwlyZXR1cm4gcmV0Owo+ICt9CgoK PiAKPiAgLSBVc2luZyBwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoKSB0byBnZXQgdGhlIGN1 cnJlbnQgUE0gcnVudGltZQo+ICAgIHN0YXRlICYgYWN0IG9uIGl0PyBJIGRvbid0IHNlZSB3aHkg YmVjYXVzZSB3ZSBrbm93IHRoZSBwbV9ydW50aW1lCj4gICAgc3RhdGUgaXMgYSBzaW5nbGUgcHV0 KCkgYXQgcHJvYmUuCj4gCj4gIC0gSGF2aW5nIGEgYGluX2xwbWAgZmxhZyB0byB0cmFjayBsb3ct cG93ZXIgbW9kZSBzdGF0ZT8gSSB3b3VsZG4ndCBzZWUKPiAgICB3aHkgd2UnZCB3YW50IHRoYXQg YXMgd2UgZG9uJ3QgcmVnaXN0ZXIgcnVudGltZV9zdXNwZW5kICYKPiAgICBydW50aW1lX3Jlc3Vt ZSBjYWxsYmFja3MgYW5kIHN5c3RlbSBzeXNwZW5kL3Jlc3VtZSBjYW4gYmUgYXNzdW1lZCB0bwo+ ICAgIGJlIGNhbGxlZCBpbiB0aGUgcmlnaHQgb3JkZXIuCj4gCj4gIC0gQ2hlY2tpbmcgdGhlIGBk ZXZpY2VfbWF5X3dha2V1cCgpYD8gVGhhdCBkb2Vzbid0IGFwcGx5IHRvIHRoaXMgZHJpdmVyCj4g ICAgd2hpY2ggY2Fubm90IGJlIGEgd2FrZXVwIHNvdXJjZS4KPiAKPiBUaGFua3MgZm9yIHlvdXIg cmV2aWV3IQo+IFJlZ2FyZHMsCj4gCj4gLS0+ICtzdGF0aWMgaW50IGNkbnNfdGlfcmVzdW1lKHN0 cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGNkbnNfdGkgKmRhdGEgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFvZl9kZXZpY2VfaXNfY29t cGF0aWJsZShkZXZfb2Zfbm9kZShkZXYpLCAidGksajcyMDAtdXNiIikpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwo+ICsJaWYgKHJldCA8IDAp IHsKPiArCQlkZXZfZXJyKGRldiwgInBtX3J1bnRpbWVfZ2V0X3N5bmMgZmFpbGVkOiAlZFxuIiwg cmV0KTsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwljZG5zX3RpX2luaXRfaHcoZGF0YSk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnI6Cj4gKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRh dGEtPmRldik7Cj4gKwlwbV9ydW50aW1lX2Rpc2FibGUoZGF0YS0+ZGV2KTsKCldoeSBkbyB5b3Ug ZG8gYSBwbV9ydW50aW1lX2Rpc2FibGUoKSBoZXJlPwoKPiArCXJldHVybiByZXQ7Cj4gK30KCgo+ IFRow6lvIExlYnJ1biwgQm9vdGxpbgo+IEVtYmVkZGVkIExpbnV4IGFuZCBLZXJuZWwgZW5naW5l ZXJpbmcKPiBodHRwczovL2Jvb3RsaW4uY29tCj4gCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gCj4gCgot LSAKY2hlZXJzLAotcm9nZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK