From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [RESEND-CI v4 04/15] drm/edid: parse YCBCR 420 videomodes from EDID Date: Fri, 30 Jun 2017 10:47:48 +0530 Message-ID: <3f8dc381-0b37-dd6c-fd82-2b739c39cdea@intel.com> References: <1498041253-16426-1-git-send-email-shashank.sharma@intel.com> <1498041253-16426-5-git-send-email-shashank.sharma@intel.com> <20170627115231.GP12629@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170627115231.GP12629@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org, Jose Abreu , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiA2LzI3LzIwMTcgNToyMiBQTSwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSnVuIDIxLCAyMDE3IGF0IDA0OjA0OjAyUE0gKzA1MzAsIFNoYXNo YW5rIFNoYXJtYSB3cm90ZToKPj4gSERNSSAyLjAgc3BlYyBhZGRzIHN1cHBvcnQgZm9yIFlDQkNS NDIwIHN1Yi1zYW1wbGVkIG91dHB1dC4KPj4gQ0VBLTg2MS1GIGFkZHMgdHdvIG5ldyBibG9ja3Mg aW4gRURJRCdzIENFQSBleHRlbnNpb24gYmxvY2tzLAo+PiB0byBwcm92aWRlIGluZm9ybWF0aW9u IGFib3V0IHNpbmsncyBZQ0JDUjQyMCBvdXRwdXQgY2FwYWJpbGl0aWVzLgo+Pgo+PiBUaGVzZSBi bG9ja3MgYXJlOgo+Pgo+PiAtIFlDQkNSNDIwdmRiKFlDQkNSIDQyMCB2aWRlbyBkYXRhIGJsb2Nr KToKPj4gVGhpcyBibG9jayBjb250YWlucyBWSUNzIG9mIHZpZGVvIG1vZGVzLCB3aGljaCBjYW4g YmUgc29wcG9ydGVkIG9ubHkKPj4gaW4gWUNCQ1I0MjAgb3V0cHV0IG1vZGUgKE5vdCBpbiBSR0Iv WUNCQ1I0NDQvNDIyLiBJdHMgbGlrZSBhIG5vcm1hbAo+PiBTVkQgYmxvY2ssIHZhbGlkIGZvciBZ Q0JDUjQyMCBtb2RlcyBvbmx5Lgo+Pgo+PiAtIFlDQkNSNDIwY21kYihZQ0JDUiA0MjAgY2FwYWJp bGl0eSBtYXAgZGF0YSBibG9jayk6Cj4+IFRoaXMgYmxvY2sgZ2l2ZXMgaW5mb3JtYXRpb24gYWJv dXQgdmlkZW8gbW9kZXMgd2hpY2ggY2FuIHN1cHBvcnQKPj4gWUNCQ1I0MjAgb3V0cHV0IG1vZGUg YWxzbyAoYWxvbmcgd2l0aCBSR0IsWUNCQ1I0NDQvNDIyIGV0YykgVGhpcwo+PiBibG9jayBjb250 YWlucyBhIGJpdG1hcCBpbmRleCBvZiBub3JtYWwgc3ZkIHZpZGVvbW9kZXMsIHdoaWNoIGNhbgo+ PiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28uCj4+IFNvIGlmIGJpdCAwIGZyb20gZmlyc3Qg dmNiIGJ5dGUgaXMgc2V0LCBmaXJzdCB2aWRlbyBtb2RlIGluIHRoZSBzdmQKPj4gbGlzdCBjYW4g c3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLiBCaXQgMSBtZWFucyBzZWNvbmQgdmlkZW8gbW9k ZQo+PiBmcm9tIHN2ZCBsaXN0IGNhbiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28sIGFuZCBz byBvbi4KPj4KPj4gVGhpcyBwYXRjaCBhZGRzIHR3byBiaXRtYXBzIGluIGRpc3BsYXkncyBoZG1p X2luZm8gc3RydWN0dXJlLCBvbmUgZWFjaAo+PiBmb3IgVkNCIGFuZCBWREIgbW9kZXMuIElmIHRo ZSBzb3VyY2UgaXMgSERNSSAyLjAgY2FwYWJsZSwgdGhpcyBwYXRjaAo+PiBhZGRzOgo+PiAtIFZE QiBtb2RlcyAoWUNCQ1IgNDIwIG9ubHkgbW9kZXMpIGluIGNvbm5lY3RvcidzIG1vZGUgbGlzdCwg YWxzbyBtYWtlcwo+PiAgICBhbiBlbnRyeSBpbiB0aGUgdmRiX2JpdG1hcCBwZXIgdmljLgo+PiAt IFZDQiBtb2RlcyAoWUNCQ1IgNDIwIGFsc28gbW9kZXMpIG9ubHkgZW50cnkgaW4gdGhlIHZjYl9i aXRtYXAuCj4+Cj4+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KPj4gQ2M6IEpvc2UgQWJyZXUgPGpvYWJyZXVAc3lub3BzeXMuY29tPgo+PiBDYzogRW1p bCBWZWxpa292IDxlbWlsLmwudmVsaWtvdkBnbWFpbC5jb20+Cj4+Cj4+IFYyOiBBZGRyZXNzZWQK Pj4gICAgICBSZXZpZXcgY29tbWVudHMgZnJvbSBFbWlsOgo+PiAgICAgIC0gVXNlIDFVTEw8PGkg aW5zdGVhZCBvZiAxPDxpIHRvIG1ha2Ugc3VyZSB0aGUgb3V0cHV0IGlzIDY0Yml0Lgo+PiAgICAg IC0gVXNlIHRoZSBzdWdnZXN0ZWQgbWV0aG9kIGZvciB1cGRhdGluZyBkYm1hcC4KPj4gICAgICAt IEFkZCBkb2N1bWVudGF0aW9uIGZvciBZQ0JDUjQyMF92Y2JfbWFwIHRvIGZpeCBrYnVpbGQgd2Fy bmluZy4KPj4KPj4gICAgICBSZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZToKPj4gICAgICAtIERv IG5vdCBleHBvc2UgdGhlIFlDQkNSNDIwIGZsYWdzIGluIHVhYmkgbGF5ZXIsIGtlZXAgaXQgaW50 ZXJuYWwuCj4+ICAgICAgLSBTYXZlIGEgbWFwIG9mIFlDQkNSNDIwIG1vZGVzIGZvciBmdXR1cmUg cmVmZXJlbmNlLgo+PiAgICAgIC0gQ2hlY2sgZGIgbGVuZ3RoIGJlZm9yZSB0cnlpbmcgdG8gcGFy c2UgZXh0ZW5kZWQgdGFnLgo+PiAgICAgIC0gQWRkIGEgd2FybmluZyBpZiB0aGVyZSBhcmUgPiA2 NCBtb2RlcyBpbiBjYXBhYmlsaXR5IG1hcCBibG9jay4KPj4gICAgICAtIFVzZSB5NDIwY21kYiBp biBmdW5jdGlvbiBuYW1lcyBhbmQgbWFjcm9zIHdoaWxlIGRlYWxpbmcgd2l0aCB2Y2IKPj4gICAg ICAgIHRvIGJlIGFsaWduZWQgd2l0aCBzcGVjLgo+PiAgICAgIC0gTW92ZSB0aGUgZGlzcGxheSBp bmZvcm1hdGlvbiBwYXJzaW5nIGJsb2NrIGFoZWFkIG9mIG1vZGUgcGFyc2luZwo+PiAgICAgICAg YmxvY2tzLgo+Pgo+PiBWMzogQWRkcmVzc2VkIGRlc2lnbi9yZXZpZXcgY29tbWVudHMgZnJvbSBW aWxsZQo+PiAgICAgIC0gRG8gbm90IGFkZCBmbGFncyBpbiB2aWRlbyBtb2RlcywgZWxzZSB3ZSBo YXZlIHRvIGV4cG9zZSB0aGVtIHRvIHVzZXIKPj4gICAgICAtIFRoZXJlIHNob3VsZCBub3QgYmUg YSBVQUJJIGNoYW5nZSwgYW5kIGtlcm5lbCBzaG91bGQgZGV0ZWN0IHRoZQo+PiAgICAgICAgY2hv aWNlIG9mIHRoZSBvdXRwdXQgYmFzZWQgb24gdHlwZSBvZiBtb2RlLCBhbmQgdGhlIGJpdG1hcHMu Cj4+ICAgICAgLSBVc2Ugc3RhbmRhcmQgYml0b3BzIGZyb20ga2VybmVsIGJpdG1hcCBoZWFkZXIs IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcKPj4gICAgICAgIGJpdCBwb3NpdGlvbnMgbWFudWFsbHku Cj4+Cj4+IFY0OiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6Cj4+ICAgICAg LSBzL3ljYmNyXzQyMF92ZGIveTQyMHZkYgo+PiAgICAgIC0gcy95Y2Jjcl80MjBfdmNiL3k0MjBj bWRiCj4+ICAgICAgLSBCZSBsZXNzIHZlcmJvc2Ugb24gZGVzY3JpcHRpb24gb2YgZG9feTQyMHZk Yl9tb2Rlcwo+PiAgICAgIC0gTW92ZSBuZXdtb2RlIHZhcmlhYmxlIGluIHRoZSBsb29wIHNjb3Bl Lgo+PiAgICAgIC0gVXNlIHN2ZF90b192aWMoKSB0byBnZXQgYSBWSUMsIGluc3RlYWQgb2YgMHg3 Zgo+PiAgICAgIC0gUmVtb3ZlIGJpdG1hcCBkZXNjcmlwdGlvbiBmb3IgQ01EQiBtb2RlcyAmIFZE QiBtb2Rlcwo+PiAgICAgIC0gRG9udCBhZGQgY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCBj aGVjayBmb3IgY21kYiBtb2Rlcwo+PiAgICAgIC0gUmVtb3ZlICdsZW4nIHZhcmlhYmxlLCBpbiBp c195NDIwY21kYiBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZAo+PiAgICAgICAgb25seSBvbmNlCj4+ ICAgICAgLSBBZGQgbGVuZ3RoIGNoZWNrIGluIGlzX3k0MjB2ZGIgZnVuY3Rpb24KPj4gICAgICAt IFJlbW92ZSB1bm5lY2Vzc2FyeSBpZiAoIWRiKSBjaGVjayBpbiBmdW5jdGlvbiBwYXJzZV95NDIw Y21kYl9iaXRtYXAKPj4gICAgICAtIERvIG5vdCBhZGQgcHJpbnQgYWJvdXQgWUNCQ1IgNDIwIG1v ZGVzCj4+ICAgICAgLSBGaXggaW5kZW50YXRpb24gaW4gZmV3IHBsYWNlcwo+PiAgICAgIC0gTW92 ZSB5Y2JjcjQyMF9kY19tb2RlcyBpbiBuZXh0IHBhdGNoLCB3aGVyZSBpdHMgdXNlZAo+PiAgICAg IC0gQWRkIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIG1vdmVtZW50IG9mIGRybV9hZGRfZGlzcGxheV9p bmZvKCkKPj4KPj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFy bWFAaW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyAgfCAx NTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4gICBpbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmggfCAgMjAgKysrKysrCj4+ICAgMiBmaWxlcyBjaGFuZ2Vk LCAxNzQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4g aW5kZXggZTJkMWIzMC4uOGM3ZTczYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4gQEAgLTI3ODEs NyArMjc4MSw5IEBAIGFkZF9kZXRhaWxlZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPj4gICAjZGVmaW5lIFZJREVPX0JMT0NLICAgICAw eDAyCj4+ICAgI2RlZmluZSBWRU5ET1JfQkxPQ0sgICAgMHgwMwo+PiAgICNkZWZpbmUgU1BFQUtF Ul9CTE9DSwkweDA0Cj4+IC0jZGVmaW5lIFZJREVPX0NBUEFCSUxJVFlfQkxPQ0sJMHgwNwo+PiAr I2RlZmluZSBWSURFT19DQVBBQklMSVRZX0JMT0NLIDB4MDcKPj4gKyNkZWZpbmUgVklERU9fREFU QV9CTE9DS180MjAJMHgwRQo+PiArI2RlZmluZSBWSURFT19DQVBfQkxPQ0tfWTQyMENNREIgMHgw Rgo+PiAgICNkZWZpbmUgRURJRF9CQVNJQ19BVURJTwkoMSA8PCA2KQo+PiAgICNkZWZpbmUgRURJ RF9DRUFfWUNSQ0I0NDQJKDEgPDwgNSkKPj4gICAjZGVmaW5lIEVESURfQ0VBX1lDUkNCNDIyCSgx IDw8IDQpCj4+IEBAIC0zMTUzLDE1ICszMTU1LDc5IEBAIGRybV9kaXNwbGF5X21vZGVfZnJvbV92 aWNfaW5kZXgoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJcmV0dXJuIG5l d21vZGU7Cj4+ICAgfQo+PiAgIAo+PiArLyoKPj4gKyAqIGRvX3k0MjB2ZGJfbW9kZXMgLSBQYXJz ZSBZQ0JDUiA0MjAgb25seSBtb2Rlcwo+PiArICogQGNvbm5lY3RvcjogY29ubmVjdG9yIGNvcnJl c3BvbmRpbmcgdG8gdGhlIEhETUkgc2luawo+PiArICogQHN2ZHM6IHN0YXJ0IG9mIHRoZSBkYXRh IGJsb2NrIG9mIENFQSBZQ0JDUiA0MjAgVkRCCj4+ICsgKiBAbGVuOiBsZW5ndGggb2YgdGhlIENF QSBZQ0JDUiA0MjAgVkRCCj4+ICsgKgo+PiArICogUGFyc2UgdGhlIENFQS04NjEtRiBZQ0JDUiA0 MjAgVmlkZW8gRGF0YSBCbG9jayAoWTQyMFZEQikKPj4gKyAqIHdoaWNoIGNvbnRhaW5zIG1vZGVz IHdoaWNoIGNhbiBiZSBzdXBwb3J0ZWQgaW4gWUNCQ1IgNDIwCj4+ICsgKiBvdXRwdXQgZm9ybWF0 IG9ubHkuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgZG9feTQyMHZkYl9tb2RlcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiArCQkJCSAgIGNvbnN0IHU4ICpzdmRzLCB1OCBzdmRz X2xlbikKPj4gK3sKPj4gKwlpbnQgbW9kZXMgPSAwLCBpOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5m byA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKPj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAq aGRtaSA9ICZpbmZvLT5oZG1pOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IHN2ZHNfbGVuOyBp KyspIHsKPj4gKwkJdTggdmljID0gc3ZkX3RvX3ZpYyhzdmRzW2ldKTsKPj4gKwkJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4+ICsKPj4gKwkJbmV3bW9kZSA9IGRybV9tb2RlX2R1 cGxpY2F0ZShkZXYsICZlZGlkX2NlYV9tb2Rlc1t2aWNdKTsKPj4gKwkJaWYgKCFuZXdtb2RlKQo+ PiArCQkJYnJlYWs7Cj4+ICsJCWJpdG1hcF9zZXQoaGRtaS0+eTQyMF92ZGJfbW9kZXMsIHZpYywg MSk7Cj4+ICsJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBuZXdtb2RlKTsKPj4gKwkJ bW9kZXMrKzsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAobW9kZXMgPiAwKQo+PiArCQlpbmZvLT5jb2xv cl9mb3JtYXRzIHw9IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjA7Cj4+ICsJcmV0dXJuIG1vZGVz Owo+PiArfQo+PiArCj4+ICsvKgo+PiArICogZHJtX2FkZF9jbWRiX21vZGVzIC0gQWRkIGEgWUNC Q1IgNDIwIG1vZGUgaW50byBiaXRtYXAKPj4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBIRE1JIHNpbmsKPj4gKyAqIEB2aWM6IENFQSB2aWMgZm9yIHRoZSB2 aWRlbyBtb2RlIHRvIGJlIGFkZGVkIGluIHRoZSBtYXAKPj4gKyAqCj4+ICsgKiBNYWtlcyBhbiBl bnRyeSBmb3IgYSB2aWRlb21vZGUgaW4gdGhlIFlDQkNSIDQyMCBiaXRtYXAKPj4gKyAqLwo+PiAr c3RhdGljIHZvaWQKPj4gK2RybV9hZGRfY21kYl9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCB1OCBzdmQpCj4+ICt7Cj4+ICsJdTggdmljID0gc3ZkX3RvX3ZpYyhzdmQpOwo+ PiArCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZv LmhkbWk7Cj4+ICsKPj4gKwliaXRtYXBfc2V0KGhkbWktPnk0MjBfY21kYl9tb2RlcywgdmljLCAx KTsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQKPj4gICBkb19jZWFfbW9kZXMoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwgY29uc3QgdTggKmRiLCB1OCBsZW4pCj4+ICAgewo+PiAg IAlpbnQgaSwgbW9kZXMgPSAwOwo+PiArCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmNv bm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4+ICAgCj4+ICAgCWZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykgewo+PiAgIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4+ICAgCQlt b2RlID0gZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRleChjb25uZWN0b3IsIGRiLCBsZW4s IGkpOwo+PiAgIAkJaWYgKG1vZGUpIHsKPj4gKwkJCS8qCj4+ICsJCQkgKiBZQ0JDUjQyMCBjYXBh YmlsaXR5IGJsb2NrIGNvbnRhaW5zIGEgYml0bWFwIHdoaWNoCj4+ICsJCQkgKiBnaXZlcyB0aGUg aW5kZXggb2YgQ0VBIG1vZGVzIGZyb20gQ0VBIFZEQiwgd2hpY2gKPj4gKwkJCSAqIGNhbiBzdXBw b3J0IFlDQkNSIDQyMCBzYW1wbGluZyBvdXRwdXQgYWxzbyAoYXBhcnQKPj4gKwkJCSAqIGZyb20g UkdCL1lDQkNSNDQ0IGV0YykuCj4+ICsJCQkgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIGJpdCAwIGlu IGJpdG1hcCBpcyBzZXQsCj4+ICsJCQkgKiBmaXJzdCBtb2RlIGluIFZEQiBjYW4gc3VwcG9ydCBZ Q0JDUjQyMCBvdXRwdXQgdG9vLgo+PiArCQkJICogQWRkIFlDQkNSNDIwIG1vZGVzIG9ubHkgaWYg c2luayBpcyBIRE1JIDIuMCBjYXBhYmxlLgo+PiArCQkJICovCj4+ICsJCQlpZiAodGVzdF9iaXQo aSwgJmhkbWktPnk0MjBfY21kYl9tYXApKQo+PiArCQkJCWRybV9hZGRfY21kYl9tb2Rlcyhjb25u ZWN0b3IsIGRiW2ldKTsKPj4gKwo+PiAgIAkJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9y LCBtb2RlKTsKPj4gICAJCQltb2RlcysrOwo+PiAgIAkJfQo+PiBAQCAtMzQzNyw2ICszNTAzLDEy IEBAIGRvX2hkbWlfdnNkYl9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBj b25zdCB1OCAqZGIsIHU4IGxlbiwKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGludAo+PiArY2Vh X2RiX2V4dGVuZGVkX3RhZyhjb25zdCB1OCAqZGIpCj4+ICt7Cj4+ICsJcmV0dXJuIGRiWzFdOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50Cj4+ICAgY2VhX2RiX3BheWxvYWRfbGVuKGNvbnN0IHU4 ICpkYikKPj4gICB7Cj4+ICAgCXJldHVybiBkYlswXSAmIDB4MWY7Cj4+IEBAIC0zNDk3LDkgKzM1 NjksNzggQEAgc3RhdGljIGJvb2wgY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihjb25zdCB1OCAq ZGIpCj4+ICAgCXJldHVybiBvdWkgPT0gSERNSV9GT1JVTV9JRUVFX09VSTsKPj4gICB9Cj4+ICAg Cj4+ICtzdGF0aWMgYm9vbCBjZWFfZGJfaXNfeTQyMGNtZGIoY29uc3QgdTggKmRiKQo+PiArewo+ PiArCj4+ICsJaWYgKGNlYV9kYl90YWcoZGIpICE9IFZJREVPX0NBUEFCSUxJVFlfQkxPQ0spCj4g U3RpbGwgd291bGQgbGlrZSB0byBzZWUgdGhhdCBwYXRjaCB0byBjbGVhbiB1cCB0aGUgY3VycmVu dCBleHRlbmRlZCB0YWcKPiB1c2FnZS4uLgpZZXAsIGl0cyBvbiB0aGUgd2F5LCBydW5uaW5nIGEg Yml0IGxvYWRlZC4KPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJaWYgKCFjZWFfZGJfcGF5 bG9hZF9sZW4oZGIpKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKwlpZiAoY2VhX2RiX2V4 dGVuZGVkX3RhZyhkYikgIT0gVklERU9fQ0FQX0JMT0NLX1k0MjBDTURCKQo+PiArCQlyZXR1cm4g ZmFsc2U7Cj4+ICsKPj4gKwlyZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wg Y2VhX2RiX2lzX3k0MjB2ZGIoY29uc3QgdTggKmRiKQo+PiArewo+PiArCWlmIChjZWFfZGJfdGFn KGRiKSAhPSBWSURFT19DQVBBQklMSVRZX0JMT0NLKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsK Pj4gKwlpZiAoIWNlYV9kYl9wYXlsb2FkX2xlbihkYikpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4g Kwo+PiArCWlmIChjZWFfZGJfZXh0ZW5kZWRfdGFnKGRiKSAhPSBWSURFT19EQVRBX0JMT0NLXzQy MCkKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsK Pj4gICAjZGVmaW5lIGZvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0LCBlbmQpIFwKPj4gICAJ Zm9yICgoaSkgPSAoc3RhcnQpOyAoaSkgPCAoZW5kKSAmJiAoaSkgKyBjZWFfZGJfcGF5bG9hZF9s ZW4oJihjZWEpWyhpKV0pIDwgKGVuZCk7IChpKSArPSBjZWFfZGJfcGF5bG9hZF9sZW4oJihjZWEp WyhpKV0pICsgMSkKPj4gICAKPj4gK3N0YXRpYyB2b2lkIGRybV9wYXJzZV95NDIwY21kYl9iaXRt YXAoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gKwkJCQkgICAgIGNvbnN0IHU4 ICpkYikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0 b3ItPmRpc3BsYXlfaW5mbzsKPj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZpbmZv LT5oZG1pOwo+PiArCXU4IG1hcF9sZW4gPSBjZWFfZGJfcGF5bG9hZF9sZW4oZGIpIC0gMTsKPj4g Kwl1OCBjb3VudDsKPj4gKwl1NjQgbWFwID0gMDsKPj4gKwo+PiArCWlmIChtYXBfbGVuID09IDAp IHsKPj4gKwkJLyogQWxsIENFQSBtb2RlcyBzdXBwb3J0IHljYmNyNDIwIHNhbXBsaW5nIGFsc28u Ki8KPj4gKwkJaGRtaS0+eTQyMF9jbWRiX21hcCA9IFU2NF9NQVg7Cj4+ICsJCWluZm8tPmNvbG9y X2Zvcm1hdHMgfD0gRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKPj4gKwkJcmV0dXJuOwo+PiAr CX0KPj4gKwo+PiArCS8qCj4+ICsJICogVGhpcyBtYXAgaW5kaWNhdGVzIHdoaWNoIG9mIHRoZSBl eGlzdGluZyBDRUEgYmxvY2sgbW9kZXMKPj4gKwkgKiBmcm9tIFZEQiBjYW4gc3VwcG9ydCBZQ0JD UjQyMCBvdXRwdXQgdG9vLiBTbyBpZiBiaXQ9MCBpcwo+PiArCSAqIHNldCwgZmlyc3QgbW9kZSBm cm9tIFZEQiBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLgo+PiArCSAqIFdlIHdpbGwg cGFyc2UgYW5kIGtlZXAgdGhpcyBtYXAsIGJlZm9yZSBwYXJzaW5nIFZEQiBpdHNlbGYKPj4gKwkg KiB0byBhdm9pZCBnb2luZyB0aHJvdWdoIHRoZSBzYW1lIGJsb2NrIGFnYWluIGFuZCBhZ2Fpbi4K Pj4gKwkgKgo+PiArCSAqIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IG1heCBwb3NzaWJsZSBzaXpl IG9mIHRoaXMgYmxvY2suCj4+ICsJICogQ2xhbXBpbmcgbWF4IGJpdG1hcCBibG9jayBzaXplIGF0 IDggYnl0ZXMuIEV2ZXJ5IGJ5dGUgY2FuCj4+ICsJICogYWRkcmVzcyA4IENFQSBtb2RlcywgaW4g dGhpcyB3YXkgdGhpcyBtYXAgY2FuIGFkZHJlc3MKPj4gKwkgKiA4KjggPSBmaXJzdCA2NCBTVkRz Lgo+PiArCSAqLwo+PiArCWlmIChXQVJOX09OX09OQ0UobWFwX2xlbiA+IDgpKQo+PiArCQltYXBf bGVuID0gODsKPj4gKwo+PiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IG1hcF9sZW47IGNvdW50 KyspCj4+ICsJCW1hcCB8PSAodTY0KWRiWzIgKyBjb3VudF0gPDwgKDggKiBjb3VudCk7Cj4+ICsK Pj4gKwlpZiAobWFwKQo+PiArCQlpbmZvLT5jb2xvcl9mb3JtYXRzIHw9IERSTV9DT0xPUl9GT1JN QVRfWUNSQ0I0MjA7Cj4+ICsKPj4gKwloZG1pLT55NDIwX2NtZGJfbWFwID0gbWFwOwo+PiArfQo+ PiArCj4+ICAgc3RhdGljIGludAo+PiAgIGFkZF9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4+ICAgewo+PiBAQCAtMzUyMiwxMCAr MzY2MywxNyBAQCBhZGRfY2VhX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IHN0cnVjdCBlZGlkICplZGlkKQo+PiAgIAkJCQl2aWRlbyA9IGRiICsgMTsKPj4gICAJCQkJdmlk ZW9fbGVuID0gZGJsOwo+PiAgIAkJCQltb2RlcyArPSBkb19jZWFfbW9kZXMoY29ubmVjdG9yLCB2 aWRlbywgZGJsKTsKPj4gLQkJCX0KPj4gLQkJCWVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZzZGIo ZGIpKSB7Cj4+ICsJCQl9IGVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZzZGIoZGIpKSB7Cj4+ICAg CQkJCWhkbWkgPSBkYjsKPj4gICAJCQkJaGRtaV9sZW4gPSBkYmw7Cj4+ICsJCQl9IGVsc2UgaWYg KGNlYV9kYl9pc195NDIwdmRiKGRiKSAmJgo+PiArCQkJCSAgIGNvbm5lY3Rvci0+eWNiY3JfNDIw X2FsbG93ZWQpIHsKPj4gKwkJCQljb25zdCB1OCAqdmRiNDIwID0gJmRiWzJdOwo+PiArCj4+ICsJ CQkJLyogQWRkIDQ6MjowKG9ubHkpIG1vZGVzIHByZXNlbnQgaW4gRURJRCAqLwo+PiArCQkJCW1v ZGVzICs9IGRvX3k0MjB2ZGJfbW9kZXMoY29ubmVjdG9yLAo+PiArCQkJCQkJCSAgdmRiNDIwLAo+ PiArCQkJCQkJCSAgZGJsIC0gMSk7Cj4+ICAgCQkJfQo+PiAgIAkJfQo+PiAgIAl9Cj4+IEBAIC00 MjA2LDYgKzQzNTQsOCBAQCBzdGF0aWMgdm9pZCBkcm1fcGFyc2VfY2VhX2V4dChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgIAkJCWRybV9wYXJzZV9oZG1pX3ZzZGJfdmlkZW8o Y29ubmVjdG9yLCBkYik7Cj4+ICAgCQlpZiAoY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihkYikp Cj4+ICAgCQkJZHJtX3BhcnNlX2hkbWlfZm9ydW1fdnNkYihjb25uZWN0b3IsIGRiKTsKPj4gKwkJ aWYgKGNlYV9kYl9pc195NDIwY21kYihkYikpCj4+ICsJCQlkcm1fcGFyc2VfeTQyMGNtZGJfYml0 bWFwKGNvbm5lY3RvciwgZGIpOwo+PiAgIAl9Cj4+ICAgfQo+PiAgIAo+PiBAQCAtNDQ2MCw2ICs0 NjEwLDcgQEAgaW50IGRybV9hZGRfZWRpZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPj4gICAJbnVtX21vZGVzICs9IGFkZF9jZWFfbW9k ZXMoY29ubmVjdG9yLCBlZGlkKTsKPj4gICAJbnVtX21vZGVzICs9IGFkZF9hbHRlcm5hdGVfY2Vh X21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4+ICAgCW51bV9tb2RlcyArPSBhZGRfZGlzcGxheWlk X2RldGFpbGVkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4+ICsKPj4gICAJaWYgKGVkaWQtPmZl YXR1cmVzICYgRFJNX0VESURfRkVBVFVSRV9ERUZBVUxUX0dURikKPj4gICAJCW51bV9tb2RlcyAr PSBhZGRfaW5mZXJyZWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPj4gICAKPj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaAo+PiBpbmRleCA3NDkzZmQzLi5jZTIyMTJkIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ IEBAIC0xMzcsNiArMTM3LDI1IEBAIHN0cnVjdCBkcm1fc2NkYyB7Cj4+ICAgc3RydWN0IGRybV9o ZG1pX2luZm8gewo+PiAgIAkvKiogQHNjZGM6IHNpbmsncyBzY2RjIHN1cHBvcnQgYW5kIGNhcGFi aWxpdGllcyAqLwo+PiAgIAlzdHJ1Y3QgZHJtX3NjZGMgc2NkYzsKPj4gKwo+PiArCS8qKgo+PiAr CSAqIEB5NDIwX3ZkYl9tb2RlczogYml0bWFwIG9mIG1vZGVzIHdoaWNoIGNhbiBzdXBwb3J0IHlj YmNyNDIwCj4+ICsJICogb3V0cHV0IG9ubHkgKG5vdCBub3JtYWwgUkdCL1lDQkNSNDQ0LzQyMiBv dXRwdXRzKS4gVGhlcmUgYXJlIHRvdGFsCj4+ICsJICogMTA3IFZJQ3MgZGVmaW5lZCBieSBDRUEt ODYxLUYgc3BlYywgc28gdGhlIHNpemUgaXMgMTI4IGJpdHMgdG8gbWFwCj4+ICsJICogdXB0byAx MjggVklDczsKPj4gKwkgKi8KPj4gKwl1bnNpZ25lZCBsb25nIHk0MjBfdmRiX21vZGVzW0JJVFNf VE9fTE9OR1MoMTI4KV07Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBAeTQyMF9jbWRiX21vZGVzOiBi aXRtYXAgb2YgbW9kZXMgd2hpY2ggY2FuIHN1cHBvcnQgeWNiY3I0MjAKPj4gKwkgKiBvdXRwdXQg YWxzbywgYWxvbmcgd2l0aCBub3JtYWwgSERNSSBvdXRwdXRzLiBUaGVyZSBhcmUgdG90YWwgMTA3 Cj4+ICsJICogVklDcyBkZWZpbmVkIGJ5IENFQS04NjEtRiBzcGVjLCBzbyB0aGUgc2l6ZSBpcyAx MjggYml0cyB0byBtYXAgdXB0bwo+PiArCSAqIDEyOCBWSUNzOwo+PiArCSAqLwo+PiArCXVuc2ln bmVkIGxvbmcgeTQyMF9jbWRiX21vZGVzW0JJVFNfVE9fTE9OR1MoMTI4KV07Cj4+ICsKPj4gKwkv KiogQHk0MjBfY21kYl9tYXA6IGJpdG1hcCBvZiBTVkQgaW5kZXgsIHRvIGV4dHJheHQgdmNiIG1v ZGVzICovCj4+ICsJdW5zaWduZWQgbG9uZyB5NDIwX2NtZGJfbWFwOwo+IHU2NCwgb3RoZXJ3aXNl IGl0J3MgYnVzdGVkIG9uIDMyYml0IG1hY2hpbmVzLgpHb3QgaXQuCj4KPiBNb3N0bCB0aGlzIGxv b2tzIHByZXR0eSBnb29kLiBJIHRoaW5rIHRoZSBtYWluIHByb2JsZW0gaXMgdGhlIGxhY2sgb2YK PiBtb2RlIHZhbGlkYXRpb24gdGhhdCB3b3VsZCByZWplY3QgdGhlIDQ6MjowIG9ubHkgbW9kZXMg aWYgbm90IHN1cHBvcnRlZAo+IGJ5IHRoZSBkcml2ZXIvZGV2aWNlLiBJIGd1ZXNzIHRoYXQncyBp biBhIGxhdGVyIHBhdGNoPwpZZXAsIGl0cyB0aGUgbmV4dCBwYXRjaCBpbiB0aGUgc2VyaWVzLgo+ ICAgSWYgc28gd2UgbmVlZCB0bwo+IHJlb3JkZXIgdGhlIHNlcmllcyBhIGJpdCB0byBhdm9pZCBy ZWdlcmVzc2lvbnMuClRoYXQgcGF0Y2ggdXNlcyBwYXJhbWV0ZXJzIGFkZGVkIGluIHRoaXMgcGF0 Y2gsIHRvIGRldGVjdCB0aGUgNDoyOjAgb25seSAKbW9kZXMuIFNvIGNhbnQgbWFrZSBpdCBiZWZv cmUgdGhpcyBwYXRjaC4KTGV0IG1lIHNlZSB3aGF0IGJlc3QgY2FuIEkgZG8gb24gdGhlIHJlb3Jk ZXJpbmcuCgotIFNoYXNoYW5rCj4+ICAgfTsKPj4gICAKPj4gICAvKioKPj4gQEAgLTIwMCw2ICsy MTksNyBAQCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyB7Cj4+ICAgI2RlZmluZSBEUk1fQ09MT1Jf Rk9STUFUX1JHQjQ0NAkJKDE8PDApCj4+ICAgI2RlZmluZSBEUk1fQ09MT1JfRk9STUFUX1lDUkNC NDQ0CSgxPDwxKQo+PiAgICNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMgkoMTw8MikK Pj4gKyNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMAkoMTw8MykKPj4gICAKPj4gICAJ LyoqCj4+ICAgCSAqIEBjb2xvcl9mb3JtYXRzOiBIRE1JIENvbG9yIGZvcm1hdHMsIHNlbGVjdHMg YmV0d2VlbiBSR0IgYW5kIFlDckNiCj4+IC0tIAo+PiAyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==