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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 ABE04C0018C for ; Wed, 16 Dec 2020 11:59:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 69FA0233A1 for ; Wed, 16 Dec 2020 11:59:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725864AbgLPL71 (ORCPT ); Wed, 16 Dec 2020 06:59:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725710AbgLPL71 (ORCPT ); Wed, 16 Dec 2020 06:59:27 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE7D9C06179C for ; Wed, 16 Dec 2020 03:58:46 -0800 (PST) Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=[IPv6:::1]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpVS2-0002sK-N3; Wed, 16 Dec 2020 12:58:38 +0100 Message-ID: <0b69e6e96bfeb0410da7ca572cd4b78fffce91c2.camel@pengutronix.de> Subject: Re: [PATCH v2 1/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm From: Lucas Stach To: Guido =?ISO-8859-1?Q?G=FCnther?= , Kishon Vijay Abraham I , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Robert Chiras , Sam Ravnborg , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Date: Wed, 16 Dec 2020 12:58:36 +0100 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.2 (3.38.2-1.fc33) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:201:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Guido, Am Mittwoch, dem 16.12.2020 um 12:27 +0100 schrieb Guido Günther: This allows us to shut down the mipi power domain on the imx8. The alternative would be to drop the dphy from the mipi power domain in the SOCs device tree and only have the DSI host controller visible there but since the PD is mostly about the PHY that would defeat it's purpose. Adding RPM support is exactly the right course of action. This allows to shut off the power domain hen blanking the LCD panel: pm_genpd_summary before: domain status slaves     /device runtime status ---------------------------------------------------------------------- mipi on     /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy unsupported     /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi suspended after: mipi off-0     /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy suspended     /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi suspended Signed-off-by: Guido Günther ---  .../phy/freescale/phy-fsl-imx8-mipi-dphy.c | 22 ++++++++++++++++++-  1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c index a95572b397ca..34e2d801e520 100644 --- a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c +++ b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c @@ -14,6 +14,7 @@  #include  #include  #include +#include  #include    /* DPHY registers */ @@ -93,6 +94,7 @@ struct mixel_dphy_cfg {  };    struct mixel_dphy_priv { + struct device *dev;   struct mixel_dphy_cfg cfg;   struct regmap *regmap;   struct clk *phy_ref_clk; @@ -382,6 +384,7 @@ static int mixel_dphy_power_on(struct phy *phy)   ret = clk_prepare_enable(priv->phy_ref_clk);   if (ret < 0)   return ret; + pm_runtime_get_sync(priv->dev); This call can fail and will leave you with an elevated rpm refcount. Better use the new pm_runtime_resume_and_get to avoid this issue?  Nitpick: I would add a blank line before the call. Regards, Lucas     phy_write(phy, PWR_ON, DPHY_PD_PLL);   ret = regmap_read_poll_timeout(priv->regmap, DPHY_LOCK, locked, @@ -395,6 +398,7 @@ static int mixel_dphy_power_on(struct phy *phy)     return 0;  clock_disable: + pm_runtime_put(priv->dev);   clk_disable_unprepare(priv->phy_ref_clk);   return ret;  } @@ -406,6 +410,7 @@ static int mixel_dphy_power_off(struct phy *phy)   phy_write(phy, PWR_OFF, DPHY_PD_PLL);   phy_write(phy, PWR_OFF, DPHY_PD_DPHY);   + pm_runtime_put(priv->dev);   clk_disable_unprepare(priv->phy_ref_clk);     return 0; @@ -467,6 +472,7 @@ static int mixel_dphy_probe(struct platform_device *pdev)   dev_dbg(dev, "phy_ref clock rate: %lu\n",   clk_get_rate(priv->phy_ref_clk));   + priv->dev = dev;   dev_set_drvdata(dev, priv);     phy = devm_phy_create(dev, np, &mixel_dphy_phy_ops); @@ -477,12 +483,26 @@ static int mixel_dphy_probe(struct platform_device *pdev)   phy_set_drvdata(phy, priv);     phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); + if (IS_ERR(phy_provider)) + return PTR_ERR(phy_provider);   - return PTR_ERR_OR_ZERO(phy_provider); + pm_runtime_enable(dev); + + return 0; +} + +static int mixel_dphy_remove(struct platform_device *pdev) +{ + struct mixel_dphy_priv *priv = platform_get_drvdata(pdev); + + pm_runtime_disable(priv->dev); + + return 0;  }    static struct platform_driver mixel_dphy_driver = {   .probe = mixel_dphy_probe, + .remove = mixel_dphy_remove,   .driver = {   .name = "mixel-mipi-dphy",   .of_match_table = mixel_dphy_of_match, 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=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 78671C4361B for ; Wed, 16 Dec 2020 12:00:18 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 0064C2339F for ; Wed, 16 Dec 2020 12:00:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0064C2339F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:References:In-Reply-To:Date:To:From:Subject:Message-ID: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=SIbMIXVtNA9ouR/OT6a23y+8XsrlJDSC1sv1qaAmPVY=; b=La3TfrcMAB4qWX8S+uVwMbIB3C 5DEt6Xvmrusej3pMsdFXpfVTPGkyAfFd7d1FSbmV2lL9gVAe1+TmGXpmeTnnaBHNh/G10uu0jBjNM 4bzJFIOKWsENtm00/Cbudi6h0Rr6Ra35ak6XhNVxHPK3EqDthK6QLxnva0yhphUitmtGzWwZGpoUf eJjGUNGVK3g6BsR6R1WnmuOx0uC8KIWh/PGaYHDYEjOxKtGP/m2BzpyIEsGnw3o9ZS8Ui7xafmwUg VjeIo+RccCrJ4BIgmZs68FNgWJ4Wpi2iD0uRy7TgxxhSOGkmLmbtEzqz1LRoQX2gykUKq3QfH0MRk 5YwhwcgA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpVSF-0008EZ-6u; Wed, 16 Dec 2020 11:58:51 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpVSD-0008EB-Ct for linux-arm-kernel@lists.infradead.org; Wed, 16 Dec 2020 11:58:50 +0000 Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=[IPv6:::1]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpVS2-0002sK-N3; Wed, 16 Dec 2020 12:58:38 +0100 Message-ID: <0b69e6e96bfeb0410da7ca572cd4b78fffce91c2.camel@pengutronix.de> Subject: Re: [PATCH v2 1/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm From: Lucas Stach To: Guido =?ISO-8859-1?Q?G=FCnther?= , Kishon Vijay Abraham I , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Robert Chiras , Sam Ravnborg , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Date: Wed, 16 Dec 2020 12:58:36 +0100 In-Reply-To: References: User-Agent: Evolution 3.38.2 (3.38.2-1.fc33) MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:201:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201216_065849_458059_899ACDAC X-CRM114-Status: GOOD ( 19.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 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 SGkgR3VpZG8sCgpBbSBNaXR0d29jaCwgZGVtIDE2LjEyLjIwMjAgdW0gMTI6MjcgKzAxMDAgc2No cmllYiBHdWlkbyBHw7xudGhlcjoKVGhpcyBhbGxvd3MgdXMgdG8gc2h1dCBkb3duIHRoZSBtaXBp IHBvd2VyIGRvbWFpbiBvbiB0aGUgaW14OC4gVGhlCmFsdGVybmF0aXZlIHdvdWxkIGJlIHRvIGRy b3AgdGhlIGRwaHkgZnJvbSB0aGUgbWlwaSBwb3dlciBkb21haW4gaW4gdGhlClNPQ3MgZGV2aWNl IHRyZWUgYW5kIG9ubHkgaGF2ZSB0aGUgRFNJIGhvc3QgY29udHJvbGxlciB2aXNpYmxlIHRoZXJl IGJ1dApzaW5jZSB0aGUgUEQgaXMgbW9zdGx5IGFib3V0IHRoZSBQSFkgdGhhdCB3b3VsZCBkZWZl YXQgaXQncyBwdXJwb3NlLgoKQWRkaW5nIFJQTSBzdXBwb3J0IGlzIGV4YWN0bHkgdGhlIHJpZ2h0 IGNvdXJzZSBvZiBhY3Rpb24uCgpUaGlzIGFsbG93cyB0byBzaHV0IG9mZiB0aGUgcG93ZXIgZG9t YWluIGhlbiBibGFua2luZyB0aGUgTENEIHBhbmVsOgoKcG1fZ2VucGRfc3VtbWFyeSBiZWZvcmU6 Cgpkb21haW4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICBzbGF2ZXMK wqDCoMKgwqAvZGV2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnVudGltZSBzdGF0dXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQptaXBpICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9uCsKgwqDCoMKgL2RldmljZXMvcGxhdGZvcm0vc29jQDAvc29jQDA6YnVzQDMwODAw MDAwLzMwYTAwMzAwLmRwaHkgIHVuc3VwcG9ydGVkCsKgwqDCoMKgL2RldmljZXMvcGxhdGZvcm0v c29jQDAvc29jQDA6YnVzQDMwODAwMDAwLzMwYTAwMDAwLm1pcGlfZHNpICBzdXNwZW5kZWQKCmFm dGVyOgoKbWlwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYtMArCoMKgwqDCoC9kZXZp Y2VzL3BsYXRmb3JtL3NvY0AwL3NvY0AwOmJ1c0AzMDgwMDAwMC8zMGEwMDMwMC5kcGh5ICBzdXNw ZW5kZWQKwqDCoMKgwqAvZGV2aWNlcy9wbGF0Zm9ybS9zb2NAMC9zb2NAMDpidXNAMzA4MDAwMDAv MzBhMDAwMDAubWlwaV9kc2kgIHN1c3BlbmRlZAoKU2lnbmVkLW9mZi1ieTogR3VpZG8gR8O8bnRo ZXIgPGFneEBzaWd4Y3B1Lm9yZz4KLS0tCsKgLi4uL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4 LW1pcGktZHBoeS5jICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLQrCoDEgZmlsZSBjaGFuZ2Vk LCAyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9w aHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OC1taXBpLWRwaHkuYyBiL2RyaXZlcnMvcGh5L2ZyZWVz Y2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMKaW5kZXggYTk1NTcyYjM5N2NhLi4zNGUyZDgw MWU1MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlw aS1kcGh5LmMKKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OC1taXBpLWRw aHkuYwpAQCAtMTQsNiArMTQsNyBAQArCoCNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgrC oCNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+CsKgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rl dmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KwqAjaW5jbHVkZSA8bGludXgv cmVnbWFwLmg+CsKgCgrCoC8qIERQSFkgcmVnaXN0ZXJzICovCkBAIC05Myw2ICs5NCw3IEBAIHN0 cnVjdCBtaXhlbF9kcGh5X2NmZyB7CsKgfTsKwqAKCsKgc3RydWN0IG1peGVsX2RwaHlfcHJpdiB7 CisJc3RydWN0IGRldmljZSAqZGV2OwrCoAlzdHJ1Y3QgbWl4ZWxfZHBoeV9jZmcgY2ZnOwrCoAlz dHJ1Y3QgcmVnbWFwICpyZWdtYXA7CsKgCXN0cnVjdCBjbGsgKnBoeV9yZWZfY2xrOwpAQCAtMzgy LDYgKzM4NCw3IEBAIHN0YXRpYyBpbnQgbWl4ZWxfZHBoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpw aHkpCsKgCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5waHlfcmVmX2Nsayk7CsKgCWlm IChyZXQgPCAwKQrCoAkJcmV0dXJuIHJldDsKKwlwbV9ydW50aW1lX2dldF9zeW5jKHByaXYtPmRl dik7CgpUaGlzIGNhbGwgY2FuIGZhaWwgYW5kIHdpbGwgbGVhdmUgeW91IHdpdGggYW4gZWxldmF0 ZWQgcnBtIHJlZmNvdW50LgpCZXR0ZXIgdXNlIHRoZSBuZXcgcG1fcnVudGltZV9yZXN1bWVfYW5k X2dldCB0byBhdm9pZCB0aGlzIGlzc3VlP8KgCgpOaXRwaWNrOiBJIHdvdWxkIGFkZCBhIGJsYW5r IGxpbmUgYmVmb3JlIHRoZSBjYWxsLgoKUmVnYXJkcywKTHVjYXMKCsKgCgrCoAlwaHlfd3JpdGUo cGh5LCBQV1JfT04sIERQSFlfUERfUExMKTsKwqAJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1l b3V0KHByaXYtPnJlZ21hcCwgRFBIWV9MT0NLLCBsb2NrZWQsCkBAIC0zOTUsNiArMzk4LDcgQEAg c3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKwqAKCsKgCXJl dHVybiAwOwrCoGNsb2NrX2Rpc2FibGU6CisJcG1fcnVudGltZV9wdXQocHJpdi0+ZGV2KTsKwqAJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPnBoeV9yZWZfY2xrKTsKwqAJcmV0dXJuIHJldDsK wqB9CkBAIC00MDYsNiArNDEwLDcgQEAgc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29mZihz dHJ1Y3QgcGh5ICpwaHkpCsKgCXBoeV93cml0ZShwaHksIFBXUl9PRkYsIERQSFlfUERfUExMKTsK wqAJcGh5X3dyaXRlKHBoeSwgUFdSX09GRiwgRFBIWV9QRF9EUEhZKTsKwqAKCisJcG1fcnVudGlt ZV9wdXQocHJpdi0+ZGV2KTsKwqAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPnBoeV9yZWZf Y2xrKTsKwqAKCsKgCXJldHVybiAwOwpAQCAtNDY3LDYgKzQ3Miw3IEBAIHN0YXRpYyBpbnQgbWl4 ZWxfZHBoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQrCoAlkZXZfZGJnKGRl diwgInBoeV9yZWYgY2xvY2sgcmF0ZTogJWx1XG4iLArCoAkJY2xrX2dldF9yYXRlKHByaXYtPnBo eV9yZWZfY2xrKSk7CsKgCgorCXByaXYtPmRldiA9IGRldjsKwqAJZGV2X3NldF9kcnZkYXRhKGRl diwgcHJpdik7CsKgCgrCoAlwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBucCwgJm1peGVsX2Rw aHlfcGh5X29wcyk7CkBAIC00NzcsMTIgKzQ4MywyNiBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKwqAJcGh5X3NldF9kcnZkYXRhKHBo eSwgcHJpdik7CsKgCgrCoAlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdp c3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOworCWlmIChJU19FUlIocGh5X3Byb3ZpZGVy KSkKKwkJcmV0dXJuIFBUUl9FUlIocGh5X3Byb3ZpZGVyKTsKwqAKCi0JcmV0dXJuIFBUUl9FUlJf T1JfWkVSTyhwaHlfcHJvdmlkZXIpOworCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBtaXhlbF9kcGh5X3ByaXYgKnByaXYgPSBwbGF0Zm9y bV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCXBtX3J1bnRpbWVfZGlzYWJsZShwcml2LT5kZXYpOwor CisJcmV0dXJuIDA7CsKgfQrCoAoKwqBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaXhl bF9kcGh5X2RyaXZlciA9IHsKwqAJLnByb2JlCT0gbWl4ZWxfZHBoeV9wcm9iZSwKKwkucmVtb3Zl ID0gbWl4ZWxfZHBoeV9yZW1vdmUsCsKgCS5kcml2ZXIgPSB7CsKgCQkubmFtZSA9ICJtaXhlbC1t aXBpLWRwaHkiLArCoAkJLm9mX21hdGNoX3RhYmxlCT0gbWl4ZWxfZHBoeV9vZl9tYXRjaCwKCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=