From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 4/9] drm/i915: Add check for corrupt raw EDID header for Displayport compliance testing Date: Fri, 10 Apr 2015 07:44:20 -0700 Message-ID: <5527E1C4.5060605@gmail.com> References: <1427822106-29617-1-git-send-email-tprevite@gmail.com> <1427822106-29617-5-git-send-email-tprevite@gmail.com> <5525A0EB.1040400@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: 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 , DRI Development List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzgvMjAxNSAzOjM3IFBNLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4gMjAxNS0wNC0wOCAx ODo0MyBHTVQtMDM6MDAgVG9kZCBQcmV2aXRlPHRwcmV2aXRlQGdtYWlsLmNvbT46Cj4+IE9uIDQv OC8yMDE1IDk6NTEgQU0sIFBhdWxvIFphbm9uaSB3cm90ZToKPj4+IDIwMTUtMDMtMzEgMTQ6MTUg R01ULTAzOjAwIFRvZGQgUHJldml0ZTx0cHJldml0ZUBnbWFpbC5jb20+Ogo+Pj4+IERpc3BsYXlw b3J0IGNvbXBsaWFuY2UgdGVzdCA0LjIuMi42IHJlcXVpcmVzIHRoYXQgYSBzb3VyY2UgZGV2aWNl IGJlCj4+Pj4gY2FwYWJsZSBvZiBkZXRlY3RpbmcKPj4+PiBhIGNvcnJ1cHQgRURJRC4gVG8gZG8g dGhpcywgdGhlIHRlc3Qgc2V0cyB1cCBhbiBpbnZhbGlkIEVESUQgaGVhZGVyIHRvIGJlCj4+Pj4g cmVhZCBieSB0aGUgc291cmNlCj4+Pj4gZGV2aWNlLiBVbmZvcnR1bmF0ZWx5LCB0aGUgRFJNIEVE SUQgcmVhZGluZyBhbmQgcGFyc2luZyBmdW5jdGlvbnMgYXJlCj4+Pj4gYWN0dWFsbHkgdG9vIGdv b2QgaW4KPj4+PiB0aGlzIGNhc2UgYW5kIHByZXZlbnQgdGhlIHNvdXJjZSBmcm9tIHJlYWRpbmcg dGhlIGNvcnJ1cHRlZCBFRElELiBUaGUKPj4+PiByZXN1bHQgaXMgYSBmYWlsZWQKPj4+PiBjb21w bGlhbmNlIHRlc3QuCj4+Pj4KPj4+PiBJbiBvcmRlciB0byBzdWNjZXNzZnVsbHkgcGFzcyB0aGUg dGVzdCwgdGhlIHJhdyBFRElEIGhlYWRlciBtdXN0IGJlCj4+Pj4gY2hlY2tlZCBvbiBlYWNoIHJl YWQKPj4+PiB0byBzZWUgaWYgaGFzIGJlZW4gImNvcnJ1cHRlZCIuIElmIGFuIGludmFsaWQgcmF3 IGhlYWRlciBpcyBkZXRlY3RlZCwgYQo+Pj4+IGZsYWcgaXMgc2V0IHRoYXQKPj4+PiBhbGxvd3Mg dGhlIGNvbXBsaWFuY2UgdGVzdGluZyBjb2RlIHRvIGFja25vd2xlZGdlIHRoYXQgZmFjdCBhbmQg cmVhY3QKPj4+PiBhcHByb3ByaWF0ZWx5LiBUaGUKPj4+PiBmbGFnIGlzIGF1dG9tYXRpY2FsbHkg Y2xlYXJlZCBvbiByZWFkLgo+Pj4+Cj4+Pj4gVGhpcyBjb2RlIGlzIGRlc2lnbmVkIHRvIGV4cHJl c3NseSB3b3JrIGZvciBjb21wbGlhbmNlIHRlc3Rpbmcgd2l0aG91dAo+Pj4+IGRpc3J1cHRpbmcg bm9ybWFsCj4+Pj4gb3BlcmF0aW9ucyBmb3IgRURJRCByZWFkaW5nIGFuZCBwYXJzaW5nLgo+Pj4+ Cj4+Pj4gU2lnbmVkLW9mZi1ieTogVG9kZCBQcmV2aXRlPHRwcmV2aXRlQGdtYWlsLmNvbT4KPj4+ PiBDYzpkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gLS0tCj4+Pj4gICAgZHJp dmVycy9ncHUvZHJtL2RybV9lZGlkLmMgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDE3 ICsrKysrKysrKysrKysrKysrCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggfCAgMSArCj4+Pj4gICAgaW5jbHVkZS9kcm0vZHJtX2VkaWQuaCAgICAgICAgICAgfCAgNSAr KysrKwo+Pj4+ICAgIDQgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKQo+Pj4+Cj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9lZGlkLmMKPj4+PiBpbmRleCA1M2JjN2E2Li4zZDRmNDczIDEwMDY0NAo+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMKPj4+PiBAQCAtOTkwLDYgKzk5MCwzMiBAQCBzdGF0aWMgY29uc3QgdTggZWRpZF9o ZWFkZXJbXSA9IHsKPj4+PiAgICAgICAgICAgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg MHhmZiwgMHhmZiwgMHgwMAo+Pj4+ICAgIH07Cj4+Pj4KPj4+PiArCj4+Pj4gKy8qIEZsYWcgZm9y IEVESUQgY29ycnVwdGlvbiB0ZXN0aW5nCj4+Pj4gKyAqIERpc3BsYXlwb3J0IExpbmsgQ1RTIENv cmUgMS4yIHJldjEuMSAtIDQuMi4yLjYKPj4+PiArICovCj4+Pj4gK3N0YXRpYyBib29sIHJhd19l ZGlkX2hlYWRlcl9jb3JydXB0ZWQ7Cj4+PiBBIHN0YXRpYyB2YXJpYWJsZSBsaWtlIHRoaXMgaXMg bm90IGEgZ29vZCBkZXNpZ24sIGVzcGVjaWFsbHkgZm9yIGEKPj4+IG1vZHVsZSBsaWtlIGRybS5r by4gSWYgeW91IHJlYWxseSBuZWVkIHRoaXMsIHBsZWFzZSBzdG9yZSBpdCBpbnNpZGUKPj4+IHNv bWUgc3RydWN0LiBCdXQgc2VlIGJlbG93IGZpcnN0Lgo+PiBQZXIgb3VyIGRpc2N1c3Npb24gdGhp cyBtb3JuaW5nLCBJIGNvbmN1ci4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mCj4+ IGEgZGlmZmVyZW50IHNvbHV0aW9uIHRoYXQgdXNlcyBhIG5ldyBib29sZWFuIGZsYWcgaW4gdGhl IGRybV9jb25uZWN0b3IKPj4gc3RydWN0Lgo+Pgo+PiBDYXB0dXJpbmcgbW9yZSBvZiB0aGUgZGlz Y3Vzc2lvbiBoZXJlLCB0aGUgc3RhdGljIGJvb2xlYW4gd2FzIGEgYmFkIGlkZWEgdG8KPj4gYmVn aW4gd2l0aCBhbmQgbmVlZGVkIHRvIGJlIHJlbW92ZWQuIE9uZSBzb2x1dGlvbiB3YXMgdG8gbWFr ZSB0aGUgZmxhZwo+PiBub24tc3RhdGljIGFuZCBub24tY2xlYXItb24tcmVhZCwgdGhlbiBhZGQg YSBzZXBhcmF0ZSBjbGVhcigpIGZ1bmN0aW9uLiBCdXQKPj4gaXQgc3RpbGwgaGFkIHRoZSBwcm9i bGVtIG9mIHBvdGVudGlhbCBtaXN1c2Ugb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlLiBUaGUKPj4g Y3VycmVudCBzb2x1dGlvbiAod2hpY2ggd2lsbCBiZSBwb3N0ZWQgd2l0aCBWNSkgbW9kaWZpZXMg dGhlIGlzX3ZhbGlkKCkKPj4gZnVuY3Rpb24gYW5kIGFkZHMgYSBmbGFnIGluIHRoZSBkcm1fY29u bmVjdG9yIHN0cnVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvCj4+IGRldGVjdCB0aGlzIGxvdy1sZXZl bCBoZWFkZXIgY29ycnVwdGlvbi4KPj4KPj4KPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBkcm1f cmF3X2VkaWRfaGVhZGVyX3ZhbGlkIC0gY2hlY2sgdG8gc2VlIGlmIHRoZSByYXcgaGVhZGVyIGlz Cj4+Pj4gKyAqIGNvcnJ1cHQgb3Igbm90LiBVc2VkIHNvbGVseSBmb3IgRGlzcGxheXBvcnQgY29t cGxpYW5jZQo+Pj4+ICsgKiB0ZXN0aW5nIGFuZCByZXF1aXJlZCBieSBMaW5rIENUUyBDb3JlIDEu MiByZXYxLjEgNC4yLjIuNi4KPj4+PiArICogQHJhd19lZGlkOiBwb2ludGVyIHRvIHJhdyBiYXNl IEVESUQgYmxvY2sKPj4+PiArICoKPj4+PiArICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9yaWdp bmFsIEVESUQgaGVhZGVyIGFzIHJlYWQgZnJvbSB0aGUKPj4+PiArICogZGV2aWNlIHdhcyBjb3Jy dXB0IG9yIG5vdC4gQ2xlYXJzIG9uIHJlYWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFJldHVybjogdHJ1 ZSBpZiB0aGUgcmF3IGhlYWRlciB3YXMgY29ycnVwdCwgb3RoZXJ3aXNlIGZhbHNlCj4+Pj4gKyAq Lwo+Pj4+ICtib29sIGRybV9yYXdfZWRpZF9oZWFkZXJfY29ycnVwdCh2b2lkKQo+Pj4+ICt7Cj4+ Pj4gKyAgICAgICBib29sIGNvcnJ1cHRlZCA9IHJhd19lZGlkX2hlYWRlcl9jb3JydXB0ZWQ7Cj4+ Pj4gKwo+Pj4+ICsgICAgICAgcmF3X2VkaWRfaGVhZGVyX2NvcnJ1cHRlZCA9IDA7Cj4+Pj4gKyAg ICAgICByZXR1cm4gY29ycnVwdGVkOwo+Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3Jh d19lZGlkX2hlYWRlcl9jb3JydXB0KTsKPj4+PiArCj4+Pj4gICAgLyoqCj4+Pj4gICAgICogZHJt X2VkaWRfaGVhZGVyX2lzX3ZhbGlkIC0gc2FuaXR5IGNoZWNrIHRoZSBoZWFkZXIgb2YgdGhlIGJh c2UgRURJRAo+Pj4+IGJsb2NrCj4+Pj4gICAgICogQHJhd19lZGlkOiBwb2ludGVyIHRvIHJhdyBi YXNlIEVESUQgYmxvY2sKPj4+PiBAQCAtMTAwNiw2ICsxMDMyLDEzIEBAIGludCBkcm1fZWRpZF9o ZWFkZXJfaXNfdmFsaWQoY29uc3QgdTggKnJhd19lZGlkKQo+Pj4+ICAgICAgICAgICAgICAgICAg IGlmIChyYXdfZWRpZFtpXSA9PSBlZGlkX2hlYWRlcltpXSkKPj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjb3JlKys7Cj4+Pj4KPj4+PiArICAgICAgIGlmIChzY29yZSAhPSA4KSB7Cj4+ Pj4gKyAgICAgICAgICAgICAgIC8qIExvZyBhbmQgc2V0IGZsYWcgaGVyZSBmb3IgRURJRCBjb3Jy dXB0aW9uIHRlc3RpbmcKPj4+PiArICAgICAgICAgICAgICAgICogRGlzcGxheXBvcnQgTGluayBD VFMgQ29yZSAxLjIgcmV2MS4xIC0gNC4yLjIuNgo+Pj4+ICsgICAgICAgICAgICAgICAgKi8KPj4+ PiArICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiUmF3IEVESUQgaGVhZGVyIGludmFs aWRcbiIpOwo+Pj4+ICsgICAgICAgICAgICAgICByYXdfZWRpZF9oZWFkZXJfY29ycnVwdGVkID0g MTsKPj4+PiArICAgICAgIH0KPj4+IFRoZSBwcm9ibGVtIGlzIHRoYXQgaGVyZSB3ZSdyZSBsaW1p dGluZyBvdXJzZWx2ZXMgdG8ganVzdCBhIGJhZCBlZGlkCj4+PiBoZWFkZXIsIG5vdCBhIGJhZCBl ZGlkIGluIGdlbmVyYWwsIHNvIHRoZXJlIGFyZSBtYW55IHRoaW5ncyB3aGljaCB3ZQo+Pj4gbWln aHQgbm90IGdldCAtIHN1Y2ggYXMgYSBzaW1wbGUgd3JvbmcgY2hlY2tzdW0gZWRpZCB2YWx1ZS4g SSByZW1lbWJlcgo+Pj4gdGhhdCBvbiB0aGUgcHJldmlvdXMgcGF0Y2ggeW91IGNhbGN1bGF0ZWQg dGhlIHdob2xlIGNoZWNrc3VtIG1hbnVhbGx5LAo+Pj4gYnV0IEkgZG9uJ3Qgc2VlIHRoYXQgY29k ZSBhbnltb3JlLiBXaGF0IHdhcyB0aGUgcmVhc29uIGZvciB0aGUgY2hhbmdlPwo+PiBTbyB0aGlz IGNvZGUgaXMgc3BlY2lmaWNhbGx5IGZvciB0aGUgNC4yLjIuNiBjb21wbGlhbmNlIHRlc3QgdGhh dCBpcyBsb29raW5nCj4+IGZvciBub3RoaW5nIG1vcmUgdGhhbiBhbiBpbnZhbGlkIEVESUQgaGVh ZGVyLgo+IE9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBzcGVjIEkgaGF2ZSAoMS4yIENvcmUsIEF1ZyAy MiAyMDExKSwgNC4yLjIuNiBpcwo+ICJFRElEIENvcnJ1cHRpb24gRGV0ZWN0aW9uIiwgYW5kIGl0 IG1lbnRpb25zICJFRElEIGNvcnJ1cHRpb24iIHdpdGhvdXQKPiByZWFsbHkgZ2V0dGluZyBpbnRv IHRoZSBkZXRhaWxzIG9mIGhlYWRlciBjb3JydXB0aW9uLiBPbiB0aGUgIlRlc3QKPiBwcm9jZWR1 cmUiIGRlc2NyaXB0aW9uLCBpdCBtZW50aW9ucyAiUmVmZXJlbmNlIFNpbmsgc2V0cyB1cCBFRElE IHdpdGgKPiBpbmNvcnJlY3QgY2hlY2tzdW0iLCB3aGljaCB3ZSBkb24ndCBjaGVjay4gT2YgY291 cnNlLCBjaGFuZ2luZyB0aGUKPiBoZWFkZXIgbWF5IHByb2R1Y2UgYW4gaW5jb3JyZWN0IGNoZWNr c3VtLCBidXQgbWF5YmUgdGhlIHdyb25nIGhlYWRlcgo+IGlzIGp1c3QgYSBwYXJ0aWN1bGFyIGRl dGFpbCBvZiB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nIGRldmljZSB5b3UgaGF2ZSwKPiB3aGlsZSBv dGhlcnMgY291bGQgcG90ZW50aWFsbHkgaGF2ZSBvdGhlciBmb3JtcyBvZiBjb3JydXB0aW9uLCBz dWNoIGFzCj4ganVzdCBhIGJhZCBjaGVja3N1bT8KSXQgY291bGQgdmVyeSB3ZWxsIGJlIHBhcnRp Y3VsYXIgdGhpcyB1bml0LiBTbyB3aXRoIGEgZGlmZmVyZW50IHRlc3QgCmRldmljZSwgd2UgbWln aHQgYmUgYWJsZSB0byBnZXQgYXdheSB3aXRoIGp1c3QgY2hlY2tpbmcgdGhlIGNoZWNrc3VtLiAK Rm9yIHRoaXMgb25lLCBob3dldmVyLCB3ZSBkb24ndCBhcHBlYXIgdG8gaGF2ZSB0aGF0IG9wdGlv bi4gSSBhZGRlZCB0aGUgCmNoZWNrc3VtIGNvbXB1dGF0aW9uIGludG8gdGhlIGhlYWRlciBmaXh1 cCBjb2RlIGp1c3QgdG8gbWFrZSBzdXJlLgoKPiBJbiB0aGUgcGFyYWdyYXBocyBiZWxvdyB5b3Ug ZWxhYm9yYXRlIGV2ZW4gbW9yZSBvbiB0aGUgYXNzdW1wdGlvbiBvZiBhCj4gYmFkIGhlYWRlciBp bnN0ZWFkIG9mIGp1c3QgYSBiYWQgY2hlY2tzdW0sIHNvIG1heWJlIHdlIGhhdmUgZGlmZmVyZW50 Cj4gdmVyc2lvbnMgb2YgdGhlIHNwZWM/IChJIHN0aWxsIHJlbWVtYmVyIHdoZW4gSSB1c2VkIHZl cnNpb24gMS4wIG9mIGEKPiBjZXJ0YWluIG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBzcGVjIHRv IHJldmlldyBhIHBhdGNoIG1hZGUgYWdhaW5zdAo+IHZlcnNpb24gMC44IG9mIHRoZSBzYW1lIHNw ZWMpCkkgZG8gaGF2ZSBhIGxhdGVyIHZlcnNpb24gb2YgdGhlIHNwZWMsIGJ1dCBkZXNjcmlwdGlv biBvZiB0aGlzIHRlc3QgCnNlZW1zIHRvIGJlIHRoZSBzYW1lIGJldHdlZW4gdGhlIHR3by4KPj4g SW4gZmFjdCwgdGhlIHRlc3QgdW5pdCBvbmx5Cj4+IHNldHMgdGhhdCBoZWFkZXIgYXMgaW52YWxp ZCBvbmNlLCBzbyBpZiB5b3UgbWlzcyBpdCBvbiB0aGUgZmlyc3QgcmVhZCwgeW91Cj4+IGNhbid0 IGdvIGJhY2sgYW5kIGNoZWNrIGl0IGFnYWluIGxhdGVyIC0gdGhlIHRlc3Qgd2lsbCBub3cgZmFp bC4gU28gY2F0Y2hpbmcKPj4gdGhlIGdlbmVyYWwgY2FzZSBpc24ndCByZWFsbHkgd2hhdCB0aGlz IGlzIGFib3V0IC0gaXQncyBhYm91dCBiZWluZyBhYmxlIHRvCj4+IGRldGVjdCBhIGNvcnJ1cHQg RURJRCBoZWFkZXIgZXZlbiBpZiBpdCBvbmx5IGhhcHBlbnMgb25jZS4KPj4KPj4gSG9uZXN0bHks IHRoZSBEUk0gRURJRCBjb2RlIGlzIFZFUlkgZ29vZCBhYm91dCBjYXRjaGluZyBjb3JydXB0aW9u IGNhc2VzIGFuZAo+PiBpbiB0aGUgY2FzZSBvZiBjb3JydXB0ZWQgaGVhZGVycywgZml4aW5nIHRo ZW0gYW5kIG1vdmluZyBvbi4gSSBoYWQgdG8gdGllCj4+IGludG8gaXQgYXQgYSBmYWlybHkgbG93 IGxldmVsIGluIG9yZGVyIHRvIGNhdGNoIHRoZSBpbnZhbGlkIGhlYWRlciBiZWZvcmUKPj4gdGhl IGNvZGUgZml4ZWQgaXQuCj4+Cj4+IFdpdGggcmVzcGVjdCB0byB0aGUgY2hlY2tzdW0gY29kZSwg Zm9yIHF1aXRlIGEgd2hpbGUgdGhlIGNoZWNrc3VtCj4+IGNvbXB1dGF0aW9uIHdhcyBpbmNvcnJl Y3QgaW4gdGhlIERSTSBjb2RlLiBTb21ld2hlcmUgYWxvbmcgaW4gTm92ZW1iZXIgb2YKPj4gbGFz dCB5ZWFyIG9yIDIwMTMgKEkgcmVtZW1iZXIgdGhlIG1vbnRoLCBub3QgdGhlIHllYXIsIGdvIGZp Z3VyZSkgc29tZW9uZQo+PiBjYW1lIGFsb25nIGFuZCBhZGRlZCBhIGNoZWNrc3VtIGNvbXB1dGF0 aW9uIHRoYXQgYWN0dWFsbHkgd29ya2VkLiBTbyB0aGF0Cj4+IHJlbmRlcmVkIHRoYXQgb3JpZ2lu YWwgY29kZSBJIHdyb3RlIHVubmVjZXNzYXJ5Lgo+Pgo+Pj4gQWxzbywgd2hpbGUgcmV2aWV3aW5n IHRoZSBwYXRjaCBJIGp1c3QgZGlzY292ZXJlZAo+Pj4gY29ubmVjdG9yLT5iYWRfZWRpZF9jb3Vu dGVyLiBDYW4ndCB3ZSBqdXN0IHVzZSBpdCBpbnN0ZWFkIG9mIHRoaXMKPj4+IHBhdGNoPyBJIG1l YW46IGdyYWIgdGhlIGN1cnJlbnQgY291bnRlciwgY2hlY2sgZWRpZCwgc2VlIGlmIHRoZQo+Pj4g Y291bnRlciBtb3ZlZC4KPj4gSSB0aGluayB0aGUgYWJvdmUgZGVzY3JpcHRpb24gaGlnaGxpZ2h0 cyB3aHkgdXNpbmcgdGhpcyBjb3VudGVyIHJlYWxseSBpc24ndAo+PiBhbiBvcHRpb24uIFNpbmNl IHRoZSBjb2RlIG9ubHkgZ2V0cyBvbmUgc2hvdCBhdCBjYXRjaGluZyB0aGF0IGludmFsaWQKPj4g aGVhZGVyLCBpdCdzIGVzc2VudGlhbCB0byBtYWtlIHN1cmUgaXQncyBjYXB0dXJlZCBzcGVjaWZp Y2FsbHkuIENvbXBhcmluZwo+PiBiZWZvcmUgYW5kIGFmdGVyIHZhbHVlcyBvZiB0aGlzIGNvdW50 ZXIgZG9lc24ndCBzcGVjaWZpY2FsbHkgc2F5IHRoYXQgdGhlCj4+IGhlYWRlciB3YXMgaW52YWxp ZCwgb25seSB0aGF0IFNPTUV0aGluZyBpbiB0aGUgRURJRCB3YXMgaW52YWxpZC4KPiBXaGljaCBp cywgYWNjb3JkaW5nIHRvIHRoZSB3YXkgSSByZWFkIHRoZSBzcGVjLCBub3QgYSBwcm9ibGVtLgpJ IGNvbXBsZXRlbHkgYWdyZWUgd2l0aCB5b3UuIFVuZm9ydHVuYXRlbHksIGNvZGluZyBkaXJlY3Rs eSB0byB0aGUgc3BlYyAKaXNuJ3QgZW5vdWdoIGluIHRoaXMgY2FzZS4KCj4KPj4+PiAgICAgICAg ICAgcmV0dXJuIHNjb3JlOwo+Pj4+ICAgIH0KPj4+PiAgICBFWFBPUlRfU1lNQk9MKGRybV9lZGlk X2hlYWRlcl9pc192YWxpZCk7Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+PiBp bmRleCBkYzg3Mjc2Li41N2Y4ZTQzIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4+Pj4gQEAgLTM4MjQsNiArMzgyNCw5IEBAIHVwZGF0ZV9zdGF0dXM6Cj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwb25zZSwgMSk7Cj4+Pj4gICAgICAgICAg IGlmIChzdGF0dXMgPD0gMCkKPj4+PiAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJD b3VsZCBub3Qgd3JpdGUgdGVzdCByZXNwb25zZSB0bwo+Pj4+IHNpbmtcbiIpOwo+Pj4+ICsKPj4+ PiArICAgICAgIC8qIENsZWFyIGZsYWcgaGVyZSwgYWZ0ZXIgdGVzdGluZyBpcyBjb21wbGV0ZSov Cj4+Pj4gKyAgICAgICBpbnRlbF9kcC0+Y29tcGxpYW5jZV9lZGlkX2ludmFsaWQgPSAwOwo+Pj4+ ICAgIH0KPj4+Pgo+Pj4+ICAgIHN0YXRpYyBpbnQKPj4+PiBAQCAtMzg5Niw2ICszODk5LDEwIEBA IGludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcAo+Pj4+ICppbnRlbF9k cCkKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRl bF9kcF90b19kZXYoaW50ZWxfZHApOwo+Pj4+ICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlciA9Cj4+Pj4gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsK Pj4+PiArICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPQo+Pj4+ICZpbnRl bF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5iYXNlOwo+Pj4+ICsgICAgICAgc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyID0gJmludGVsX2RwLT5hdXguZGRjOwo+Pj4+ICsgICAgICAgc3RydWN0 IGVkaWQgKmVkaWRfcmVhZCA9IE5VTEw7Cj4+Pj4gKwo+Pj4+ICAgICAgICAgICB1OCBzaW5rX2ly cV92ZWN0b3I7Cj4+Pj4gICAgICAgICAgIHU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJ WkVdOwo+Pj4+Cj4+Pj4gQEAgLTM5MTIsNiArMzkxOSwxNiBAQCBpbnRlbF9kcF9jaGVja19saW5r X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAKPj4+PiAqaW50ZWxfZHApCj4+Pj4gICAgICAgICAgICAg ICAgICAgcmV0dXJuOwo+Pj4+ICAgICAgICAgICB9Cj4+Pj4KPj4+PiArICAgICAgIC8qIENvbXBs aWFuY2UgdGVzdGluZyByZXF1aXJlcyBhbiBFRElEIHJlYWQgZm9yIGFsbCBIUEQgZXZlbnRzCj4+ Pj4gKyAgICAgICAgKiBMaW5rIENUUyBDb3JlIDEuMiByZXYgMS4xOiBUZXN0IDQuMi4yLjEKPj4+ PiArICAgICAgICAqIEZsYWcgc2V0IGhlcmUgd2lsbCBiZSBoYW5kbGVkIGluIHRoZSBFRElEIHRl c3QgZnVuY3Rpb24KPj4+PiArICAgICAgICAqLwo+Pj4+ICsgICAgICAgZWRpZF9yZWFkID0gZHJt X2dldF9lZGlkKGNvbm5lY3RvciwgYWRhcHRlcik7Cj4+Pj4gKyAgICAgICBpZiAoIWVkaWRfcmVh ZCB8fCBkcm1fcmF3X2VkaWRfaGVhZGVyX2NvcnJ1cHQoKSA9PSAxKSB7Cj4+Pj4gKyAgICAgICAg ICAgICAgIERSTV9ERUJVR19EUklWRVIoIkVESUQgaW52YWxpZCwgc2V0dGluZyBmbGFnXG4iKTsK Pj4+PiArICAgICAgICAgICAgICAgaW50ZWxfZHAtPmNvbXBsaWFuY2VfZWRpZF9pbnZhbGlkID0g MTsKPj4+PiArICAgICAgIH0KPj4+IEkgc2VlIHRoYXQgb24gdGhlIG5leHQgcGF0Y2ggeW91IGFs c28gYWRkIGEgZHJtX2dldF9lZGlkKCkgY2FsbCwgc28gd2UKPj4+IGhhdmUgYXBwYXJlbnRseSBh ZGRlZCAyIGNhbGxzIGZvciB0aGUgZWRpZCB0ZXN0LiBEbyB3ZSByZWFsbHkgbmVlZAo+Pj4gYm90 aD8gV2h5IGlzIHRoaXMgb25lIG5lZWRlZD8gV2h5IGlzIHRoYXQgb25lIG5lZWRlZD8KPj4gU28g dGhlcmUncyB0d28gaXNzdWVzIGhlcmUgLSBmaXJzdCBpcyB0aGUgc2FtZSBvbmUgbWVudGlvbmVk IGFib3ZlLCBjYXRjaGluZwo+PiB0aGF0IHNpbmdsZSBpbnN0YW5jZSBvZiBhIGNvcnJ1cHRlZCBF RElEIGhlYWRlci4gVGhlIHNlY29uZCBpcyB0aGF0IHRoZQo+PiBjaGVja3N1bSBmcm9tIHRoZSB0 ZXN0IGRldmljZSBkaWZmZXJzIGJldHdlZW4gdGhlIHR3byByZWFkcy4gSWYgeW91IHJlbW92ZQo+ PiBlaXRoZXIgb25lIG9mIHRoZW0sIG9uZSB0ZXN0IG9yIHRoZSBvdGhlciB3aWxsIGZhaWwuCj4g QnV0IHRoZW4gd2h5IG5vdCBrZWVwIGJvdGggYXQgdGhlIHNhbWUgcGxhY2U/IFRoZSBvbmUgaGVy ZSBpcyBnb2luZyB0bwo+IGFmZmVjdCBhIGxvdCBtb3JlIHRoYW4ganVzdCBjb21wbGlhbmNlIHRl c3RpbmcsIHdoaWxlIHRoZSBvdGhlciBpcwo+IGNvbnRhaW5lZCB0byBEUCBjb21wbGlhbmNlIGNv ZGUuCkkgd2FzIGFibGUgdG8gZmluZCBhIHNvbHV0aW9uIHRoYXQgcmVtb3ZlZCB0aGUgZHVwbGlj YXRlIEVESUQgcmVhZC4gSSAKaGFkIHRvIGFkZCBhIGNoZWNrc3VtIHN0b3JhZ2UgdmFyaWFibGUg aW4gdGhlIGludGVsX2RwIHN0cnVjdCwgYnV0IAp0aGF0J3MgaW5maW5pdGVseSBiZXR0ZXIgdGhh biBoYXZpbmcgYW5vdGhlciBFRElEIHJlYWQuCgpVbmZvcnR1bmF0ZWx5IHRob3VnaCwgdGhlIG9u ZSB0aGF0IGhhcyB0byBzYXkgaXMgaW4gdGhlIApjaGVja19saW5rX3N0YXR1cy4gVGhlcmUncyBq dXN0IG5vIHdheSBhcm91bmQgaXQgYmVjYXVzZSBvZiB0aGUgdGVzdCAKNC4yLjIuMSB0aGF0IHJl cXVpcmVzIGl0IHRvIGhhcHBlbiBmb3IgYSBob3QgcGx1ZyBldmVudC4gVGhlcmUncyBubyB0ZXN0 IApyZXF1ZXN0IGJpdCBzZXQgZm9yIHRoYXQsIG9yIGFueSBvdGhlciBpbmRpY2F0b3IuIEl0IHNp bXBseSBoYXMgdG8gCmhhcHBlbiBmb3IgZXZlcnkgSFBEIHBsdWcgZXZlbnQuCgo+Pj4gQWxzbywg c29tZSBtb3JlIGlkZWFzOgo+Pj4KPj4+IEkgYWxzbyB0aG91Z2h0IHRoYXQgd2UgYWxyZWFkeSBh dXRvbWF0aWNhbGx5IGlzc3VlZCBnZXRfZWRpZCgpIGNhbGxzCj4+PiBvbiB0aGUgbm9ybWFsIGhv dHBsdWcgY29kZSBwYXRoLCBzbyBpdCB3b3VsZCBiZSBhICJ0aGlyZCIgY2FsbCBvbiB0aGUKPj4+ IGNvZGVwYXRoIGZvciB0aGUgdGVzdC4gQ2FuJ3Qgd2UganVzdCByZWx5IG9uIHRoaXMgb25lPwo+ PiBTYW1lIGlzc3VlIGFzIGFib3ZlLgo+Pj4gQW5vdGhlciBpZGVhIHdvdWxkIGJlOiBpbnN0ZWFk IG9mIGdldHRpbmcgdGhlIGVkaWQgZnJvbSBpbnNpZGUgdGhlCj4+PiBLZXJuZWwsIHdlIGNvdWxk IHRyeSB0byBnZXQgaXQgZnJvbSB0aGUgdXNlci1zcGFjZSwgdXNpbmcgdGhlCj4+PiBHZXRSZXNv dXJjZXMvR2V0Q29ubmVjdG9yIElPQ1RMcywgYW5kIGFsc28gbWF5YmUgbG9vayBhdCB0aGUgRURJ RAo+Pj4gcHJvcGVydGllcyB0byBwb3NzaWJseSB2YWxpZGF0ZSB0aGUgRURJRCAoaW4gY2FzZSB0 aGF0IGVkaWQgZGlkIG5vdAo+Pj4gZ2V0ICJmaXhlZCIgYnkgdGhlIEtlcm5lbCkuIFRoZSBuaWNl IHRoaW5nIGFib3V0IHRoaXMgaXMgdGhhdCBpdCB3b3VsZAo+Pj4gbWFrZSB0aGUgdGVzdCBiZSBt b3JlIGxpa2UgYSByZWFsIGRyaXZlciB1c2FnZS4gRG8geW91IHNlZSBhbnkKPj4+IHBvc3NpYmxl IHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaD8KPj4gSSBkb24ndCByZWFsbHkgc2VlIHRoaXMg YXMgYSB2YWxpZCBvcHRpb24gaW4gbGlnaHQgb2YgdGhlIGRlc2NyaXB0aW9ucyBJJ3ZlCj4+IGdp dmVuIGFib3ZlLiBUaGlzIGhhcyBhIGdvb2QgY2hhbmNlIG9mIGludHJvZHVjaW5nIGxhdGVuY3kg cHJvYmxlbXMgd2hpY2gKPj4gbWF5IGFkdmVyc2VseSBhZmZlY3QgdGhlIHRlc3RzIGFzIHdlbGwu Cj4gV2UgaGF2ZSA1IHNlY29uZHMsIHRoYXQncyB3YXkgbW9yZSB0aGFuIGVub3VnaC4KVGhlIHRl c3QgaGFzIGEgNSBzZWNvbmQgdGltZW91dCBmb3IgdGhlIGVudGlyZSBvcGVyYXRpb24uIEknbSBs ZXNzIApjb25jZXJuZWQgd2l0aCB0aW1pbmcgb3V0IGFuZCBtb3JlIGNvbmNlcm5lZCBhYm91dCBu b3QgYmVpbmcgYWJsZSB0byAKY2F0Y2ggdGhpbmdzIGZhc3QgZW5vdWdoIG9yIHJlYWN0IGZhc3Qg ZW5vdWdoIHRvIHBhcmFtZXRlciBvciB2YWx1ZSAKY2hhbmdlcy4gSXQgbWF5IG9yIG1heSBub3Qg YmUgYW4gaXNzdWUgZm9yIHByb2Nlc3NpbmcgdGhlIEVESUQgKEknZCBsZWFuIAptb3JlIHRvd2Fy ZHMgdGhlIG5vdCBjYXNlKSBidXQgaXQncyBzb21ldGhpbmcgdGhhdCBoYXMgdG8gYmUga2VwdCBp biAKbWluZCBoZXJlLCBhcyB0aGlzIGhhcyBjYXVzZWQgcHJvYmxlbXMgaW4gdGhlIHBhc3Qgd2hl biBidWlsZGluZyBvdXQgdGhlIAp0ZXN0IGludGVyZmFjZXMuCgpJbiBhbnkgY2FzZSwgdGhpcyBz b3VuZHMgbGlrZSB0aGlzIGlzIGEgc3VnZ2VzdGlvbiByYXRoZXIgdGhhbiBhIApibG9ja2luZyBp c3N1ZS4gTXkgbWFpbiBjb25jZXJuIHdpdGggbW92aW5nIGFsbCB0aGlzIHN0dWZmIGludG8gCnVz ZXJzcGFjZSBpcyB0aGF0IGl0J3MgbW92aW5nIHRvd2FyZHMgYnVpbGRpbmcgYSBEaXNwbGF5cG9y dC1jb21wbGlhbnQgCnVzZXIgYXBwIHZlcnN1cyBhIERpc3BsYXlwb3J0LWNvbXBsaWFudCBkcml2 ZXIuIEJ1dCB0aGlzIGlzIHNvbWV0aGluZyAKdGhhdCBJIGNhbiBsb29rIGludG8gc29tZXRpbWUg ZG93biB0aGUgcm9hZC4KCgo+Pj4+ICsKPj4+PiAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgdGhl IHNvdXJjZSBvZiB0aGUgaW50ZXJydXB0ICovCj4+Pj4gICAgICAgICAgIGlmIChpbnRlbF9kcC0+ ZHBjZFtEUF9EUENEX1JFVl0gPj0gMHgxMSAmJgo+Pj4+ICAgICAgICAgICAgICAgaW50ZWxfZHBf Z2V0X3NpbmtfaXJxKGludGVsX2RwLCAmc2lua19pcnFfdmVjdG9yKSkgewo+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBpbmRleCBlN2I2MmJlLi40MmU0MjUxIDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBAQCAtNjUxLDYgKzY1MSw3IEBAIHN0 cnVjdCBpbnRlbF9kcCB7Cj4+Pj4gICAgICAgICAgIC8qIERpc3BsYXlwb3J0IGNvbXBsaWFuY2Ug dGVzdGluZyAqLwo+Pj4+ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90 eXBlOwo+Pj4+ICAgICAgICAgICBib29sIGNvbXBsaWFuY2VfdGVzdGluZ19hY3RpdmU7Cj4+Pj4g KyAgICAgICBib29sIGNvbXBsaWFuY2VfZWRpZF9pbnZhbGlkOwo+Pj4+ICAgIH07Cj4+Pj4KPj4+ PiAgICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX2VkaWQuaCBiL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4+PiBpbmRleCA4N2Q4 NWU4Li44YTdlYjIyIDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4+ PiArKysgYi9pbmNsdWRlL2RybS9kcm1fZWRpZC5oCj4+Pj4gQEAgLTM4OCw0ICszODgsOSBAQCBz dHJ1Y3QgZWRpZCAqZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4+Pj4gKmNv bm5lY3RvciwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4p LAo+Pj4+ICAgICAgICAgICB2b2lkICpkYXRhKTsKPj4+Pgo+Pj4+ICsvKiBDaGVjayBmb3IgY29y cnVwdGlvbiBpbiByYXcgRURJRCBoZWFkZXIgLSBEaXNwbGF5cG9ydCBjb21wbGlhbmNlCj4+Pj4g KyAgKiBEaXNwbGF5cG9ydCBMaW5rIENUUyBDb3JlIDEuMiByZXYxLjEgLSA0LjIuMi42Cj4+Pj4g KyAqLwo+Pj4+ICtib29sIGRybV9yYXdfZWRpZF9oZWFkZXJfY29ycnVwdCh2b2lkKTsKPj4+PiAr Cj4+Pj4gICAgI2VuZGlmIC8qIF9fRFJNX0VESURfSF9fICovCj4+Pj4gLS0KPj4+PiAxLjkuMQo+ Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+Pj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKPj4+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==