From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 04/13] drm/i915: Add EDID read in intel_dp_check_link_status() for Link CTS 4.2.2.1 Date: Thu, 16 Apr 2015 08:41:33 -0700 Message-ID: <552FD82D.9050202@gmail.com> References: <1428682372-21586-5-git-send-email-tprevite@gmail.com> <1428936789-13435-1-git-send-email-tprevite@gmail.com> <552E85A7.9070402@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by gabe.freedesktop.org (Postfix) with ESMTP id 39FA47208A for ; Thu, 16 Apr 2015 08:41:18 -0700 (PDT) Received: by pacyx8 with SMTP id yx8so93533457pac.1 for ; Thu, 16 Apr 2015 08:41:18 -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 CgpPbiA0LzE1LzIwMTUgMTA6NDIgQU0sIFBhdWxvIFphbm9uaSB3cm90ZToKPiAyMDE1LTA0LTE1 IDEyOjM3IEdNVC0wMzowMCBUb2RkIFByZXZpdGUgPHRwcmV2aXRlQGdtYWlsLmNvbT46Cj4+Cj4+ IE9uIDQvMTQvMjAxNSA5OjUzIEFNLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4+PiAyMDE1LTA0LTEz IDExOjUzIEdNVC0wMzowMCBUb2RkIFByZXZpdGUgPHRwcmV2aXRlQGdtYWlsLmNvbT46Cj4+Pj4g QWRkcyBpbiBhbiBFRElEIHJlYWQgYWZ0ZXIgdGhlIERQQ0QgcmVhZCB0byBhY2NvbW1vZGF0ZSB0 ZXN0IDQuMi4yLjEgaW4KPj4+PiB0aGUKPj4+PiBEaXNwbGF5cG9ydCBMaW5rIENUUyBDb3JlIDEu MiByZXYxLjEuIFRoaXMgdGVzdCByZXF1aXJlcyBhbiBFRElEIHJlYWQgZm9yCj4+Pj4gYWxsIEhQ RCBwbHVnIGV2ZW50cy4gVG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29kZSwgdGhpcyBFRElEIHJl YWQgaXMgYWxzbwo+Pj4+IHVzZWQgZm9yIExpbmsgQ1RTIHRlc3RzIDQuMi4yLjMsIDQuMi4yLjQs IDQuMi4yLjUgYW5kIDQuMi4yLjYuIEFjdHVhbAo+Pj4+IHN1cHBvcnQgZm9yIHRoZXNlIHRlc3Rz IGlzIGltcGxlbWVudGVkIGluIGxhdGVyIHBhdGNoZXMgaW4gdGhpcyBzZXJpZXMuCj4+Pj4KPj4+ PiBWMjoKPj4+PiAtIEZpeGVkIGNvbXBpbGF0aW9uIGVycm9yIGludHJvZHVjZWQgZHVyaW5nIHJl d29yawo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFp bC5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyB8 IDExICsrKysrKysrKysrCj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykK Pj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+Pj4gaW5kZXggMjMxODRiMC4u NzVkZjNlMiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+IEBAIC0zODkw LDYgKzM4OTAsOSBAQCBpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAK Pj4+PiAqaW50ZWxfZHApCj4+Pj4gICAgewo+Pj4+ICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPj4+PiAgICAgICAgICAgc3RydWN0 IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPQo+Pj4+ICZkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPmJhc2U7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0KPj4+PiAmaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPj4+PiArICAgICAg IHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZpbnRlbF9kcC0+YXV4LmRkYzsKPj4+PiAr ICAgICAgIHN0cnVjdCBlZGlkICplZGlkX3JlYWQgPSBOVUxMOwo+Pj4+ICAgICAgICAgICB1OCBz aW5rX2lycV92ZWN0b3I7Cj4+Pj4gICAgICAgICAgIHU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RB VFVTX1NJWkVdOwo+Pj4+Cj4+Pj4gQEAgLTM5MDYsNiArMzkwOSwxNCBAQCBpbnRlbF9kcF9jaGVj a19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAKPj4+PiAqaW50ZWxfZHApCj4+Pj4gICAgICAg ICAgICAgICAgICAgcmV0dXJuOwo+Pj4+ICAgICAgICAgICB9Cj4+Pj4KPj4+PiArICAgICAgIC8q IERpc3BsYXlwb3J0IExpbmsgQ1RTIENvcmUgMS4yIHJldjEuMSBFRElEIHRlc3RpbmcKPj4+PiAr ICAgICAgICAqIDQuMi4yLjEgLSBFRElEIHJlYWQgcmVxdWlyZWQgZm9yIGFsbCBIUEQgZXZlbnRz Cj4+Pj4gKyAgICAgICAgICovCj4+Pj4gKyAgICAgICAgZWRpZF9yZWFkID0gZHJtX2dldF9lZGlk KGNvbm5lY3RvciwgYWRhcHRlcik7Cj4+Pj4gKyAgICAgICAgaWYgKCFlZGlkX3JlYWQpIHsKPj4+ PiArICAgICAgICAgICAgICAgIERSTV9ERUJVR19EUklWRVIoIkludmFsaWQgRURJRCBkZXRlY3Rl ZFxuIik7Cj4+Pj4gKyAgICAgICAgfQo+Pj4+ICsKPj4+IFdlIGFscmVhZHkgYnJpZWZseSBkaXNj dXNzZWQgdGhpcyBwYXRjaCBpbiBwcml2YXRlLCBzbyBJJ20gZ29pbmcgdG8KPj4+IHN1bW1hcml6 ZSB0aGUgZGlzY3Vzc2lvbiBhbmQgYWxzbyBhZGQgc29tZSBtb3JlIHBvaW50cyBoZXJlLgo+Pj4K Pj4+IEZyaXN0LCB0aGUgYWN0dWFsIGRldGFpbGVkIHJldmlldzogdGhlIGluZGVudGF0aW9uIGhl cmUgaXMgdXNpbmcKPj4+IHNwYWNlcyBhbmQgd2UncmUgbGVha2luZyB0aGUgRURJRC4gVGhpcyB3 aWxsIGNhdXNlIHJlYmFzZXMgdG8gYSBmZXcgb2YKPj4+IHRoZSBuZXh0IHBhdGNoZXMuCj4+Pgo+ Pj4gQmFjayB0byB0aGUgaGlnaHQgbGV2ZWwgYXJjaGl0ZWN0dXJlOiB5b3VyIGluaXRpYWwgdmVy c2lvbnMgb2YgdGhlCj4+PiBzZXJpZXMgY29udGFpbmVkIGp1c3QgMSBleHRyYSBFRElEIHJlYWQs IGFuZCBpdCB3YXMgY29udGFpbmVkIGluc2lkZQo+Pj4gdGhlIGNvbXBsaWFuY2UgdGVzdGluZyBm dW5jdGlvbi4gVGhlbiB0aGUgdmVyc2lvbnMgc3VibWl0dGVkIGEgZmV3Cj4+PiBkYXlzIGFnbyBo YWQgMiBleHRyYSBFRElEIHJlYWRzLCB0aGVuIGFmdGVyIHNvbWUgZGlzY3Vzc2lvbiB5b3UKPj4+ IHJlZHVjZWQgdG8gMSBleHRyYSBFRElEIHJlYWQgKHRoZSBvbmUgb24gdGhpcyBwYXRjaCkuIEkg cHJldmlvdXNseQo+Pj4gYXNrZWQgIkJ1dCB3aGF0IGFib3V0IHRoZSBhdXRvbWF0aWMgRURJRCBy ZWFkIHdlIGRvIHdoZW4gd2UgZ2V0IGEKPj4+IGhvdHBsdWc/IENhbid0IHdlIGp1c3QgcmVseSBv biBpdD8iLiBJIGdvdCBzb21lIGFuc3dlcnMgdG8gdGhlCj4+PiBxdWVzdGlvbiwgYnV0IEkgd2Fz IG5vdCByZWFsbHkgY29udmluY2VkLgo+Pj4KPj4+IFllc3RlcmRheSBJIHdhcyBhcmd1aW5nIHRo YXQgdGhpcyBleHRyYSBFRElEIHJlYWQgaXMgZ29pbmcgdG8gYWRkIGEKPj4+IHNtYWxsIGRlbGF5 IHRvIGV2ZXJ5IGhvdHBsdWcgZXZlbnQgd2UgZ2V0LCBzbyBteSBpbml0aWFsIHN1Z2dlc3Rpb24K Pj4+IHdhcyB0byBvcmdhbml6ZSB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nIGluIGEgd2F5IHRoYXQg d291bGQgcmVxdWlyZSB0aGUKPj4+IHVzZXIgc3BhY2UgcHJvZ3JhbSB0byBjYWxsIHRoZSBHZXRS ZXNvdXJjZXMoKSBJT0NUTCB0byBmb3JjZSB0aGUgRURJRAo+Pj4gd2hlbiBuZWVkZWQuIFlvdXIg YXJndW1lbnQgd2FzIHRoYXQgdGhlbiB0aGUgRFAgY29tcGxpYW5jZSB0ZXN0aW5nCj4+PiBwcm9j ZWR1cmUgd291bGQgYmUgdGVzdGluZyBvdXIgYXBwIGZvciBjb21wbGlhbmNlLCBub3QgdGhlIEtl cm5lbC4KPj4+Cj4+PiBCdXQgdG9kYXkgSSBkZWNpZGVkIHRvIGZpbmFsbHkgZG8gc29tZSBkZWJ1 Z2dpbmcgcmVnYXJkaW5nIHRoaXMsIGFuZCBJCj4+PiB3YXMgYWJsZSB0byBjb25maXJtIHRoYXQg d2UgZG8gZm9sbG93IHRoZSBEUCByZXF1aXJlbWVudHM6IHdlIGRvIGhhdmUKPj4+IGFuIGF1dG9t YXRpYyBFRElEIHJlYWQgZG9uZSBieSB0aGUgS2VybmVsIHdoZW5ldmVyIHdlIGRvIGEgaG90cGx1 ZzoKPj4+IGk5MTVfaG90cGx1Z193b3JrX2Z1bmMoKSBjYWxscyBpbnRlbF9kcF9kZXRlY3QoKSwg d2hpY2ggZW5kcyBjYWxsaW5nCj4+PiBkcm1fZ2V0X2VkaWQoKSBhdCBzb21lIHBvaW50LiBUaGlz IGZ1bmN0aW9uIGFsc28gZG9lcyBvdGhlciBzdHVmZiB0aGF0Cj4+PiBpcyByZXF1aXJlZCBieSB0 aGUgY29tcGxpYW5jZSB0ZXN0aW5nLCBzdWNoIGFzIHRoZSBEUENEIHJlYWRzLgo+Pj4KPj4+IE5v dyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHVzaW5nIGk5MTVfaG90cGx1Z193b3JrX2Z1bmMoKSwg d2hpY2ggY291bGQKPj4+IHRoZSByZWFzb24gd2h5IHlvdSByZWplY3RlZCBpdDogaXQgb25seSBo YXBwZW5zIGFmdGVyCj4+PiBpbnRlbF9kcF9ocGRfcHVsc2UoKSwgd2hpY2ggbWVhbnMgdGhhdCB3 ZSBvbmx5IHJlYWxseSBkbyB0aGUgRURJRCByZWFkCj4+PiBhZnRlciBpbnRlbF9kcF9oYW5kbGVf dGVzdF9yZXF1ZXN0KCkuCj4+Pgo+Pj4gSSBjb25zaWRlciBpOTE1X2hvdHBsdWdfd29ya19mdW5j KCkgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIG91ciBEUAo+Pj4gZnJhbWV3b3JrLCBhbmQgdGhlIERQ IGNvbXBsaWFuY2UgdGVzdGluZyBzZWVtcyB0byBiZSBqdXN0IGlnbm9yaW5nIGl0cwo+Pj4gZXhp c3RlbmNlLiBTbyBteSBpZGVhIGZvciBhIHNvbHV0aW9uIGhlcmUgd291bGQgYmUgdG8gbWFrZQo+ Pj4gaW50ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVzdCgpIHJ1biBvbiBpdHMgb3duIGRlbGF5ZWQg d29yayBmdW5jdGlvbi4KPj4+IEl0IHdvdWxkIHdhaXQgZm9yIGJvdGggaTkxNV9kaWdwb3J0X3dv cmtfZnVuYygpIGFuZAo+Pj4gaTkxNV9ob3RwbHVnX3dvcmtfZnVuYygpIHRvIGZpbmlzaCwgYW5k IG9ubHkgdGhlbiBpdCB3b3VsZCBkbyB0aGUKPj4+IG5vcm1hbCBwcm9jZXNzaW5nLiBXaXRoIHRo aXMsIHdlIHdvdWxkIGJlIGFibGUgdG8gYXZvaWQgdGhlIGVkaWQgcmVhZAo+Pj4gb24gdGhpcyBw YXRjaCwgd2Ugd291bGQgbWF5YmUgYmUgYWJsZSB0byBhdm9pZCBhdCBsZWFzdCBwYXJ0IG9mIHBh dGNoCj4+PiAyLCB3ZSB3b3VsZCBtYXliZSBiZSBhYmxlIHRvIGNvbXBsZXRlbHkgYXZvaWQgcGF0 Y2ggNywgYW5kIHRoZW4gb24KPj4+IHBhdGNoIDggd2Ugd291bGQgc3RhcnQgdG91Y2hpbmcgaW50 ZWxfZHBfZ2V0X2VkaWQoKSBpbnN0ZWFkLgo+Pj4KPj4+IEkga25vdyB0aGlzIGlzIHNvcnQgb2Yg YSBmdW5kYW1lbnRhbCBjaGFuZ2UgdGhhdCBpcyBiZWluZyByZXF1ZXN0ZWQgYQo+Pj4gbGl0dGxl IGxhdGUgaW4gdGhlIHJldmlldyBwcm9jZXNzLCBhbmQgaXQgY2FuIGJlIGZydXN0cmF0aW5nLCBi dXQgdGhpcwo+Pj4gYXNwZWN0IG9mIHRoZSBjb2RlIG9ubHkgcmVjZW50bHkgY2hhbmdlZCAoSSB3 YXMgZmluZSB3aXRoIHRoZSBFRElECj4+PiByZWFkcyBqdXN0IGluIHRoZSBjb21wbGlhbmNlIHRl c3RpbmcgZnVuY3Rpb24pLCBhbmQgc2luY2UgdGhlIERQCj4+PiBjb21wbGlhbmNlIGNvZGUgaXMg cXVpdGUgY29tcGxleCwgaXQgdG9vayBtZSBhIHdoaWxlIHRvIHJlYWxpemUKPj4+IGV2ZXJ5dGhp bmcgdGhhdCdzIGdvaW5nIG9uIGFuZCB3aGF0IGlzIHRoZSBwdXJwb3NlIG9mIGVhY2ggcGllY2Uu IEkKPj4+IGFsc28gdGhpbmsgdGhhdCwgc2luY2UgdGhpcyBpZGVhIHdpbGwgYWxsb3cgdGhlIGNv bXBsaWFuY2UgdGVzdGluZyB0bwo+Pj4gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIHdvcmsg ZG9uZSBieSBpOTE1X2hvdHBsdWdfd29ya19mdW5jKCksCj4+PiBjb21wbGlhbmNlIHRlc3Rpbmcg d2lsbCBiZXR0ZXIgcmVmbGVjdCB0aGUgYmVoYXZpb3IgdGhhdCBpcyBhY3R1YWxseQo+Pj4gZG9u ZSBieSB0aGUgS2VybmVsIHdoZW4gRFAgZGV2aWNlcyBhcmUgcGx1Z2dlZC91bnBsdWdnZWQuIEFu ZCBJIGRpZAo+Pj4gYXNrIGFib3V0IHRob3NlIG5ldyBFRElEIHJlYWRzIGFzIHNvb24gYXMgSSBz dGFydGVkIHJldmlld2luZyB0aGUKPj4+IHBhdGNoIHRoYXQgaW50cm9kdWNlZCB0aGVtLgo+Pj4K Pj4+IE5vdywgc2luY2UgSSBrbm93IGhvdyBmcnVzdHJhdGluZyBpdCBpcyB0byBoYXZlIHRvIGNo YW5nZSBhCj4+PiBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBjb2RlIG9uY2UgYWdhaW4sIEkg d2lsbCBsZWF2ZSB0byB0aGUKPj4+IG1haW50YWluZXJzIHRoZSBkZWNpc2lvbiBvZiB3aGV0aGVy IHRoZSBjdXJyZW50IHByb3Bvc2VkCj4+PiBpbXBsZW1lbnRhdGlvbiBpcyBhY2NlcHRhYmxlIG9y IGlmIHdlIHdhbnQgdG8gbWFrZSB0aGUgRFAgY29tcGxpYW5jZQo+Pj4gdGVzdGluZyBjb2RlIHRh a2UgaW50byBjb25zaWRlcmF0aW9uIHRoZSB3b3JrIGRvbmUgYnkKPj4+IGk5MTVfaG90cGx1Z193 b3JrX2Z1bmMoKS4gSSB3b3VsZCBhbHNvIGxpa2UgdG8ga25vdyB5b3VyIG9waW5pb24gb24KPj4+ IHRoaXMuIE1heWJlIG15IGlkZWEganVzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYmVjYXVzZSBvZiBz b21ldGhpbmcgZWxzZQo+Pj4gSSBkaWRuJ3QgcmVhbGl6ZSA6KQo+PiBJIGRvbid0IHRoaW5rIHRo aXMgaXMgYSBnb29kIGlkZWEuIFRoZSB3b3JrIGxvb3AgYXNwZWN0IHNlZW1zIGxpa2UgYSB2ZXJ5 Cj4+IGNvbXBsZXggc29sdXRpb24gc29sdXRpb24gdG8gYSBwcm9ibGVtIHRoYXQgaXMgcmVsYXRp dmVseSBzaW1wbGUuIEluIGEKPj4gZGlzY3Vzc2lvbiB3aXRoIERhbmllbCwgaGUgaW5kaWNhdGVk IHRoYXQgYWRkaW5nIGEgd29yayBsb29wIGlzIHNvbWV0aGluZyB0bwo+PiBiZSBhdm9pZGVkIHVu bGVzcyBpdCdzICpyZWFsbHkqIG5lY2Vzc2FyeSwgYXMgdGhleSBhcmUgcHJvbmUgdG8gcmFjZQo+ PiBjb25kaXRpb25zLiBJbiB0aGlzIGNhc2UsIEkganVzdCBkb24ndCBzZWUgdGhhdCBpdCdzIG5l Y2Vzc2FyeS4KPiBUaGUgd29ya3F1ZXVlIHRoaW5nIHdhcyBqdXN0IGFuIGlkZWEgdG8gaW1wbGVt ZW50IGEgc29sdXRpb24gZm9yIHRoZQo+IHJlYWwgcHJvYmxlbS4gSSB0aGluayB3ZSBzaG91bGQg YmUgZm9jdXNpbmcgYWJvdXQgZGlzY3Vzc2luZyB0aGUgZmFjdAo+IHRoYXQgd2UncmUgbm90IHRh a2luZyBpOTE1X2hvdHBsdWdfd29ya19mdW5jKCkgaW50byBjb25zaWRlcmF0aW9uIHdoZW4KPiBk b2luZyB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nLCBub3Qgb24gdGhlIGZhY3QgdGhhdCBvbmUgb2Yg dGhlIHBvc3NpYmxlCj4gaW1wbGVtZW50YXRpb25zIGNvdWxkIHVzZSBhIHdvcmtxdWV1ZS4gSSdk IHN0aWxsIGxpa2UgdG8gaGVhciB5b3VyCj4gYXJndW1lbnRzIG9uIHRoYXQuCkZhaXIgZW5vdWdo LgoKU28gSSd2ZSBiZWVuIGxvb2tpbmcgaW50byB0aGlzIGFuZCB3aHkgdGhlIGk5MTVfaG90cGx1 Z193b3JrX2Z1bmMgd2Fzbid0IApwYXJ0IG9mIHRoaXMuIEl0IGlzLCBhcyB5b3Ugc2FpZCwgYSBy ZWxhdGl2ZWx5IGZ1bmRhbWVudGFsIGNvZGUgcGF0aCBmb3IgCkRpc3BsYXlwb3J0IHRocm91Z2gg dGhlIGRyaXZlci4gV2hhdCBJIGRpc2NvdmVyZWQgd2FzIHRoYXQgdGhpcyBmdW5jdGlvbiAKaXMg bmV2ZXIgY2FsbGVkIG9uIEhTVyAobXkgcHJpbWFyeSB0ZXN0IHZlaGljbGUpLCBtYWlubHkgYmVj YXVzZSAKY2hlY2tfbGlua19zdGF0dXMoKSByZXR1cm5zIElSUV9IQU5ETEVEIGluc3RlYWQgb2Yg SVJRX05PTkUuIFRoZSB3b3JrIApmdW5jdGlvbiBmb3IgSFNXIGlzIGk5MTVfZGlncG9ydF93b3Jr X2Z1bmMsIHNvIHdoZW4gaXQgZ2V0cyB0aGUgCklSUV9IQU5ETEVEIHJldHVybiBjb2RlLCBpdCBk b2Vzbid0IGZhbGwgdGhyb3VnaCB0byB0aGUgbGVnYWN5IAppOTE1X2hvdHBsdWdfd29ya19mdW5j IGhhbmRsZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhpcyBoYW5kbGVyIApjYWxscyBp bnRlbF9ocGRfaXJxX2V2ZW50IHdoaWNoIGlzIHdoZXJlIHRoZSAtPmRldGVjdCBjb25uZWN0b3Ig ZnVuY3Rpb24gCmlzIGNhbGxlZC4gQW5kIGludGVsX2RwX2RldGVjdCgpIGlzIHdoZXJlIGFsbCB0 aGUgaGFwcHkgZ29vZG5lc3MgZm9yIApEaXNwbGF5cG9ydCBiZWdpbnMuCgpVcCB1bnRpbCBJIGRp c2NvdmVyZWQgdGhpcywgSSBoYWQgbWlzdGFrZW5seSBwcm9wYWdhdGVkIHRoYXQgcHJvYmxlbSAK Zm9yd2FyZCBpbiB0byB0aGUgU1NUIGNhc2UgaW4gaW50ZWxfZHBfaG90X3B1bHNlKCkgaW4gcGF0 Y2ggNiBieSAKcmV0dXJuaW5nIElSUV9IQU5ETEVEIGluc3RlYWQgb2YgSVJRX05PTkUsIHdoaWNo IGlzIHdoYXQgdGhlIGNvZGUgd2FzIApkb2luZyBmb3IgU1NUIHByaW9yIHRvIHBhdGNoIDYuIFdp dGggdGhpcyBwcm9ibGVtIGNvcnJlY3RlZCAoYXMgaXQgaXMgaW4gCnRoZSBsYXRlc3QgdXBkYXRl IGluIHBhdGNoIHNldCBWNikgdGhlIHdvcmsgZnVuY3Rpb25zIGFyZSBub3cgY2FsbGVkIGFzIAp0 aGV5IHNob3VsZCBiZS4gVGhlIHBvaW50IGJlaW5nIHRoYXQgdGhpcyBvcGVucyB1cCB0aGUgcG9z c2liaWxpdHkgb2YgCnVzaW5nIGVsZW1lbnRzIGFsb25nIHRoaXMgcGF0aCB0byBwYXNzIGNvbXBs aWFuY2UgdGVzdGluZywgdGhlcmVieSAKY3JlYXRpbmcgYSBtb3JlIHZhbGlkIHRlc3QgY2FzZS4K CldpdGggdGhpcyBpbiBtaW5kLCBJIGFtIG5vdCBvcHBvc2VkIHRvIHVzaW5nIGVsZW1lbnRzIGFs b25nIHRoYXQgcGF0aCB0byAKc2F0aXNmeSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyAodGhhdCdz IHRoZSBzcGlyaXQgb2YgdGhlIHRlc3RzLCAKYW55d2F5cykgYnV0IGFzIEkndmUgaW5kaWNhdGVk LCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgd2UgbmVlZCB0byB0YWtlIApzcGVjaWFsIHN0ZXBzIChs aWtlIHRoZSBlZGlkX2NvcnJ1cHQgZmxhZykgaW4gb3JkZXIgdG8gZG8gdGhlIHJpZ2h0IAp0aGlu Z3MgdG8gcGFzcyB0aGUgdGVzdHMuIEkgaGF2ZSBjb25jZXJucyBhYm91dCB0cnlpbmcgdG8gZG8g dGhhdCBhdCAKdGhpcyBwb2ludCwgYXMgaXQgcmVxdWlyZXMgc3Vic3RhbnRpYWwgcmV3b3JrIHRv IHRoYXQgY29kZSBwYXRoIHRoYXQgCmhhdmUgYSBzaWduaWZpY2FudCBjaGFuY2Ugb2YgYnJlYWtp bmcgdGhpbmdzLiBTbyB0byBhdm9pZCB0aGF0LCAgSSAKcHJvcG9zZSB0aGF0IHRoaXMgcGF0Y2gg YmUgbWVyZ2VkIG5vdyBzbyB0aGF0IGEgd29ya2luZyBzb2x1dGlvbiBpcyBpbiAKcGxhY2UuIFRo aXMgZGlzY3Vzc2lvbiBzaG91bGQgY29udGludWUgYW5kIHdlIGNhbiBkZWNpZGUgd2hlcmUgdG8g cHV0IAp0aGluZ3MgaW4gdGhlIGhvdHBsdWdfd29yayBwYXRoIHRvIHNhdGlzZnkgdGhlIGNvbXBs aWFuY2UgcmVxdWlyZXMgb3ZlciAKdGhlIGNvdXJzZSBvZiBzb21lIGZvbGxvd3VwIHBhdGNoZXMu Cgo+PiBBZGRpdGlvbmFsbHksIHlvdSBoYXZlIGJlZW4ga2VlbiB0byBub3RlIGludmFzaXZlIHNv bHV0aW9ucyBhbmQgdGhpcyBzZWVtcwo+PiBsaWtlIGEgaGlnaGx5IGludmFzaXZlIHNvbHV0aW9u IGVzcGVjaWFsbHkgaW4gbGlnaHQgb2YgaGF2aW5nIGEgdmlhYmxlIG9uZQo+PiByaWdodCBoZXJl Lgo+Pgo+PiBUaGlzIHNvbHV0aW9uIGFkZHMgdmVyeSBsaXR0bGUgb3ZlcmhlYWQgYWxvbmcgdGhl IEhQRCBwYXRoIGFuZCB0aGF0IG92ZXJoZWFkCj4+IGlzIGEgc2luZ2xlIHJlYWQgb2YgdGhlIEVE SUQgZm9yIGVhY2ggZXZlbnQuIFRvIGZ1cnRoZXIgYWRkcmVzcyBhbnkgY29uY2VybnMKPj4gYWJv dXQgcGVyZm9ybWFuY2UsIGZvciBWNiBJJ3ZlIHByb3BhZ2F0ZWQgdGhlIGxvbmdfaHBkIGZsYWcg Zm9yd2FyZCBpbnRvCj4+IGNoZWNrX2xpbmtfc3RhdHVzIHNvIHRoYXQgdGhlIEVESUQgcmVhZCBp cyBvbmx5IGNhbGxlZCBmb3IgYSBob3QgcGx1ZyBldmVudCwKPj4gbm90IHNob3J0IHB1bHNlcy4g QW5vdGhlciBwbHVzIHRvIHRoaXMgc29sdXRpb24gaXMgdGhhdCBpZi93aGVuIHRoaXMgbmVlZHMK Pj4gdG8gbW92ZWQgdG8gdXNlcnNwYWNlLCB0aGlzIG9uZSBpcyBhIGxvdCBlYXNpZXIgdG8gdW53 aW5kIGFuZCBwdWxsIG91dCB0aGFuCj4+IHRoZSB3b3JrIGxvb3AgeW91J3JlIHN1Z2dlc3Rpbmcu Cj4+Cj4+IFdpdGggcmVzcGVjdCB0byB0aGUgdXNlciBzcGFjZSBzb2x1dGlvbiwgdGhhdCdzIHNv bWV0aGluZyB3b3J0aAo+PiBpbnZlc3RpZ2F0aW5nIGluIHRoZSBmdXR1cmUuIEkgaGF2ZSBzb21l IGNvbmNlcm5zIGFib3V0IGRvaW5nIHRoYXQsIHRoZQo+PiBwcmltYXJ5IG9uZSBiZWluZyB0aGUg YWJpbGl0eSB0byBkZXRlY3QgdGhlIGNvcnJ1cHRlZCBoZWFkZXIsIGJ1dCBJIHRoaW5rCj4+IGl0 J3Mgc29tZXRoaW5nIHRvIGNvbnNpZGVyIGZvciBhIGZvbGxvdy1vbiB1cGRhdGUuCj4+Cj4+Cj4+ Cj4+Pj4gICAgICAgICAgIC8qIFRyeSB0byByZWFkIHRoZSBzb3VyY2Ugb2YgdGhlIGludGVycnVw dCAqLwo+Pj4+ICAgICAgICAgICBpZiAoaW50ZWxfZHAtPmRwY2RbRFBfRFBDRF9SRVZdID49IDB4 MTEgJiYKPj4+PiAgICAgICAgICAgICAgIGludGVsX2RwX2dldF9zaW5rX2lycShpbnRlbF9kcCwg JnNpbmtfaXJxX3ZlY3RvcikpIHsKPj4+PiAtLQo+Pj4+IDEuOS4xCj4+Pj4KPj4+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPj4+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+Pj4K Pj4+Cj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK