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=-8.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS 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 59B9FC433DB for ; Tue, 5 Jan 2021 15:07:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 09D1F21BE5 for ; Tue, 5 Jan 2021 15:07:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725940AbhAEPHp (ORCPT ); Tue, 5 Jan 2021 10:07:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725936AbhAEPHp (ORCPT ); Tue, 5 Jan 2021 10:07:45 -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 E857AC061574 for ; Tue, 5 Jan 2021 07:07:04 -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 1kwnvC-00026B-EC; Tue, 05 Jan 2021 16:06:54 +0100 Message-ID: Subject: Re: sdhci timeout on imx8mq From: Lucas Stach To: BOUGH CHEN , Fabio Estevam , Angus Ainslie , Leonard Crestez , Peng Fan , Abel Vesa , Stephen Boyd , Michael Turquette Cc: Ulf Hansson , Guido =?ISO-8859-1?Q?G=FCnther?= , linux-mmc , Adrian Hunter , dl-linux-imx , Sascha Hauer , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Date: Tue, 05 Jan 2021 16:06:49 +0100 In-Reply-To: References: <20200205092653.GB2737@bogon.m.sigxcpu.org> <5ad361195f2e191484c8a231be0f5a07@akkea.ca> 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-mmc@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Hi all, Am Mittwoch, dem 08.07.2020 um 01:32 +0000 schrieb BOUGH CHEN: > > -----Original Message----- > > From: Fabio Estevam [mailto:festevam@gmail.com] > > Sent: 2020年7月7日 20:45 > > To: Angus Ainslie > > Cc: BOUGH CHEN ; Ulf Hansson > > ; Guido Günther ; linux- > > mmc > > ; Adrian Hunter > > ; > > dl-linux-imx ; Sascha Hauer < > > kernel@pengutronix.de>; > > moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE > > > > Subject: Re: sdhci timeout on imx8mq > > > > Hi Angus, > > > > On Tue, Jun 30, 2020 at 4:39 PM Angus Ainslie > > wrote: > > > > > Has there been any progress with this. I'm getting this on about > > > 50% > > > of > > > > Not from my side, sorry. > > > > Bough, > > > > Do you know why this problem affects the imx8mq-evk versions that > > are > > populated with the Micron eMMC and not the ones with Sandisk eMMC? > > Hi Angus, > > Can you show me the full fail log? I do not meet this issue on my > side, besides, which kind of uboot do you use? I was finally able to bisect this issue, which wasn't that much fun due to the issue not being reproducible 100%. :/ Turns out that the issue is even more interesting than I thought and likely doesn't have anything to do with SDHCI or used bootloader versions. Here's my current debugging state: I've bisected the issue down to b04383b6a558 (clk: imx8mq: Define gates for pll1/2 fixed dividers). The change itself looks fine to me, still CC'ed Leonard for good measure. In my testing the following partial revert fixes the issue: --- a/drivers/clk/imx/clk-imx8mq.c +++ b/drivers/clk/imx/clk-imx8mq.c @@ -365,7 +365,7 @@ static int imx8mq_clocks_probe(struct platform_device *pdev) hws[IMX8MQ_SYS1_PLL_133M_CG] = imx_clk_hw_gate("sys1_pll_133m_cg", "sys1_pll_out", base + 0x30, 15); hws[IMX8MQ_SYS1_PLL_160M_CG] = imx_clk_hw_gate("sys1_pll_160m_cg", "sys1_pll_out", base + 0x30, 17); hws[IMX8MQ_SYS1_PLL_200M_CG] = imx_clk_hw_gate("sys1_pll_200m_cg", "sys1_pll_out", base + 0x30, 19); - hws[IMX8MQ_SYS1_PLL_266M_CG] = imx_clk_hw_gate("sys1_pll_266m_cg", "sys1_pll_out", base + 0x30, 21); hws[IMX8MQ_SYS1_PLL_400M_CG] = imx_clk_hw_gate("sys1_pll_400m_cg", "sys1_pll_out", base + 0x30, 23); hws[IMX8MQ_SYS1_PLL_800M_CG] = imx_clk_hw_gate("sys1_pll_800m_cg", "sys1_pll_out", base + 0x30, 25); @@ -375,7 +375,7 @@ static int imx8mq_clocks_probe(struct platform_device *pdev) hws[IMX8MQ_SYS1_PLL_133M] = imx_clk_hw_fixed_factor("sys1_pll_133m", "sys1_pll_133m_cg", 1, 6); hws[IMX8MQ_SYS1_PLL_160M] = imx_clk_hw_fixed_factor("sys1_pll_160m", "sys1_pll_160m_cg", 1, 5); hws[IMX8MQ_SYS1_PLL_200M] = imx_clk_hw_fixed_factor("sys1_pll_200m", "sys1_pll_200m_cg", 1, 4); - hws[IMX8MQ_SYS1_PLL_266M] = imx_clk_hw_fixed_factor("sys1_pll_266m", "sys1_pll_266m_cg", 1, 3); + hws[IMX8MQ_SYS1_PLL_266M] = imx_clk_hw_fixed_factor("sys1_pll_266m", "sys1_pll_out", 1, 3); hws[IMX8MQ_SYS1_PLL_400M] = imx_clk_hw_fixed_factor("sys1_pll_400m", "sys1_pll_400m_cg", 1, 2); hws[IMX8MQ_SYS1_PLL_800M] = imx_clk_hw_fixed_factor("sys1_pll_800m", "sys1_pll_800m_cg", 1, 1); The sys1_pll_266m is the parent of nand_usdhc_bus. I've validated that the SDHCI driver properly enables this bus clock across the problematic card access. So what I think is happening here is that both nand_usdhc_bus and sys1_pll_266m are initially enabled. Sometime during boot sys1_pll_266m gets disabled due to runtime PM on the enet_axi clock, which is a direct child of sys1_pll_266m. At this point nand_usdhc_bus is still enabled, but no consumer has claimed the clock yet, so the parent clock gets disabled while this branch of the clock tree is still active. The reference manual states about this situation: "For any clock, its source must be left on when it is kept on. Behavior is undefined if this rule is violated." And it seems this is exactly what's happening here: some kind of glitch is introduced in the nand_usdhc_bus clock, which prevents the SDHCI controller from working, even though the clock branch is properly enabled later on. On my system the SDHCI timeout and following runtime suspend/resume cycle on the nand_usdhc_bus clock seem to get it back into a working state. So I think we need some solution at the clock driver/framework level to prevent shutting down parent clocks that have active branches, even if those branches aren't claimed by a consumer (yet). Regards, Lucas 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=-9.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 5422BC433E0 for ; Tue, 5 Jan 2021 15:09:07 +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 10D2F22B49 for ; Tue, 5 Jan 2021 15:09:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 10D2F22B49 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:Cc: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:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=eWgUHnYusM2WWj82ur9mSn15uMET8LfGHH8irqR/yVA=; b=fPaaxkOJSH8jz/gzeHV+dxDaM 4akNss7gFrsS2QJ7ATC5XjhGJrsu2WkoV1IWh0O3oQU0UmSgTLkEiLMdfPvq6fmnBLlLgUxyiQyg0 hMvAOupowmAbODfN9g3XZW5kjHsWuDL8DzuOAIq8Wfwj8zMrge56pC8GZp/UgpOPYoby0cdOPpbuz DdZYZkL+yApoEjZZzjOAo+6T3bs8KwmcNMEZ+azwB8m2GsL0oYtRZTBOVlFrYCXwf1BhuZjgCr7D2 u7lrpxNgCV7CB6ocFQgFcwkok8/e8LjDanYRfu0NuE1w5S7tWQnqQ2Y1/Asyoq2EaZPxBLylEt41J xX5EB3BaA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kwnvU-0005Qd-UP; Tue, 05 Jan 2021 15:07:12 +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 1kwnvS-0005Px-12 for linux-arm-kernel@lists.infradead.org; Tue, 05 Jan 2021 15:07:10 +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 1kwnvC-00026B-EC; Tue, 05 Jan 2021 16:06:54 +0100 Message-ID: Subject: Re: sdhci timeout on imx8mq From: Lucas Stach To: BOUGH CHEN , Fabio Estevam , Angus Ainslie , Leonard Crestez , Peng Fan , Abel Vesa , Stephen Boyd , Michael Turquette Date: Tue, 05 Jan 2021 16:06:49 +0100 In-Reply-To: References: <20200205092653.GB2737@bogon.m.sigxcpu.org> <5ad361195f2e191484c8a231be0f5a07@akkea.ca> 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-20210105_100710_082986_EAC8DC20 X-CRM114-Status: GOOD ( 28.25 ) 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: , Cc: Ulf Hansson , Guido =?ISO-8859-1?Q?G=FCnther?= , linux-mmc , Adrian Hunter , dl-linux-imx , Sascha Hauer , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" 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 SGkgYWxsLAoKQW0gTWl0dHdvY2gsIGRlbSAwOC4wNy4yMDIwIHVtIDAxOjMyICswMDAwIHNjaHJp ZWIgQk9VR0ggQ0hFTjoKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBG YWJpbyBFc3RldmFtIFttYWlsdG86ZmVzdGV2YW1AZ21haWwuY29tXQo+ID4gU2VudDogMjAyMOW5 tDfmnIg35pelIDIwOjQ1Cj4gPiBUbzogQW5ndXMgQWluc2xpZSA8YW5ndXNAYWtrZWEuY2E+Cj4g PiBDYzogQk9VR0ggQ0hFTiA8aGFpYm8uY2hlbkBueHAuY29tPjsgVWxmIEhhbnNzb24KPiA+IDx1 bGYuaGFuc3NvbkBsaW5hcm8ub3JnPjsgR3VpZG8gR8O8bnRoZXIgPGFneEBzaWd4Y3B1Lm9yZz47 IGxpbnV4LQo+ID4gbW1jCj4gPiA8bGludXgtbW1jQHZnZXIua2VybmVsLm9yZz47IEFkcmlhbiBI dW50ZXIKPiA+IDxhZHJpYW4uaHVudGVyQGludGVsLmNvbT47Cj4gPiBkbC1saW51eC1pbXggPGxp bnV4LWlteEBueHAuY29tPjsgU2FzY2hhIEhhdWVyIDwKPiA+IGtlcm5lbEBwZW5ndXRyb25peC5k ZT47Cj4gPiBtb2RlcmF0ZWQgbGlzdDpBUk0vRlJFRVNDQUxFIElNWCAvIE1YQyBBUk0gQVJDSElU RUNUVVJFCj4gPiA8bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnPgo+ID4gU3Vi amVjdDogUmU6IHNkaGNpIHRpbWVvdXQgb24gaW14OG1xCj4gPiAKPiA+IEhpIEFuZ3VzLAo+ID4g Cj4gPiBPbiBUdWUsIEp1biAzMCwgMjAyMCBhdCA0OjM5IFBNIEFuZ3VzIEFpbnNsaWUgPGFuZ3Vz QGFra2VhLmNhPgo+ID4gd3JvdGU6Cj4gPiAKPiA+ID4gSGFzIHRoZXJlIGJlZW4gYW55IHByb2dy ZXNzIHdpdGggdGhpcy4gSSdtIGdldHRpbmcgdGhpcyBvbiBhYm91dAo+ID4gPiA1MCUKPiA+ID4g b2YKPiA+IAo+ID4gTm90IGZyb20gbXkgc2lkZSwgc29ycnkuCj4gPiAKPiA+IEJvdWdoLAo+ID4g Cj4gPiBEbyB5b3Uga25vdyB3aHkgdGhpcyBwcm9ibGVtIGFmZmVjdHMgdGhlIGlteDhtcS1ldmsg dmVyc2lvbnMgdGhhdAo+ID4gYXJlCj4gPiBwb3B1bGF0ZWQgd2l0aCB0aGUgTWljcm9uIGVNTUMg YW5kIG5vdCB0aGUgb25lcyB3aXRoIFNhbmRpc2sgZU1NQz8KPiAKPiBIaSBBbmd1cywKPiAKPiBD YW4geW91IHNob3cgbWUgdGhlIGZ1bGwgZmFpbCBsb2c/IEkgZG8gbm90IG1lZXQgdGhpcyBpc3N1 ZSBvbiBteQo+IHNpZGUsIGJlc2lkZXMsIHdoaWNoIGtpbmQgb2YgdWJvb3QgZG8geW91IHVzZT8K Ckkgd2FzIGZpbmFsbHkgYWJsZSB0byBiaXNlY3QgdGhpcyBpc3N1ZSwgd2hpY2ggd2Fzbid0IHRo YXQgbXVjaCBmdW4gZHVlCnRvIHRoZSBpc3N1ZSBub3QgYmVpbmcgcmVwcm9kdWNpYmxlIDEwMCUu IDovIFR1cm5zIG91dCB0aGF0IHRoZSBpc3N1ZQppcyBldmVuIG1vcmUgaW50ZXJlc3RpbmcgdGhh biBJIHRob3VnaHQgYW5kIGxpa2VseSBkb2Vzbid0IGhhdmUKYW55dGhpbmcgdG8gZG8gd2l0aCBT REhDSSBvciB1c2VkIGJvb3Rsb2FkZXIgdmVyc2lvbnMuIEhlcmUncyBteQpjdXJyZW50IGRlYnVn Z2luZyBzdGF0ZToKCkkndmUgYmlzZWN0ZWQgdGhlIGlzc3VlIGRvd24gdG8gYjA0MzgzYjZhNTU4 IChjbGs6IGlteDhtcTogRGVmaW5lIGdhdGVzCmZvciBwbGwxLzIgZml4ZWQgZGl2aWRlcnMpLiBU aGUgY2hhbmdlIGl0c2VsZiBsb29rcyBmaW5lIHRvIG1lLCBzdGlsbApDQydlZCBMZW9uYXJkIGZv ciBnb29kIG1lYXN1cmUuCgpJbiBteSB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgcGFydGlhbCByZXZl cnQgZml4ZXMgdGhlIGlzc3VlOgoKLS0tIGEvZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4bXEuYwor KysgYi9kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhtcS5jCkBAIC0zNjUsNyArMzY1LDcgQEAgc3Rh dGljIGludCBpbXg4bXFfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiAgICAgICAgaHdzW0lNWDhNUV9TWVMxX1BMTF8xMzNNX0NHXSA9IGlteF9jbGtfaHdfZ2F0ZSgi c3lzMV9wbGxfMTMzbV9jZyIsICJzeXMxX3BsbF9vdXQiLCBiYXNlICsgMHgzMCwgMTUpOwogICAg ICAgIGh3c1tJTVg4TVFfU1lTMV9QTExfMTYwTV9DR10gPSBpbXhfY2xrX2h3X2dhdGUoInN5czFf cGxsXzE2MG1fY2ciLCAic3lzMV9wbGxfb3V0IiwgYmFzZSArIDB4MzAsIDE3KTsKICAgICAgICBo d3NbSU1YOE1RX1NZUzFfUExMXzIwME1fQ0ddID0gaW14X2Nsa19od19nYXRlKCJzeXMxX3BsbF8y MDBtX2NnIiwgInN5czFfcGxsX291dCIsIGJhc2UgKyAweDMwLCAxOSk7Ci0gICAgICAgaHdzW0lN WDhNUV9TWVMxX1BMTF8yNjZNX0NHXSA9IGlteF9jbGtfaHdfZ2F0ZSgic3lzMV9wbGxfMjY2bV9j ZyIsICJzeXMxX3BsbF9vdXQiLCBiYXNlICsgMHgzMCwgMjEpOwogICAgICAgIGh3c1tJTVg4TVFf U1lTMV9QTExfNDAwTV9DR10gPSBpbXhfY2xrX2h3X2dhdGUoInN5czFfcGxsXzQwMG1fY2ciLCAi c3lzMV9wbGxfb3V0IiwgYmFzZSArIDB4MzAsIDIzKTsKICAgICAgICBod3NbSU1YOE1RX1NZUzFf UExMXzgwME1fQ0ddID0gaW14X2Nsa19od19nYXRlKCJzeXMxX3BsbF84MDBtX2NnIiwgInN5czFf cGxsX291dCIsIGJhc2UgKyAweDMwLCAyNSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMg aW50IGlteDhtcV9jbG9ja3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKICAg ICAgICBod3NbSU1YOE1RX1NZUzFfUExMXzEzM01dID0gaW14X2Nsa19od19maXhlZF9mYWN0b3Io InN5czFfcGxsXzEzM20iLCAic3lzMV9wbGxfMTMzbV9jZyIsIDEsIDYpOwogICAgICAgIGh3c1tJ TVg4TVFfU1lTMV9QTExfMTYwTV0gPSBpbXhfY2xrX2h3X2ZpeGVkX2ZhY3Rvcigic3lzMV9wbGxf MTYwbSIsICJzeXMxX3BsbF8xNjBtX2NnIiwgMSwgNSk7CiAgICAgICAgaHdzW0lNWDhNUV9TWVMx X1BMTF8yMDBNXSA9IGlteF9jbGtfaHdfZml4ZWRfZmFjdG9yKCJzeXMxX3BsbF8yMDBtIiwgInN5 czFfcGxsXzIwMG1fY2ciLCAxLCA0KTsKLSAgICAgICBod3NbSU1YOE1RX1NZUzFfUExMXzI2Nk1d ID0gaW14X2Nsa19od19maXhlZF9mYWN0b3IoInN5czFfcGxsXzI2Nm0iLCAic3lzMV9wbGxfMjY2 bV9jZyIsIDEsIDMpOworICAgICAgIGh3c1tJTVg4TVFfU1lTMV9QTExfMjY2TV0gPSBpbXhfY2xr X2h3X2ZpeGVkX2ZhY3Rvcigic3lzMV9wbGxfMjY2bSIsICJzeXMxX3BsbF9vdXQiLCAxLCAzKTsK ICAgICAgICBod3NbSU1YOE1RX1NZUzFfUExMXzQwME1dID0gaW14X2Nsa19od19maXhlZF9mYWN0 b3IoInN5czFfcGxsXzQwMG0iLCAic3lzMV9wbGxfNDAwbV9jZyIsIDEsIDIpOwogICAgICAgIGh3 c1tJTVg4TVFfU1lTMV9QTExfODAwTV0gPSBpbXhfY2xrX2h3X2ZpeGVkX2ZhY3Rvcigic3lzMV9w bGxfODAwbSIsICJzeXMxX3BsbF84MDBtX2NnIiwgMSwgMSk7CgpUaGUgc3lzMV9wbGxfMjY2bSBp cyB0aGUgcGFyZW50IG9mIG5hbmRfdXNkaGNfYnVzLiBJJ3ZlIHZhbGlkYXRlZCB0aGF0CnRoZSBT REhDSSBkcml2ZXIgcHJvcGVybHkgZW5hYmxlcyB0aGlzIGJ1cyBjbG9jayBhY3Jvc3MgdGhlIHBy b2JsZW1hdGljCmNhcmQgYWNjZXNzLiBTbyB3aGF0IEkgdGhpbmsgaXMgaGFwcGVuaW5nIGhlcmUg aXMgdGhhdCBib3RoCm5hbmRfdXNkaGNfYnVzIGFuZCBzeXMxX3BsbF8yNjZtIGFyZSBpbml0aWFs bHkgZW5hYmxlZC4gU29tZXRpbWUgZHVyaW5nCmJvb3Qgc3lzMV9wbGxfMjY2bSBnZXRzIGRpc2Fi bGVkIGR1ZSB0byBydW50aW1lIFBNIG9uIHRoZSBlbmV0X2F4aQpjbG9jaywgd2hpY2ggaXMgYSBk aXJlY3QgY2hpbGQgb2Ygc3lzMV9wbGxfMjY2bS4gQXQgdGhpcyBwb2ludApuYW5kX3VzZGhjX2J1 cyBpcyBzdGlsbCBlbmFibGVkLCBidXQgbm8gY29uc3VtZXIgaGFzIGNsYWltZWQgdGhlIGNsb2Nr CnlldCwgc28gdGhlIHBhcmVudCBjbG9jayBnZXRzIGRpc2FibGVkIHdoaWxlIHRoaXMgYnJhbmNo IG9mIHRoZSBjbG9jawp0cmVlIGlzIHN0aWxsIGFjdGl2ZS4KClRoZSByZWZlcmVuY2UgbWFudWFs IHN0YXRlcyBhYm91dCB0aGlzIHNpdHVhdGlvbjogIkZvciBhbnkgY2xvY2ssIGl0cwpzb3VyY2Ug bXVzdCBiZSBsZWZ0IG9uIHdoZW4gaXQgaXMga2VwdCBvbi4gQmVoYXZpb3IgaXMgdW5kZWZpbmVk IGlmCnRoaXMgcnVsZSBpcyB2aW9sYXRlZC4iCkFuZCBpdCBzZWVtcyB0aGlzIGlzIGV4YWN0bHkg d2hhdCdzIGhhcHBlbmluZyBoZXJlOiBzb21lIGtpbmQgb2YgZ2xpdGNoCmlzIGludHJvZHVjZWQg aW4gdGhlIG5hbmRfdXNkaGNfYnVzIGNsb2NrLCB3aGljaCBwcmV2ZW50cyB0aGUgU0RIQ0kKY29u dHJvbGxlciBmcm9tIHdvcmtpbmcsIGV2ZW4gdGhvdWdoIHRoZSBjbG9jayBicmFuY2ggaXMgcHJv cGVybHkKZW5hYmxlZCBsYXRlciBvbi4gT24gbXkgc3lzdGVtIHRoZSBTREhDSSB0aW1lb3V0IGFu ZCBmb2xsb3dpbmcgcnVudGltZQpzdXNwZW5kL3Jlc3VtZSBjeWNsZSBvbiB0aGUgbmFuZF91c2Ro Y19idXMgY2xvY2sgc2VlbSB0byBnZXQgaXQgYmFjawppbnRvIGEgd29ya2luZyBzdGF0ZS4KClNv IEkgdGhpbmsgd2UgbmVlZCBzb21lIHNvbHV0aW9uIGF0IHRoZSBjbG9jayBkcml2ZXIvZnJhbWV3 b3JrIGxldmVsIHRvCnByZXZlbnQgc2h1dHRpbmcgZG93biBwYXJlbnQgY2xvY2tzIHRoYXQgaGF2 ZSBhY3RpdmUgYnJhbmNoZXMsIGV2ZW4gaWYKdGhvc2UgYnJhbmNoZXMgYXJlbid0IGNsYWltZWQg YnkgYSBjb25zdW1lciAoeWV0KS4KClJlZ2FyZHMsCkx1Y2FzCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=