From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 07/11] drm/i915: Update intel_dp_hpd_pulse() for non-MST operation Date: Tue, 14 Apr 2015 19:00:19 -0700 Message-ID: <552DC633.1080205@gmail.com> References: <1428682372-21586-1-git-send-email-tprevite@gmail.com> <1428682372-21586-8-git-send-email-tprevite@gmail.com> <552D500C.4090908@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f179.google.com (mail-pd0-f179.google.com [209.85.192.179]) by gabe.freedesktop.org (Postfix) with ESMTP id A13C26E7B8 for ; Tue, 14 Apr 2015 19:00:21 -0700 (PDT) Received: by pdbqd1 with SMTP id qd1so33327686pdb.2 for ; Tue, 14 Apr 2015 19:00:21 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzE0LzE1IDEyOjAwIFBNLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4gMjAxNS0wNC0xNCAx NDozNiBHTVQtMDM6MDAgVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+Ogo+Pgo+PiBP biA0LzE0LzE1IDQ6MjkgQU0sIFBhdWxvIFphbm9uaSB3cm90ZToKPj4+IDIwMTUtMDQtMTAgMTM6 MTIgR01ULTAzOjAwIFRvZGQgUHJldml0ZSA8dHByZXZpdGVAZ21haWwuY29tPjoKPj4+PiBVcGRh dGUgdGhlIGhvdCBwbHVnIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgU1NUIGNhc2UuIEluc3RlYWQg b2YgcGxhY2luZwo+Pj4+IHRoZSBTU1QgY2FzZSB3aXRoaW4gdGhlIGxvbmcvc2hvcnQgcHVsc2Ug YmxvY2ssIGl0IGlzIG5vdyBoYW5kbGVkIGFmdGVyCj4+Pj4gZGV0ZXJtaW5pbmcgdGhhdCBNU1Qg bW9kZSBpcyBub3QgaW4gdXNlLiBUaGlzIHdheSwgdGhlIHRvcG9sb2d5Cj4+Pj4gbWFuYWdlbWVu dAo+Pj4+IGxheWVyIGNhbiBoYW5kbGUgYW55IE1TVC1yZWxhdGVkIG9wZXJhdGlvbnMgd2hpbGUg U1NUIG9wZXJhdGlvbnMgYXJlCj4+Pj4gc3RpbGwKPj4+PiBjb3JyZWN0bHkgaGFuZGxlZCBhZnRl cndhcmRzLgo+Pj4+Cj4+Pj4gVGhpcyBwYXRjaCBhbHNvIGNvcnJlY3RzIHRoZSBwcm9ibGVtIG9m IFNTVCBtb2RlIG9ubHkgYmVpbmcgaGFuZGxlZCBpbgo+Pj4+IHRoZQo+Pj4+IGNhc2Ugb2YgYSBz aG9ydCAoMC41bXMgLSAxLjBtcykgSFBEIHB1bHNlLiBGb3IgY29tcGxpYW5jZSB0ZXN0aW5nCj4+ Pj4gcHVycG9zZXMKPj4+PiBib3RoIHNob3J0IGFuZCBsb25nIHB1bHNlcyBhcmUgdXNlZCBieSB0 aGUgZGlmZmVyZW50IHRlc3RzLCB0aHVzIGJvdGgKPj4+PiBjYXNlcwo+Pj4+IG5lZWQgdG8gYmUg YWRkcmVzc2VkIGZvciBTU1QuCj4+Pj4KPj4+PiBUaGlzIHBhdGNoIHJlcGxhY2VzIFtQQVRDSCAx MC8xMF0gZHJtL2k5MTU6IEZpeCBpbnRlbF9kcF9ob3RfcGx1ZygpIGluCj4+Pj4gdGhlCj4+Pj4g cHJldmlvdXMgY29tcGxpYW5jZSB0ZXN0aW5nIHBhdGNoIHNlcXVlbmNlLiBSZXZpZXcgZmVlZGJh Y2sgb24gdGhhdCBwYXRjaAo+Pj4+IGluZGljYXRlZCB0aGF0IHVwZGF0aW5nIGludGVsX2RwX2hv dF9wbHVnKCkgd2FzIG5vdCB0aGUgY29ycmVjdCBwbGFjZSBmb3IKPj4+PiB0aGUgdGVzdCBoYW5k bGVyLgo+Pj4+Cj4+Pj4gRm9yIHRoZSBTU1QgY2FzZSwgdGhlIG1haW4gc3RyZWFtIGlzIGRpc2Fi bGVkIGZvciBsb25nIEhQRCBwdWxzZXMgYXMgdGhpcwo+Pj4+IGdlbmVyYWxseSBpbmRpY2F0ZXMg ZWl0aGVyIGEgY29ubmVjdC9kaXNjb25uZWN0IGV2ZW50IG9yIGxpbmsgZmFpbHVyZS4KPj4+PiBG b3IKPj4+PiBhIG51bWJlciBvZiBjYXNlIGluIGNvbXBsaWFuY2UgdGVzdGluZywgdGhlIHNvdXJj ZSBpcyByZXF1aXJlZCB0byBkaXNhYmxlCj4+Pj4gdGhlIG1haW4gbGluayB1cG9uIGRldGVjdGlv biBvZiBhIGxvbmcgSFBELgo+Pj4+Cj4+Pj4gVjI6Cj4+Pj4gLSBOL0EKPj4+PiBWMzoKPj4+PiAt IFBsYWNlIHRoZSBTU1QgbW9kZSBsaW5rIHN0YXR1cyBjaGVjayBpbnRvIHRoZSBtc3RfZmFpbCBj YXNlCj4+Pj4gLSBSZW1vdmUgb2Jzb2xldGUgY29tbWVudCByZWdhcmRpbmcgU1NUIG1vZGUgb3Bl cmF0aW9uCj4+Pj4gLSBSZW1vdmVkIGFuIGVycm9uZW91cyBsaW5lIG9mIGNvZGUgdGhhdCBzbnVj ayBpbiBkdXJpbmcgcmViYXNpbmcKPj4+PiBWNDoKPj4+PiAtIEFkZGVkIGEgZGlzYWJsZSBvZiB0 aGUgbWFpbiBzdHJlYW0gKERQIHRyYW5zcG9ydCkgZm9yIHRoZSBsb25nIHB1bHNlCj4+Pj4gY2Fz ZQo+Pj4+ICAgICBmb3IgU1NUIHRvIHN1cHBvcnQgY29tcGxpYW5jZSB0ZXN0aW5nCj4+Pj4gVjU6 Cj4+Pj4gLSBSZXdvcmtlZCBTU1QgaGFuZGxpbmcgdG8gc3VwcG9ydCB0ZXN0cyA0LjIuMi43IGFu ZCA0LjIuMi44Cj4+Pj4gVjY6Cj4+Pj4gLSBSZWZvcm1hdHRlZCBhIGNvbW1lbnQKPj4+Pgo+Pj4+ IFNpZ25lZC1vZmYtYnk6IFRvZGQgUHJldml0ZSA8dHByZXZpdGVAZ21haWwuY29tPgo+Pj4+IC0t LQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCAxOSArKysrKysrKy0t LS0tLS0tLS0tCj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVs ZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+IGluZGV4 IDc3YjZiMTUuLmJhMmRhNDQgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+ PiBAQCAtNDU3MiwyOSArNDU3MiwyNiBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydAo+Pj4+ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKPj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKGlu dGVsX2RwKSA9PQo+Pj4+IC1FSU5WQUwpCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gbXN0X2ZhaWw7Cj4+Pj4gICAgICAgICAgICAgICAgICAgfQo+Pj4+IC0KPj4+ PiAtICAgICAgICAgICAgICAgaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgLyoKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSdsbCBj aGVjayB0aGUgbGluayBzdGF0dXMgdmlhIHRoZSBub3JtYWwgaG90Cj4+Pj4gcGx1ZyBwYXRoIGxh dGVyIC0KPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgKiBidXQgZm9yIHNob3J0IGhwZHMg d2Ugc2hvdWxkIGNoZWNrIGl0IG5vdwo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAqLwo+ Pj4+IC0KPj4+PiBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25f bXV0ZXgsIE5VTEwpOwo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGludGVsX2RwX2NoZWNr X2xpbmtfc3RhdHVzKGludGVsX2RwKTsKPj4+PiAtCj4+Pj4gZHJtX21vZGVzZXRfdW5sb2NrKCZk ZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwo+Pj4+IC0gICAgICAgICAgICAgICB9 Cj4+Pj4gICAgICAgICAgIH0KPj4+IFNob3VsZG4ndCB0aGUgY29kZSBiZSBtb3ZlZCB0byBleGFj dGx5IHRoaXMgc3BvdCBpbnN0ZWFkIG9mIGFmdGVyIHRoZQo+Pj4gcHV0X3Bvd2VyIGxhYmVsPyBX aHkgd291bGQgd2Ugd2FudCB0byBjYWxsIGNoZWNrX2xpbmtfc3RhdHVzIGluIGNhc2UKPj4+IHdl IGdvdG8gbXN0X2ZhaWw/IEluIGNhc2UgdGhlcmUgaXMgYSB2YWxpZCByZWFzb24sIG1heWJlIGl0 IHdvdWxkIGJlCj4+PiBiZXR0ZXIgdG8gZG8gYSBiaWcgcmVvcmdhbml6YXRpb24gb2YgdGhpcyBm dW5jdGlvbiBiZWNhdXNlIGl0J3MgZ29pbmcKPj4+IHRvIHN0YXJ0IGxvb2tpbmcgdmVyeSB3ZWly ZCAtIG9yIGF0IGxlYXN0IHJlbmFtZSB0aGUgbGFiZWxzLgo+PiBObyBiZWNhdXNlIHRoZW4geW91 IGRvbid0IGdldCBsb25nIHB1bHNlcywgb25seSBzaG9ydCBvbmVzLgo+IE5vLCB3aGF0IEkgbWVh biBpczoKPgo+IGlmIChsb25nX2hwZCkgewo+ICAgICAgLi4uIGNvZGUgLi4uCj4gfSBlbHNlIHsK PiAgICAgIC4uLiBjb2RlIC4uLi4KPiB9Cj4KPiBpZiAoIWludGVsX2RwLT5pc19tc3QpIHsKPiAg ICAgIGRybV9tb2Rlc2V0X2xvY2soLi4uKQo+ICAgICAgLi4uIGNvZGUgLi4uCj4gfQo+Cj4gbXN0 X2ZhaWw6Cj4gICAgICAuLi4gY29kZSAuLi4KPgo+IFRoZSBvdGhlciBwcm9ibGVtIEkgcG9pbnQg aXM6IGltYWdpbmUgd2UncmUgU1NUIGFuZCB3ZSBnZXQgYSBsb25nX2hwZC4KPiBUaGVuIHdlIHJ1 biBpYnhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZCgpLCBhbmQgc2luY2UgdGhlIG1vbml0b3IgaXMK PiBkaXNjb25uZWN0ZWQgd2UgImdvdG8gbXN0X2ZhaWwiLiBXZSdsbCBlbmQgdXAgcnVubmluZwo+ IGludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKCkgYmVmb3JlIHJldHVybmluZywgYnV0IHdlIHJl YWxseSBzaG91bGRuJ3QKPiBydW4gaXQgc2luY2Ugd2Uga25vdyB0aGUgbW9uaXRvciBpcyBkaXNj b25uZWN0ZWQuCj4KSSBzZWUgd2hhdCB5b3UncmUgc2F5aW5nLCBob3dldmVyIHVuZGVyIG5vcm1h bCBvcGVyYXRpb24gZm9yIFNTVCAod2hlbiAKY29ubmVjdGVkIGFuZCBldmVyeXRoaW5nIGlzIHdv cmtpbmcpIHRoZSBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZToKCmlmICghaW50ZWxfZHBfcHJvYmVf bXN0KGludGVsX2RwKSkKCkFuZCBwcm9jZWVkIHRvIHRoZSBtc3RfZmFpbCBibG9jaywgdGh1cyBz a2lwcGluZyB0aGF0IGJsb2NrIG9mIGNvZGUgCmVudGlyZWx5IGFuZCBtaXNzaW5nIHRoZSBTU1Qg aGFuZGxlci4gVGhlIHJlc3VsdCBpcyBhIG1pc3NlZCBsb25nIHB1bHNlIApmb3IgdGhlIFNTVCBj YXNlLgoKWW91ciBzZWNvbmQgcG9pbnQgaGFzIHZhbGlkaXR5IHRob3VnaC4gVGhpcyBjYW4gYmUg YWRkcmVzc2VkIHdpdGggYSAKImNvbm5lY3RlZCIgZmxhZyBqdXN0IGJlZm9yZSB0aGUgaWYgKGxv bmdfcHVsc2UpIHN0YXRlbWVudDoKCiAgICAgY29ubmVjdGVkID0gaW50ZWxfZHBfZGlnaXRhbF9w b3J0X2Nvbm5lY3RlZChpbnRlbF9kcCk7CiAgICAgaWYgKCFjb25uZWN0ZWQpCiAgICAgICAgIGdv dG8gbXN0X2ZhaWw7CgpUaGUgcHVsc2UgaGFuZGxlciBmb3IgdGhlIG1vc3QgcGFydCBjYW4gdGhl biBiZSBza2lwcGVkLCBzaW5jZSB0aGUgCmRldmljZSBpcyBnb25lLiBJbiBtc3RfZmFpbCwgdGhl IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGlzIHVwZGF0ZWQgdGhvdWdoLCAKc28gdGhhdCBzdGlsbCBo YXMgdG8gaGFwcGVuLiBXaXRoIHRoZSBTU1QgcHVsc2UgaGFuZGxlciBpbiBwdXRfcG93ZXIsIGl0 IApjYW4gc2ltcGx5IGZhbGwgdGhyb3VnaCBub3cgYW5kIGhpdCB0aGUgdXBkYXRlZCBpZi1zdGF0 ZW1lbnQgdGhlcmUgd2hpY2ggaXM6CgppZiAoIWludGVsX2RwLT5pc19tc3QgJiYgY29ubmVjdGVk KSB7CiAgICAgICAgIC4uLiBjb2RlIC4uLgp9CgpBbmQgYWxsIHNob3VsZCBiZSB3ZWxsIGZvciBh IGRpc2Nvbm5lY3RlZCBkZXZpY2UgYXMgd2VsbCBhcyBub3JtYWwgCm9wZXJhdGlvbmFsIG1vZGVz IG9mIFNTVCBhbmQgTVNULgoKT2ggdGhlIGludGVsX2RwX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQo KSBmdW5jdGlvbiBpcyBqdXN0IHRoZSAKZW5jYXBzdWxhdGlvbiBvZiB0aGlzIGNvZGUgZnJvbSB0 aGUgbG9uZ19wdWxzZSBzZWdtZW50OgoKICAgICAgICAgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkg ewogICAgICAgICAgICAgaWYgKCFpYnhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwg aW50ZWxfZGlnX3BvcnQpKQogICAgICAgICAgICAgICAgIGdvdG8gbXN0X2ZhaWw7CiAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoZzR4X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2 LCBpbnRlbF9kaWdfcG9ydCkgIT0gMSkKICAgICAgICAgICAgICAgICBnb3RvIG1zdF9mYWlsOwog ICAgICAgICB9CgpBbmQgaXQncyBiZWVuIGFkZGVkIHRvIHRoZSB1cGRhdGVkIHBhdGNoLgoKPj4g VGhlIHB1dF9wb3dlcgo+PiBjYXNlIGlzIHdoZXJlIHRoaXMgYmVsb25ncywgdW5sZXNzIHlvdSB3 YW50IHRvIGR1cGxpY2F0ZSBjb2RlIGluIGJvdGggdGhlCj4+IGxvbmdfcHVsc2UgYW5kIHRoZSBl bHNlIGNsYXVzZS4gVGhlcmUgaXMgYSBzZXBhcmF0ZSBtc3RfY2hlY2tfbGlua19zdGF0dXMKPj4g Y2FsbCBzbyB0aGlzIG9uZSBpcyBzcGVjaWZpYyB0byBTU1QgbW9kZS4gVGhlcmUgaXMgYWxzbyBh IGNoZWNrIHRvIG1ha2Ugc3VyZQo+PiBpdCBkb2Vzbid0IGdldCBjYWxsZWQgd2hlbiBNU1QgaXMg YWN0aXZlIGFuZCBNU1QgaGFzIGhpdCBhIGZhaWx1cmUgbW9kZSwgc28KPj4gdGhhdCBpcyBhIG5v bi1pc3N1ZS4KPj4+IEFsc28sIGZvciB0aGUgbG9uZ19ocGQgY2FzZSwgSSBzZWUgdGhhdCBjaGVj a19saW5rX3N0YXR1cygpIHdpbGwgcmVkbwo+Pj4gc29tZSBvZiB0aGUgc3R1ZmYgd2UgYWxyZWFk eSBkaWQgb24gdGhpcyBmdW5jdGlvbiwgc3VjaCBhcyBnZXRfZHBjZCgpLgo+Pj4gQW5kIGlmIHlv dSBmb2xsb3cgbXkgYWR2aWNlIG9uIHBhdGNoIDIsIHlvdSB3aWxsIGVuZCB1cCBoYXZpbmcgZXZl bgo+Pj4gbW9yZSByZXBlYXRlZCBjb2RlLiBJIHRoaW5rIHlvdSBjb3VsZCB0cnkgdG8gZG8gYSBj YXJlZnVsIGFuYWx5c2lzCj4+PiBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgY2FsbGluZyBz dHVmZiB0d2ljZSBoZXJlLCBlc3BlY2lhbGx5IHNpbmNlCj4+PiBzb21lIG9mIHRob3NlIG9wZXJh dGlvbnMgYXJlIHBvdGVudGlhbGx5IHNsb3cuCj4+IEkgc2VlIGEgY291cGxlIHBsYWNlcyB3aGVy ZSB0aGUgY29kZSBpcyBkdXBsaWNhdGVkLCBzcGVjaWZpY2FsbHkgdGhlCj4+IGNvbm5lY3Rpb24g Y2hlY2sgKHdoaWNoIEkgZW5jYXBzdWxhdGVkIGluIGEgZnVuY3Rpb24gYW5kIEknbGwgbGlrZWx5 IHJvbGwKPj4gZm9yd2FyZCBpbnRvIHRoaXMgb25lIHNpbmNlIGl0IG1ha2VzIHRoaW5ncyBtb3Jl IGNsZWFyKSBhbmQgdGhlIERQQ0QgcmVhZCBpbgo+PiB0aGUgbG9uZyBwdWxzZSBjYXNlLiBJIHJl bW92ZWQgdGhlIGNvZGUgaW4gY2hlY2tfbGlua19zdGF0dXMgZm9yIGJvdGggb2YKPj4gdGhlc2Ug dGhpbmdzIGFuZCBpdCBzdGlsbCBwYXNzZXMgY29tcGxpYW5jZS4gR29vZCBjYXRjaCBQYXVsby4g VGhpcyBoYXMgYmVlbgo+PiBmaXhlZCBhbmQgdGVzdGVkIGFuZCB3aWxsIGJlIGluIHRoZSB1cGRh dGVkIHBhdGNoIHBvc3RlZCBzaG9ydGx5Lgo+Pj4+ICAgICAgICAgICByZXQgPSBJUlFfSEFORExF RDsKPj4+Pgo+Pj4+ICAgICAgICAgICBnb3RvIHB1dF9wb3dlcjsKPj4+PiAgICBtc3RfZmFpbDoK Pj4+PiAtICAgICAgIC8qIGlmIHdlIHdlcmUgaW4gTVNUIG1vZGUsIGFuZCBkZXZpY2UgaXMgbm90 IHRoZXJlIGdldCBvdXQgb2YgTVNUCj4+Pj4gbW9kZSAqLwo+Pj4+ICAgICAgICAgICBpZiAoaW50 ZWxfZHAtPmlzX21zdCkgewo+Pj4+ICsgICAgICAgICAgICAgICAvKiBpZiB3ZSB3ZXJlIGluIE1T VCBtb2RlLCBhbmQgZGV2aWNlIGlzIG5vdCB0aGVyZSBnZXQKPj4+PiBvdXQgb2YgTVNUIG1vZGUg Ki8KPj4+IEkgZG9uJ3Qgc2VlIHRoZSBuZWVkIGZvciBjaGFuZ2VzIHN1Y2ggYXMgdGhlIG9uZSBh Ym92ZSAtIEkgc2F3IHNpbWlsYXIKPj4+IGNhc2VzIGluIG90aGVyIHBhdGNoZXMgeW91IHN1Ym1p dHRlZC4gSSBvZnRlbiB1c2UgZ2l0IGJsYW1lIG9uCj4+PiBjb21tZW50cyBpbiBvcmRlciB0byBi ZSBhYmxlIHRvIHNlZSB0aGUgd2hvbGUgY29udGV4dCBvZiB0aGUgY2hhbmdlLAo+Pj4gYW5kIGEg c2ltcGxlIGNoYW5nZSBsaWtlIHRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGJsYW1lLiBBbHNvLCB5 b3UncmUKPj4+IG5vdCBldmVuIGZpeGluZyB0aGUgODAgY29sdW1uIHByb2JsZW0gaGVyZS4gQW5k IEkgZG8gcHJlZmVyIHRoZQo+Pj4gY29tbWVudCBvbiB0b3Agb2YgdGhlIGlmIHN0YXRlbWVudC4K Pj4gVGhpcyBpcyBqdXN0IGFuIGFydGlmYWN0IG9mIG1vdmluZyB0aGluZ3MgYXJvdW5kLCBhcyBp dCBsaWtlbHkgd2FzIGluIHRoZQo+PiBvdGhlciBwYXRjaGVzLiBUaGUgb25seSByZWFzb24gSSB3 aWxsIG1vdmUgY29tbWVudHMgaXMgdG8gY2xhcmlmeSB3aGF0IHRoZXkKPj4gcGVydGFpbiB0byBp ZiBjb2RlIGlzIG1vdmluZyBhcm91bmQgaXQuIEl0J3MgYmFjayB3aGVyZSBpdCBiZWxvbmdzIG5v dyBzbyBpdAo+PiBkb2Vzbid0IGV2ZW4gc2hvdyB1cCBpbiB0aGUgcGF0Y2guIEZpeGVkIGZvciB0 aGUgbmV4dCB2ZXJzaW9uLgo+Pgo+Pj4+ICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMo Ik1TVCBkZXZpY2UgbWF5IGhhdmUgZGlzYXBwZWFyZWQgJWQgdnMKPj4+PiAlZFxuIiwgaW50ZWxf ZHAtPmlzX21zdCwgaW50ZWxfZHAtPm1zdF9tZ3IubXN0X3N0YXRlKTsKPj4+PiAgICAgICAgICAg ICAgICAgICBpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7Cj4+Pj4gICAgICAgICAgICAgICAgICAg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdCgmaW50ZWxfZHAtPm1zdF9tZ3IsCj4+Pj4g aW50ZWxfZHAtPmlzX21zdCk7Cj4+Pj4gICAgICAgICAgIH0KPj4+PiAgICBwdXRfcG93ZXI6Cj4+ Pj4gKyAgICAgICAvKiBTU1QgbW9kZSAtIGhhbmRsZSBzaG9ydC9sb25nIHB1bHNlcyBoZXJlICov Cj4+Pj4gKyAgICAgICBpZiAoIWludGVsX2RwLT5pc19tc3QpIHsKPj4+PiArICAgICAgICAgICAg ICAgZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LAo+ Pj4+IE5VTEwpOwo+Pj4+ICsgICAgICAgICAgICAgICBpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1 cyhpbnRlbF9kcCk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGRybV9tb2Rlc2V0X3VubG9jaygmZGV2 LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKPj4+PiArICAgICAgICAgICAgICAgcmV0 ID0gSVJRX0hBTkRMRUQ7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gICAgICAgICAgIGludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+Pj4+Cj4+Pj4gICAgICAgICAg IHJldHVybiByZXQ7Cj4+Pj4gLS0KPj4+PiAxLjkuMQo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4+Cj4+Pgo+Cj4K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==