From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v2 06/14] drm/edid: parse YCBCR420 videomodes from EDID Date: Fri, 14 Jul 2017 09:34:51 +0530 Message-ID: <76c76c8b-849c-ede2-9b8a-018a4745a7c0@intel.com> References: <1499960000-9232-1-git-send-email-shashank.sharma@intel.com> <1499960000-9232-7-git-send-email-shashank.sharma@intel.com> <20170713162118.GJ12629@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170713162118.GJ12629@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: dri-devel@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiA3LzEzLzIwMTcgOTo1MSBQTSwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVsIDEzLCAyMDE3IGF0IDA5OjAzOjEyUE0gKzA1MzAsIFNoYXNo 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 bmZvKCkKPj4KPj4gVjU6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZToKPj4g ICAgICAtIEFkZCB0aGUgcGF0Y2ggd2hpY2ggY2xlYW5zIHVwIHRoZSBjdXJyZW50IEVYVEVOREVE X1RBRyB1c2FnZQo+PiAgICAgIC0gTWFrZSB5NDIwX2NtZGJfbWFwIHU2NAo+PiAgICAgIC0gRG8g bm90IGJsb2NrIHljYmNyNDIwIG1vZGVzIHdoaWxlIHBhcnNpbmcgdGhlIEVESUQsIHJhdGhlcgo+ PiAgICAgICAgYWRkIGEgc2VwYXJhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIHBydW5lIHljYmNyNDIw LW9ubHkgbW9kZXMgZnJvbQo+PiAgICAgICAgY29ubmVjdG9yJ3MgcHJvYmVkIG1vZGVzLgo+Pgo+ PiBWNjogUmViYXNlCj4+IFY3OiBNb3ZlIHRoaXMgcGF0Y2ggYWZ0ZXIgdGhlIDQyMF9vbmx5IHZh bGlkYXRpb24gcGF0Y2ggKFZpbGxlKQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFy bWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fZWRpZC5jICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQo+PiAgIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCB8ICAxMiArKysrCj4+ICAg MiBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9lZGlkLmMKPj4gaW5kZXggOTZlZWU1YS4uYjg2YWZiOSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlk LmMKPj4gQEAgLTI3ODMsNiArMjc4Myw4IEBAIGFkZF9kZXRhaWxlZF9tb2RlcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPj4gICAjZGVmaW5lIFNQ RUFLRVJfQkxPQ0sJMHgwNAo+PiAgICNkZWZpbmUgVVNFX0VYVEVOREVEX1RBRyAweDA3Cj4+ICAg I2RlZmluZSBFWFRfVklERU9fQ0FQQUJJTElUWV9CTE9DSyAweDAwCj4+ICsjZGVmaW5lIEVYVF9W SURFT19EQVRBX0JMT0NLXzQyMAkweDBFCj4+ICsjZGVmaW5lIEVYVF9WSURFT19DQVBfQkxPQ0tf WTQyMENNREIgMHgwRgo+PiAgICNkZWZpbmUgRURJRF9CQVNJQ19BVURJTwkoMSA8PCA2KQo+PiAg ICNkZWZpbmUgRURJRF9DRUFfWUNSQ0I0NDQJKDEgPDwgNSkKPj4gICAjZGVmaW5lIEVESURfQ0VB X1lDUkNCNDIyCSgxIDw8IDQpCj4+IEBAIC0zMTU1LDE1ICszMTU3LDc5IEBAIGRybV9kaXNwbGF5 X21vZGVfZnJvbV92aWNfaW5kZXgoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4g ICAJcmV0dXJuIG5ld21vZGU7Cj4+ICAgfQo+PiAgIAo+PiArLyoKPj4gKyAqIGRvX3k0MjB2ZGJf bW9kZXMgLSBQYXJzZSBZQ0JDUiA0MjAgb25seSBtb2Rlcwo+PiArICogQGNvbm5lY3RvcjogY29u bmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEhETUkgc2luawo+PiArICogQHN2ZHM6IHN0YXJ0 IG9mIHRoZSBkYXRhIGJsb2NrIG9mIENFQSBZQ0JDUiA0MjAgVkRCCj4+ICsgKiBAbGVuOiBsZW5n dGggb2YgdGhlIENFQSBZQ0JDUiA0MjAgVkRCCj4+ICsgKgo+PiArICogUGFyc2UgdGhlIENFQS04 NjEtRiBZQ0JDUiA0MjAgVmlkZW8gRGF0YSBCbG9jayAoWTQyMFZEQikKPj4gKyAqIHdoaWNoIGNv bnRhaW5zIG1vZGVzIHdoaWNoIGNhbiBiZSBzdXBwb3J0ZWQgaW4gWUNCQ1IgNDIwCj4+ICsgKiBv dXRwdXQgZm9ybWF0IG9ubHkuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgZG9feTQyMHZkYl9tb2Rl cyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiArCQkJCSAgIGNvbnN0IHU4ICpz dmRzLCB1OCBzdmRzX2xlbikKPj4gK3sKPj4gKwlpbnQgbW9kZXMgPSAwLCBpOwo+PiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKPj4gKwlzdHJ1Y3QgZHJt X2hkbWlfaW5mbyAqaGRtaSA9ICZpbmZvLT5oZG1pOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8 IHN2ZHNfbGVuOyBpKyspIHsKPj4gKwkJdTggdmljID0gc3ZkX3RvX3ZpYyhzdmRzW2ldKTsKPj4g KwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4+ICsKPiBIbW0uIExvb2tzIGxp a2UgaGVyZSB3ZSB3aWxsIG5lZWQgdGhlIGRybV92YWxpZF9jZWFfdmljKCkgY2hlY2sKPiBiZWNh dXNlIHRoZSB2aWMgaXMgY29taW5nIGZyb20gYW4gdW50cnVzdGVkIHNvdXJjZS4KQWdyZWUsIHRo ZXJlIHNob3VsZCBiZSBvbmUuCj4+ICsJCW5ld21vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2 LCAmZWRpZF9jZWFfbW9kZXNbdmljXSk7Cj4+ICsJCWlmICghbmV3bW9kZSkKPj4gKwkJCWJyZWFr Owo+PiArCQliaXRtYXBfc2V0KGhkbWktPnk0MjBfdmRiX21vZGVzLCB2aWMsIDEpOwo+PiArCQlk cm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbmV3bW9kZSk7Cj4+ICsJCW1vZGVzKys7Cj4+ ICsJfQo+PiArCj4+ICsJaWYgKG1vZGVzID4gMCkKPj4gKwkJaW5mby0+Y29sb3JfZm9ybWF0cyB8 PSBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwOwo+PiArCXJldHVybiBtb2RlczsKPj4gK30KPj4g Kwo+PiArLyoKPj4gKyAqIGRybV9hZGRfY21kYl9tb2RlcyAtIEFkZCBhIFlDQkNSIDQyMCBtb2Rl IGludG8gYml0bWFwCj4+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgY29ycmVzcG9uZGluZyB0 byB0aGUgSERNSSBzaW5rCj4+ICsgKiBAdmljOiBDRUEgdmljIGZvciB0aGUgdmlkZW8gbW9kZSB0 byBiZSBhZGRlZCBpbiB0aGUgbWFwCj4+ICsgKgo+PiArICogTWFrZXMgYW4gZW50cnkgZm9yIGEg dmlkZW9tb2RlIGluIHRoZSBZQ0JDUiA0MjAgYml0bWFwCj4+ICsgKi8KPj4gK3N0YXRpYyB2b2lk Cj4+ICtkcm1fYWRkX2NtZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwg dTggc3ZkKQo+PiArewo+PiArCXU4IHZpYyA9IHN2ZF90b192aWMoc3ZkKTsKPj4gKwlzdHJ1Y3Qg ZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwo+IEFu ZCBtYXliZSBoZXJlLiBJdCdzIG5vdCBhY3R1YWxseSBuZWVkZWQgc2luY2Ugd2Uga25vdyBpdCdz IHZhbGlkCj4gYmVjYXVzZSBkcm1fZGlzcGxheV9tb2RlX2Zyb21fdmljX2luZGV4KCkgcmV0dXJu ZWQgYSBtb2RlLCBidXQgc2luY2UKPiB0aGF0J3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgZnJv bSBoZXJlIHdlIG1pZ2h0IHdhbnQgdG8gaGF2ZSB0aGUKPiBjaGVjay4gQnV0IGlmIHlvdSBkaXNh Z3JlZSBmZWVsIGZyZWUgdG8gbGVhdmUgaXQgb3V0LgpJIGd1ZXNzIGl0cyBhIGdvb2QgaWRlYSB0 byBiZSBjYXJlZnVsIHdoaWxlIGFkZGluZyBtb2RlcywgSSBjYW4gYWRkIGEgCmNoZWNrIGhlcmUg dG9vLgo+IEF0IHNvbWUgcG9pbnQgSSB0aGluayB3ZSBtaWdodCB3YW50IHRvIHJlb3JnYW5pemUK PiBkcm1fZGlzcGxheV9tb2RlX2Zyb21fdmljX2luZGV4KCkgc3VjaCB0aGF0IHdlIGFjdHVhbGx5 IHBhc3MgaXQgdGhlCj4gdmljIGluc3RlYWQuIFRoZW4gd2UgY291bGQgYWxzbyBwYXNzIHRoZSB2 aWMgaGVyZSBkaXJlY3RseS4KPgo+PiArCj4+ICsJYml0bWFwX3NldChoZG1pLT55NDIwX2NtZGJf bW9kZXMsIHZpYywgMSk7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgaW50Cj4+ICAgZG9fY2VhX21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGNvbnN0IHU4ICpkYiwgdTggbGVu KQo+PiAgIHsKPj4gICAJaW50IGksIG1vZGVzID0gMDsKPj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5m byAqaGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwo+PiAgIAo+PiAgIAlmb3Ig KGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKPj4gICAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlOwo+PiAgIAkJbW9kZSA9IGRybV9kaXNwbGF5X21vZGVfZnJvbV92aWNfaW5kZXgoY29ubmVj dG9yLCBkYiwgbGVuLCBpKTsKPj4gICAJCWlmIChtb2RlKSB7Cj4+ICsJCQkvKgo+PiArCQkJICog WUNCQ1I0MjAgY2FwYWJpbGl0eSBibG9jayBjb250YWlucyBhIGJpdG1hcCB3aGljaAo+PiArCQkJ ICogZ2l2ZXMgdGhlIGluZGV4IG9mIENFQSBtb2RlcyBmcm9tIENFQSBWREIsIHdoaWNoCj4+ICsJ CQkgKiBjYW4gc3VwcG9ydCBZQ0JDUiA0MjAgc2FtcGxpbmcgb3V0cHV0IGFsc28gKGFwYXJ0Cj4+ ICsJCQkgKiBmcm9tIFJHQi9ZQ0JDUjQ0NCBldGMpLgo+PiArCQkJICogRm9yIGV4YW1wbGUsIGlm IHRoZSBiaXQgMCBpbiBiaXRtYXAgaXMgc2V0LAo+PiArCQkJICogZmlyc3QgbW9kZSBpbiBWREIg Y2FuIHN1cHBvcnQgWUNCQ1I0MjAgb3V0cHV0IHRvby4KPj4gKwkJCSAqIEFkZCBZQ0JDUjQyMCBt b2RlcyBvbmx5IGlmIHNpbmsgaXMgSERNSSAyLjAgY2FwYWJsZS4KPj4gKwkJCSAqLwo+PiArCQkJ aWYgKGhkbWktPnk0MjBfY21kYl9tYXAgJiAoMSA8PCBpKSkKPiBJIHRoaW5rIHRoaXMgbmVlZHMg dG8gYmUgc29tZXRoaW5nIGxpa2UKPiBpZiAoaSA8IDY0ICYmIGhkbWktPnk0MjBfY21kYl9tYXAg JiAoMVVMTCA8PCBpKSkKWWVhaCwgdGhhdCdzIGFsc28gb25lIHByZXZlbnRpdmUgbWVhc3VyZSwg d2hpY2ggd2UgY2FuIGFkZC4KLSBTaGFzaGFuawo+Cj4gV2l0aCB0aG9zZSBjaGFuZ2VzIEkgdGhp bmsgdGhpcyBwYXJ0IHNob3VsZCBiZSBnb29kIHRvIGdvLgo+Cj4+ICsJCQkJZHJtX2FkZF9jbWRi X21vZGVzKGNvbm5lY3RvciwgZGJbaV0pOwo+PiArCj4+ICAgCQkJZHJtX21vZGVfcHJvYmVkX2Fk ZChjb25uZWN0b3IsIG1vZGUpOwo+PiAgIAkJCW1vZGVzKys7Cj4+ICAgCQl9Cj4+IEBAIC0zNTA1 LDkgKzM1NzEsNzggQEAgc3RhdGljIGJvb2wgY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihjb25z dCB1OCAqZGIpCj4+ICAgCXJldHVybiBvdWkgPT0gSERNSV9GT1JVTV9JRUVFX09VSTsKPj4gICB9 Cj4+ICAgCj4+ICtzdGF0aWMgYm9vbCBjZWFfZGJfaXNfeTQyMGNtZGIoY29uc3QgdTggKmRiKQo+ PiArewo+PiArCj4+ICsJaWYgKGNlYV9kYl90YWcoZGIpICE9IFVTRV9FWFRFTkRFRF9UQUcpCj4+ ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCWlmICghY2VhX2RiX3BheWxvYWRfbGVuKGRiKSkK Pj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJaWYgKGNlYV9kYl9leHRlbmRlZF90YWcoZGIp ICE9IEVYVF9WSURFT19DQVBfQkxPQ0tfWTQyMENNREIpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4g Kwo+PiArCXJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBjZWFfZGJfaXNf eTQyMHZkYihjb25zdCB1OCAqZGIpCj4+ICt7Cj4+ICsJaWYgKGNlYV9kYl90YWcoZGIpICE9IFVT RV9FWFRFTkRFRF9UQUcpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCWlmICghY2VhX2Ri X3BheWxvYWRfbGVuKGRiKSkKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJaWYgKGNlYV9k Yl9leHRlbmRlZF90YWcoZGIpICE9IEVYVF9WSURFT19EQVRBX0JMT0NLXzQyMCkKPj4gKwkJcmV0 dXJuIGZhbHNlOwo+PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gICAjZGVmaW5l IGZvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0LCBlbmQpIFwKPj4gICAJZm9yICgoaSkgPSAo c3RhcnQpOyAoaSkgPCAoZW5kKSAmJiAoaSkgKyBjZWFfZGJfcGF5bG9hZF9sZW4oJihjZWEpWyhp KV0pIDwgKGVuZCk7IChpKSArPSBjZWFfZGJfcGF5bG9hZF9sZW4oJihjZWEpWyhpKV0pICsgMSkK Pj4gICAKPj4gK3N0YXRpYyB2b2lkIGRybV9wYXJzZV95NDIwY21kYl9iaXRtYXAoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gKwkJCQkgICAgIGNvbnN0IHU4ICpkYikKPj4gK3sK Pj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlf aW5mbzsKPj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZpbmZvLT5oZG1pOwo+PiAr CXU4IG1hcF9sZW4gPSBjZWFfZGJfcGF5bG9hZF9sZW4oZGIpIC0gMTsKPj4gKwl1OCBjb3VudDsK Pj4gKwl1NjQgbWFwID0gMDsKPj4gKwo+PiArCWlmIChtYXBfbGVuID09IDApIHsKPj4gKwkJLyog QWxsIENFQSBtb2RlcyBzdXBwb3J0IHljYmNyNDIwIHNhbXBsaW5nIGFsc28uKi8KPj4gKwkJaGRt aS0+eTQyMF9jbWRiX21hcCA9IFU2NF9NQVg7Cj4+ICsJCWluZm8tPmNvbG9yX2Zvcm1hdHMgfD0g RFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKPj4gKwkJcmV0dXJuOwo+PiArCX0KPj4gKwo+PiAr CS8qCj4+ICsJICogVGhpcyBtYXAgaW5kaWNhdGVzIHdoaWNoIG9mIHRoZSBleGlzdGluZyBDRUEg YmxvY2sgbW9kZXMKPj4gKwkgKiBmcm9tIFZEQiBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQg dG9vLiBTbyBpZiBiaXQ9MCBpcwo+PiArCSAqIHNldCwgZmlyc3QgbW9kZSBmcm9tIFZEQiBjYW4g c3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLgo+PiArCSAqIFdlIHdpbGwgcGFyc2UgYW5kIGtl ZXAgdGhpcyBtYXAsIGJlZm9yZSBwYXJzaW5nIFZEQiBpdHNlbGYKPj4gKwkgKiB0byBhdm9pZCBn b2luZyB0aHJvdWdoIHRoZSBzYW1lIGJsb2NrIGFnYWluIGFuZCBhZ2Fpbi4KPj4gKwkgKgo+PiAr CSAqIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IG1heCBwb3NzaWJsZSBzaXplIG9mIHRoaXMgYmxv Y2suCj4+ICsJICogQ2xhbXBpbmcgbWF4IGJpdG1hcCBibG9jayBzaXplIGF0IDggYnl0ZXMuIEV2 ZXJ5IGJ5dGUgY2FuCj4+ICsJICogYWRkcmVzcyA4IENFQSBtb2RlcywgaW4gdGhpcyB3YXkgdGhp cyBtYXAgY2FuIGFkZHJlc3MKPj4gKwkgKiA4KjggPSBmaXJzdCA2NCBTVkRzLgo+PiArCSAqLwo+ PiArCWlmIChXQVJOX09OX09OQ0UobWFwX2xlbiA+IDgpKQo+PiArCQltYXBfbGVuID0gODsKPj4g Kwo+PiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IG1hcF9sZW47IGNvdW50KyspCj4+ICsJCW1h cCB8PSAodTY0KWRiWzIgKyBjb3VudF0gPDwgKDggKiBjb3VudCk7Cj4+ICsKPj4gKwlpZiAobWFw KQo+PiArCQlpbmZvLT5jb2xvcl9mb3JtYXRzIHw9IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjA7 Cj4+ICsKPj4gKwloZG1pLT55NDIwX2NtZGJfbWFwID0gbWFwOwo+PiArfQo+PiArCj4+ICAgc3Rh dGljIGludAo+PiAgIGFkZF9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgc3RydWN0IGVkaWQgKmVkaWQpCj4+ICAgewo+PiBAQCAtMzUzMCwxMCArMzY2NSwxNiBAQCBh ZGRfY2VhX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlk ICplZGlkKQo+PiAgIAkJCQl2aWRlbyA9IGRiICsgMTsKPj4gICAJCQkJdmlkZW9fbGVuID0gZGJs Owo+PiAgIAkJCQltb2RlcyArPSBkb19jZWFfbW9kZXMoY29ubmVjdG9yLCB2aWRlbywgZGJsKTsK Pj4gLQkJCX0KPj4gLQkJCWVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZzZGIoZGIpKSB7Cj4+ICsJ CQl9IGVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZzZGIoZGIpKSB7Cj4+ICAgCQkJCWhkbWkgPSBk YjsKPj4gICAJCQkJaGRtaV9sZW4gPSBkYmw7Cj4+ICsJCQl9IGVsc2UgaWYgKGNlYV9kYl9pc195 NDIwdmRiKGRiKSkgewo+PiArCQkJCWNvbnN0IHU4ICp2ZGI0MjAgPSAmZGJbMl07Cj4+ICsKPj4g KwkJCQkvKiBBZGQgNDoyOjAob25seSkgbW9kZXMgcHJlc2VudCBpbiBFRElEICovCj4+ICsJCQkJ bW9kZXMgKz0gZG9feTQyMHZkYl9tb2Rlcyhjb25uZWN0b3IsCj4+ICsJCQkJCQkJICB2ZGI0MjAs Cj4+ICsJCQkJCQkJICBkYmwgLSAxKTsKPj4gICAJCQl9Cj4+ICAgCQl9Cj4+ICAgCX0KPj4gQEAg LTQyMTYsNiArNDM1Nyw4IEBAIHN0YXRpYyB2b2lkIGRybV9wYXJzZV9jZWFfZXh0KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAgCQkJZHJtX3BhcnNlX2hkbWlfdnNkYl92aWRl byhjb25uZWN0b3IsIGRiKTsKPj4gICAJCWlmIChjZWFfZGJfaXNfaGRtaV9mb3J1bV92c2RiKGRi KSkKPj4gICAJCQlkcm1fcGFyc2VfaGRtaV9mb3J1bV92c2RiKGNvbm5lY3RvciwgZGIpOwo+PiAr CQlpZiAoY2VhX2RiX2lzX3k0MjBjbWRiKGRiKSkKPj4gKwkJCWRybV9wYXJzZV95NDIwY21kYl9i aXRtYXAoY29ubmVjdG9yLCBkYik7Cj4+ICAgCX0KPj4gICB9Cj4+ICAgCj4+IEBAIC00NDc3LDYg KzQ2MjAsNyBAQCBpbnQgZHJtX2FkZF9lZGlkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+PiAgIAludW1fbW9kZXMgKz0gYWRkX2NlYV9t b2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+PiAgIAludW1fbW9kZXMgKz0gYWRkX2FsdGVybmF0ZV9j ZWFfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPj4gICAJbnVtX21vZGVzICs9IGFkZF9kaXNwbGF5 aWRfZGV0YWlsZWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPj4gKwo+PiAgIAlpZiAoZWRpZC0+ ZmVhdHVyZXMgJiBEUk1fRURJRF9GRUFUVVJFX0RFRkFVTFRfR1RGKQo+PiAgIAkJbnVtX21vZGVz ICs9IGFkZF9pbmZlcnJlZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+PiAgIAo+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5l Y3Rvci5oCj4+IGluZGV4IDI2ZGQzZWIuLjIyNWUwOTIgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUv ZHJtL2RybV9jb25uZWN0b3IuaAo+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgK Pj4gQEAgLTE0Myw2ICsxNDMsMTcgQEAgc3RydWN0IGRybV9oZG1pX2luZm8gewo+PiAgIAkgKiB1 cHRvIDEyOCBWSUNzOwo+PiAgIAkgKi8KPj4gICAJdW5zaWduZWQgbG9uZyB5NDIwX3ZkYl9tb2Rl c1tCSVRTX1RPX0xPTkdTKDEyOCldOwo+PiArCj4+ICsJLyoqCj4+ICsJICogQHk0MjBfY21kYl9t b2RlczogYml0bWFwIG9mIG1vZGVzIHdoaWNoIGNhbiBzdXBwb3J0IHljYmNyNDIwCj4+ICsJICog b3V0cHV0IGFsc28sIGFsb25nIHdpdGggbm9ybWFsIEhETUkgb3V0cHV0cy4gVGhlcmUgYXJlIHRv dGFsIDEwNwo+PiArCSAqIFZJQ3MgZGVmaW5lZCBieSBDRUEtODYxLUYgc3BlYywgc28gdGhlIHNp emUgaXMgMTI4IGJpdHMgdG8gbWFwIHVwdG8KPj4gKwkgKiAxMjggVklDczsKPj4gKwkgKi8KPj4g Kwl1bnNpZ25lZCBsb25nIHk0MjBfY21kYl9tb2Rlc1tCSVRTX1RPX0xPTkdTKDEyOCldOwo+PiAr Cj4+ICsJLyoqIEB5NDIwX2NtZGJfbWFwOiBiaXRtYXAgb2YgU1ZEIGluZGV4LCB0byBleHRyYXh0 IHZjYiBtb2RlcyAqLwo+PiArCXU2NCB5NDIwX2NtZGJfbWFwOwo+PiAgIH07Cj4+ICAgCj4+ICAg LyoqCj4+IEBAIC0yMDYsNiArMjE3LDcgQEAgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gewo+PiAg ICNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9SR0I0NDQJCSgxPDwwKQo+PiAgICNkZWZpbmUgRFJN X0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NAkoMTw8MSkKPj4gICAjZGVmaW5lIERSTV9DT0xPUl9GT1JN QVRfWUNSQ0I0MjIJKDE8PDIpCj4+ICsjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjAJ KDE8PDMpCj4+ICAgCj4+ICAgCS8qKgo+PiAgIAkgKiBAY29sb3JfZm9ybWF0czogSERNSSBDb2xv ciBmb3JtYXRzLCBzZWxlY3RzIGJldHdlZW4gUkdCIGFuZCBZQ3JDYgo+PiAtLSAKPj4gMi43LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=