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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 1D063C43381 for ; Thu, 14 Mar 2019 14:20:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E157520657 for ; Thu, 14 Mar 2019 14:20:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727661AbfCNOUn convert rfc822-to-8bit (ORCPT ); Thu, 14 Mar 2019 10:20:43 -0400 Received: from relay11.mail.gandi.net ([217.70.178.231]:34735 "EHLO relay11.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727065AbfCNOUn (ORCPT ); Thu, 14 Mar 2019 10:20:43 -0400 Received: from localhost (alyon-652-1-66-9.w109-213.abo.wanadoo.fr [109.213.209.9]) (Authenticated sender: gregory.clement@bootlin.com) by relay11.mail.gandi.net (Postfix) with ESMTPSA id E685010000E; Thu, 14 Mar 2019 14:20:37 +0000 (UTC) From: Gregory CLEMENT To: Ilias Apalodimas , Christian Neubert Cc: Stephen Boyd , Mike Turquette , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" , Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org, Antoine Tenart , =?utf-8?Q?Miqu=C3=A8l?= Raynal , Maxime Chevallier , stable@vger.kernel.org Subject: Re: [PATCH] clk: mvebu: armada-37xx-periph: Fix initialization for cpu clocks In-Reply-To: <20190314134428.GA24768@apalos> References: <20190313163558.6705-1-gregory.clement@bootlin.com> <20190314121541.GB19385@apalos> <20190314134428.GA24768@apalos> Date: Thu, 14 Mar 2019 15:20:37 +0100 Message-ID: <874l85v8p6.fsf@FE-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org Hi Ilias, On jeu., mars 14 2019, Ilias Apalodimas wrote: > Hello Christian, >> Hi, >> >> I assume you use the 1000 MHz firmware. This does also not work on my Rev 7 >> board. But I'm pretty sure this is not a problem of the patches, because if >> I take a newer kernel (4.19.20/27) without the patches it also does not >> work. A kernel 4.19.17 does work for me. My opinion on that is that this is >> another problem which does just occure now because now the cpu frequency >> scaling is working with the right frequencies. > I am not sure which firmware i am running, i did all my tests on 5.0.0 and > changing between governors worked fine without the patches Curently my espressobin is broken so I tested the patches on the Armada 3700 DB and I didn't observe the issue you had. The 3700 DB I used is configured to run at 800MHz. Could you apply the following patch and sent me the boot log? diff --git a/drivers/clk/mvebu/armada-37xx-periph.c b/drivers/clk/mvebu/armada-37xx-periph.c index 26ed3c18a239..f814ade5cd80 100644 --- a/drivers/clk/mvebu/armada-37xx-periph.c +++ b/drivers/clk/mvebu/armada-37xx-periph.c @@ -452,14 +452,17 @@ static int clk_pm_cpu_set_parent(struct clk_hw *hw, u8 index) /* Set the parent clock for all the load level */ for (load_level = 0; load_level < LOAD_LEVEL_NR; load_level++) { - unsigned int reg, mask, val, + unsigned int reg, mask, val, old, offset = ARMADA_37XX_NB_TBG_SEL_OFF; armada_3700_pm_dvfs_update_regs(load_level, ®, &offset); val = index << offset; mask = ARMADA_37XX_NB_TBG_SEL_MASK << offset; + regmap_read(base, reg, &old); regmap_update_bits(base, reg, mask, val); + pr_err("%s old=%X -> val=0x%X load_level=%d\n", + __func__, old, val, load_level); } return 0; } > > Regards > /Ilias >> >> Ilias Apalodimas schrieb am Do., 14. März >> 2019, 13:15: >> >> > Hi Gregory, >> > > The clock parenting was not setup properly when DVFS was enabled. It was >> > > expected that the same clock source was used with and without DVFS which >> > > was not the case. >> > > >> > > This patch fixes this issue, allowing to make the cpufreq support work >> > > when the CPU clocks source are not the default ones. >> > > >> > > Fixes: 92ce45fb875d ("cpufreq: Add DVFS support for Armada 37xx") >> > > Cc: >> > > Reported-by: Christian Neubert >> > > Reported-by: Ilias Apalodimas >> > > Signed-off-by: Gregory CLEMENT >> > > --- >> > > drivers/clk/mvebu/armada-37xx-periph.c | 11 +++++++++++ >> > > 1 file changed, 11 insertions(+) >> > > >> > > diff --git a/drivers/clk/mvebu/armada-37xx-periph.c >> > b/drivers/clk/mvebu/armada-37xx-periph.c >> > > index 1f1cff428d78..26ed3c18a239 100644 >> > > --- a/drivers/clk/mvebu/armada-37xx-periph.c >> > > +++ b/drivers/clk/mvebu/armada-37xx-periph.c >> > > @@ -671,6 +671,17 @@ static int armada_3700_add_composite_clk(const >> > struct clk_periph_data *data, >> > > map = syscon_regmap_lookup_by_compatible( >> > > "marvell,armada-3700-nb-pm"); >> > > pmcpu_clk->nb_pm_base = map; >> > > + >> > > + /* >> > > + * Use the same parent when DVFS is enabled that the >> > > + * default parent received at boot time. When this >> > > + * function is called, DVFS is not enabled yet, so we >> > > + * get the default parent and we can set the parent >> > > + * for DVFS. >> > > + */ >> > > + if (clk_pm_cpu_set_parent(muxrate_hw, >> > > + >> > clk_pm_cpu_get_parent(muxrate_hw))) >> > > + dev_warn(dev, "Failed to setup default parent >> > clock for DVFS\n"); >> > > } >> > > >> > > *hw = clk_hw_register_composite(dev, data->name, >> > data->parent_names, >> > > -- >> > > 2.20.1 >> > > >> > Applied this and selected only >> > >> > CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y >> > CONFIG_CPU_FREQ_GOV_PERFORMANCE=y >> > CONFIG_CPU_FREQ_GOV_POWERSAVE=y >> > >> > After changing the governor from 'powersave' to 'performance' the board >> > completely froze (i even lost access to the serial port) >> > >> > Cheers >> > /Ilias >> > -- Gregory Clement, Bootlin Embedded Linux and Kernel engineering http://bootlin.com 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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 19707C43381 for ; Thu, 14 Mar 2019 14:20:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id DE63620657 for ; Thu, 14 Mar 2019 14:20:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CA2IPmpy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DE63620657 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Jk8/oXjycGvjj51cCx+OY43borH9s+3D56YdvOVNcQs=; b=CA2IPmpyqp1FTL eLO/zfaGsUDT/ARiHaUd4Pm8XSCENgO+ieEEQ/fK1XlYAsiAivFEeG7gjAzFkr7edFqp391nZZsFD AnTipKyKTWtmkzBhQAbRYXq2DEJoOWSK94es0nx0Xx0ppZaNSbhvj8RsuUWW5J88EmwklhLO85WoA flH2ZPe383e5BBNhdz59JHWuZ3mWkdkBKkIM9tNg/tr9Ma5JDa435gVgB2gsOzAHv+AyUBgK2nR6m eMoeyBSq7VquSsbT6rsKRCbhUNmzsmjqwvxJP/gnnMHqGIuVqeOcbAnYQ0HLLvZafaG7dS2Rr/XPd wIxbxvxmOWXHBWtMOotA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h4RE4-0002Om-8z; Thu, 14 Mar 2019 14:20:52 +0000 Received: from relay11.mail.gandi.net ([217.70.178.231]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h4RDz-0002NT-W1 for linux-arm-kernel@lists.infradead.org; Thu, 14 Mar 2019 14:20:50 +0000 Received: from localhost (alyon-652-1-66-9.w109-213.abo.wanadoo.fr [109.213.209.9]) (Authenticated sender: gregory.clement@bootlin.com) by relay11.mail.gandi.net (Postfix) with ESMTPSA id E685010000E; Thu, 14 Mar 2019 14:20:37 +0000 (UTC) From: Gregory CLEMENT To: Ilias Apalodimas , Christian Neubert Subject: Re: [PATCH] clk: mvebu: armada-37xx-periph: Fix initialization for cpu clocks In-Reply-To: <20190314134428.GA24768@apalos> References: <20190313163558.6705-1-gregory.clement@bootlin.com> <20190314121541.GB19385@apalos> <20190314134428.GA24768@apalos> Date: Thu, 14 Mar 2019 15:20:37 +0100 Message-ID: <874l85v8p6.fsf@FE-laptop> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190314_072048_344365_E3D3B365 X-CRM114-Status: GOOD ( 23.07 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Vincent Guittot , Jason Cooper , linux-pm@vger.kernel.org, Antoine Tenart , Viresh Kumar , Mike Turquette , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, stable@vger.kernel.org, linux-clk@vger.kernel.org, Thomas Petazzoni , =?utf-8?Q?Miqu=C3=A8l?= Raynal , Maxime Chevallier , Stephen Boyd , linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSWxpYXMsCiAKIE9uIGpldS4sIG1hcnMgMTQgMjAxOSwgSWxpYXMgQXBhbG9kaW1hcyA8aWxp YXMuYXBhbG9kaW1hc0BsaW5hcm8ub3JnPiB3cm90ZToKCj4gSGVsbG8gQ2hyaXN0aWFuLAo+PiBI aSwKPj4gCj4+IEkgYXNzdW1lIHlvdSB1c2UgdGhlIDEwMDAgTUh6IGZpcm13YXJlLiBUaGlzIGRv ZXMgYWxzbyBub3Qgd29yayBvbiBteSBSZXYgNwo+PiBib2FyZC4gQnV0IEknbSBwcmV0dHkgc3Vy ZSB0aGlzIGlzIG5vdCBhIHByb2JsZW0gb2YgdGhlIHBhdGNoZXMsIGJlY2F1c2UgaWYKPj4gSSB0 YWtlIGEgbmV3ZXIga2VybmVsICg0LjE5LjIwLzI3KSB3aXRob3V0IHRoZSBwYXRjaGVzIGl0IGFs c28gZG9lcyBub3QKPj4gd29yay4gQSBrZXJuZWwgNC4xOS4xNyBkb2VzIHdvcmsgZm9yIG1lLiBN eSBvcGluaW9uIG9uIHRoYXQgaXMgdGhhdCB0aGlzIGlzCj4+IGFub3RoZXIgcHJvYmxlbSB3aGlj aCBkb2VzIGp1c3Qgb2NjdXJlIG5vdyBiZWNhdXNlIG5vdyB0aGUgY3B1IGZyZXF1ZW5jeQo+PiBz Y2FsaW5nIGlzIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgZnJlcXVlbmNpZXMuCj4gSSBhbSBub3Qg c3VyZSB3aGljaCBmaXJtd2FyZSBpIGFtIHJ1bm5pbmcsIGkgZGlkIGFsbCBteSB0ZXN0cyBvbiA1 LjAuMCBhbmQKPiBjaGFuZ2luZyBiZXR3ZWVuIGdvdmVybm9ycyB3b3JrZWQgZmluZSB3aXRob3V0 IHRoZSBwYXRjaGVzCgpDdXJlbnRseSBteSBlc3ByZXNzb2JpbiBpcyBicm9rZW4gc28gSSB0ZXN0 ZWQgdGhlIHBhdGNoZXMgb24gdGhlIEFybWFkYQozNzAwIERCIGFuZCBJIGRpZG4ndCBvYnNlcnZl IHRoZSBpc3N1ZSB5b3UgaGFkLgoKVGhlIDM3MDAgREIgSSB1c2VkIGlzIGNvbmZpZ3VyZWQgdG8g cnVuIGF0IDgwME1Iei4KCkNvdWxkIHlvdSBhcHBseSB0aGUgZm9sbG93aW5nIHBhdGNoIGFuZCBz ZW50IG1lIHRoZSBib290IGxvZz8KCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tdmVidS9hcm1h ZGEtMzd4eC1wZXJpcGguYyBiL2RyaXZlcnMvY2xrL212ZWJ1L2FybWFkYS0zN3h4LXBlcmlwaC5j CmluZGV4IDI2ZWQzYzE4YTIzOS4uZjgxNGFkZTVjZDgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns ay9tdmVidS9hcm1hZGEtMzd4eC1wZXJpcGguYworKysgYi9kcml2ZXJzL2Nsay9tdmVidS9hcm1h ZGEtMzd4eC1wZXJpcGguYwpAQCAtNDUyLDE0ICs0NTIsMTcgQEAgc3RhdGljIGludCBjbGtfcG1f Y3B1X3NldF9wYXJlbnQoc3RydWN0IGNsa19odyAqaHcsIHU4IGluZGV4KQogCiAgICAgICAgLyog U2V0IHRoZSBwYXJlbnQgY2xvY2sgZm9yIGFsbCB0aGUgbG9hZCBsZXZlbCAqLwogICAgICAgIGZv ciAobG9hZF9sZXZlbCA9IDA7IGxvYWRfbGV2ZWwgPCBMT0FEX0xFVkVMX05SOyBsb2FkX2xldmVs KyspIHsKLSAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWcsIG1hc2ssICB2YWwsCisgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnLCBtYXNrLCAgdmFsLCBvbGQsCiAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCA9IEFSTUFEQV8zN1hYX05CX1RCR19TRUxfT0ZGOwogCiAgICAg ICAgICAgICAgICBhcm1hZGFfMzcwMF9wbV9kdmZzX3VwZGF0ZV9yZWdzKGxvYWRfbGV2ZWwsICZy ZWcsICZvZmZzZXQpOwogCiAgICAgICAgICAgICAgICB2YWwgPSBpbmRleCA8PCBvZmZzZXQ7CiAg ICAgICAgICAgICAgICBtYXNrID0gQVJNQURBXzM3WFhfTkJfVEJHX1NFTF9NQVNLIDw8IG9mZnNl dDsKKyAgICAgICAgICAgICAgIHJlZ21hcF9yZWFkKGJhc2UsIHJlZywgJm9sZCk7CiAgICAgICAg ICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoYmFzZSwgcmVnLCBtYXNrLCB2YWwpOworICAgICAg ICAgICAgICAgcHJfZXJyKCIlcyBvbGQ9JVggLT4gdmFsPTB4JVggbG9hZF9sZXZlbD0lZFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgb2xkLCAgdmFsLCBsb2FkX2xldmVsKTsK ICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiB9CgoKCj4KPiBSZWdhcmRzCj4gL0lsaWFzCj4+ IAo+PiBJbGlhcyBBcGFsb2RpbWFzIDxpbGlhcy5hcGFsb2RpbWFzQGxpbmFyby5vcmc+IHNjaHJp ZWIgYW0gRG8uLCAxNC4gTcOkcnoKPj4gMjAxOSwgMTM6MTU6Cj4+IAo+PiA+IEhpIEdyZWdvcnks Cj4+ID4gPiBUaGUgY2xvY2sgcGFyZW50aW5nIHdhcyBub3Qgc2V0dXAgcHJvcGVybHkgd2hlbiBE VkZTIHdhcyBlbmFibGVkLiBJdCB3YXMKPj4gPiA+IGV4cGVjdGVkIHRoYXQgdGhlIHNhbWUgY2xv Y2sgc291cmNlIHdhcyB1c2VkIHdpdGggYW5kIHdpdGhvdXQgRFZGUyB3aGljaAo+PiA+ID4gd2Fz IG5vdCB0aGUgY2FzZS4KPj4gPiA+Cj4+ID4gPiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUs IGFsbG93aW5nIHRvIG1ha2UgdGhlIGNwdWZyZXEgc3VwcG9ydCB3b3JrCj4+ID4gPiB3aGVuIHRo ZSBDUFUgY2xvY2tzIHNvdXJjZSBhcmUgbm90IHRoZSBkZWZhdWx0IG9uZXMuCj4+ID4gPgo+PiA+ ID4gRml4ZXM6IDkyY2U0NWZiODc1ZCAoImNwdWZyZXE6IEFkZCBEVkZTIHN1cHBvcnQgZm9yIEFy bWFkYSAzN3h4IikKPj4gPiA+IENjOiA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4KPj4gPiA+IFJl cG9ydGVkLWJ5OiBDaHJpc3RpYW4gTmV1YmVydCA8Y2hyaXN0aWFuLm5ldWJlcnQuODZAZ21haWwu Y29tPgo+PiA+ID4gUmVwb3J0ZWQtYnk6IElsaWFzIEFwYWxvZGltYXMgPGlsaWFzLmFwYWxvZGlt YXNAbGluYXJvLm9yZz4KPj4gPiA+IFNpZ25lZC1vZmYtYnk6IEdyZWdvcnkgQ0xFTUVOVCA8Z3Jl Z29yeS5jbGVtZW50QGJvb3RsaW4uY29tPgo+PiA+ID4gLS0tCj4+ID4gPiAgZHJpdmVycy9jbGsv bXZlYnUvYXJtYWRhLTM3eHgtcGVyaXBoLmMgfCAxMSArKysrKysrKysrKwo+PiA+ID4gIDEgZmls ZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCj4+ID4gPgo+PiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2xrL212ZWJ1L2FybWFkYS0zN3h4LXBlcmlwaC5jCj4+ID4gYi9kcml2ZXJzL2Nsay9t dmVidS9hcm1hZGEtMzd4eC1wZXJpcGguYwo+PiA+ID4gaW5kZXggMWYxY2ZmNDI4ZDc4Li4yNmVk M2MxOGEyMzkgMTAwNjQ0Cj4+ID4gPiAtLS0gYS9kcml2ZXJzL2Nsay9tdmVidS9hcm1hZGEtMzd4 eC1wZXJpcGguYwo+PiA+ID4gKysrIGIvZHJpdmVycy9jbGsvbXZlYnUvYXJtYWRhLTM3eHgtcGVy aXBoLmMKPj4gPiA+IEBAIC02NzEsNiArNjcxLDE3IEBAIHN0YXRpYyBpbnQgYXJtYWRhXzM3MDBf YWRkX2NvbXBvc2l0ZV9jbGsoY29uc3QKPj4gPiBzdHJ1Y3QgY2xrX3BlcmlwaF9kYXRhICpkYXRh LAo+PiA+ID4gICAgICAgICAgICAgICBtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21w YXRpYmxlKAo+PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hcnZlbGwsYXJt YWRhLTM3MDAtbmItcG0iKTsKPj4gPiA+ICAgICAgICAgICAgICAgcG1jcHVfY2xrLT5uYl9wbV9i YXNlID0gbWFwOwo+PiA+ID4gKwo+PiA+ID4gKyAgICAgICAgICAgICAvKgo+PiA+ID4gKyAgICAg ICAgICAgICAgKiBVc2UgdGhlIHNhbWUgcGFyZW50IHdoZW4gRFZGUyBpcyBlbmFibGVkIHRoYXQg dGhlCj4+ID4gPiArICAgICAgICAgICAgICAqIGRlZmF1bHQgcGFyZW50IHJlY2VpdmVkIGF0IGJv b3QgdGltZS4gV2hlbiB0aGlzCj4+ID4gPiArICAgICAgICAgICAgICAqIGZ1bmN0aW9uIGlzIGNh bGxlZCwgRFZGUyBpcyBub3QgZW5hYmxlZCB5ZXQsIHNvIHdlCj4+ID4gPiArICAgICAgICAgICAg ICAqIGdldCB0aGUgZGVmYXVsdCBwYXJlbnQgYW5kIHdlIGNhbiBzZXQgdGhlIHBhcmVudAo+PiA+ ID4gKyAgICAgICAgICAgICAgKiBmb3IgRFZGUy4KPj4gPiA+ICsgICAgICAgICAgICAgICovCj4+ ID4gPiArICAgICAgICAgICAgIGlmIChjbGtfcG1fY3B1X3NldF9wYXJlbnQobXV4cmF0ZV9odywK Pj4gPiA+ICsKPj4gPiAgY2xrX3BtX2NwdV9nZXRfcGFyZW50KG11eHJhdGVfaHcpKSkKPj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihkZXYsICJGYWlsZWQgdG8gc2V0dXAgZGVm YXVsdCBwYXJlbnQKPj4gPiBjbG9jayBmb3IgRFZGU1xuIik7Cj4+ID4gPiAgICAgICB9Cj4+ID4g Pgo+PiA+ID4gICAgICAgKmh3ID0gY2xrX2h3X3JlZ2lzdGVyX2NvbXBvc2l0ZShkZXYsIGRhdGEt Pm5hbWUsCj4+ID4gZGF0YS0+cGFyZW50X25hbWVzLAo+PiA+ID4gLS0KPj4gPiA+IDIuMjAuMQo+ PiA+ID4KPj4gPiBBcHBsaWVkIHRoaXMgYW5kIHNlbGVjdGVkIG9ubHkKPj4gPgo+PiA+IENPTkZJ R19DUFVfRlJFUV9ERUZBVUxUX0dPVl9QRVJGT1JNQU5DRT15Cj4+ID4gQ09ORklHX0NQVV9GUkVR X0dPVl9QRVJGT1JNQU5DRT15Cj4+ID4gQ09ORklHX0NQVV9GUkVRX0dPVl9QT1dFUlNBVkU9eQo+ PiA+Cj4+ID4gQWZ0ZXIgY2hhbmdpbmcgdGhlIGdvdmVybm9yIGZyb20gJ3Bvd2Vyc2F2ZScgdG8g J3BlcmZvcm1hbmNlJyB0aGUgYm9hcmQKPj4gPiBjb21wbGV0ZWx5IGZyb3plIChpIGV2ZW4gbG9z dCBhY2Nlc3MgdG8gdGhlIHNlcmlhbCBwb3J0KQo+PiA+Cj4+ID4gQ2hlZXJzCj4+ID4gL0lsaWFz Cj4+ID4KCi0tIApHcmVnb3J5IENsZW1lbnQsIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtl cm5lbCBlbmdpbmVlcmluZwpodHRwOi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK