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=-0.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 14C7CC3A5A2 for ; Fri, 23 Aug 2019 17:03:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D3BB32054F for ; Fri, 23 Aug 2019 17:03:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="PaGcYhXz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727141AbfHWRDP (ORCPT ); Fri, 23 Aug 2019 13:03:15 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:35899 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727061AbfHWRDP (ORCPT ); Fri, 23 Aug 2019 13:03:15 -0400 Received: by mail-pg1-f196.google.com with SMTP id l21so6089623pgm.3 for ; Fri, 23 Aug 2019 10:03:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-transfer-encoding; bh=xzzMf3cNhyldWlrimtAsqo8fKrY0W548A06xyx+iH1E=; b=PaGcYhXzTdI92hXsXzYVTfXjnnhy2GyUs91u6zhR1/ou4HbRhbWUv4z6jLMmNzfPPG Sa12lmhBMC4XEYl9vY1Qa9fYyJZbPCDJj+wX0WLl1jd7pByMR7gW2wAZo/d+upbIBcPW RWwhFvvTdCh2tHaG9C9UyxQOrFSdMFfLdMbjirCu2egKCvSjmhd7X10ePHm8lL1ciMkP dlWiA/WkZmOzkR8VnTLfUjCPJP46M3xniQn7kEgcThBDlkvqr2ugX0yX0CENIW5U/rpO GDf1+MoLgtoMbAJg64SV/Sx2s2VYjmYeL7sPQniFO8HqNy3Ho15Q7LkPwkwAyBlTa05l fEvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=xzzMf3cNhyldWlrimtAsqo8fKrY0W548A06xyx+iH1E=; b=l+xwh+JzPnVWJ6cbepWlypjXyZ41T2MYWkUjUWGxEPVlxa4TEu/HhKRY7LQMyzuMGX lYh2nifA4ya5v3lAxU8+pKdc+uDdapp4kjsQBhfpyxQuj63Zg0JGBz8uDl33wsxtGRNI sWFyM2Ru8BDVTnyvULxoZbOYHDUeL1NIf6hm5/IN/dW/wrUtOGT956Cv9gvhORWjG13p VQAxYiBmR2r7qmdeIiEzowUP+r1pMv72uhaevgLIClVXn8AqI9Ldrj74djZJklKpbd1g 1OOKnEwZYd2pwSJZRHz1wEn+Up+2I03uO3ORhMUGljT8kFp4+nOAM9cW23ZHWc9OjbX9 cTlw== X-Gm-Message-State: APjAAAU0gafz1MpZaD5os6J4A2fuprpC8Y3SfnxOluRWlmPMTEzxuNdQ b1Dqw62VikiULncRH2GqW6LESkkmuho= X-Google-Smtp-Source: APXvYqxFd+POg93iuUyEhapgDp8fxNKrivCuW3o3cXew6gsbcWrNuE13xTPUDZV7qDkGFFMGnsL5vw== X-Received: by 2002:a17:90a:f0c9:: with SMTP id fa9mr4466806pjb.137.1566579794113; Fri, 23 Aug 2019 10:03:14 -0700 (PDT) Received: from localhost ([2601:602:9200:a1a5:89d4:68d1:fc04:721]) by smtp.gmail.com with ESMTPSA id v22sm2395885pgk.69.2019.08.23.10.03.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 23 Aug 2019 10:03:13 -0700 (PDT) From: Kevin Hilman To: Kever Yang , Heiko Stuebner Cc: kernel-build-reports@lists.linaro.org, linux-rockchip@lists.infradead.org, linux-next@vger.kernel.org, =?utf-8?B?5byg5pm0?= , =?utf-8?B?6Zer5a2d?= =?utf-8?B?5Yab?= , linux-arm-kernel@lists.infradead.org Subject: Re: CPUfreq fail on rk3399-firefly In-Reply-To: <7hd0gvzuvw.fsf@baylibre.com> References: <5d3057c8.1c69fb81.c6489.8ad2@mx.google.com> <20190718162005.GF5761@sirena.org.uk> <7hmugdynmk.fsf@baylibre.com> <2314814.WbdfqDVNqK@phil> <7hv9uq9wfe.fsf@baylibre.com> <7hd0gvzuvw.fsf@baylibre.com> Date: Fri, 23 Aug 2019 10:03:12 -0700 Message-ID: <7h8srjzuen.fsf@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Sender: linux-next-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-next@vger.kernel.org Kevin Hilman writes: > Kever Yang writes: > >> Hi Kevin, Heiko, >> >> On 2019/8/22 =E4=B8=8A=E5=8D=882:59, Kevin Hilman wrote: >>> Hi Heiko, >>> >>> Heiko Stuebner writes: >>> >>>> Am Dienstag, 13. August 2019, 19:35:31 CEST schrieb Kevin Hilman: >>>>> [ resent with correct addr for linux-rockchip list ] >>>>> >>>>> Mark Brown writes: >>>>> >>>>>> On Thu, Jul 18, 2019 at 04:28:08AM -0700, kernelci.org bot wrote: >>>>>> >>>>>> Today's -next started failing to boot defconfig on rk3399-firefly: >>>>>> >>>>>>> arm64: >>>>>>> defconfig: >>>>>>> gcc-8: >>>>>>> rk3399-firefly: 1 failed lab >>>>>> It hits a BUG() trying to set up cpufreq: >>>>>> >>>>>> [ 87.381606] cpufreq: cpufreq_online: CPU0: Running at unlisted fr= eq: 200000 KHz >>>>>> [ 87.393244] cpufreq: cpufreq_online: CPU0: Unlisted initial frequ= ency changed to: 408000 KHz >>>>>> [ 87.469777] cpufreq: cpufreq_online: CPU4: Running at unlisted fr= eq: 12000 KHz >>>>>> [ 87.488595] cpu cpu4: _generic_set_opp_clk_only: failed to set cl= ock rate: -22 >>>>>> [ 87.491881] cpufreq: __target_index: Failed to change cpu frequen= cy: -22 >>>>>> [ 87.495335] ------------[ cut here ]------------ >>>>>> [ 87.496821] kernel BUG at drivers/cpufreq/cpufreq.c:1438! >>>>>> [ 87.498462] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP >>>>>> >>>>>> I'm struggling to see anything relevant in the diff from yesterday, = the >>>>>> unlisted frequency warnings were there in the logs yesterday but no = oops >>>>>> and I'm not seeing any changes in cpufreq, clk or anything relevant >>>>>> looking. >>>>>> >>>>>> Full bootlog and other info can be found here: >>>>>> >>>>>> https://kernelci.org/boot/id/5d302d8359b51498d049e983/ >>>>> I confirm that disabling CPUfreq in the defconfig (CONFIG_CPU_FREQ=3D= n) >>>>> makes the firefly board start working again. >>>>> >>>>> Note that the default defconfig enables the "performance" CPUfreq >>>>> governor as the default governor, so during kernel boot, it will alwa= ys >>>>> switch to the max frequency. >>>>> >>>>> For fun, I set the default governor to "userspace" so the kernel >>>>> wouldn't make any OPP changes, and that leads to a slightly more >>>>> informative splat[1] >>>>> >>>>> There is still an OPP change happening because the detected OPP is not >>>>> one that's listed in the table, so it tries to change to a listed OPP >>>>> and fails in the bowels of clk_set_rate() >>>> Though I think that might only be a symptom as well. >>>> Both the PLL setting code as well as the actual cpu-clock implementati= on >>>> is unchanged since 2017 (and runs just fine on all boards in my farm). >>>> >>>> One source for these issues is often the regulator supplying the cpu >>>> going haywire - aka the voltage not matching the opp. >>>> >>>> As in this error-case it's CPU4 being set, this would mean it might >>>> be the big cluster supplied by the external syr825 (fan5355 clone) >>>> that might act up. In the Firefly-rk3399 case this is even stranger. >>>> >>>> There is a discrepancy between the "fcs,suspend-voltage-selector" >>>> between different bootloader versions (how the selection-pin is set up= ), >>>> so the kernel might actually write his requested voltage to the wrong >>>> register (not the one for actual voltage, but the second set used for >>>> the suspend voltage). >>>> >>>> Did you by chance swap bootloaders at some point in recent past? >>> No, haven't touched bootloader since I initially setup the board. >> >> The CPU voltage does not affect by bootloader for kernel should have its= =20 >> own opp-table, >> >> the bootloader may only affect the center/logic power supply. >> >>> >>>> I'd assume [2] might actually be the same issue last year, though >>>> the CI-logs are not available anymore it seems. >>>> >>>> Could you try to set the vdd_cpu_b regulator to disabled, so that >>>> cpufreq for this cluster defers and see what happens? >>> Yes, this change[1] definitely makes things boot reliably again, so >>> there's defintiely something a bit unstable with this regulator, at >>> least on this firefly. >> >> Is it possible to target which patch introduce this bug? This board=C2= =A0=20 >> should have work correctly for a long time with upstream source code. > > Unfortunately, it seems to be a regular, but intermittent failure, so > bisection is not producing anything reliable. > > You can see that both in mainline[1] and in linux-next[2] there are > periodic failures, but it's hard to see any patterns. Even worse, I (re)tested mainline for versions that were previously passing (v5.2, v5.3-rc5) and they are also failing now. They work again if I disable that regulator as suggested by Heiko. So this is increasingly pointing to failing hardware. Kevin From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Hilman Subject: Re: CPUfreq fail on rk3399-firefly Date: Fri, 23 Aug 2019 10:03:12 -0700 Message-ID: <7h8srjzuen.fsf@baylibre.com> References: <5d3057c8.1c69fb81.c6489.8ad2@mx.google.com> <20190718162005.GF5761@sirena.org.uk> <7hmugdynmk.fsf@baylibre.com> <2314814.WbdfqDVNqK@phil> <7hv9uq9wfe.fsf@baylibre.com> <7hd0gvzuvw.fsf@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7hd0gvzuvw.fsf@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Kever Yang , Heiko Stuebner Cc: kernel-build-reports@lists.linaro.org, linux-rockchip@lists.infradead.org, linux-next@vger.kernel.org, =?utf-8?B?6Zer5a2d?= =?utf-8?B?5Yab?= , =?utf-8?B?5byg5pm0?= , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org S2V2aW4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT4gd3JpdGVzOgoKPiBLZXZlciBZYW5n IDxrZXZlci55YW5nQHJvY2stY2hpcHMuY29tPiB3cml0ZXM6Cj4KPj4gSGkgS2V2aW4sIEhlaWtv LAo+Pgo+PiBPbiAyMDE5LzgvMjIg5LiK5Y2IMjo1OSwgS2V2aW4gSGlsbWFuIHdyb3RlOgo+Pj4g SGkgSGVpa28sCj4+Pgo+Pj4gSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4gd3JpdGVz Ogo+Pj4KPj4+PiBBbSBEaWVuc3RhZywgMTMuIEF1Z3VzdCAyMDE5LCAxOTozNTozMSBDRVNUIHNj aHJpZWIgS2V2aW4gSGlsbWFuOgo+Pj4+PiBbIHJlc2VudCB3aXRoIGNvcnJlY3QgYWRkciBmb3Ig bGludXgtcm9ja2NoaXAgbGlzdCBdCj4+Pj4+Cj4+Pj4+IE1hcmsgQnJvd24gPGJyb29uaWVAa2Vy bmVsLm9yZz4gd3JpdGVzOgo+Pj4+Pgo+Pj4+Pj4gT24gVGh1LCBKdWwgMTgsIDIwMTkgYXQgMDQ6 Mjg6MDhBTSAtMDcwMCwga2VybmVsY2kub3JnIGJvdCB3cm90ZToKPj4+Pj4+Cj4+Pj4+PiBUb2Rh eSdzIC1uZXh0IHN0YXJ0ZWQgZmFpbGluZyB0byBib290IGRlZmNvbmZpZyBvbiByazMzOTktZmly ZWZseToKPj4+Pj4+Cj4+Pj4+Pj4gYXJtNjQ6Cj4+Pj4+Pj4gICAgICBkZWZjb25maWc6Cj4+Pj4+ Pj4gICAgICAgICAgZ2NjLTg6Cj4+Pj4+Pj4gICAgICAgICAgICAgIHJrMzM5OS1maXJlZmx5OiAx IGZhaWxlZCBsYWIKPj4+Pj4+IEl0IGhpdHMgYSBCVUcoKSB0cnlpbmcgdG8gc2V0IHVwIGNwdWZy ZXE6Cj4+Pj4+Pgo+Pj4+Pj4gWyAgIDg3LjM4MTYwNl0gY3B1ZnJlcTogY3B1ZnJlcV9vbmxpbmU6 IENQVTA6IFJ1bm5pbmcgYXQgdW5saXN0ZWQgZnJlcTogMjAwMDAwIEtIego+Pj4+Pj4gWyAgIDg3 LjM5MzI0NF0gY3B1ZnJlcTogY3B1ZnJlcV9vbmxpbmU6IENQVTA6IFVubGlzdGVkIGluaXRpYWwg ZnJlcXVlbmN5IGNoYW5nZWQgdG86IDQwODAwMCBLSHoKPj4+Pj4+IFsgICA4Ny40Njk3NzddIGNw dWZyZXE6IGNwdWZyZXFfb25saW5lOiBDUFU0OiBSdW5uaW5nIGF0IHVubGlzdGVkIGZyZXE6IDEy MDAwIEtIego+Pj4+Pj4gWyAgIDg3LjQ4ODU5NV0gY3B1IGNwdTQ6IF9nZW5lcmljX3NldF9vcHBf Y2xrX29ubHk6IGZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZTogLTIyCj4+Pj4+PiBbICAgODcuNDkx ODgxXSBjcHVmcmVxOiBfX3RhcmdldF9pbmRleDogRmFpbGVkIHRvIGNoYW5nZSBjcHUgZnJlcXVl bmN5OiAtMjIKPj4+Pj4+IFsgICA4Ny40OTUzMzVdIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0t LS0tLS0tLS0tLQo+Pj4+Pj4gWyAgIDg3LjQ5NjgyMV0ga2VybmVsIEJVRyBhdCBkcml2ZXJzL2Nw dWZyZXEvY3B1ZnJlcS5jOjE0MzghCj4+Pj4+PiBbICAgODcuNDk4NDYyXSBJbnRlcm5hbCBlcnJv cjogT29wcyAtIEJVRzogMCBbIzFdIFBSRUVNUFQgU01QCj4+Pj4+Pgo+Pj4+Pj4gSSdtIHN0cnVn Z2xpbmcgdG8gc2VlIGFueXRoaW5nIHJlbGV2YW50IGluIHRoZSBkaWZmIGZyb20geWVzdGVyZGF5 LCB0aGUKPj4+Pj4+IHVubGlzdGVkIGZyZXF1ZW5jeSB3YXJuaW5ncyB3ZXJlIHRoZXJlIGluIHRo ZSBsb2dzIHllc3RlcmRheSBidXQgbm8gb29wcwo+Pj4+Pj4gYW5kIEknbSBub3Qgc2VlaW5nIGFu eSBjaGFuZ2VzIGluIGNwdWZyZXEsIGNsayBvciBhbnl0aGluZyByZWxldmFudAo+Pj4+Pj4gbG9v a2luZy4KPj4+Pj4+Cj4+Pj4+PiBGdWxsIGJvb3Rsb2cgYW5kIG90aGVyIGluZm8gY2FuIGJlIGZv dW5kIGhlcmU6Cj4+Pj4+Pgo+Pj4+Pj4gCWh0dHBzOi8va2VybmVsY2kub3JnL2Jvb3QvaWQvNWQz MDJkODM1OWI1MTQ5OGQwNDllOTgzLwo+Pj4+PiBJIGNvbmZpcm0gdGhhdCBkaXNhYmxpbmcgQ1BV ZnJlcSBpbiB0aGUgZGVmY29uZmlnIChDT05GSUdfQ1BVX0ZSRVE9bikKPj4+Pj4gbWFrZXMgdGhl IGZpcmVmbHkgYm9hcmQgc3RhcnQgd29ya2luZyBhZ2Fpbi4KPj4+Pj4KPj4+Pj4gTm90ZSB0aGF0 IHRoZSBkZWZhdWx0IGRlZmNvbmZpZyBlbmFibGVzIHRoZSAicGVyZm9ybWFuY2UiIENQVWZyZXEK Pj4+Pj4gZ292ZXJub3IgYXMgdGhlIGRlZmF1bHQgZ292ZXJub3IsIHNvIGR1cmluZyBrZXJuZWwg Ym9vdCwgaXQgd2lsbCBhbHdheXMKPj4+Pj4gc3dpdGNoIHRvIHRoZSBtYXggZnJlcXVlbmN5Lgo+ Pj4+Pgo+Pj4+PiBGb3IgZnVuLCBJIHNldCB0aGUgZGVmYXVsdCBnb3Zlcm5vciB0byAidXNlcnNw YWNlIiBzbyB0aGUga2VybmVsCj4+Pj4+IHdvdWxkbid0IG1ha2UgYW55IE9QUCBjaGFuZ2VzLCBh bmQgdGhhdCBsZWFkcyB0byBhIHNsaWdodGx5IG1vcmUKPj4+Pj4gaW5mb3JtYXRpdmUgc3BsYXRb MV0KPj4+Pj4KPj4+Pj4gVGhlcmUgaXMgc3RpbGwgYW4gT1BQIGNoYW5nZSBoYXBwZW5pbmcgYmVj YXVzZSB0aGUgZGV0ZWN0ZWQgT1BQIGlzIG5vdAo+Pj4+PiBvbmUgdGhhdCdzIGxpc3RlZCBpbiB0 aGUgdGFibGUsIHNvIGl0IHRyaWVzIHRvIGNoYW5nZSB0byBhIGxpc3RlZCBPUFAKPj4+Pj4gYW5k IGZhaWxzIGluIHRoZSBib3dlbHMgb2YgY2xrX3NldF9yYXRlKCkKPj4+PiBUaG91Z2ggSSB0aGlu ayB0aGF0IG1pZ2h0IG9ubHkgYmUgYSBzeW1wdG9tIGFzIHdlbGwuCj4+Pj4gQm90aCB0aGUgUExM IHNldHRpbmcgY29kZSBhcyB3ZWxsIGFzIHRoZSBhY3R1YWwgY3B1LWNsb2NrIGltcGxlbWVudGF0 aW9uCj4+Pj4gaXMgdW5jaGFuZ2VkIHNpbmNlIDIwMTcgKGFuZCBydW5zIGp1c3QgZmluZSBvbiBh bGwgYm9hcmRzIGluIG15IGZhcm0pLgo+Pj4+Cj4+Pj4gT25lIHNvdXJjZSBmb3IgdGhlc2UgaXNz dWVzIGlzIG9mdGVuIHRoZSByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBjcHUKPj4+PiBnb2luZyBo YXl3aXJlIC0gYWthIHRoZSB2b2x0YWdlIG5vdCBtYXRjaGluZyB0aGUgb3BwLgo+Pj4+Cj4+Pj4g QXMgaW4gdGhpcyBlcnJvci1jYXNlIGl0J3MgQ1BVNCBiZWluZyBzZXQsIHRoaXMgd291bGQgbWVh biBpdCBtaWdodAo+Pj4+IGJlIHRoZSBiaWcgY2x1c3RlciBzdXBwbGllZCBieSB0aGUgZXh0ZXJu YWwgc3lyODI1IChmYW41MzU1IGNsb25lKQo+Pj4+IHRoYXQgbWlnaHQgYWN0IHVwLiBJbiB0aGUg RmlyZWZseS1yazMzOTkgY2FzZSB0aGlzIGlzIGV2ZW4gc3RyYW5nZXIuCj4+Pj4KPj4+PiBUaGVy ZSBpcyBhIGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlICJmY3Msc3VzcGVuZC12b2x0YWdlLXNlbGVj dG9yIgo+Pj4+IGJldHdlZW4gZGlmZmVyZW50IGJvb3Rsb2FkZXIgdmVyc2lvbnMgKGhvdyB0aGUg c2VsZWN0aW9uLXBpbiBpcyBzZXQgdXApLAo+Pj4+IHNvIHRoZSBrZXJuZWwgbWlnaHQgYWN0dWFs bHkgd3JpdGUgaGlzIHJlcXVlc3RlZCB2b2x0YWdlIHRvIHRoZSB3cm9uZwo+Pj4+IHJlZ2lzdGVy IChub3QgdGhlIG9uZSBmb3IgYWN0dWFsIHZvbHRhZ2UsIGJ1dCB0aGUgc2Vjb25kIHNldCB1c2Vk IGZvcgo+Pj4+IHRoZSBzdXNwZW5kIHZvbHRhZ2UpLgo+Pj4+Cj4+Pj4gRGlkIHlvdSBieSBjaGFu Y2Ugc3dhcCBib290bG9hZGVycyBhdCBzb21lIHBvaW50IGluIHJlY2VudCBwYXN0Pwo+Pj4gTm8s IGhhdmVuJ3QgdG91Y2hlZCBib290bG9hZGVyIHNpbmNlIEkgaW5pdGlhbGx5IHNldHVwIHRoZSBi b2FyZC4KPj4KPj4gVGhlIENQVSB2b2x0YWdlIGRvZXMgbm90IGFmZmVjdCBieSBib290bG9hZGVy IGZvciBrZXJuZWwgc2hvdWxkIGhhdmUgaXRzIAo+PiBvd24gb3BwLXRhYmxlLAo+Pgo+PiB0aGUg Ym9vdGxvYWRlciBtYXkgb25seSBhZmZlY3QgdGhlIGNlbnRlci9sb2dpYyBwb3dlciBzdXBwbHku Cj4+Cj4+Pgo+Pj4+IEknZCBhc3N1bWUgWzJdIG1pZ2h0IGFjdHVhbGx5IGJlIHRoZSBzYW1lIGlz c3VlIGxhc3QgeWVhciwgdGhvdWdoCj4+Pj4gdGhlIENJLWxvZ3MgYXJlIG5vdCBhdmFpbGFibGUg YW55bW9yZSBpdCBzZWVtcy4KPj4+Pgo+Pj4+IENvdWxkIHlvdSB0cnkgdG8gc2V0IHRoZSB2ZGRf Y3B1X2IgcmVndWxhdG9yIHRvIGRpc2FibGVkLCBzbyB0aGF0Cj4+Pj4gY3B1ZnJlcSBmb3IgdGhp cyBjbHVzdGVyIGRlZmVycyBhbmQgc2VlIHdoYXQgaGFwcGVucz8KPj4+IFllcywgdGhpcyBjaGFu Z2VbMV0gZGVmaW5pdGVseSBtYWtlcyB0aGluZ3MgYm9vdCByZWxpYWJseSBhZ2Fpbiwgc28KPj4+ IHRoZXJlJ3MgZGVmaW50aWVseSBzb21ldGhpbmcgYSBiaXQgdW5zdGFibGUgd2l0aCB0aGlzIHJl Z3VsYXRvciwgYXQKPj4+IGxlYXN0IG9uIHRoaXMgZmlyZWZseS4KPj4KPj4gSXMgaXQgcG9zc2li bGUgdG8gdGFyZ2V0IHdoaWNoIHBhdGNoIGludHJvZHVjZSB0aGlzIGJ1Zz8gVGhpcyBib2FyZMKg IAo+PiBzaG91bGQgaGF2ZSB3b3JrIGNvcnJlY3RseSBmb3IgYSBsb25nIHRpbWUgd2l0aCB1cHN0 cmVhbSBzb3VyY2UgY29kZS4KPgo+IFVuZm9ydHVuYXRlbHksIGl0IHNlZW1zIHRvIGJlIGEgcmVn dWxhciwgYnV0IGludGVybWl0dGVudCBmYWlsdXJlLCBzbwo+IGJpc2VjdGlvbiBpcyBub3QgcHJv ZHVjaW5nIGFueXRoaW5nIHJlbGlhYmxlLgo+Cj4gWW91IGNhbiBzZWUgdGhhdCBib3RoIGluIG1h aW5saW5lWzFdIGFuZCBpbiBsaW51eC1uZXh0WzJdIHRoZXJlIGFyZQo+IHBlcmlvZGljIGZhaWx1 cmVzLCBidXQgaXQncyBoYXJkIHRvIHNlZSBhbnkgcGF0dGVybnMuCgpFdmVuIHdvcnNlLCBJIChy ZSl0ZXN0ZWQgbWFpbmxpbmUgZm9yIHZlcnNpb25zIHRoYXQgd2VyZSBwcmV2aW91c2x5CnBhc3Np bmcgKHY1LjIsIHY1LjMtcmM1KSBhbmQgdGhleSBhcmUgYWxzbyBmYWlsaW5nIG5vdy4KClRoZXkg d29yayBhZ2FpbiBpZiBJIGRpc2FibGUgdGhhdCByZWd1bGF0b3IgYXMgc3VnZ2VzdGVkIGJ5IEhl aWtvLgoKU28gdGhpcyBpcyBpbmNyZWFzaW5nbHkgcG9pbnRpbmcgdG8gZmFpbGluZyBoYXJkd2Fy ZS4KCktldmluCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==