From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RESEND-CI v4 04/15] drm/edid: parse YCBCR 420 videomodes from EDID Date: Fri, 30 Jun 2017 14:58:10 +0300 Message-ID: <20170630115810.GT12629@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> <3f8dc381-0b37-dd6c-fd82-2b739c39cdea@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <3f8dc381-0b37-dd6c-fd82-2b739c39cdea@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, Jose Abreu , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gMzAsIDIwMTcgYXQgMTA6NDc6NDhBTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiA2LzI3LzIwMTcgNToy MiBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gV2VkLCBKdW4gMjEsIDIwMTcgYXQg MDQ6MDQ6MDJQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1hIHdyb3RlOgo+ID4+IEhETUkgMi4wIHNw ZWMgYWRkcyBzdXBwb3J0IGZvciBZQ0JDUjQyMCBzdWItc2FtcGxlZCBvdXRwdXQuCj4gPj4gQ0VB LTg2MS1GIGFkZHMgdHdvIG5ldyBibG9ja3MgaW4gRURJRCdzIENFQSBleHRlbnNpb24gYmxvY2tz LAo+ID4+IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgc2luaydzIFlDQkNSNDIwIG91dHB1 dCBjYXBhYmlsaXRpZXMuCj4gPj4KPiA+PiBUaGVzZSBibG9ja3MgYXJlOgo+ID4+Cj4gPj4gLSBZ Q0JDUjQyMHZkYihZQ0JDUiA0MjAgdmlkZW8gZGF0YSBibG9jayk6Cj4gPj4gVGhpcyBibG9jayBj b250YWlucyBWSUNzIG9mIHZpZGVvIG1vZGVzLCB3aGljaCBjYW4gYmUgc29wcG9ydGVkIG9ubHkK PiA+PiBpbiBZQ0JDUjQyMCBvdXRwdXQgbW9kZSAoTm90IGluIFJHQi9ZQ0JDUjQ0NC80MjIuIEl0 cyBsaWtlIGEgbm9ybWFsCj4gPj4gU1ZEIGJsb2NrLCB2YWxpZCBmb3IgWUNCQ1I0MjAgbW9kZXMg b25seS4KPiA+Pgo+ID4+IC0gWUNCQ1I0MjBjbWRiKFlDQkNSIDQyMCBjYXBhYmlsaXR5IG1hcCBk YXRhIGJsb2NrKToKPiA+PiBUaGlzIGJsb2NrIGdpdmVzIGluZm9ybWF0aW9uIGFib3V0IHZpZGVv IG1vZGVzIHdoaWNoIGNhbiBzdXBwb3J0Cj4gPj4gWUNCQ1I0MjAgb3V0cHV0IG1vZGUgYWxzbyAo YWxvbmcgd2l0aCBSR0IsWUNCQ1I0NDQvNDIyIGV0YykgVGhpcwo+ID4+IGJsb2NrIGNvbnRhaW5z IGEgYml0bWFwIGluZGV4IG9mIG5vcm1hbCBzdmQgdmlkZW9tb2Rlcywgd2hpY2ggY2FuCj4gPj4g c3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLgo+ID4+IFNvIGlmIGJpdCAwIGZyb20gZmlyc3Qg dmNiIGJ5dGUgaXMgc2V0LCBmaXJzdCB2aWRlbyBtb2RlIGluIHRoZSBzdmQKPiA+PiBsaXN0IGNh biBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28uIEJpdCAxIG1lYW5zIHNlY29uZCB2aWRlbyBt b2RlCj4gPj4gZnJvbSBzdmQgbGlzdCBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLCBh bmQgc28gb24uCj4gPj4KPiA+PiBUaGlzIHBhdGNoIGFkZHMgdHdvIGJpdG1hcHMgaW4gZGlzcGxh eSdzIGhkbWlfaW5mbyBzdHJ1Y3R1cmUsIG9uZSBlYWNoCj4gPj4gZm9yIFZDQiBhbmQgVkRCIG1v ZGVzLiBJZiB0aGUgc291cmNlIGlzIEhETUkgMi4wIGNhcGFibGUsIHRoaXMgcGF0Y2gKPiA+PiBh ZGRzOgo+ID4+IC0gVkRCIG1vZGVzIChZQ0JDUiA0MjAgb25seSBtb2RlcykgaW4gY29ubmVjdG9y J3MgbW9kZSBsaXN0LCBhbHNvIG1ha2VzCj4gPj4gICAgYW4gZW50cnkgaW4gdGhlIHZkYl9iaXRt YXAgcGVyIHZpYy4KPiA+PiAtIFZDQiBtb2RlcyAoWUNCQ1IgNDIwIGFsc28gbW9kZXMpIG9ubHkg ZW50cnkgaW4gdGhlIHZjYl9iaXRtYXAuCj4gPj4KPiA+PiBDYzogVmlsbGUgU3lyamFsYSA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4gQ2M6IEpvc2UgQWJyZXUgPGpvYWJyZXVA c3lub3BzeXMuY29tPgo+ID4+IENjOiBFbWlsIFZlbGlrb3YgPGVtaWwubC52ZWxpa292QGdtYWls LmNvbT4KPiA+Pgo+ID4+IFYyOiBBZGRyZXNzZWQKPiA+PiAgICAgIFJldmlldyBjb21tZW50cyBm cm9tIEVtaWw6Cj4gPj4gICAgICAtIFVzZSAxVUxMPDxpIGluc3RlYWQgb2YgMTw8aSB0byBtYWtl IHN1cmUgdGhlIG91dHB1dCBpcyA2NGJpdC4KPiA+PiAgICAgIC0gVXNlIHRoZSBzdWdnZXN0ZWQg bWV0aG9kIGZvciB1cGRhdGluZyBkYm1hcC4KPiA+PiAgICAgIC0gQWRkIGRvY3VtZW50YXRpb24g Zm9yIFlDQkNSNDIwX3ZjYl9tYXAgdG8gZml4IGtidWlsZCB3YXJuaW5nLgo+ID4+Cj4gPj4gICAg ICBSZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZToKPiA+PiAgICAgIC0gRG8gbm90IGV4cG9zZSB0 aGUgWUNCQ1I0MjAgZmxhZ3MgaW4gdWFiaSBsYXllciwga2VlcCBpdCBpbnRlcm5hbC4KPiA+PiAg ICAgIC0gU2F2ZSBhIG1hcCBvZiBZQ0JDUjQyMCBtb2RlcyBmb3IgZnV0dXJlIHJlZmVyZW5jZS4K PiA+PiAgICAgIC0gQ2hlY2sgZGIgbGVuZ3RoIGJlZm9yZSB0cnlpbmcgdG8gcGFyc2UgZXh0ZW5k ZWQgdGFnLgo+ID4+ICAgICAgLSBBZGQgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSA+IDY0IG1vZGVz IGluIGNhcGFiaWxpdHkgbWFwIGJsb2NrLgo+ID4+ICAgICAgLSBVc2UgeTQyMGNtZGIgaW4gZnVu Y3Rpb24gbmFtZXMgYW5kIG1hY3JvcyB3aGlsZSBkZWFsaW5nIHdpdGggdmNiCj4gPj4gICAgICAg IHRvIGJlIGFsaWduZWQgd2l0aCBzcGVjLgo+ID4+ICAgICAgLSBNb3ZlIHRoZSBkaXNwbGF5IGlu Zm9ybWF0aW9uIHBhcnNpbmcgYmxvY2sgYWhlYWQgb2YgbW9kZSBwYXJzaW5nCj4gPj4gICAgICAg IGJsb2Nrcy4KPiA+Pgo+ID4+IFYzOiBBZGRyZXNzZWQgZGVzaWduL3JldmlldyBjb21tZW50cyBm cm9tIFZpbGxlCj4gPj4gICAgICAtIERvIG5vdCBhZGQgZmxhZ3MgaW4gdmlkZW8gbW9kZXMsIGVs c2Ugd2UgaGF2ZSB0byBleHBvc2UgdGhlbSB0byB1c2VyCj4gPj4gICAgICAtIFRoZXJlIHNob3Vs ZCBub3QgYmUgYSBVQUJJIGNoYW5nZSwgYW5kIGtlcm5lbCBzaG91bGQgZGV0ZWN0IHRoZQo+ID4+ ICAgICAgICBjaG9pY2Ugb2YgdGhlIG91dHB1dCBiYXNlZCBvbiB0eXBlIG9mIG1vZGUsIGFuZCB0 aGUgYml0bWFwcy4KPiA+PiAgICAgIC0gVXNlIHN0YW5kYXJkIGJpdG9wcyBmcm9tIGtlcm5lbCBi aXRtYXAgaGVhZGVyLCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nCj4gPj4gICAgICAgIGJpdCBwb3Np dGlvbnMgbWFudWFsbHkuCj4gPj4KPiA+PiBWNDogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBm cm9tIFZpbGxlOgo+ID4+ICAgICAgLSBzL3ljYmNyXzQyMF92ZGIveTQyMHZkYgo+ID4+ICAgICAg LSBzL3ljYmNyXzQyMF92Y2IveTQyMGNtZGIKPiA+PiAgICAgIC0gQmUgbGVzcyB2ZXJib3NlIG9u IGRlc2NyaXB0aW9uIG9mIGRvX3k0MjB2ZGJfbW9kZXMKPiA+PiAgICAgIC0gTW92ZSBuZXdtb2Rl IHZhcmlhYmxlIGluIHRoZSBsb29wIHNjb3BlLgo+ID4+ICAgICAgLSBVc2Ugc3ZkX3RvX3ZpYygp IHRvIGdldCBhIFZJQywgaW5zdGVhZCBvZiAweDdmCj4gPj4gICAgICAtIFJlbW92ZSBiaXRtYXAg ZGVzY3JpcHRpb24gZm9yIENNREIgbW9kZXMgJiBWREIgbW9kZXMKPiA+PiAgICAgIC0gRG9udCBh ZGQgY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCBjaGVjayBmb3IgY21kYiBtb2Rlcwo+ID4+ ICAgICAgLSBSZW1vdmUgJ2xlbicgdmFyaWFibGUsIGluIGlzX3k0MjBjbWRiIGZ1bmN0aW9uLCB3 aGljaCBpcyB1c2VkCj4gPj4gICAgICAgIG9ubHkgb25jZQo+ID4+ICAgICAgLSBBZGQgbGVuZ3Ro IGNoZWNrIGluIGlzX3k0MjB2ZGIgZnVuY3Rpb24KPiA+PiAgICAgIC0gUmVtb3ZlIHVubmVjZXNz YXJ5IGlmICghZGIpIGNoZWNrIGluIGZ1bmN0aW9uIHBhcnNlX3k0MjBjbWRiX2JpdG1hcAo+ID4+ ICAgICAgLSBEbyBub3QgYWRkIHByaW50IGFib3V0IFlDQkNSIDQyMCBtb2Rlcwo+ID4+ICAgICAg LSBGaXggaW5kZW50YXRpb24gaW4gZmV3IHBsYWNlcwo+ID4+ICAgICAgLSBNb3ZlIHljYmNyNDIw X2RjX21vZGVzIGluIG5leHQgcGF0Y2gsIHdoZXJlIGl0cyB1c2VkCj4gPj4gICAgICAtIEFkZCBh IHNlcGFyYXRlIHBhdGNoIGZvciBtb3ZlbWVudCBvZiBkcm1fYWRkX2Rpc3BsYXlfaW5mbygpCj4g Pj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBp bnRlbC5jb20+Cj4gPj4gLS0tCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyAgfCAx NTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+PiAgIGlu Y2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCB8ICAyMCArKysrKysKPiA+PiAgIDIgZmlsZXMgY2hh bmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Vk aWQuYwo+ID4+IGluZGV4IGUyZDFiMzAuLjhjN2U3M2IgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQu Ywo+ID4+IEBAIC0yNzgxLDcgKzI3ODEsOSBAQCBhZGRfZGV0YWlsZWRfbW9kZXMoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQsCj4gPj4gICAjZGVmaW5l IFZJREVPX0JMT0NLICAgICAweDAyCj4gPj4gICAjZGVmaW5lIFZFTkRPUl9CTE9DSyAgICAweDAz Cj4gPj4gICAjZGVmaW5lIFNQRUFLRVJfQkxPQ0sJMHgwNAo+ID4+IC0jZGVmaW5lIFZJREVPX0NB UEFCSUxJVFlfQkxPQ0sJMHgwNwo+ID4+ICsjZGVmaW5lIFZJREVPX0NBUEFCSUxJVFlfQkxPQ0sg MHgwNwo+ID4+ICsjZGVmaW5lIFZJREVPX0RBVEFfQkxPQ0tfNDIwCTB4MEUKPiA+PiArI2RlZmlu ZSBWSURFT19DQVBfQkxPQ0tfWTQyMENNREIgMHgwRgo+ID4+ICAgI2RlZmluZSBFRElEX0JBU0lD X0FVRElPCSgxIDw8IDYpCj4gPj4gICAjZGVmaW5lIEVESURfQ0VBX1lDUkNCNDQ0CSgxIDw8IDUp Cj4gPj4gICAjZGVmaW5lIEVESURfQ0VBX1lDUkNCNDIyCSgxIDw8IDQpCj4gPj4gQEAgLTMxNTMs MTUgKzMxNTUsNzkgQEAgZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRleChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+ICAgCXJldHVybiBuZXdtb2RlOwo+ID4+ICAgfQo+ ID4+ICAgCj4gPj4gKy8qCj4gPj4gKyAqIGRvX3k0MjB2ZGJfbW9kZXMgLSBQYXJzZSBZQ0JDUiA0 MjAgb25seSBtb2Rlcwo+ID4+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgY29ycmVzcG9uZGlu ZyB0byB0aGUgSERNSSBzaW5rCj4gPj4gKyAqIEBzdmRzOiBzdGFydCBvZiB0aGUgZGF0YSBibG9j ayBvZiBDRUEgWUNCQ1IgNDIwIFZEQgo+ID4+ICsgKiBAbGVuOiBsZW5ndGggb2YgdGhlIENFQSBZ Q0JDUiA0MjAgVkRCCj4gPj4gKyAqCj4gPj4gKyAqIFBhcnNlIHRoZSBDRUEtODYxLUYgWUNCQ1Ig NDIwIFZpZGVvIERhdGEgQmxvY2sgKFk0MjBWREIpCj4gPj4gKyAqIHdoaWNoIGNvbnRhaW5zIG1v ZGVzIHdoaWNoIGNhbiBiZSBzdXBwb3J0ZWQgaW4gWUNCQ1IgNDIwCj4gPj4gKyAqIG91dHB1dCBm b3JtYXQgb25seS4KPiA+PiArICovCj4gPj4gK3N0YXRpYyBpbnQgZG9feTQyMHZkYl9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+ICsJCQkJICAgY29uc3QgdTggKnN2 ZHMsIHU4IHN2ZHNfbGVuKQo+ID4+ICt7Cj4gPj4gKwlpbnQgbW9kZXMgPSAwLCBpOwo+ID4+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4+ICsJc3RydWN0IGRy bV9kaXNwbGF5X2luZm8gKmluZm8gPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm87Cj4gPj4gKwlz dHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZpbmZvLT5oZG1pOwo+ID4+ICsKPiA+PiArCWZv ciAoaSA9IDA7IGkgPCBzdmRzX2xlbjsgaSsrKSB7Cj4gPj4gKwkJdTggdmljID0gc3ZkX3RvX3Zp YyhzdmRzW2ldKTsKPiA+PiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiA+ PiArCj4gPj4gKwkJbmV3bW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkZXYsICZlZGlkX2NlYV9t b2Rlc1t2aWNdKTsKPiA+PiArCQlpZiAoIW5ld21vZGUpCj4gPj4gKwkJCWJyZWFrOwo+ID4+ICsJ CWJpdG1hcF9zZXQoaGRtaS0+eTQyMF92ZGJfbW9kZXMsIHZpYywgMSk7Cj4gPj4gKwkJZHJtX21v ZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG5ld21vZGUpOwo+ID4+ICsJCW1vZGVzKys7Cj4gPj4g Kwl9Cj4gPj4gKwo+ID4+ICsJaWYgKG1vZGVzID4gMCkKPiA+PiArCQlpbmZvLT5jb2xvcl9mb3Jt YXRzIHw9IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjA7Cj4gPj4gKwlyZXR1cm4gbW9kZXM7Cj4g Pj4gK30KPiA+PiArCj4gPj4gKy8qCj4gPj4gKyAqIGRybV9hZGRfY21kYl9tb2RlcyAtIEFkZCBh IFlDQkNSIDQyMCBtb2RlIGludG8gYml0bWFwCj4gPj4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3Rv ciBjb3JyZXNwb25kaW5nIHRvIHRoZSBIRE1JIHNpbmsKPiA+PiArICogQHZpYzogQ0VBIHZpYyBm b3IgdGhlIHZpZGVvIG1vZGUgdG8gYmUgYWRkZWQgaW4gdGhlIG1hcAo+ID4+ICsgKgo+ID4+ICsg KiBNYWtlcyBhbiBlbnRyeSBmb3IgYSB2aWRlb21vZGUgaW4gdGhlIFlDQkNSIDQyMCBiaXRtYXAK PiA+PiArICovCj4gPj4gK3N0YXRpYyB2b2lkCj4gPj4gK2RybV9hZGRfY21kYl9tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1OCBzdmQpCj4gPj4gK3sKPiA+PiArCXU4IHZp YyA9IHN2ZF90b192aWMoc3ZkKTsKPiA+PiArCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0g JmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4gPj4gKwo+ID4+ICsJYml0bWFwX3NldCho ZG1pLT55NDIwX2NtZGJfbW9kZXMsIHZpYywgMSk7Cj4gPj4gK30KPiA+PiArCj4gPj4gICBzdGF0 aWMgaW50Cj4gPj4gICBkb19jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgY29uc3QgdTggKmRiLCB1OCBsZW4pCj4gPj4gICB7Cj4gPj4gICAJaW50IGksIG1vZGVzID0g MDsKPiA+PiArCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvLmhkbWk7Cj4gPj4gICAKPiA+PiAgIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsK PiA+PiAgIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gPj4gICAJCW1vZGUgPSBk cm1fZGlzcGxheV9tb2RlX2Zyb21fdmljX2luZGV4KGNvbm5lY3RvciwgZGIsIGxlbiwgaSk7Cj4g Pj4gICAJCWlmIChtb2RlKSB7Cj4gPj4gKwkJCS8qCj4gPj4gKwkJCSAqIFlDQkNSNDIwIGNhcGFi aWxpdHkgYmxvY2sgY29udGFpbnMgYSBiaXRtYXAgd2hpY2gKPiA+PiArCQkJICogZ2l2ZXMgdGhl IGluZGV4IG9mIENFQSBtb2RlcyBmcm9tIENFQSBWREIsIHdoaWNoCj4gPj4gKwkJCSAqIGNhbiBz dXBwb3J0IFlDQkNSIDQyMCBzYW1wbGluZyBvdXRwdXQgYWxzbyAoYXBhcnQKPiA+PiArCQkJICog ZnJvbSBSR0IvWUNCQ1I0NDQgZXRjKS4KPiA+PiArCQkJICogRm9yIGV4YW1wbGUsIGlmIHRoZSBi aXQgMCBpbiBiaXRtYXAgaXMgc2V0LAo+ID4+ICsJCQkgKiBmaXJzdCBtb2RlIGluIFZEQiBjYW4g c3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLgo+ID4+ICsJCQkgKiBBZGQgWUNCQ1I0MjAgbW9k ZXMgb25seSBpZiBzaW5rIGlzIEhETUkgMi4wIGNhcGFibGUuCj4gPj4gKwkJCSAqLwo+ID4+ICsJ CQlpZiAodGVzdF9iaXQoaSwgJmhkbWktPnk0MjBfY21kYl9tYXApKQo+ID4+ICsJCQkJZHJtX2Fk ZF9jbWRiX21vZGVzKGNvbm5lY3RvciwgZGJbaV0pOwo+ID4+ICsKPiA+PiAgIAkJCWRybV9tb2Rl X3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiA+PiAgIAkJCW1vZGVzKys7Cj4gPj4gICAJ CX0KPiA+PiBAQCAtMzQzNyw2ICszNTAzLDEyIEBAIGRvX2hkbWlfdnNkYl9tb2RlcyhzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBjb25zdCB1OCAqZGIsIHU4IGxlbiwKPiA+PiAgIH0K PiA+PiAgIAo+ID4+ICAgc3RhdGljIGludAo+ID4+ICtjZWFfZGJfZXh0ZW5kZWRfdGFnKGNvbnN0 IHU4ICpkYikKPiA+PiArewo+ID4+ICsJcmV0dXJuIGRiWzFdOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ ICtzdGF0aWMgaW50Cj4gPj4gICBjZWFfZGJfcGF5bG9hZF9sZW4oY29uc3QgdTggKmRiKQo+ID4+ ICAgewo+ID4+ICAgCXJldHVybiBkYlswXSAmIDB4MWY7Cj4gPj4gQEAgLTM0OTcsOSArMzU2OSw3 OCBAQCBzdGF0aWMgYm9vbCBjZWFfZGJfaXNfaGRtaV9mb3J1bV92c2RiKGNvbnN0IHU4ICpkYikK PiA+PiAgIAlyZXR1cm4gb3VpID09IEhETUlfRk9SVU1fSUVFRV9PVUk7Cj4gPj4gICB9Cj4gPj4g ICAKPiA+PiArc3RhdGljIGJvb2wgY2VhX2RiX2lzX3k0MjBjbWRiKGNvbnN0IHU4ICpkYikKPiA+ PiArewo+ID4+ICsKPiA+PiArCWlmIChjZWFfZGJfdGFnKGRiKSAhPSBWSURFT19DQVBBQklMSVRZ X0JMT0NLKQo+ID4gU3RpbGwgd291bGQgbGlrZSB0byBzZWUgdGhhdCBwYXRjaCB0byBjbGVhbiB1 cCB0aGUgY3VycmVudCBleHRlbmRlZCB0YWcKPiA+IHVzYWdlLi4uCj4gWWVwLCBpdHMgb24gdGhl IHdheSwgcnVubmluZyBhIGJpdCBsb2FkZWQuCj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsK PiA+PiArCWlmICghY2VhX2RiX3BheWxvYWRfbGVuKGRiKSkKPiA+PiArCQlyZXR1cm4gZmFsc2U7 Cj4gPj4gKwo+ID4+ICsJaWYgKGNlYV9kYl9leHRlbmRlZF90YWcoZGIpICE9IFZJREVPX0NBUF9C TE9DS19ZNDIwQ01EQikKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IHRydWU7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBib29sIGNlYV9kYl9pc195NDIwdmRi KGNvbnN0IHU4ICpkYikKPiA+PiArewo+ID4+ICsJaWYgKGNlYV9kYl90YWcoZGIpICE9IFZJREVP X0NBUEFCSUxJVFlfQkxPQ0spCj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsKPiA+PiArCWlm ICghY2VhX2RiX3BheWxvYWRfbGVuKGRiKSkKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwo+ ID4+ICsJaWYgKGNlYV9kYl9leHRlbmRlZF90YWcoZGIpICE9IFZJREVPX0RBVEFfQkxPQ0tfNDIw KQo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gdHJ1ZTsKPiA+PiAr fQo+ID4+ICsKPiA+PiAgICNkZWZpbmUgZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVu ZCkgXAo+ID4+ICAgCWZvciAoKGkpID0gKHN0YXJ0KTsgKGkpIDwgKGVuZCkgJiYgKGkpICsgY2Vh X2RiX3BheWxvYWRfbGVuKCYoY2VhKVsoaSldKSA8IChlbmQpOyAoaSkgKz0gY2VhX2RiX3BheWxv YWRfbGVuKCYoY2VhKVsoaSldKSArIDEpCj4gPj4gICAKPiA+PiArc3RhdGljIHZvaWQgZHJtX3Bh cnNlX3k0MjBjbWRiX2JpdG1hcChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+ ICsJCQkJICAgICBjb25zdCB1OCAqZGIpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCBkcm1fZGlzcGxh eV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwo+ID4+ICsJc3RydWN0IGRy bV9oZG1pX2luZm8gKmhkbWkgPSAmaW5mby0+aGRtaTsKPiA+PiArCXU4IG1hcF9sZW4gPSBjZWFf ZGJfcGF5bG9hZF9sZW4oZGIpIC0gMTsKPiA+PiArCXU4IGNvdW50Owo+ID4+ICsJdTY0IG1hcCA9 IDA7Cj4gPj4gKwo+ID4+ICsJaWYgKG1hcF9sZW4gPT0gMCkgewo+ID4+ICsJCS8qIEFsbCBDRUEg bW9kZXMgc3VwcG9ydCB5Y2JjcjQyMCBzYW1wbGluZyBhbHNvLiovCj4gPj4gKwkJaGRtaS0+eTQy MF9jbWRiX21hcCA9IFU2NF9NQVg7Cj4gPj4gKwkJaW5mby0+Y29sb3JfZm9ybWF0cyB8PSBEUk1f Q09MT1JfRk9STUFUX1lDUkNCNDIwOwo+ID4+ICsJCXJldHVybjsKPiA+PiArCX0KPiA+PiArCj4g Pj4gKwkvKgo+ID4+ICsJICogVGhpcyBtYXAgaW5kaWNhdGVzIHdoaWNoIG9mIHRoZSBleGlzdGlu ZyBDRUEgYmxvY2sgbW9kZXMKPiA+PiArCSAqIGZyb20gVkRCIGNhbiBzdXBwb3J0IFlDQkNSNDIw IG91dHB1dCB0b28uIFNvIGlmIGJpdD0wIGlzCj4gPj4gKwkgKiBzZXQsIGZpcnN0IG1vZGUgZnJv bSBWREIgY2FuIHN1cHBvcnQgWUNCQ1I0MjAgb3V0cHV0IHRvby4KPiA+PiArCSAqIFdlIHdpbGwg cGFyc2UgYW5kIGtlZXAgdGhpcyBtYXAsIGJlZm9yZSBwYXJzaW5nIFZEQiBpdHNlbGYKPiA+PiAr CSAqIHRvIGF2b2lkIGdvaW5nIHRocm91Z2ggdGhlIHNhbWUgYmxvY2sgYWdhaW4gYW5kIGFnYWlu Lgo+ID4+ICsJICoKPiA+PiArCSAqIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IG1heCBwb3NzaWJs ZSBzaXplIG9mIHRoaXMgYmxvY2suCj4gPj4gKwkgKiBDbGFtcGluZyBtYXggYml0bWFwIGJsb2Nr IHNpemUgYXQgOCBieXRlcy4gRXZlcnkgYnl0ZSBjYW4KPiA+PiArCSAqIGFkZHJlc3MgOCBDRUEg bW9kZXMsIGluIHRoaXMgd2F5IHRoaXMgbWFwIGNhbiBhZGRyZXNzCj4gPj4gKwkgKiA4KjggPSBm aXJzdCA2NCBTVkRzLgo+ID4+ICsJICovCj4gPj4gKwlpZiAoV0FSTl9PTl9PTkNFKG1hcF9sZW4g PiA4KSkKPiA+PiArCQltYXBfbGVuID0gODsKPiA+PiArCj4gPj4gKwlmb3IgKGNvdW50ID0gMDsg Y291bnQgPCBtYXBfbGVuOyBjb3VudCsrKQo+ID4+ICsJCW1hcCB8PSAodTY0KWRiWzIgKyBjb3Vu dF0gPDwgKDggKiBjb3VudCk7Cj4gPj4gKwo+ID4+ICsJaWYgKG1hcCkKPiA+PiArCQlpbmZvLT5j b2xvcl9mb3JtYXRzIHw9IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjA7Cj4gPj4gKwo+ID4+ICsJ aGRtaS0+eTQyMF9jbWRiX21hcCA9IG1hcDsKPiA+PiArfQo+ID4+ICsKPiA+PiAgIHN0YXRpYyBp bnQKPiA+PiAgIGFkZF9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwg c3RydWN0IGVkaWQgKmVkaWQpCj4gPj4gICB7Cj4gPj4gQEAgLTM1MjIsMTAgKzM2NjMsMTcgQEAg YWRkX2NlYV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRp ZCAqZWRpZCkKPiA+PiAgIAkJCQl2aWRlbyA9IGRiICsgMTsKPiA+PiAgIAkJCQl2aWRlb19sZW4g PSBkYmw7Cj4gPj4gICAJCQkJbW9kZXMgKz0gZG9fY2VhX21vZGVzKGNvbm5lY3RvciwgdmlkZW8s IGRibCk7Cj4gPj4gLQkJCX0KPiA+PiAtCQkJZWxzZSBpZiAoY2VhX2RiX2lzX2hkbWlfdnNkYihk YikpIHsKPiA+PiArCQkJfSBlbHNlIGlmIChjZWFfZGJfaXNfaGRtaV92c2RiKGRiKSkgewo+ID4+ ICAgCQkJCWhkbWkgPSBkYjsKPiA+PiAgIAkJCQloZG1pX2xlbiA9IGRibDsKPiA+PiArCQkJfSBl bHNlIGlmIChjZWFfZGJfaXNfeTQyMHZkYihkYikgJiYKPiA+PiArCQkJCSAgIGNvbm5lY3Rvci0+ eWNiY3JfNDIwX2FsbG93ZWQpIHsKPiA+PiArCQkJCWNvbnN0IHU4ICp2ZGI0MjAgPSAmZGJbMl07 Cj4gPj4gKwo+ID4+ICsJCQkJLyogQWRkIDQ6MjowKG9ubHkpIG1vZGVzIHByZXNlbnQgaW4gRURJ RCAqLwo+ID4+ICsJCQkJbW9kZXMgKz0gZG9feTQyMHZkYl9tb2Rlcyhjb25uZWN0b3IsCj4gPj4g KwkJCQkJCQkgIHZkYjQyMCwKPiA+PiArCQkJCQkJCSAgZGJsIC0gMSk7Cj4gPj4gICAJCQl9Cj4g Pj4gICAJCX0KPiA+PiAgIAl9Cj4gPj4gQEAgLTQyMDYsNiArNDM1NCw4IEBAIHN0YXRpYyB2b2lk IGRybV9wYXJzZV9jZWFfZXh0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4g ICAJCQlkcm1fcGFyc2VfaGRtaV92c2RiX3ZpZGVvKGNvbm5lY3RvciwgZGIpOwo+ID4+ICAgCQlp ZiAoY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihkYikpCj4gPj4gICAJCQlkcm1fcGFyc2VfaGRt aV9mb3J1bV92c2RiKGNvbm5lY3RvciwgZGIpOwo+ID4+ICsJCWlmIChjZWFfZGJfaXNfeTQyMGNt ZGIoZGIpKQo+ID4+ICsJCQlkcm1fcGFyc2VfeTQyMGNtZGJfYml0bWFwKGNvbm5lY3RvciwgZGIp Owo+ID4+ICAgCX0KPiA+PiAgIH0KPiA+PiAgIAo+ID4+IEBAIC00NDYwLDYgKzQ2MTAsNyBAQCBp bnQgZHJtX2FkZF9lZGlkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0 cnVjdCBlZGlkICplZGlkKQo+ID4+ICAgCW51bV9tb2RlcyArPSBhZGRfY2VhX21vZGVzKGNvbm5l Y3RvciwgZWRpZCk7Cj4gPj4gICAJbnVtX21vZGVzICs9IGFkZF9hbHRlcm5hdGVfY2VhX21vZGVz KGNvbm5lY3RvciwgZWRpZCk7Cj4gPj4gICAJbnVtX21vZGVzICs9IGFkZF9kaXNwbGF5aWRfZGV0 YWlsZWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPiA+PiArCj4gPj4gICAJaWYgKGVkaWQtPmZl YXR1cmVzICYgRFJNX0VESURfRkVBVFVSRV9ERUZBVUxUX0dURikKPiA+PiAgIAkJbnVtX21vZGVz ICs9IGFkZF9pbmZlcnJlZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+ID4+ICAgCj4gPj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaAo+ID4+IGluZGV4IDc0OTNmZDMuLmNlMjIxMmQgMTAwNjQ0Cj4gPj4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nv bm5lY3Rvci5oCj4gPj4gQEAgLTEzNyw2ICsxMzcsMjUgQEAgc3RydWN0IGRybV9zY2RjIHsKPiA+ PiAgIHN0cnVjdCBkcm1faGRtaV9pbmZvIHsKPiA+PiAgIAkvKiogQHNjZGM6IHNpbmsncyBzY2Rj IHN1cHBvcnQgYW5kIGNhcGFiaWxpdGllcyAqLwo+ID4+ICAgCXN0cnVjdCBkcm1fc2NkYyBzY2Rj Owo+ID4+ICsKPiA+PiArCS8qKgo+ID4+ICsJICogQHk0MjBfdmRiX21vZGVzOiBiaXRtYXAgb2Yg bW9kZXMgd2hpY2ggY2FuIHN1cHBvcnQgeWNiY3I0MjAKPiA+PiArCSAqIG91dHB1dCBvbmx5IChu b3Qgbm9ybWFsIFJHQi9ZQ0JDUjQ0NC80MjIgb3V0cHV0cykuIFRoZXJlIGFyZSB0b3RhbAo+ID4+ ICsJICogMTA3IFZJQ3MgZGVmaW5lZCBieSBDRUEtODYxLUYgc3BlYywgc28gdGhlIHNpemUgaXMg MTI4IGJpdHMgdG8gbWFwCj4gPj4gKwkgKiB1cHRvIDEyOCBWSUNzOwo+ID4+ICsJICovCj4gPj4g Kwl1bnNpZ25lZCBsb25nIHk0MjBfdmRiX21vZGVzW0JJVFNfVE9fTE9OR1MoMTI4KV07Cj4gPj4g Kwo+ID4+ICsJLyoqCj4gPj4gKwkgKiBAeTQyMF9jbWRiX21vZGVzOiBiaXRtYXAgb2YgbW9kZXMg d2hpY2ggY2FuIHN1cHBvcnQgeWNiY3I0MjAKPiA+PiArCSAqIG91dHB1dCBhbHNvLCBhbG9uZyB3 aXRoIG5vcm1hbCBIRE1JIG91dHB1dHMuIFRoZXJlIGFyZSB0b3RhbCAxMDcKPiA+PiArCSAqIFZJ Q3MgZGVmaW5lZCBieSBDRUEtODYxLUYgc3BlYywgc28gdGhlIHNpemUgaXMgMTI4IGJpdHMgdG8g bWFwIHVwdG8KPiA+PiArCSAqIDEyOCBWSUNzOwo+ID4+ICsJICovCj4gPj4gKwl1bnNpZ25lZCBs b25nIHk0MjBfY21kYl9tb2Rlc1tCSVRTX1RPX0xPTkdTKDEyOCldOwo+ID4+ICsKPiA+PiArCS8q KiBAeTQyMF9jbWRiX21hcDogYml0bWFwIG9mIFNWRCBpbmRleCwgdG8gZXh0cmF4dCB2Y2IgbW9k ZXMgKi8KPiA+PiArCXVuc2lnbmVkIGxvbmcgeTQyMF9jbWRiX21hcDsKPiA+IHU2NCwgb3RoZXJ3 aXNlIGl0J3MgYnVzdGVkIG9uIDMyYml0IG1hY2hpbmVzLgo+IEdvdCBpdC4KPiA+Cj4gPiBNb3N0 bCB0aGlzIGxvb2tzIHByZXR0eSBnb29kLiBJIHRoaW5rIHRoZSBtYWluIHByb2JsZW0gaXMgdGhl IGxhY2sgb2YKPiA+IG1vZGUgdmFsaWRhdGlvbiB0aGF0IHdvdWxkIHJlamVjdCB0aGUgNDoyOjAg b25seSBtb2RlcyBpZiBub3Qgc3VwcG9ydGVkCj4gPiBieSB0aGUgZHJpdmVyL2RldmljZS4gSSBn dWVzcyB0aGF0J3MgaW4gYSBsYXRlciBwYXRjaD8KPiBZZXAsIGl0cyB0aGUgbmV4dCBwYXRjaCBp biB0aGUgc2VyaWVzLgoKVGhlIG9ubHkgdGhpbmcgdGhlIG5leHQgcGF0Y2ggZG9lcyBpcyBzZXQg dXAgdGhlIHk0MjBfZGNfbW9kZXMsIGJ1dCBpdApkb2Vzbid0IHVzZSB0aGF0IGZvciBhbnl0aGlu ZywgYW5kIG5laXRoZXIgZG9lcyBpdCBmaWx0ZXIgYW55dGhpbmcuIEkKY2FuJ3QgZmluZCBhbnkg bW9kZSBmaWx0ZXJpbmcgcGF0Y2ggYWN0dWFsbHkuCgo+ID4gICBJZiBzbyB3ZSBuZWVkIHRvCj4g PiByZW9yZGVyIHRoZSBzZXJpZXMgYSBiaXQgdG8gYXZvaWQgcmVnZXJlc3Npb25zLgo+IFRoYXQg cGF0Y2ggdXNlcyBwYXJhbWV0ZXJzIGFkZGVkIGluIHRoaXMgcGF0Y2gsIHRvIGRldGVjdCB0aGUg NDoyOjAgb25seSAKPiBtb2Rlcy4gU28gY2FudCBtYWtlIGl0IGJlZm9yZSB0aGlzIHBhdGNoLgo+ IExldCBtZSBzZWUgd2hhdCBiZXN0IGNhbiBJIGRvIG9uIHRoZSByZW9yZGVyaW5nLgo+IAo+IC0g U2hhc2hhbmsKPiA+PiAgIH07Cj4gPj4gICAKPiA+PiAgIC8qKgo+ID4+IEBAIC0yMDAsNiArMjE5 LDcgQEAgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gewo+ID4+ICAgI2RlZmluZSBEUk1fQ09MT1Jf Rk9STUFUX1JHQjQ0NAkJKDE8PDApCj4gPj4gICAjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRfWUNS Q0I0NDQJKDE8PDEpCj4gPj4gICAjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIJKDE8 PDIpCj4gPj4gKyNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMAkoMTw8MykKPiA+PiAg IAo+ID4+ICAgCS8qKgo+ID4+ICAgCSAqIEBjb2xvcl9mb3JtYXRzOiBIRE1JIENvbG9yIGZvcm1h dHMsIHNlbGVjdHMgYmV0d2VlbiBSR0IgYW5kIFlDckNiCj4gPj4gLS0gCj4gPj4gMi43LjQKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=