From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: Funky new vblank counter regressions in Linux 4.4-rc1 Date: Mon, 23 Nov 2015 18:58:34 +0100 Message-ID: <565353CA.5010909@gmail.com> References: <564E0AF4.3050406@gmail.com> <20151119182051.GU4437@intel.com> <564E1F18.5070508@gmail.com> <20151119194557.GB4437@intel.com> <564F3B42.5050803@gmail.com> <20151120153435.GR4437@intel.com> <56532F69.9080001@gmail.com> <20151123155109.GB4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 450CA6E66C for ; Mon, 30 Nov 2015 12:13:54 -0800 (PST) Resent-Message-ID: <20151130201327.GH4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org In-Reply-To: <20151123155109.GB4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: =?UTF-8?Q?Michel_D=c3=a4nzer?= List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMS8yMy8yMDE1IDA0OjUxIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gT24gTW9u LCBOb3YgMjMsIDIwMTUgYXQgMDQ6MjM6MjFQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3cm90ZToK Pj4gT24gMTEvMjAvMjAxNSAwNDozNCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+Pj4gT24g RnJpLCBOb3YgMjAsIDIwMTUgYXQgMDQ6MjQ6NTBQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3cm90 ZToKPj4KPj4gLi4uCj4+IE9rLCBidXQgd2h5IHdvdWxkIHRoYXQgYmUgYSBiYWQgdGhpbmc/IEkg dGhpbmsgd2Ugd2FudCBpdCB0byB0aGluayBpdCBpcwo+PiBpbiB0aGUgcHJldmlvdXMgZnJhbWUg aWYgaXQgaXMgY2FsbGVkIG91dHNpZGUgdGhlIHZibGFuayBpcnEgY29udGV4dC4KPj4gVGhlIG9u bHkgcmVhc29uIHdlIGZ1ZGdlIGl0IHRvIHRoZSBuZXh0IGZyYW1lcyB2YmxhbmsgaWYgaSB2Ymxh bmsgaXJxIGlzCj4+IGJlY2F1c2Ugd2Uga25vdyB0aGUgdmJsYW5rIGlycSBoYW5kbGVyIHdlIGFy ZSBleGVjdXRpbmcgYXRtLiB3YXMgbWVhbnQKPj4gdG8gZXhlY3V0ZSB3aXRoaW4gdGhlIHVwY29t aW5nIHZibGFuayBmb3IgdGhlIG5leHQgZnJhbWUsIHNvIHdlIGZ1ZGdlCj4+IHRoZSBzY2Fub3V0 IHBvc2l0aW9ucyBhbmQgdGhlcmVieSB0aW1lc3RhbXAgdG8gY29ycmVzcG9uZCB0byB0aGF0IG5l dwo+PiBmcmFtZS4gQnV0IGlmIHNvbWV0aGluZyBjYWxsZWQgb3V0c2lkZSBpcnEgY29udGV4dCBp dCBzaG91bGQgZ2V0IGEKPj4gc2Nhbm91dCBwb3NpdGlvbi90aW1lc3RhbXAgdGhhdCBjb3JyZXNw b25kcyB0byAicmVhbGl0eSIuCj4KPiBJdCB3b3VsZCBiZSBhIGJhZCB0aGluZyBzaW5jZSBpdCB3 b3VsZCBjYXVzZSB0aGUgdGltZXN0YW1wIHRvIGp1bXAKPiBiYWNrd2FyZHMsIGFuZCB0aGF0IHdv dWxkIGFsc28gY2F1c2UgdGhlIGZyYW1lIGNvdW50IGd1ZXNzdGltYXRlIHRvIGdvCj4gYmFja3dh cmRzLgo+CgpCdXQgb25seSBpZiB3ZSBkb24ndCB1c2UgdGhlIGRldi0+ZHJpdmVyLT5nZXRfdmJs YW5rX2NvdW50ZXIoKSBtZXRob2QsIAp3aGljaCB3ZSB0cnkgdG8gdXNlIG9uIEFNRC4gQWxzbyBk ZXYtPnZibGFua190aW1lX2xvY2sgc2hvdWxkIHByb3RlY3QgdXMgCmZyb20gY29uY3VycmVudCBl eGVjdXRpb24gb2YgdGhlIHZibGFuayBjb3VudGluZy90aW1lc3RhbXBpbmcgaW4gaXJxIApjb250 ZXh0IGFuZCBub24taXJxIGNvbnRleHQ/IEF0IGxlYXN0IHRoYXQgd2FzIG9uZSBvZiB0aGUgcHVy cG9zZXMgb2YgCnRoYXQgbG9jayBpbiB0aGUgcGFzdD8KCi1tYXJpbwoKPj4KPj4gSXQgd291bGQg bWF5YmUgYmUgYSBwcm9ibGVtIHRvIGdldCBkaWZmZXJlbnQgYW5zd2VycyBmb3IgYSBxdWVyeSBh dCB0aGUKPj4gc2FtZSBzY2Fub3V0IHBvc2l0aW9uIGlmIHdlIHVzZWQgLmdldF9zY2Fub3V0X3Bv c2l0aW9uKCkgZm9yIHNvbWV0aGluZwo+PiBlbHNlIHRoYW4gZm9yIGNhbGN1bGF0aW5nIHZibGFu ayB0aW1lc3RhbXBzLCBidXQgd2UgZG9uJ3QgZG8gdGhhdCBhdG0uCj4+Cj4+IE1heWJlIGknbSBv dmVybG9va2luZyBzb21ldGhpbmcgaGVyZSByZWxhdGVkIHRvIHRoZSBzb21ld2hhdCByZXdyaXR0 ZW4KPj4gY29kZSBmcm9tIHRoZSBsYXN0IHllYXIgb3Igc28/IEJ1dCBpbiB0aGUgb3JpZ2luYWwg ZGVzaWduIHRoaXMgd291bGQgYmUKPj4gZXhhY3RseSB3aGF0IGkgaW50ZW5kZWQ/Cj4+Cj4+IC4u Lgo+Pgo+Pj4+IFNvIGl0J3MgZ29vZCBlbm91Z2ggZm9yIHR5cGljYWwgZGVza3RvcAo+Pj4+IGFw cGxpY2F0aW9ucy9jb21wb3NpdG9ycy9nYW1lcy9tZWRpYSBwbGF5ZXJzLCBhbmQgYSBuaWNlIGlt cHJvdmVtZW50Cj4+Pj4gb3ZlciB0aGUgcHJldmlvdXMgc3RhdGUsIGJ1dCBub3QgcXVpdGUgc3Vm ZmljaWVudCBmb3IgYXBwbGljYXRpb25zIHRoYXQKPj4+PiBuZWVkIGxvbmcgdGltZSBjb25zaXN0 ZW50IHZibGFuayBjb3VudHMgZm9yIGxvbmcgd2FpdHMgb2YgbXVsdGlwbGUKPj4+PiBzZWNvbmRz IG9yIGV2ZW4gbWludXRlcy4gU28gaXQncyBzdGlsbCBnb29kIHRvIGhhdmUgaHcgY291bnRlcnMg aWYgd2UKPj4+PiBjYW4gZ2V0IHNvbWUgdGhhdCBhcmUgcmVsaWFibGUgZW5vdWdoLgo+Pj4KPj4+ IEFoLCBJIGRpZG4ndCByZWFsaXplIHlvdSBjYXJlIGFib3V0IHNtYWxsIGVycm9ycyBpbiB0aGUg Y291bnRlciBmb3IKPj4+IHN1Y2ggbG9uZyBwZXJpb2RzIG9mIHZibGFuayBvZmYuCj4+Pgo+Pgo+ PiBBY3R1YWxseSwgeW91IGFyZSByaWdodCwgaSB3YXMgc3R1cGlkIC0gbm90IGVub3VnaCBzbGVl cCBsYXN0IGZyaWRheS4gSQo+PiBkbyBjYXJlIGFib3V0IHN1Y2ggc21hbGwgZXJyb3JzLCBidXQg dGhlIGxvbmcgdmJsYW5rIG9mZiBwZXJpb2RzIGRvbid0Cj4+IG1hdHRlciBhdCBhbGwgdGhlIHdh eSBteSBzb2Z0d2FyZSB3b3Jrcy4gSSBxdWVyeSB0aGUgY3VycmVudCBjb3VudCBhbmQKPj4gdGlt ZXN0YW1wIChnbFhHZXRTeW5jVmFsdWVzT01MKSwgY2FsY3VsYXRlIGEgdGFyZ2V0IGNvdW50IGJh c2VkIG9uIHRob3NlCj4+IGFuZCB0aGVuIHNjaGVkdWxlIGEgc3dhcCBmb3IgdGhhdCB0YXJnZXQg Y291bnQgdmlhIGdsWFN3YXBCdWZmZXJzTXNjT01MLgo+PiBUaGF0IHN3YXBidWZmZXJzIGNhbGwg d2lsbCBrZWVwIHZibGFuayBpcnFzIG9uIHVudGlsIHRoZSBrbXMgcGFnZWZsaXAgaXMKPj4gcXVl dWVkLiBTbyBpIG9ubHkgY2FyZSBhYm91dCB2YmxhbmsgY291bnRzL3RpbWVzdGFtcHMgYmVpbmcg Y29uc2lzdGVudAo+PiBmb3Igc2hvcnQgYW1vdW50cyBvZiB0aW1lLCB0eXBpY2FsbHkgMSB2aWRl byByZWZyZXNoIGZyb20gdmJsYW5rIHF1ZXJ5Cj4+IHRvIHF1ZXVlaW5nIGEgdmJsYW5rIGV2ZW50 LCBhbmQgdGhlbiBmcm9tIHJlY2VwdGlvbiBvZiB0aGF0Cj4+IGV2ZW50L3F1ZXVpbmcgdGhlIHBh Z2VmbGlwIHRvIHBhZ2VmbGlwIGNvbXBsZXRpb24gZXZlbnQuIFNvIGV2ZW4gaWYgdGhlCj4+IHN5 c3RlbSB3b3VsZCBiZSBoZWF2aWx5IGxvYWRlZCBhbmQgbXkgY29kZSB3b3VsZCBoYXZlIGJpZyBw cmVlbXB0aW9uCj4+IGRlbGF5cyBpIHRoaW5rIGNvdW50cyB0aGF0IGFyZSBjb25zaXN0ZW50IG92 ZXIgYSBmZXcgc2Vjb25kcyB3b3VsZCBiZQo+PiBlbm91Z2ggdG8ga2VlcCB0aGluZ3Mgd29ya2lu Zy4gT3RoZXJ3aXNlIGl0IHdvdWxkbid0IHdvcmsgbm93IGVpdGhlcgo+PiB3aXRoIGEgdmJsYW5r IG9mZiBhZnRlciA1IHNlY29uZHMgYW5kIG5vdXZlYXUgbm90IGhhdmluZyB2YmxhbmsgaHcgY291 bnRlcnMuCj4+Cj4+IC1tYXJpbwo+Pgo+Pgo+Pj4+Cj4+Pj4gLW1hcmlvCj4+Pj4KPj4+Pgo+Pj4+ Pj4KPj4+Pj4+IC1tYXJpbwo+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gSXQgYWxtb3N0IHNvcnQg b2Ygd29ya3Mgb24gdGhlIHJzNjAwIGNvZGUgcGF0aCwgYnV0IGkgbmVlZCBhIGJpdCBvZiBpbmZv Cj4+Pj4+Pj4+IGZyb20geW91Ogo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAxLiBUaGVyZSdzIHRoaXMgcmVn aXN0ZXIgZnJvbSB0aGUgb2xkIHNwZWNzIGZvciBtNzYucGRmLCB3aGljaCBpcyBub3QKPj4+Pj4+ Pj4gcGFydCBvZiB0aGUgY3VycmVudCByZWdpc3RlciBkZWZpbmVzIGZvciByYWRlb24ta21zOgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiAiRDFDUlRDX1NUQVRVU19WRl9DT1VOVCAtIFJXIC0gMzIgYml0cyAt IFtHcHVGME1NUmVnOjB4NjBBOF0iCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IEl0IGNvbnRhaW5zIHRoZSBs b3dlciAxNiBiaXRzIG9mIGZyYW1lY291bnRlciBhbmQgdGhlIDEzIGJpdHMgb2YKPj4+Pj4+Pj4g dmVydGljYWwgc2Nhbm91dCBwb3NpdGlvbi4gSXQgc2VlbXMgdG8gZ2l2ZSB0aGUgc2FtZSByZWFk aW5ncyBhcyB0aGUgMjQKPj4+Pj4+Pj4gYml0IFJfMDA2MEE0X0QxQ1JUQ19TVEFUVVNfRlJBTUVf Q09VTlQgd2UgdXNlIGZvciB0aGUgaHcgY291bnRlci4gVGhpcwo+Pj4+Pj4+PiB3b3VsZCBjb21l IGhhbmR5Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBEb2VzIEV2ZXJncmVlbiBhbmQgbGF0ZXIgaGF2ZSBh IHNhbWUvc2ltaWxhciByZWdpc3RlciBhbmQgd2hlcmUgaXMgaXQ/Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IDIuIFRoZSBodyBmcmFtZWNvdW50ZXIgc2VlbXMgdG8gaW5jcmVtZW50IHdoZW4gdGhlIHZlcnRp Y2FsIHNjYW5vdXQKPj4+Pj4+Pj4gcG9zaXRpb24gd3JhcHMgYmFjayBmcm9tIChWVE9UQUwgLSAx KSB0byAwLCBhdCBsZWFzdCBvbiB0aGUgb25lIERDRS0zCj4+Pj4+Pj4+IGdwdSBpIHRlc3RlZCBz byBmYXIuIElzIHRoaXMgc28gb24gYWxsIGFzaWNzPyBBbmQgaXMgdGhlIGh3IGNvdW50ZXIKPj4+ Pj4+Pj4gaW5jcmVtZW50IGhhcHBlbmluZyBleGFjdGx5IGF0IHRoZSBtb21lbnQgdGhhdCB2ZXJ0 aWNhbCBzY2Fub3V0IHBvc2l0aW9uCj4+Pj4+Pj4+IGp1bXBzIGJhY2sgdG8gemVybywgaWUuIGJv dGggZXZlbnRzIGFyZSBkcml2ZW4gYnkgdGhlIHNhbWUgc2lnbmFsPyBPciBpcwo+Pj4+Pj4+PiB0 aGUgZnJhbWVjb3VudGVyIGluY3JlbWVudCBqdXN0IGhhcHBlbmluZyBzb21ld2hlcmUgaW5zaWRl IGVpdGhlcgo+Pj4+Pj4+PiBzY2FubGluZSBWVE9UQUwtMSBvciBzY2FubGluZSAwPwo+Pj4+Pj4+ Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJZiB3ZSBjYW4gZml4IHRoaXMgYW5kIGdldCBpdCBpbnRvIHJj MiBvciByYzMgdGhlbiB3ZSBjb3VsZCBhdm9pZCBhIGJhZAo+Pj4+Pj4+PiByZWdyZXNzaW9uIGFu ZCB3aXRoIGEgYml0IG9mIGx1Y2sgYXQgdGhlIHNhbWUgdGltZSBpbXByb3ZlIGJ5IGJlaW5nIGFi bGUKPj4+Pj4+Pj4gdG8gc2V0IGRldi0+dmJsYW5rX2Rpc2FibGVfaW1tZWRpYXRlID0gdHJ1ZSB0 aGVuIGFuZCBhbGxvdyB2YmxhbmsgaXJxcwo+Pj4+Pj4+PiB0byBnZXQgdHVybmVkIG9mZiBtb3Jl IGFnZ3Jlc3NpdmVseSBmb3IgYSBiaXQgb2YgZXh0cmEgcG93ZXIgc2F2aW5nLgo+Pj4+Pj4+Pgo+ Pj4+Pj4+PiB0aGFua3MsCj4+Pj4+Pj4+IC1tYXJpbwo+Pj4+Pj4+Cj4+Pj4+Pj4+IC0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9pcnEuYwo+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2lycS5jCj4+Pj4+Pj4+IEBAIC0xNzIsOSArMTcyLDExIEBAIHN0YXRpYyB2b2lkIGRybV91cGRh dGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBl LAo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFncykKPj4+Pj4+Pj4gICAgICB7Cj4+Pj4+Pj4+ICAgICAgICAgICAgIHN0cnVj dCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKPj4+Pj4+Pj4g LSAgICAgICB1MzIgY3VyX3ZibGFuaywgZGlmZjsKPj4+Pj4+Pj4gKyAgICAgICB1MzIgY3VyX3Zi bGFuaywgZGlmZiA9IDA7Cj4+Pj4+Pj4+ICAgICAgICAgICAgIGJvb2wgcmM7Cj4+Pj4+Pj4+ICAg ICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHRfdmJsYW5rOwo+Pj4+Pj4+PiArICAgICAgIGNvbnN0 IHN0cnVjdCB0aW1ldmFsICp0X29sZDsKPj4+Pj4+Pj4gKyAgICAgICB1NjQgZGlmZl9uczsKPj4+ Pj4+Pj4gICAgICAgICAgICAgaW50IGNvdW50ID0gRFJNX1RJTUVTVEFNUF9NQVhSRVRSSUVTOwo+ Pj4+Pj4+PiAgICAgICAgICAgICBpbnQgZnJhbWVkdXJfbnMgPSB2YmxhbmstPmZyYW1lZHVyX25z Owo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBAQCAtMTk1LDEzICsxOTcsMTUgQEAgc3RhdGljIHZvaWQgZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUsCj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgcmMgPSBkcm1fZ2V0X2xhc3RfdmJs dGltZXN0YW1wKGRldiwgcGlwZSwgJnRfdmJsYW5rLCBmbGFncyk7Cj4+Pj4+Pj4+ICAgICAgICAg ICAgIH0gd2hpbGUgKGN1cl92YmxhbmsgIT0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRl cihkZXYsIHBpcGUpICYmIC0tY291bnQgPiAwKTsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gLSAgICAgICBp ZiAoZGV2LT5tYXhfdmJsYW5rX2NvdW50ICE9IDApIHsKPj4+Pj4+Pj4gLSAgICAgICAgICAgICAg IC8qIHRydXN0IHRoZSBodyBjb3VudGVyIHdoZW4gaXQncyBhcm91bmQgKi8KPj4+Pj4+Pj4gLSAg ICAgICAgICAgICAgIGRpZmYgPSAoY3VyX3ZibGFuayAtIHZibGFuay0+bGFzdCkgJiBkZXYtPm1h eF92YmxhbmtfY291bnQ7Cj4+Pj4+Pj4+IC0gICAgICAgfSBlbHNlIGlmIChyYyAmJiBmcmFtZWR1 cl9ucykgewo+Pj4+Pj4+PiAtICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRf b2xkOwo+Pj4+Pj4+PiAtICAgICAgICAgICAgICAgdTY0IGRpZmZfbnM7Cj4+Pj4+Pj4+IC0KPj4+ Pj4+Pj4gKyAgICAgICAvKgo+Pj4+Pj4+PiArICAgICAgICAqIEFsd2F5cyB1c2UgdmJsYW5rIHRp bWVzdGFtcGluZyBiYXNlZCBtZXRob2QgaWYgc3VwcG9ydGVkIHRvIHJlamVjdAo+Pj4+Pj4+PiAr ICAgICAgICAqIHJlZHVuZGFudCB2YmxhbmsgaXJxcy4gRS5nLiwgQU1EIGhhcmR3YXJlIG5lZWRz IHRoaXMgdG8gbm90IHNjcmV3IHVwCj4+Pj4+Pj4+ICsgICAgICAgICogZHVlIHRvIHNvbWUgaXJx IGhhbmRsaW5nIHF1aXJrLgo+Pj4+Pj4+Cj4+Pj4+Pj4gSG1tLiBJJ20gdGhpbmtpbmcgaXQgd291 bGQgYmUgYmV0dGVyIHRvIHNpbXBseSBub3QgY2xhaW0gdGhhdCB0aGVyZSdzIGEgaHcKPj4+Pj4+ PiBjb3VudGVyIGlmIGl0IGlzbid0IHJlbGlhYmxlLgo+Pj4+Pj4+Cj4+Pj4+Pj4+ICsgICAgICAg ICoKPj4+Pj4+Pj4gKyAgICAgICAgKiBUaGlzIGFsc28gc2V0cyB0aGUgZGlmZiB2YWx1ZSBmb3Ig dXNlIGFzIGZhbGxiYWNrIGJlbG93IGluIGNhc2UgdGhlCj4+Pj4+Pj4+ICsgICAgICAgICogaHcg ZG9lcyBub3Qgc3VwcG9ydCBhIHN1aXRhYmxlIGh3IHZibGFuayBjb3VudGVyLgo+Pj4+Pj4+PiAr ICAgICAgICAqLwo+Pj4+Pj4+PiArICAgICAgIGlmIChyYyAmJiBmcmFtZWR1cl9ucykgewo+Pj4+ Pj4+PiAgICAgICAgICAgICAgICAgICAgIHRfb2xkID0gJnZibGFua3RpbWVzdGFtcChkZXYsIHBp cGUsIHZibGFuay0+Y291bnQpOwo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgIGRpZmZfbnMg PSB0aW1ldmFsX3RvX25zKCZ0X3ZibGFuaykgLSB0aW1ldmFsX3RvX25zKHRfb2xkKTsKPj4+Pj4+ Pj4KPj4+Pj4+Pj4gQEAgLTIxMiwxMSArMjE2LDI4IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVf dmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAqLwo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAg ICAgIGRpZmYgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoZGlmZl9ucywgZnJhbWVkdXJfbnMpOwo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiAtICAgICAgICAgICAgICAgaWYgKGRpZmYgPT0gMCAmJiBmbGFncyAm IERSTV9DQUxMRURfRlJPTV9WQkxJUlEpCj4+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAg IERSTV9ERUJVR19WQkwoImNydGMgJXU6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4iCj4+Pj4+ Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBkaWZmX25zID0gJWxs ZCwgZnJhbWVkdXJfbnMgPSAlZClcbiIsCj4+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGlwZSwgKGxvbmcgbG9uZykgZGlmZl9ucywgZnJhbWVkdXJfbnMpOwo+ Pj4+Pj4+PiAtICAgICAgIH0gZWxzZSB7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICBpZiAoZGlm ZiA9PSAwICYmIGZsYWdzICYgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSkgewo+Pj4+Pj4+PiArICAg ICAgICAgICAgICAgICAgIERSTV9ERUJVR19WQkwoImNydGMgJXU6IFJlZHVuZGFudCB2YmxpcnEg aWdub3JlZC4iCj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgIiBkaWZmX25zID0gJWxsZCwg ZnJhbWVkdXJfbnMgPSAlZClcbiIsCj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgcGlwZSwg KGxvbmcgbG9uZykgZGlmZl9ucywgZnJhbWVkdXJfbnMpOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsg ICAgICAgICAgICAgICAgICAgLyogVHJlYXQgdGhpcyByZWR1bmRhbnQgaW52b2NhdGlvbiBhcyBu by1vcC4gKi8KPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICBXQVJOX09OX09OQ0UoY3VyX3Zi bGFuayAhPSB2YmxhbmstPmxhc3QpOwo+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgIHJldHVy bjsKPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgIH0KPj4+Pj4+Pj4gKyAgICAgICB9Cj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4gKyAgICAgICAvKgo+Pj4+Pj4+PiArICAgICAgICAqIGh3IGNvdW50ZXJzLCBp ZiBtYXJrZWQgYXMgc3VwcG9ydGVkIHZpYSBtYXhfdmJsYW5rX2NvdW50ICE9IDAsCj4+Pj4+Pj4+ ICsgICAgICAgICogKm11c3QqIGluY3JlbWVudCBhdCBsZWFkaW5nIGVkZ2Ugb2YgdmJsYW5rIGFu ZCBpbiBzeW5jIHdpdGgKPj4+Pj4+Pj4gKyAgICAgICAgKiB0aGUgZmlyaW5nIG9mIHRoZSBodyB2 YmxhbmsgaXJxLCBvdGhlcndpc2Ugd2UgaGF2ZSBhIHJhY2UgaGVyZQo+Pj4+Pj4+PiArICAgICAg ICAqIGJldHdlZW4gZ3B1IGFuZCB1cywgd2hlcmUgc21hbGwgdmFyaWF0aW9ucyBpbiBvdXIgZXhl Y3V0aW9uCj4+Pj4+Pj4+ICsgICAgICAgICogdGltaW5nIGNhbiBjYXVzZSBvZmYtYnktb25lIG1p c2NvdW50aW5nIG9mIHZibGFua3MuCj4+Pj4+Pj4+ICsgICAgICAgICovCj4+Pj4+Pj4+ICsgICAg ICAgaWYgKGRldi0+bWF4X3ZibGFua19jb3VudCAhPSAwKSB7Cj4+Pj4+Pj4+ICsgICAgICAgICAg ICAgICAvKiB0cnVzdCB0aGUgaHcgY291bnRlciB3aGVuIGl0J3MgYXJvdW5kICovCj4+Pj4+Pj4+ ICsgICAgICAgICAgICAgICBkaWZmID0gKGN1cl92YmxhbmsgLSB2YmxhbmstPmxhc3QpICYgZGV2 LT5tYXhfdmJsYW5rX2NvdW50Owo+Pj4+Pj4+PiArICAgICAgIH0gZWxzZSBpZiAoIShyYyAmJiBm cmFtZWR1cl9ucykpIHsKPj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAvKiBzb21lIGtpbmQg b2YgZGVmYXVsdCBmb3IgZHJpdmVycyB3L28gYWNjdXJhdGUgdmJsIHRpbWVzdGFtcGluZyAqLwo+ Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSAoZmxhZ3MgJiBEUk1fQ0FMTEVEX0ZS T01fVkJMSVJRKSAhPSAwOwo+Pj4+Pj4+PiAgICAgICAgICAgICB9Cj4+Pj4+Pj4KPj4+Pj4+Pgo+ Pj4+Pgo+Pj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=