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 16:23:21 +0100 Message-ID: <56532F69.9080001@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 30C256E663 for ; Mon, 30 Nov 2015 12:13:25 -0800 (PST) Resent-Message-ID: <20151130201322.GF4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org In-Reply-To: <20151120153435.GR4437@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 T24gMTEvMjAvMjAxNSAwNDozNCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+IE9uIEZyaSwg Tm92IDIwLCAyMDE1IGF0IDA0OjI0OjUwUE0gKzAxMDAsIE1hcmlvIEtsZWluZXIgd3JvdGU6Cgou Li4KCj4+IFdoYXQgd2UgZG8gaW4gcmFkZW9uLWttcyBpcyBzaW1pbGFyLiBJZiBEUk1fQ0FMTEVE X0ZST01fVkJMSVJRIGFuZCB3ZQo+PiBhcmUgbm8gbW9yZSB0aGFuIDElIG9mIHRoZSBkaXNwbGF5 IGhlaWdodCBhd2F5IGZyb20gc3RhcnQgb2YgdmJsYW5rIHdlCj4+IGZ1ZGdlIHNjYW5vdXQgcG9z aXRpb24gaW4gYSB3YXkgc28gdGhhdCB0aGUgdGltZXN0YW1wIGdldHMgY29tcHV0ZWQgZm9yCj4+ IHRoZSBzb29uLXRvLWJlZ2luIHZibGFuaywgbm90IHRoZSBvbGQgb25lLgo+Cj4gVGhlIHByb2Js ZW0gd2l0aCBiYXNpbmcgdGhhdCBmdWRnaW5nIHB1cmVseSBvbiBEUk1fQ0FMTEVEX0ZST01fVkJM SVJRIGlzCj4gdGhhdCBpZiB5b3UgY2FsbCAuZ2V0X3NjYW5vdXRfcG9zaXRvbigpIGZyb20gYSBu b24taXJxIGNvbnRleHQgYmV0d2Vlbgo+IHRoZSBpcnEgZmlyaW5nIGFuZCBzdGFydCBvZiB2Ymxh bmssIHlvdSdsbCB0aGluayB5b3UncmUgc3RpbGwgaW4gdGhlCj4gcHJldmlvdXMgZnJhbWUuIEhl bmNlIG15IHN1Z2dlc3Rpb24gdG8gbm90ZSBkb3duIHRoZSBmcmFtZSBjb3VudGVyIHdoZW4KPiBj YWxsZWQgZnJvbSB0aGUgaXJxLCBhbmQgdGhlbiBrZWVwIGRvaW5nIHRoZSBmdWRnaW5nIHVudGls IHlvdSd2ZSB0cnVseQo+IGNyb3NzZWQgdGhlIHN0YXJ0IG9mIHZibGFuay4KPgoKT2ssIGJ1dCB3 aHkgd291bGQgdGhhdCBiZSBhIGJhZCB0aGluZz8gSSB0aGluayB3ZSB3YW50IGl0IHRvIHRoaW5r IGl0IGlzIAppbiB0aGUgcHJldmlvdXMgZnJhbWUgaWYgaXQgaXMgY2FsbGVkIG91dHNpZGUgdGhl IHZibGFuayBpcnEgY29udGV4dC4gClRoZSBvbmx5IHJlYXNvbiB3ZSBmdWRnZSBpdCB0byB0aGUg bmV4dCBmcmFtZXMgdmJsYW5rIGlmIGkgdmJsYW5rIGlycSBpcyAKYmVjYXVzZSB3ZSBrbm93IHRo ZSB2YmxhbmsgaXJxIGhhbmRsZXIgd2UgYXJlIGV4ZWN1dGluZyBhdG0uIHdhcyBtZWFudCAKdG8g ZXhlY3V0ZSB3aXRoaW4gdGhlIHVwY29taW5nIHZibGFuayBmb3IgdGhlIG5leHQgZnJhbWUsIHNv IHdlIGZ1ZGdlIAp0aGUgc2Nhbm91dCBwb3NpdGlvbnMgYW5kIHRoZXJlYnkgdGltZXN0YW1wIHRv IGNvcnJlc3BvbmQgdG8gdGhhdCBuZXcgCmZyYW1lLiBCdXQgaWYgc29tZXRoaW5nIGNhbGxlZCBv dXRzaWRlIGlycSBjb250ZXh0IGl0IHNob3VsZCBnZXQgYSAKc2Nhbm91dCBwb3NpdGlvbi90aW1l c3RhbXAgdGhhdCBjb3JyZXNwb25kcyB0byAicmVhbGl0eSIuCgpJdCB3b3VsZCBtYXliZSBiZSBh IHByb2JsZW0gdG8gZ2V0IGRpZmZlcmVudCBhbnN3ZXJzIGZvciBhIHF1ZXJ5IGF0IHRoZSAKc2Ft ZSBzY2Fub3V0IHBvc2l0aW9uIGlmIHdlIHVzZWQgLmdldF9zY2Fub3V0X3Bvc2l0aW9uKCkgZm9y IHNvbWV0aGluZyAKZWxzZSB0aGFuIGZvciBjYWxjdWxhdGluZyB2YmxhbmsgdGltZXN0YW1wcywg YnV0IHdlIGRvbid0IGRvIHRoYXQgYXRtLgoKTWF5YmUgaSdtIG92ZXJsb29raW5nIHNvbWV0aGlu ZyBoZXJlIHJlbGF0ZWQgdG8gdGhlIHNvbWV3aGF0IHJld3JpdHRlbiAKY29kZSBmcm9tIHRoZSBs YXN0IHllYXIgb3Igc28/IEJ1dCBpbiB0aGUgb3JpZ2luYWwgZGVzaWduIHRoaXMgd291bGQgYmUg CmV4YWN0bHkgd2hhdCBpIGludGVuZGVkPwoKLi4uCgo+PiBTbyBpdCdzIGdvb2QgZW5vdWdoIGZv ciB0eXBpY2FsIGRlc2t0b3AKPj4gYXBwbGljYXRpb25zL2NvbXBvc2l0b3JzL2dhbWVzL21lZGlh IHBsYXllcnMsIGFuZCBhIG5pY2UgaW1wcm92ZW1lbnQKPj4gb3ZlciB0aGUgcHJldmlvdXMgc3Rh dGUsIGJ1dCBub3QgcXVpdGUgc3VmZmljaWVudCBmb3IgYXBwbGljYXRpb25zIHRoYXQKPj4gbmVl ZCBsb25nIHRpbWUgY29uc2lzdGVudCB2YmxhbmsgY291bnRzIGZvciBsb25nIHdhaXRzIG9mIG11 bHRpcGxlCj4+IHNlY29uZHMgb3IgZXZlbiBtaW51dGVzLiBTbyBpdCdzIHN0aWxsIGdvb2QgdG8g aGF2ZSBodyBjb3VudGVycyBpZiB3ZQo+PiBjYW4gZ2V0IHNvbWUgdGhhdCBhcmUgcmVsaWFibGUg ZW5vdWdoLgo+Cj4gQWgsIEkgZGlkbid0IHJlYWxpemUgeW91IGNhcmUgYWJvdXQgc21hbGwgZXJy b3JzIGluIHRoZSBjb3VudGVyIGZvcgo+IHN1Y2ggbG9uZyBwZXJpb2RzIG9mIHZibGFuayBvZmYu Cj4KCkFjdHVhbGx5LCB5b3UgYXJlIHJpZ2h0LCBpIHdhcyBzdHVwaWQgLSBub3QgZW5vdWdoIHNs ZWVwIGxhc3QgZnJpZGF5LiBJIApkbyBjYXJlIGFib3V0IHN1Y2ggc21hbGwgZXJyb3JzLCBidXQg dGhlIGxvbmcgdmJsYW5rIG9mZiBwZXJpb2RzIGRvbid0IAptYXR0ZXIgYXQgYWxsIHRoZSB3YXkg bXkgc29mdHdhcmUgd29ya3MuIEkgcXVlcnkgdGhlIGN1cnJlbnQgY291bnQgYW5kIAp0aW1lc3Rh bXAgKGdsWEdldFN5bmNWYWx1ZXNPTUwpLCBjYWxjdWxhdGUgYSB0YXJnZXQgY291bnQgYmFzZWQg b24gdGhvc2UgCmFuZCB0aGVuIHNjaGVkdWxlIGEgc3dhcCBmb3IgdGhhdCB0YXJnZXQgY291bnQg dmlhIGdsWFN3YXBCdWZmZXJzTXNjT01MLiAKVGhhdCBzd2FwYnVmZmVycyBjYWxsIHdpbGwga2Vl cCB2YmxhbmsgaXJxcyBvbiB1bnRpbCB0aGUga21zIHBhZ2VmbGlwIGlzIApxdWV1ZWQuIFNvIGkg b25seSBjYXJlIGFib3V0IHZibGFuayBjb3VudHMvdGltZXN0YW1wcyBiZWluZyBjb25zaXN0ZW50 IApmb3Igc2hvcnQgYW1vdW50cyBvZiB0aW1lLCB0eXBpY2FsbHkgMSB2aWRlbyByZWZyZXNoIGZy b20gdmJsYW5rIHF1ZXJ5IAp0byBxdWV1ZWluZyBhIHZibGFuayBldmVudCwgYW5kIHRoZW4gZnJv bSByZWNlcHRpb24gb2YgdGhhdCAKZXZlbnQvcXVldWluZyB0aGUgcGFnZWZsaXAgdG8gcGFnZWZs aXAgY29tcGxldGlvbiBldmVudC4gU28gZXZlbiBpZiB0aGUgCnN5c3RlbSB3b3VsZCBiZSBoZWF2 aWx5IGxvYWRlZCBhbmQgbXkgY29kZSB3b3VsZCBoYXZlIGJpZyBwcmVlbXB0aW9uIApkZWxheXMg aSB0aGluayBjb3VudHMgdGhhdCBhcmUgY29uc2lzdGVudCBvdmVyIGEgZmV3IHNlY29uZHMgd291 bGQgYmUgCmVub3VnaCB0byBrZWVwIHRoaW5ncyB3b3JraW5nLiBPdGhlcndpc2UgaXQgd291bGRu J3Qgd29yayBub3cgZWl0aGVyIAp3aXRoIGEgdmJsYW5rIG9mZiBhZnRlciA1IHNlY29uZHMgYW5k IG5vdXZlYXUgbm90IGhhdmluZyB2YmxhbmsgaHcgY291bnRlcnMuCgotbWFyaW8KCgo+Pgo+PiAt bWFyaW8KPj4KPj4KPj4+Pgo+Pj4+IC1tYXJpbwo+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gSXQgYWxtb3N0 IHNvcnQgb2Ygd29ya3Mgb24gdGhlIHJzNjAwIGNvZGUgcGF0aCwgYnV0IGkgbmVlZCBhIGJpdCBv ZiBpbmZvCj4+Pj4+PiBmcm9tIHlvdToKPj4+Pj4+Cj4+Pj4+PiAxLiBUaGVyZSdzIHRoaXMgcmVn aXN0ZXIgZnJvbSB0aGUgb2xkIHNwZWNzIGZvciBtNzYucGRmLCB3aGljaCBpcyBub3QKPj4+Pj4+ IHBhcnQgb2YgdGhlIGN1cnJlbnQgcmVnaXN0ZXIgZGVmaW5lcyBmb3IgcmFkZW9uLWttczoKPj4+ Pj4+Cj4+Pj4+PiAiRDFDUlRDX1NUQVRVU19WRl9DT1VOVCAtIFJXIC0gMzIgYml0cyAtIFtHcHVG ME1NUmVnOjB4NjBBOF0iCj4+Pj4+Pgo+Pj4+Pj4gSXQgY29udGFpbnMgdGhlIGxvd2VyIDE2IGJp dHMgb2YgZnJhbWVjb3VudGVyIGFuZCB0aGUgMTMgYml0cyBvZgo+Pj4+Pj4gdmVydGljYWwgc2Nh bm91dCBwb3NpdGlvbi4gSXQgc2VlbXMgdG8gZ2l2ZSB0aGUgc2FtZSByZWFkaW5ncyBhcyB0aGUg MjQKPj4+Pj4+IGJpdCBSXzAwNjBBNF9EMUNSVENfU1RBVFVTX0ZSQU1FX0NPVU5UIHdlIHVzZSBm b3IgdGhlIGh3IGNvdW50ZXIuIFRoaXMKPj4+Pj4+IHdvdWxkIGNvbWUgaGFuZHkuCj4+Pj4+Pgo+ Pj4+Pj4gRG9lcyBFdmVyZ3JlZW4gYW5kIGxhdGVyIGhhdmUgYSBzYW1lL3NpbWlsYXIgcmVnaXN0 ZXIgYW5kIHdoZXJlIGlzIGl0Pwo+Pj4+Pj4KPj4+Pj4+IDIuIFRoZSBodyBmcmFtZWNvdW50ZXIg c2VlbXMgdG8gaW5jcmVtZW50IHdoZW4gdGhlIHZlcnRpY2FsIHNjYW5vdXQKPj4+Pj4+IHBvc2l0 aW9uIHdyYXBzIGJhY2sgZnJvbSAoVlRPVEFMIC0gMSkgdG8gMCwgYXQgbGVhc3Qgb24gdGhlIG9u ZSBEQ0UtMwo+Pj4+Pj4gZ3B1IGkgdGVzdGVkIHNvIGZhci4gSXMgdGhpcyBzbyBvbiBhbGwgYXNp Y3M/IEFuZCBpcyB0aGUgaHcgY291bnRlcgo+Pj4+Pj4gaW5jcmVtZW50IGhhcHBlbmluZyBleGFj dGx5IGF0IHRoZSBtb21lbnQgdGhhdCB2ZXJ0aWNhbCBzY2Fub3V0IHBvc2l0aW9uCj4+Pj4+PiBq dW1wcyBiYWNrIHRvIHplcm8sIGllLiBib3RoIGV2ZW50cyBhcmUgZHJpdmVuIGJ5IHRoZSBzYW1l IHNpZ25hbD8gT3IgaXMKPj4+Pj4+IHRoZSBmcmFtZWNvdW50ZXIgaW5jcmVtZW50IGp1c3QgaGFw cGVuaW5nIHNvbWV3aGVyZSBpbnNpZGUgZWl0aGVyCj4+Pj4+PiBzY2FubGluZSBWVE9UQUwtMSBv ciBzY2FubGluZSAwPwo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBJZiB3ZSBjYW4gZml4IHRoaXMgYW5k IGdldCBpdCBpbnRvIHJjMiBvciByYzMgdGhlbiB3ZSBjb3VsZCBhdm9pZCBhIGJhZAo+Pj4+Pj4g cmVncmVzc2lvbiBhbmQgd2l0aCBhIGJpdCBvZiBsdWNrIGF0IHRoZSBzYW1lIHRpbWUgaW1wcm92 ZSBieSBiZWluZyBhYmxlCj4+Pj4+PiB0byBzZXQgZGV2LT52YmxhbmtfZGlzYWJsZV9pbW1lZGlh dGUgPSB0cnVlIHRoZW4gYW5kIGFsbG93IHZibGFuayBpcnFzCj4+Pj4+PiB0byBnZXQgdHVybmVk IG9mZiBtb3JlIGFnZ3Jlc3NpdmVseSBmb3IgYSBiaXQgb2YgZXh0cmEgcG93ZXIgc2F2aW5nLgo+ Pj4+Pj4KPj4+Pj4+IHRoYW5rcywKPj4+Pj4+IC1tYXJpbwo+Pj4+Pgo+Pj4+Pj4gLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jCj4+Pj4+PiBAQCAtMTcyLDkgKzE3MiwxMSBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3Zi bGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPj4+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3MpCj4+Pj4+PiAgICAgewo+Pj4+Pj4gICAgICAgICAgICBzdHJ1Y3QgZHJtX3ZibGFua19j cnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07Cj4+Pj4+PiAtICAgICAgIHUzMiBjdXJf dmJsYW5rLCBkaWZmOwo+Pj4+Pj4gKyAgICAgICB1MzIgY3VyX3ZibGFuaywgZGlmZiA9IDA7Cj4+ Pj4+PiAgICAgICAgICAgIGJvb2wgcmM7Cj4+Pj4+PiAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFs IHRfdmJsYW5rOwo+Pj4+Pj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdF9vbGQ7Cj4+ Pj4+PiArICAgICAgIHU2NCBkaWZmX25zOwo+Pj4+Pj4gICAgICAgICAgICBpbnQgY291bnQgPSBE Uk1fVElNRVNUQU1QX01BWFJFVFJJRVM7Cj4+Pj4+PiAgICAgICAgICAgIGludCBmcmFtZWR1cl9u cyA9IHZibGFuay0+ZnJhbWVkdXJfbnM7Cj4+Pj4+Pgo+Pj4+Pj4gQEAgLTE5NSwxMyArMTk3LDE1 IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+Pj4+Pj4gICAgICAgICAgICAgICAgICAgIHJjID0g ZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChkZXYsIHBpcGUsICZ0X3ZibGFuaywgZmxhZ3MpOwo+ Pj4+Pj4gICAgICAgICAgICB9IHdoaWxlIChjdXJfdmJsYW5rICE9IGRldi0+ZHJpdmVyLT5nZXRf dmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKSAmJiAtLWNvdW50ID4gMCk7Cj4+Pj4+Pgo+Pj4+Pj4g LSAgICAgICBpZiAoZGV2LT5tYXhfdmJsYW5rX2NvdW50ICE9IDApIHsKPj4+Pj4+IC0gICAgICAg ICAgICAgICAvKiB0cnVzdCB0aGUgaHcgY291bnRlciB3aGVuIGl0J3MgYXJvdW5kICovCj4+Pj4+ PiAtICAgICAgICAgICAgICAgZGlmZiA9IChjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0KSAmIGRl di0+bWF4X3ZibGFua19jb3VudDsKPj4+Pj4+IC0gICAgICAgfSBlbHNlIGlmIChyYyAmJiBmcmFt ZWR1cl9ucykgewo+Pj4+Pj4gLSAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0 X29sZDsKPj4+Pj4+IC0gICAgICAgICAgICAgICB1NjQgZGlmZl9uczsKPj4+Pj4+IC0KPj4+Pj4+ ICsgICAgICAgLyoKPj4+Pj4+ICsgICAgICAgICogQWx3YXlzIHVzZSB2YmxhbmsgdGltZXN0YW1w aW5nIGJhc2VkIG1ldGhvZCBpZiBzdXBwb3J0ZWQgdG8gcmVqZWN0Cj4+Pj4+PiArICAgICAgICAq IHJlZHVuZGFudCB2YmxhbmsgaXJxcy4gRS5nLiwgQU1EIGhhcmR3YXJlIG5lZWRzIHRoaXMgdG8g bm90IHNjcmV3IHVwCj4+Pj4+PiArICAgICAgICAqIGR1ZSB0byBzb21lIGlycSBoYW5kbGluZyBx dWlyay4KPj4+Pj4KPj4+Pj4gSG1tLiBJJ20gdGhpbmtpbmcgaXQgd291bGQgYmUgYmV0dGVyIHRv IHNpbXBseSBub3QgY2xhaW0gdGhhdCB0aGVyZSdzIGEgaHcKPj4+Pj4gY291bnRlciBpZiBpdCBp c24ndCByZWxpYWJsZS4KPj4+Pj4KPj4+Pj4+ICsgICAgICAgICoKPj4+Pj4+ICsgICAgICAgICog VGhpcyBhbHNvIHNldHMgdGhlIGRpZmYgdmFsdWUgZm9yIHVzZSBhcyBmYWxsYmFjayBiZWxvdyBp biBjYXNlIHRoZQo+Pj4+Pj4gKyAgICAgICAgKiBodyBkb2VzIG5vdCBzdXBwb3J0IGEgc3VpdGFi bGUgaHcgdmJsYW5rIGNvdW50ZXIuCj4+Pj4+PiArICAgICAgICAqLwo+Pj4+Pj4gKyAgICAgICBp ZiAocmMgJiYgZnJhbWVkdXJfbnMpIHsKPj4+Pj4+ICAgICAgICAgICAgICAgICAgICB0X29sZCA9 ICZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB2YmxhbmstPmNvdW50KTsKPj4+Pj4+ICAgICAg ICAgICAgICAgICAgICBkaWZmX25zID0gdGltZXZhbF90b19ucygmdF92YmxhbmspIC0gdGltZXZh bF90b19ucyh0X29sZCk7Cj4+Pj4+Pgo+Pj4+Pj4gQEAgLTIxMiwxMSArMjE2LDI4IEBAIHN0YXRp YyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCBwaXBlLAo+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAqLwo+Pj4+Pj4gICAg ICAgICAgICAgICAgICAgIGRpZmYgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoZGlmZl9ucywgZnJh bWVkdXJfbnMpOwo+Pj4+Pj4KPj4+Pj4+IC0gICAgICAgICAgICAgICBpZiAoZGlmZiA9PSAwICYm IGZsYWdzICYgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSkKPj4+Pj4+IC0gICAgICAgICAgICAgICAg ICAgICAgIERSTV9ERUJVR19WQkwoImNydGMgJXU6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4i Cj4+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZGlmZl9ucyA9 ICVsbGQsIGZyYW1lZHVyX25zID0gJWQpXG4iLAo+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwaXBlLCAobG9uZyBsb25nKSBkaWZmX25zLCBmcmFtZWR1cl9ucyk7 Cj4+Pj4+PiAtICAgICAgIH0gZWxzZSB7Cj4+Pj4+PiArICAgICAgICAgICAgICAgaWYgKGRpZmYg PT0gMCAmJiBmbGFncyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpIHsKPj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgRFJNX0RFQlVHX1ZCTCgiY3J0YyAldTogUmVkdW5kYW50IHZibGlycSBpZ25v cmVkLiIKPj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgIiBkaWZmX25zID0gJWxsZCwgZnJhbWVk dXJfbnMgPSAlZClcbiIsCj4+Pj4+PiArICAgICAgICAgICAgICAgICAgIHBpcGUsIChsb25nIGxv bmcpIGRpZmZfbnMsIGZyYW1lZHVyX25zKTsKPj4+Pj4+ICsKPj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgLyogVHJlYXQgdGhpcyByZWR1bmRhbnQgaW52b2NhdGlvbiBhcyBuby1vcC4gKi8KPj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgV0FSTl9PTl9PTkNFKGN1cl92YmxhbmsgIT0gdmJsYW5r LT5sYXN0KTsKPj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Pj4gKyAgICAg ICAgICAgICAgIH0KPj4+Pj4+ICsgICAgICAgfQo+Pj4+Pj4gKwo+Pj4+Pj4gKyAgICAgICAvKgo+ Pj4+Pj4gKyAgICAgICAgKiBodyBjb3VudGVycywgaWYgbWFya2VkIGFzIHN1cHBvcnRlZCB2aWEg bWF4X3ZibGFua19jb3VudCAhPSAwLAo+Pj4+Pj4gKyAgICAgICAgKiAqbXVzdCogaW5jcmVtZW50 IGF0IGxlYWRpbmcgZWRnZSBvZiB2YmxhbmsgYW5kIGluIHN5bmMgd2l0aAo+Pj4+Pj4gKyAgICAg ICAgKiB0aGUgZmlyaW5nIG9mIHRoZSBodyB2YmxhbmsgaXJxLCBvdGhlcndpc2Ugd2UgaGF2ZSBh IHJhY2UgaGVyZQo+Pj4+Pj4gKyAgICAgICAgKiBiZXR3ZWVuIGdwdSBhbmQgdXMsIHdoZXJlIHNt YWxsIHZhcmlhdGlvbnMgaW4gb3VyIGV4ZWN1dGlvbgo+Pj4+Pj4gKyAgICAgICAgKiB0aW1pbmcg Y2FuIGNhdXNlIG9mZi1ieS1vbmUgbWlzY291bnRpbmcgb2YgdmJsYW5rcy4KPj4+Pj4+ICsgICAg ICAgICovCj4+Pj4+PiArICAgICAgIGlmIChkZXYtPm1heF92YmxhbmtfY291bnQgIT0gMCkgewo+ Pj4+Pj4gKyAgICAgICAgICAgICAgIC8qIHRydXN0IHRoZSBodyBjb3VudGVyIHdoZW4gaXQncyBh cm91bmQgKi8KPj4+Pj4+ICsgICAgICAgICAgICAgICBkaWZmID0gKGN1cl92YmxhbmsgLSB2Ymxh bmstPmxhc3QpICYgZGV2LT5tYXhfdmJsYW5rX2NvdW50Owo+Pj4+Pj4gKyAgICAgICB9IGVsc2Ug aWYgKCEocmMgJiYgZnJhbWVkdXJfbnMpKSB7Cj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgLyog c29tZSBraW5kIG9mIGRlZmF1bHQgZm9yIGRyaXZlcnMgdy9vIGFjY3VyYXRlIHZibCB0aW1lc3Rh bXBpbmcgKi8KPj4+Pj4+ICAgICAgICAgICAgICAgICAgICBkaWZmID0gKGZsYWdzICYgRFJNX0NB TExFRF9GUk9NX1ZCTElSUSkgIT0gMDsKPj4+Pj4+ICAgICAgICAgICAgfQo+Pj4+Pgo+Pj4+Pgo+ Pj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=