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 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 2C0EEC4360C for ; Thu, 26 Sep 2019 22:51:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DEB78207FF for ; Thu, 26 Sep 2019 22:51:23 +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="doq6egEf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726694AbfIZWvX (ORCPT ); Thu, 26 Sep 2019 18:51:23 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:35582 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726480AbfIZWvX (ORCPT ); Thu, 26 Sep 2019 18:51:23 -0400 Received: by mail-pl1-f193.google.com with SMTP id y10so264154plp.2 for ; Thu, 26 Sep 2019 15:51:22 -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=kg+W2f5e/pogc4hGhrCGEqMguXq5FDO31U9eHUNSVU8=; b=doq6egEf3LmGnlfezLhjQYmyH9WNiUDMElP8GikmAOh7DM8SV20L7QhN+Jvey9pbDt C9c2VT7GuS73tOkt5Ed0UHo5K8cTBGyf4trSfNwwP1JlrNpcP1tS6txwiKHKn6aRA7D0 KK7BevD9aR5UOMIXyhDUxNBAV1wC/0MVWxgjBUlih/SCPDlFaDZFJShXDZjC8WY86VZ4 2EgPqNpG/IpiEV2sgHZYGNGfLp5J3/o4zl+kOinTMaO+LipU23kg0/3Tz8BhoGodzKON hbsMy0+A397W+GVOMRGyRzkyXOTywv4U3+LNiQyTP264fqQIZ5g2eGH6Oktu/xqCnMaW KNrg== 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=kg+W2f5e/pogc4hGhrCGEqMguXq5FDO31U9eHUNSVU8=; b=a0GStilJAojVZQJ19g5Mtwdui5Gvi2G8/Mo38FMTkSKFAH6HFaXfQC5xHgYnOp2XGG L6druv0ISqx9XcSm29n0WXkppiGzvhS+tYiL3L2q/4Mhplpr+VK6tuOaGsRTmTh+yjdD twSrBfat7sQ2k9D6FmnDsiuh9+xjG5FShk7rPN4s91RozYnjE4C6gt8XvF3tv/F/9AX3 RwMb5tHjkrov873hFhQWnCJailWMMQDiu8RsgYCqDYMp32dR+JO9JDScge1lgfz011HU 7A/XVzNIoMTFUkTQX8tY4QkAlZubRvybD9llcTclhpQBD/3H5PSjWBrfafPF9jSNVbZZ RZqQ== X-Gm-Message-State: APjAAAUg4Y0MWhfUmxunNI7hzY98e+y8BgTgcvZnOI+RBajIwuxITmt6 qr8zUUZnMi7GkthRYtAJN4dmZA== X-Google-Smtp-Source: APXvYqwm2QmMOmlapOmvCZzfzmqAyybOChJa6QGvuyVRnsVKtwIzD0kUT3oqqJ7MALibHdkkoDNQbA== X-Received: by 2002:a17:902:bc46:: with SMTP id t6mr1047383plz.307.1569538282342; Thu, 26 Sep 2019 15:51:22 -0700 (PDT) Received: from localhost (c-71-197-186-152.hsd1.wa.comcast.net. [71.197.186.152]) by smtp.gmail.com with ESMTPSA id 64sm322938pfx.31.2019.09.26.15.51.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Sep 2019 15:51:21 -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: <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> <7h8srjzuen.fsf@baylibre.com> Date: Thu, 26 Sep 2019 15:51:20 -0700 Message-ID: <7hh84yisd3.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: > 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 f= req: 200000 KHz >>>>>>> [ 87.393244] cpufreq: cpufreq_online: CPU0: Unlisted initial freq= uency changed to: 408000 KHz >>>>>>> [ 87.469777] cpufreq: cpufreq_online: CPU4: Running at unlisted f= req: 12000 KHz >>>>>>> [ 87.488595] cpu cpu4: _generic_set_opp_clk_only: failed to set c= lock rate: -22 >>>>>>> [ 87.491881] cpufreq: __target_index: Failed to change cpu freque= ncy: -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= =3Dn) >>>>>> 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 alw= ays >>>>>> 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 n= ot >>>>>> 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 implementat= ion >>>>> 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 u= p), >>>>> 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 it= s=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. This is now failing in the v5.2 stable tree. Any suggestions on what to do? otherwise, I'll just need to disable this board. Or, if someone wants to donate a new rk3399-firefly for my lab, I'd be glad to try replacing it. Kevin From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Hilman Subject: Re: CPUfreq fail on rk3399-firefly Date: Thu, 26 Sep 2019 15:51:20 -0700 Message-ID: <7hh84yisd3.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> <7h8srjzuen.fsf@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7h8srjzuen.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 S2V2aW4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT4gd3JpdGVzOgoKPiBLZXZpbiBIaWxt YW4gPGtoaWxtYW5AYmF5bGlicmUuY29tPiB3cml0ZXM6Cj4KPj4gS2V2ZXIgWWFuZyA8a2V2ZXIu eWFuZ0Byb2NrLWNoaXBzLmNvbT4gd3JpdGVzOgo+Pgo+Pj4gSGkgS2V2aW4sIEhlaWtvLAo+Pj4K Pj4+IE9uIDIwMTkvOC8yMiDkuIrljYgyOjU5LCBLZXZpbiBIaWxtYW4gd3JvdGU6Cj4+Pj4gSGkg SGVpa28sCj4+Pj4KPj4+PiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPiB3cml0ZXM6 Cj4+Pj4KPj4+Pj4gQW0gRGllbnN0YWcsIDEzLiBBdWd1c3QgMjAxOSwgMTk6MzU6MzEgQ0VTVCBz Y2hyaWViIEtldmluIEhpbG1hbjoKPj4+Pj4+IFsgcmVzZW50IHdpdGggY29ycmVjdCBhZGRyIGZv ciBsaW51eC1yb2NrY2hpcCBsaXN0IF0KPj4+Pj4+Cj4+Pj4+PiBNYXJrIEJyb3duIDxicm9vbmll QGtlcm5lbC5vcmc+IHdyaXRlczoKPj4+Pj4+Cj4+Pj4+Pj4gT24gVGh1LCBKdWwgMTgsIDIwMTkg YXQgMDQ6Mjg6MDhBTSAtMDcwMCwga2VybmVsY2kub3JnIGJvdCB3cm90ZToKPj4+Pj4+Pgo+Pj4+ Pj4+IFRvZGF5J3MgLW5leHQgc3RhcnRlZCBmYWlsaW5nIHRvIGJvb3QgZGVmY29uZmlnIG9uIHJr MzM5OS1maXJlZmx5Ogo+Pj4+Pj4+Cj4+Pj4+Pj4+IGFybTY0Ogo+Pj4+Pj4+PiAgICAgIGRlZmNv bmZpZzoKPj4+Pj4+Pj4gICAgICAgICAgZ2NjLTg6Cj4+Pj4+Pj4+ICAgICAgICAgICAgICByazMz OTktZmlyZWZseTogMSBmYWlsZWQgbGFiCj4+Pj4+Pj4gSXQgaGl0cyBhIEJVRygpIHRyeWluZyB0 byBzZXQgdXAgY3B1ZnJlcToKPj4+Pj4+Pgo+Pj4+Pj4+IFsgICA4Ny4zODE2MDZdIGNwdWZyZXE6 IGNwdWZyZXFfb25saW5lOiBDUFUwOiBSdW5uaW5nIGF0IHVubGlzdGVkIGZyZXE6IDIwMDAwMCBL SHoKPj4+Pj4+PiBbICAgODcuMzkzMjQ0XSBjcHVmcmVxOiBjcHVmcmVxX29ubGluZTogQ1BVMDog VW5saXN0ZWQgaW5pdGlhbCBmcmVxdWVuY3kgY2hhbmdlZCB0bzogNDA4MDAwIEtIego+Pj4+Pj4+ IFsgICA4Ny40Njk3NzddIGNwdWZyZXE6IGNwdWZyZXFfb25saW5lOiBDUFU0OiBSdW5uaW5nIGF0 IHVubGlzdGVkIGZyZXE6IDEyMDAwIEtIego+Pj4+Pj4+IFsgICA4Ny40ODg1OTVdIGNwdSBjcHU0 OiBfZ2VuZXJpY19zZXRfb3BwX2Nsa19vbmx5OiBmYWlsZWQgdG8gc2V0IGNsb2NrIHJhdGU6IC0y Mgo+Pj4+Pj4+IFsgICA4Ny40OTE4ODFdIGNwdWZyZXE6IF9fdGFyZ2V0X2luZGV4OiBGYWlsZWQg dG8gY2hhbmdlIGNwdSBmcmVxdWVuY3k6IC0yMgo+Pj4+Pj4+IFsgICA4Ny40OTUzMzVdIC0tLS0t LS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+Pj4+Pj4+IFsgICA4Ny40OTY4MjFdIGtl cm5lbCBCVUcgYXQgZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYzoxNDM4IQo+Pj4+Pj4+IFsgICA4 Ny40OTg0NjJdIEludGVybmFsIGVycm9yOiBPb3BzIC0gQlVHOiAwIFsjMV0gUFJFRU1QVCBTTVAK Pj4+Pj4+Pgo+Pj4+Pj4+IEknbSBzdHJ1Z2dsaW5nIHRvIHNlZSBhbnl0aGluZyByZWxldmFudCBp biB0aGUgZGlmZiBmcm9tIHllc3RlcmRheSwgdGhlCj4+Pj4+Pj4gdW5saXN0ZWQgZnJlcXVlbmN5 IHdhcm5pbmdzIHdlcmUgdGhlcmUgaW4gdGhlIGxvZ3MgeWVzdGVyZGF5IGJ1dCBubyBvb3BzCj4+ Pj4+Pj4gYW5kIEknbSBub3Qgc2VlaW5nIGFueSBjaGFuZ2VzIGluIGNwdWZyZXEsIGNsayBvciBh bnl0aGluZyByZWxldmFudAo+Pj4+Pj4+IGxvb2tpbmcuCj4+Pj4+Pj4KPj4+Pj4+PiBGdWxsIGJv b3Rsb2cgYW5kIG90aGVyIGluZm8gY2FuIGJlIGZvdW5kIGhlcmU6Cj4+Pj4+Pj4KPj4+Pj4+PiAJ aHR0cHM6Ly9rZXJuZWxjaS5vcmcvYm9vdC9pZC81ZDMwMmQ4MzU5YjUxNDk4ZDA0OWU5ODMvCj4+ Pj4+PiBJIGNvbmZpcm0gdGhhdCBkaXNhYmxpbmcgQ1BVZnJlcSBpbiB0aGUgZGVmY29uZmlnIChD T05GSUdfQ1BVX0ZSRVE9bikKPj4+Pj4+IG1ha2VzIHRoZSBmaXJlZmx5IGJvYXJkIHN0YXJ0IHdv cmtpbmcgYWdhaW4uCj4+Pj4+Pgo+Pj4+Pj4gTm90ZSB0aGF0IHRoZSBkZWZhdWx0IGRlZmNvbmZp ZyBlbmFibGVzIHRoZSAicGVyZm9ybWFuY2UiIENQVWZyZXEKPj4+Pj4+IGdvdmVybm9yIGFzIHRo ZSBkZWZhdWx0IGdvdmVybm9yLCBzbyBkdXJpbmcga2VybmVsIGJvb3QsIGl0IHdpbGwgYWx3YXlz Cj4+Pj4+PiBzd2l0Y2ggdG8gdGhlIG1heCBmcmVxdWVuY3kuCj4+Pj4+Pgo+Pj4+Pj4gRm9yIGZ1 biwgSSBzZXQgdGhlIGRlZmF1bHQgZ292ZXJub3IgdG8gInVzZXJzcGFjZSIgc28gdGhlIGtlcm5l bAo+Pj4+Pj4gd291bGRuJ3QgbWFrZSBhbnkgT1BQIGNoYW5nZXMsIGFuZCB0aGF0IGxlYWRzIHRv IGEgc2xpZ2h0bHkgbW9yZQo+Pj4+Pj4gaW5mb3JtYXRpdmUgc3BsYXRbMV0KPj4+Pj4+Cj4+Pj4+ PiBUaGVyZSBpcyBzdGlsbCBhbiBPUFAgY2hhbmdlIGhhcHBlbmluZyBiZWNhdXNlIHRoZSBkZXRl Y3RlZCBPUFAgaXMgbm90Cj4+Pj4+PiBvbmUgdGhhdCdzIGxpc3RlZCBpbiB0aGUgdGFibGUsIHNv IGl0IHRyaWVzIHRvIGNoYW5nZSB0byBhIGxpc3RlZCBPUFAKPj4+Pj4+IGFuZCBmYWlscyBpbiB0 aGUgYm93ZWxzIG9mIGNsa19zZXRfcmF0ZSgpCj4+Pj4+IFRob3VnaCBJIHRoaW5rIHRoYXQgbWln aHQgb25seSBiZSBhIHN5bXB0b20gYXMgd2VsbC4KPj4+Pj4gQm90aCB0aGUgUExMIHNldHRpbmcg Y29kZSBhcyB3ZWxsIGFzIHRoZSBhY3R1YWwgY3B1LWNsb2NrIGltcGxlbWVudGF0aW9uCj4+Pj4+ IGlzIHVuY2hhbmdlZCBzaW5jZSAyMDE3IChhbmQgcnVucyBqdXN0IGZpbmUgb24gYWxsIGJvYXJk cyBpbiBteSBmYXJtKS4KPj4+Pj4KPj4+Pj4gT25lIHNvdXJjZSBmb3IgdGhlc2UgaXNzdWVzIGlz IG9mdGVuIHRoZSByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBjcHUKPj4+Pj4gZ29pbmcgaGF5d2ly ZSAtIGFrYSB0aGUgdm9sdGFnZSBub3QgbWF0Y2hpbmcgdGhlIG9wcC4KPj4+Pj4KPj4+Pj4gQXMg aW4gdGhpcyBlcnJvci1jYXNlIGl0J3MgQ1BVNCBiZWluZyBzZXQsIHRoaXMgd291bGQgbWVhbiBp dCBtaWdodAo+Pj4+PiBiZSB0aGUgYmlnIGNsdXN0ZXIgc3VwcGxpZWQgYnkgdGhlIGV4dGVybmFs IHN5cjgyNSAoZmFuNTM1NSBjbG9uZSkKPj4+Pj4gdGhhdCBtaWdodCBhY3QgdXAuIEluIHRoZSBG aXJlZmx5LXJrMzM5OSBjYXNlIHRoaXMgaXMgZXZlbiBzdHJhbmdlci4KPj4+Pj4KPj4+Pj4gVGhl cmUgaXMgYSBkaXNjcmVwYW5jeSBiZXR3ZWVuIHRoZSAiZmNzLHN1c3BlbmQtdm9sdGFnZS1zZWxl Y3RvciIKPj4+Pj4gYmV0d2VlbiBkaWZmZXJlbnQgYm9vdGxvYWRlciB2ZXJzaW9ucyAoaG93IHRo ZSBzZWxlY3Rpb24tcGluIGlzIHNldCB1cCksCj4+Pj4+IHNvIHRoZSBrZXJuZWwgbWlnaHQgYWN0 dWFsbHkgd3JpdGUgaGlzIHJlcXVlc3RlZCB2b2x0YWdlIHRvIHRoZSB3cm9uZwo+Pj4+PiByZWdp c3RlciAobm90IHRoZSBvbmUgZm9yIGFjdHVhbCB2b2x0YWdlLCBidXQgdGhlIHNlY29uZCBzZXQg dXNlZCBmb3IKPj4+Pj4gdGhlIHN1c3BlbmQgdm9sdGFnZSkuCj4+Pj4+Cj4+Pj4+IERpZCB5b3Ug YnkgY2hhbmNlIHN3YXAgYm9vdGxvYWRlcnMgYXQgc29tZSBwb2ludCBpbiByZWNlbnQgcGFzdD8K Pj4+PiBObywgaGF2ZW4ndCB0b3VjaGVkIGJvb3Rsb2FkZXIgc2luY2UgSSBpbml0aWFsbHkgc2V0 dXAgdGhlIGJvYXJkLgo+Pj4KPj4+IFRoZSBDUFUgdm9sdGFnZSBkb2VzIG5vdCBhZmZlY3QgYnkg Ym9vdGxvYWRlciBmb3Iga2VybmVsIHNob3VsZCBoYXZlIGl0cyAKPj4+IG93biBvcHAtdGFibGUs Cj4+Pgo+Pj4gdGhlIGJvb3Rsb2FkZXIgbWF5IG9ubHkgYWZmZWN0IHRoZSBjZW50ZXIvbG9naWMg cG93ZXIgc3VwcGx5Lgo+Pj4KPj4+Pgo+Pj4+PiBJJ2QgYXNzdW1lIFsyXSBtaWdodCBhY3R1YWxs eSBiZSB0aGUgc2FtZSBpc3N1ZSBsYXN0IHllYXIsIHRob3VnaAo+Pj4+PiB0aGUgQ0ktbG9ncyBh cmUgbm90IGF2YWlsYWJsZSBhbnltb3JlIGl0IHNlZW1zLgo+Pj4+Pgo+Pj4+PiBDb3VsZCB5b3Ug dHJ5IHRvIHNldCB0aGUgdmRkX2NwdV9iIHJlZ3VsYXRvciB0byBkaXNhYmxlZCwgc28gdGhhdAo+ Pj4+PiBjcHVmcmVxIGZvciB0aGlzIGNsdXN0ZXIgZGVmZXJzIGFuZCBzZWUgd2hhdCBoYXBwZW5z Pwo+Pj4+IFllcywgdGhpcyBjaGFuZ2VbMV0gZGVmaW5pdGVseSBtYWtlcyB0aGluZ3MgYm9vdCBy ZWxpYWJseSBhZ2Fpbiwgc28KPj4+PiB0aGVyZSdzIGRlZmludGllbHkgc29tZXRoaW5nIGEgYml0 IHVuc3RhYmxlIHdpdGggdGhpcyByZWd1bGF0b3IsIGF0Cj4+Pj4gbGVhc3Qgb24gdGhpcyBmaXJl Zmx5Lgo+Pj4KPj4+IElzIGl0IHBvc3NpYmxlIHRvIHRhcmdldCB3aGljaCBwYXRjaCBpbnRyb2R1 Y2UgdGhpcyBidWc/IFRoaXMgYm9hcmTCoCAKPj4+IHNob3VsZCBoYXZlIHdvcmsgY29ycmVjdGx5 IGZvciBhIGxvbmcgdGltZSB3aXRoIHVwc3RyZWFtIHNvdXJjZSBjb2RlLgo+Pgo+PiBVbmZvcnR1 bmF0ZWx5LCBpdCBzZWVtcyB0byBiZSBhIHJlZ3VsYXIsIGJ1dCBpbnRlcm1pdHRlbnQgZmFpbHVy ZSwgc28KPj4gYmlzZWN0aW9uIGlzIG5vdCBwcm9kdWNpbmcgYW55dGhpbmcgcmVsaWFibGUuCj4+ Cj4+IFlvdSBjYW4gc2VlIHRoYXQgYm90aCBpbiBtYWlubGluZVsxXSBhbmQgaW4gbGludXgtbmV4 dFsyXSB0aGVyZSBhcmUKPj4gcGVyaW9kaWMgZmFpbHVyZXMsIGJ1dCBpdCdzIGhhcmQgdG8gc2Vl IGFueSBwYXR0ZXJucy4KPgo+IEV2ZW4gd29yc2UsIEkgKHJlKXRlc3RlZCBtYWlubGluZSBmb3Ig dmVyc2lvbnMgdGhhdCB3ZXJlIHByZXZpb3VzbHkKPiBwYXNzaW5nICh2NS4yLCB2NS4zLXJjNSkg YW5kIHRoZXkgYXJlIGFsc28gZmFpbGluZyBub3cuCj4KPiBUaGV5IHdvcmsgYWdhaW4gaWYgSSBk aXNhYmxlIHRoYXQgcmVndWxhdG9yIGFzIHN1Z2dlc3RlZCBieSBIZWlrby4KPgo+IFNvIHRoaXMg aXMgaW5jcmVhc2luZ2x5IHBvaW50aW5nIHRvIGZhaWxpbmcgaGFyZHdhcmUuCgpUaGlzIGlzIG5v dyBmYWlsaW5nIGluIHRoZSB2NS4yIHN0YWJsZSB0cmVlLgoKQW55IHN1Z2dlc3Rpb25zIG9uIHdo YXQgdG8gZG8/ICBvdGhlcndpc2UsIEknbGwganVzdCBuZWVkIHRvIGRpc2FibGUKdGhpcyBib2Fy ZC4KCk9yLCBpZiBzb21lb25lIHdhbnRzIHRvIGRvbmF0ZSBhIG5ldyByazMzOTktZmlyZWZseSBm b3IgbXkgbGFiLCBJJ2QgYmUKZ2xhZCB0byB0cnkgcmVwbGFjaW5nIGl0LgoKS2V2aW4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK