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=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 D4D57C3A59F for ; Tue, 27 Aug 2019 02:14:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A99D22080C for ; Tue, 27 Aug 2019 02:14:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728345AbfH0COo convert rfc822-to-8bit (ORCPT ); Mon, 26 Aug 2019 22:14:44 -0400 Received: from gloria.sntech.de ([185.11.138.130]:56964 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726487AbfH0COo (ORCPT ); Mon, 26 Aug 2019 22:14:44 -0400 Received: from c-73-71-116-68.hsd1.ca.comcast.net ([73.71.116.68] helo=phil.localnet) by gloria.sntech.de with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i2R0H-0007W0-Ns; Tue, 27 Aug 2019 04:14:37 +0200 From: Heiko Stuebner To: Kever Yang Cc: Kevin Hilman , kernel-build-reports@lists.linaro.org, linux-rockchip@lists.infradead.org, linux-next@vger.kernel.org, =?utf-8?B?5byg5pm0?= , =?utf-8?B?6Zer5a2d5Yab?= , linux-arm-kernel@lists.infradead.org Subject: Re: CPUfreq fail on rk3399-firefly Date: Tue, 27 Aug 2019 04:14:33 +0200 Message-ID: <8953975.ee0vQab4qn@phil> In-Reply-To: <852dd7d4-520b-7eb0-f307-c3fa9c0ebf2a@rock-chips.com> References: <5d3057c8.1c69fb81.c6489.8ad2@mx.google.com> <7h4l23zwej.fsf@baylibre.com> <852dd7d4-520b-7eb0-f307-c3fa9c0ebf2a@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="UTF-8" Sender: linux-next-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-next@vger.kernel.org Hi Kever, Am Dienstag, 27. August 2019, 03:54:26 CEST schrieb Kever Yang: > On 2019/8/27 上午1:09, Kevin Hilman wrote: > > Kever Yang writes: > >> I want to have a test with my board, I can get the Image and dtb > >> from the link for the job, > >> > >> but how can I get the randisk which is named initrd-SDbyy2.cpio.gz? > > The ramdisk images are here: > > > > https://storage.kernelci.org/images/rootfs/buildroot/kci-2019.02/arm64/base/ > > > > in the kernelCI logs the ramdisk is slightly modified because the kernel > > modules have been inserted into the cpio archive. > > > > However, for the purposes of this test, you can just test with the > > unmodified rootfs.cpio.gz above. > > > I try with this ramdisk, and it hangs at fan53555 init, but not get into > cpufreq. > > Any suggestion? My guess would be the fcs,suspend-voltage-selector maybe? I.e. old uboots somehow set the voltage gpio strangely, so you'd need fcs,suspend-voltage-selector = <0> while newer uboots I think do configure the gpio, needing a value of <1>; So try to swap that number in the dts perhaps for a start? Heiko > My boot log: > > https://paste.ubuntu.com/p/WYZKPWp7sk/ > > Thanks, > > - Kever > > > > > Kevin > > > > > >> Thanks, > >> > >> - Kever > >> > >> On 2019/8/24 上午1:03, Kevin Hilman wrote: > >>> Kevin Hilman writes: > >>> > >>>> Kever Yang writes: > >>>> > >>>>> Hi Kevin, Heiko, > >>>>> > >>>>> On 2019/8/22 上午2: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 freq: 200000 KHz > >>>>>>>>> [ 87.393244] cpufreq: cpufreq_online: CPU0: Unlisted initial frequency changed to: 408000 KHz > >>>>>>>>> [ 87.469777] cpufreq: cpufreq_online: CPU4: Running at unlisted freq: 12000 KHz > >>>>>>>>> [ 87.488595] cpu cpu4: _generic_set_opp_clk_only: failed to set clock rate: -22 > >>>>>>>>> [ 87.491881] cpufreq: __target_index: Failed to change cpu frequency: -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=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 always > >>>>>>>> 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 implementation > >>>>>>> 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 > >>>>> 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 > >>>>> 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: Heiko Stuebner Subject: Re: CPUfreq fail on rk3399-firefly Date: Tue, 27 Aug 2019 04:14:33 +0200 Message-ID: <8953975.ee0vQab4qn@phil> References: <5d3057c8.1c69fb81.c6489.8ad2@mx.google.com> <7h4l23zwej.fsf@baylibre.com> <852dd7d4-520b-7eb0-f307-c3fa9c0ebf2a@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <852dd7d4-520b-7eb0-f307-c3fa9c0ebf2a@rock-chips.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 Cc: kernel-build-reports@lists.linaro.org, Kevin Hilman , linux-rockchip@lists.infradead.org, linux-next@vger.kernel.org, =?utf-8?B?6Zer5a2d5Yab?= , =?utf-8?B?5byg5pm0?= , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org SGkgS2V2ZXIsCgpBbSBEaWVuc3RhZywgMjcuIEF1Z3VzdCAyMDE5LCAwMzo1NDoyNiBDRVNUIHNj aHJpZWIgS2V2ZXIgWWFuZzoKPiBPbiAyMDE5LzgvMjcg5LiK5Y2IMTowOSwgS2V2aW4gSGlsbWFu IHdyb3RlOgo+ID4gS2V2ZXIgWWFuZyA8a2V2ZXIueWFuZ0Byb2NrLWNoaXBzLmNvbT4gd3JpdGVz Ogo+ID4+ICAgICAgIEkgd2FudCB0byBoYXZlIGEgdGVzdCB3aXRoIG15IGJvYXJkLCBJIGNhbiBn ZXQgdGhlIEltYWdlIGFuZCBkdGIKPiA+PiBmcm9tIHRoZSBsaW5rIGZvciB0aGUgam9iLAo+ID4+ Cj4gPj4gYnV0IGhvdyBjYW4gSSBnZXQgdGhlIHJhbmRpc2sgd2hpY2ggaXMgbmFtZWQgaW5pdHJk LVNEYnl5Mi5jcGlvLmd6Pwo+ID4gVGhlIHJhbWRpc2sgaW1hZ2VzIGFyZSBoZXJlOgo+ID4KPiA+ ICAgIGh0dHBzOi8vc3RvcmFnZS5rZXJuZWxjaS5vcmcvaW1hZ2VzL3Jvb3Rmcy9idWlsZHJvb3Qv a2NpLTIwMTkuMDIvYXJtNjQvYmFzZS8KPiA+Cj4gPiBpbiB0aGUga2VybmVsQ0kgbG9ncyB0aGUg cmFtZGlzayBpcyBzbGlnaHRseSBtb2RpZmllZCBiZWNhdXNlIHRoZSBrZXJuZWwKPiA+IG1vZHVs ZXMgaGF2ZSBiZWVuIGluc2VydGVkIGludG8gdGhlIGNwaW8gYXJjaGl2ZS4KPiA+Cj4gPiBIb3dl dmVyLCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdCwgeW91IGNhbiBqdXN0IHRlc3Qgd2l0 aCB0aGUKPiA+IHVubW9kaWZpZWQgcm9vdGZzLmNwaW8uZ3ogYWJvdmUuCj4gCj4gCj4gSSB0cnkg d2l0aCB0aGlzIHJhbWRpc2ssIGFuZCBpdCBoYW5ncyBhdCBmYW41MzU1NSBpbml0LCBidXQgbm90 IGdldCBpbnRvIAo+IGNwdWZyZXEuCj4gCj4gQW55IHN1Z2dlc3Rpb24/CgpNeSBndWVzcyB3b3Vs ZCBiZSB0aGUgZmNzLHN1c3BlbmQtdm9sdGFnZS1zZWxlY3RvciBtYXliZT8KCkkuZS4gb2xkIHVi b290cyBzb21laG93IHNldCB0aGUgdm9sdGFnZSBncGlvIHN0cmFuZ2VseSwgc28geW91J2QgbmVl ZAoJZmNzLHN1c3BlbmQtdm9sdGFnZS1zZWxlY3RvciA9IDwwPgp3aGlsZSBuZXdlciB1Ym9vdHMg SSB0aGluayBkbyBjb25maWd1cmUgdGhlIGdwaW8sIG5lZWRpbmcgYSB2YWx1ZSBvZiA8MT47CgpT byB0cnkgdG8gc3dhcCB0aGF0IG51bWJlciBpbiB0aGUgZHRzIHBlcmhhcHMgZm9yIGEgc3RhcnQ/ CgoKSGVpa28KCgo+ICAgTXkgYm9vdCBsb2c6Cj4gCj4gaHR0cHM6Ly9wYXN0ZS51YnVudHUuY29t L3AvV1laS1BXcDdzay8KPiAKPiBUaGFua3MsCj4gCj4gLSBLZXZlcgo+IAo+ID4KPiA+IEtldmlu Cj4gPgo+ID4KPiA+PiBUaGFua3MsCj4gPj4KPiA+PiAtIEtldmVyCj4gPj4KPiA+PiBPbiAyMDE5 LzgvMjQg5LiK5Y2IMTowMywgS2V2aW4gSGlsbWFuIHdyb3RlOgo+ID4+PiBLZXZpbiBIaWxtYW4g PGtoaWxtYW5AYmF5bGlicmUuY29tPiB3cml0ZXM6Cj4gPj4+Cj4gPj4+PiBLZXZlciBZYW5nIDxr ZXZlci55YW5nQHJvY2stY2hpcHMuY29tPiB3cml0ZXM6Cj4gPj4+Pgo+ID4+Pj4+IEhpIEtldmlu LCBIZWlrbywKPiA+Pj4+Pgo+ID4+Pj4+IE9uIDIwMTkvOC8yMiDkuIrljYgyOjU5LCBLZXZpbiBI aWxtYW4gd3JvdGU6Cj4gPj4+Pj4+IEhpIEhlaWtvLAo+ID4+Pj4+Pgo+ID4+Pj4+PiBIZWlrbyBT dHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPiB3cml0ZXM6Cj4gPj4+Pj4+Cj4gPj4+Pj4+PiBBbSBE aWVuc3RhZywgMTMuIEF1Z3VzdCAyMDE5LCAxOTozNTozMSBDRVNUIHNjaHJpZWIgS2V2aW4gSGls bWFuOgo+ID4+Pj4+Pj4+IFsgcmVzZW50IHdpdGggY29ycmVjdCBhZGRyIGZvciBsaW51eC1yb2Nr Y2hpcCBsaXN0IF0KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IE1hcmsgQnJvd24gPGJyb29uaWVAa2Vy bmVsLm9yZz4gd3JpdGVzOgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IE9uIFRodSwgSnVsIDE4LCAy MDE5IGF0IDA0OjI4OjA4QU0gLTA3MDAsIGtlcm5lbGNpLm9yZyBib3Qgd3JvdGU6Cj4gPj4+Pj4+ Pj4+Cj4gPj4+Pj4+Pj4+IFRvZGF5J3MgLW5leHQgc3RhcnRlZCBmYWlsaW5nIHRvIGJvb3QgZGVm Y29uZmlnIG9uIHJrMzM5OS1maXJlZmx5Ogo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gYXJtNjQ6 Cj4gPj4+Pj4+Pj4+PiAgICAgICAgZGVmY29uZmlnOgo+ID4+Pj4+Pj4+Pj4gICAgICAgICAgICBn Y2MtODoKPiA+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgIHJrMzM5OS1maXJlZmx5OiAxIGZhaWxl ZCBsYWIKPiA+Pj4+Pj4+Pj4gSXQgaGl0cyBhIEJVRygpIHRyeWluZyB0byBzZXQgdXAgY3B1ZnJl cToKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gWyAgIDg3LjM4MTYwNl0gY3B1ZnJlcTogY3B1ZnJl cV9vbmxpbmU6IENQVTA6IFJ1bm5pbmcgYXQgdW5saXN0ZWQgZnJlcTogMjAwMDAwIEtIego+ID4+ Pj4+Pj4+PiBbICAgODcuMzkzMjQ0XSBjcHVmcmVxOiBjcHVmcmVxX29ubGluZTogQ1BVMDogVW5s aXN0ZWQgaW5pdGlhbCBmcmVxdWVuY3kgY2hhbmdlZCB0bzogNDA4MDAwIEtIego+ID4+Pj4+Pj4+ PiBbICAgODcuNDY5Nzc3XSBjcHVmcmVxOiBjcHVmcmVxX29ubGluZTogQ1BVNDogUnVubmluZyBh dCB1bmxpc3RlZCBmcmVxOiAxMjAwMCBLSHoKPiA+Pj4+Pj4+Pj4gWyAgIDg3LjQ4ODU5NV0gY3B1 IGNwdTQ6IF9nZW5lcmljX3NldF9vcHBfY2xrX29ubHk6IGZhaWxlZCB0byBzZXQgY2xvY2sgcmF0 ZTogLTIyCj4gPj4+Pj4+Pj4+IFsgICA4Ny40OTE4ODFdIGNwdWZyZXE6IF9fdGFyZ2V0X2luZGV4 OiBGYWlsZWQgdG8gY2hhbmdlIGNwdSBmcmVxdWVuY3k6IC0yMgo+ID4+Pj4+Pj4+PiBbICAgODcu NDk1MzM1XSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KPiA+Pj4+Pj4+Pj4g WyAgIDg3LjQ5NjgyMV0ga2VybmVsIEJVRyBhdCBkcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jOjE0 MzghCj4gPj4+Pj4+Pj4+IFsgICA4Ny40OTg0NjJdIEludGVybmFsIGVycm9yOiBPb3BzIC0gQlVH OiAwIFsjMV0gUFJFRU1QVCBTTVAKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gSSdtIHN0cnVnZ2xp bmcgdG8gc2VlIGFueXRoaW5nIHJlbGV2YW50IGluIHRoZSBkaWZmIGZyb20geWVzdGVyZGF5LCB0 aGUKPiA+Pj4+Pj4+Pj4gdW5saXN0ZWQgZnJlcXVlbmN5IHdhcm5pbmdzIHdlcmUgdGhlcmUgaW4g dGhlIGxvZ3MgeWVzdGVyZGF5IGJ1dCBubyBvb3BzCj4gPj4+Pj4+Pj4+IGFuZCBJJ20gbm90IHNl ZWluZyBhbnkgY2hhbmdlcyBpbiBjcHVmcmVxLCBjbGsgb3IgYW55dGhpbmcgcmVsZXZhbnQKPiA+ Pj4+Pj4+Pj4gbG9va2luZy4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gRnVsbCBib290bG9nIGFu ZCBvdGhlciBpbmZvIGNhbiBiZSBmb3VuZCBoZXJlOgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAJ aHR0cHM6Ly9rZXJuZWxjaS5vcmcvYm9vdC9pZC81ZDMwMmQ4MzU5YjUxNDk4ZDA0OWU5ODMvCj4g Pj4+Pj4+Pj4gSSBjb25maXJtIHRoYXQgZGlzYWJsaW5nIENQVWZyZXEgaW4gdGhlIGRlZmNvbmZp ZyAoQ09ORklHX0NQVV9GUkVRPW4pCj4gPj4+Pj4+Pj4gbWFrZXMgdGhlIGZpcmVmbHkgYm9hcmQg c3RhcnQgd29ya2luZyBhZ2Fpbi4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IE5vdGUgdGhhdCB0aGUg ZGVmYXVsdCBkZWZjb25maWcgZW5hYmxlcyB0aGUgInBlcmZvcm1hbmNlIiBDUFVmcmVxCj4gPj4+ Pj4+Pj4gZ292ZXJub3IgYXMgdGhlIGRlZmF1bHQgZ292ZXJub3IsIHNvIGR1cmluZyBrZXJuZWwg Ym9vdCwgaXQgd2lsbCBhbHdheXMKPiA+Pj4+Pj4+PiBzd2l0Y2ggdG8gdGhlIG1heCBmcmVxdWVu Y3kuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBGb3IgZnVuLCBJIHNldCB0aGUgZGVmYXVsdCBnb3Zl cm5vciB0byAidXNlcnNwYWNlIiBzbyB0aGUga2VybmVsCj4gPj4+Pj4+Pj4gd291bGRuJ3QgbWFr ZSBhbnkgT1BQIGNoYW5nZXMsIGFuZCB0aGF0IGxlYWRzIHRvIGEgc2xpZ2h0bHkgbW9yZQo+ID4+ Pj4+Pj4+IGluZm9ybWF0aXZlIHNwbGF0WzFdCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBUaGVyZSBp cyBzdGlsbCBhbiBPUFAgY2hhbmdlIGhhcHBlbmluZyBiZWNhdXNlIHRoZSBkZXRlY3RlZCBPUFAg aXMgbm90Cj4gPj4+Pj4+Pj4gb25lIHRoYXQncyBsaXN0ZWQgaW4gdGhlIHRhYmxlLCBzbyBpdCB0 cmllcyB0byBjaGFuZ2UgdG8gYSBsaXN0ZWQgT1BQCj4gPj4+Pj4+Pj4gYW5kIGZhaWxzIGluIHRo ZSBib3dlbHMgb2YgY2xrX3NldF9yYXRlKCkKPiA+Pj4+Pj4+IFRob3VnaCBJIHRoaW5rIHRoYXQg bWlnaHQgb25seSBiZSBhIHN5bXB0b20gYXMgd2VsbC4KPiA+Pj4+Pj4+IEJvdGggdGhlIFBMTCBz ZXR0aW5nIGNvZGUgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIGNwdS1jbG9jayBpbXBsZW1lbnRhdGlv bgo+ID4+Pj4+Pj4gaXMgdW5jaGFuZ2VkIHNpbmNlIDIwMTcgKGFuZCBydW5zIGp1c3QgZmluZSBv biBhbGwgYm9hcmRzIGluIG15IGZhcm0pLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IE9uZSBzb3VyY2Ug Zm9yIHRoZXNlIGlzc3VlcyBpcyBvZnRlbiB0aGUgcmVndWxhdG9yIHN1cHBseWluZyB0aGUgY3B1 Cj4gPj4+Pj4+PiBnb2luZyBoYXl3aXJlIC0gYWthIHRoZSB2b2x0YWdlIG5vdCBtYXRjaGluZyB0 aGUgb3BwLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEFzIGluIHRoaXMgZXJyb3ItY2FzZSBpdCdzIENQ VTQgYmVpbmcgc2V0LCB0aGlzIHdvdWxkIG1lYW4gaXQgbWlnaHQKPiA+Pj4+Pj4+IGJlIHRoZSBi aWcgY2x1c3RlciBzdXBwbGllZCBieSB0aGUgZXh0ZXJuYWwgc3lyODI1IChmYW41MzU1IGNsb25l KQo+ID4+Pj4+Pj4gdGhhdCBtaWdodCBhY3QgdXAuIEluIHRoZSBGaXJlZmx5LXJrMzM5OSBjYXNl IHRoaXMgaXMgZXZlbiBzdHJhbmdlci4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBUaGVyZSBpcyBhIGRp c2NyZXBhbmN5IGJldHdlZW4gdGhlICJmY3Msc3VzcGVuZC12b2x0YWdlLXNlbGVjdG9yIgo+ID4+ Pj4+Pj4gYmV0d2VlbiBkaWZmZXJlbnQgYm9vdGxvYWRlciB2ZXJzaW9ucyAoaG93IHRoZSBzZWxl Y3Rpb24tcGluIGlzIHNldCB1cCksCj4gPj4+Pj4+PiBzbyB0aGUga2VybmVsIG1pZ2h0IGFjdHVh bGx5IHdyaXRlIGhpcyByZXF1ZXN0ZWQgdm9sdGFnZSB0byB0aGUgd3JvbmcKPiA+Pj4+Pj4+IHJl Z2lzdGVyIChub3QgdGhlIG9uZSBmb3IgYWN0dWFsIHZvbHRhZ2UsIGJ1dCB0aGUgc2Vjb25kIHNl dCB1c2VkIGZvcgo+ID4+Pj4+Pj4gdGhlIHN1c3BlbmQgdm9sdGFnZSkuCj4gPj4+Pj4+Pgo+ID4+ Pj4+Pj4gRGlkIHlvdSBieSBjaGFuY2Ugc3dhcCBib290bG9hZGVycyBhdCBzb21lIHBvaW50IGlu IHJlY2VudCBwYXN0Pwo+ID4+Pj4+PiBObywgaGF2ZW4ndCB0b3VjaGVkIGJvb3Rsb2FkZXIgc2lu Y2UgSSBpbml0aWFsbHkgc2V0dXAgdGhlIGJvYXJkLgo+ID4+Pj4+IFRoZSBDUFUgdm9sdGFnZSBk b2VzIG5vdCBhZmZlY3QgYnkgYm9vdGxvYWRlciBmb3Iga2VybmVsIHNob3VsZCBoYXZlIGl0cwo+ ID4+Pj4+IG93biBvcHAtdGFibGUsCj4gPj4+Pj4KPiA+Pj4+PiB0aGUgYm9vdGxvYWRlciBtYXkg b25seSBhZmZlY3QgdGhlIGNlbnRlci9sb2dpYyBwb3dlciBzdXBwbHkuCj4gPj4+Pj4KPiA+Pj4+ Pj4+IEknZCBhc3N1bWUgWzJdIG1pZ2h0IGFjdHVhbGx5IGJlIHRoZSBzYW1lIGlzc3VlIGxhc3Qg eWVhciwgdGhvdWdoCj4gPj4+Pj4+PiB0aGUgQ0ktbG9ncyBhcmUgbm90IGF2YWlsYWJsZSBhbnlt b3JlIGl0IHNlZW1zLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IENvdWxkIHlvdSB0cnkgdG8gc2V0IHRo ZSB2ZGRfY3B1X2IgcmVndWxhdG9yIHRvIGRpc2FibGVkLCBzbyB0aGF0Cj4gPj4+Pj4+PiBjcHVm cmVxIGZvciB0aGlzIGNsdXN0ZXIgZGVmZXJzIGFuZCBzZWUgd2hhdCBoYXBwZW5zPwo+ID4+Pj4+ PiBZZXMsIHRoaXMgY2hhbmdlWzFdIGRlZmluaXRlbHkgbWFrZXMgdGhpbmdzIGJvb3QgcmVsaWFi bHkgYWdhaW4sIHNvCj4gPj4+Pj4+IHRoZXJlJ3MgZGVmaW50aWVseSBzb21ldGhpbmcgYSBiaXQg dW5zdGFibGUgd2l0aCB0aGlzIHJlZ3VsYXRvciwgYXQKPiA+Pj4+Pj4gbGVhc3Qgb24gdGhpcyBm aXJlZmx5Lgo+ID4+Pj4+IElzIGl0IHBvc3NpYmxlIHRvIHRhcmdldCB3aGljaCBwYXRjaCBpbnRy b2R1Y2UgdGhpcyBidWc/IFRoaXMgYm9hcmQKPiA+Pj4+PiBzaG91bGQgaGF2ZSB3b3JrIGNvcnJl Y3RseSBmb3IgYSBsb25nIHRpbWUgd2l0aCB1cHN0cmVhbSBzb3VyY2UgY29kZS4KPiA+Pj4+IFVu Zm9ydHVuYXRlbHksIGl0IHNlZW1zIHRvIGJlIGEgcmVndWxhciwgYnV0IGludGVybWl0dGVudCBm YWlsdXJlLCBzbwo+ID4+Pj4gYmlzZWN0aW9uIGlzIG5vdCBwcm9kdWNpbmcgYW55dGhpbmcgcmVs aWFibGUuCj4gPj4+Pgo+ID4+Pj4gWW91IGNhbiBzZWUgdGhhdCBib3RoIGluIG1haW5saW5lWzFd IGFuZCBpbiBsaW51eC1uZXh0WzJdIHRoZXJlIGFyZQo+ID4+Pj4gcGVyaW9kaWMgZmFpbHVyZXMs IGJ1dCBpdCdzIGhhcmQgdG8gc2VlIGFueSBwYXR0ZXJucy4KPiA+Pj4gRXZlbiB3b3JzZSwgSSAo cmUpdGVzdGVkIG1haW5saW5lIGZvciB2ZXJzaW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseQo+ID4+ PiBwYXNzaW5nICh2NS4yLCB2NS4zLXJjNSkgYW5kIHRoZXkgYXJlIGFsc28gZmFpbGluZyBub3cu Cj4gPj4+Cj4gPj4+IFRoZXkgd29yayBhZ2FpbiBpZiBJIGRpc2FibGUgdGhhdCByZWd1bGF0b3Ig YXMgc3VnZ2VzdGVkIGJ5IEhlaWtvLgo+ID4+Pgo+ID4+PiBTbyB0aGlzIGlzIGluY3JlYXNpbmds eSBwb2ludGluZyB0byBmYWlsaW5nIGhhcmR3YXJlLgo+ID4+Pgo+ID4+PiBLZXZpbgo+ID4+Pgo+ ID4+Pgo+ID4+Pgo+ID4KPiA+Cj4gCj4gCj4gCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=