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: Tue, 27 Jun 2017 14:52:31 +0300 Message-ID: <20170627115231.GP12629@intel.com> References: <1498041253-16426-1-git-send-email-shashank.sharma@intel.com> <1498041253-16426-5-git-send-email-shashank.sharma@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: <1498041253-16426-5-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Shashank Sharma Cc: intel-gfx@lists.freedesktop.org, Jose Abreu , Emil Velikov , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMjEsIDIwMTcgYXQgMDQ6MDQ6MDJQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+IEhETUkgMi4wIHNwZWMgYWRkcyBzdXBwb3J0IGZvciBZQ0JDUjQyMCBzdWItc2Ft cGxlZCBvdXRwdXQuCj4gQ0VBLTg2MS1GIGFkZHMgdHdvIG5ldyBibG9ja3MgaW4gRURJRCdzIENF QSBleHRlbnNpb24gYmxvY2tzLAo+IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgc2luaydz IFlDQkNSNDIwIG91dHB1dCBjYXBhYmlsaXRpZXMuCj4gCj4gVGhlc2UgYmxvY2tzIGFyZToKPiAK PiAtIFlDQkNSNDIwdmRiKFlDQkNSIDQyMCB2aWRlbyBkYXRhIGJsb2NrKToKPiBUaGlzIGJsb2Nr IGNvbnRhaW5zIFZJQ3Mgb2YgdmlkZW8gbW9kZXMsIHdoaWNoIGNhbiBiZSBzb3Bwb3J0ZWQgb25s eQo+IGluIFlDQkNSNDIwIG91dHB1dCBtb2RlIChOb3QgaW4gUkdCL1lDQkNSNDQ0LzQyMi4gSXRz IGxpa2UgYSBub3JtYWwKPiBTVkQgYmxvY2ssIHZhbGlkIGZvciBZQ0JDUjQyMCBtb2RlcyBvbmx5 Lgo+IAo+IC0gWUNCQ1I0MjBjbWRiKFlDQkNSIDQyMCBjYXBhYmlsaXR5IG1hcCBkYXRhIGJsb2Nr KToKPiBUaGlzIGJsb2NrIGdpdmVzIGluZm9ybWF0aW9uIGFib3V0IHZpZGVvIG1vZGVzIHdoaWNo IGNhbiBzdXBwb3J0Cj4gWUNCQ1I0MjAgb3V0cHV0IG1vZGUgYWxzbyAoYWxvbmcgd2l0aCBSR0Is WUNCQ1I0NDQvNDIyIGV0YykgVGhpcwo+IGJsb2NrIGNvbnRhaW5zIGEgYml0bWFwIGluZGV4IG9m IG5vcm1hbCBzdmQgdmlkZW9tb2Rlcywgd2hpY2ggY2FuCj4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRw dXQgdG9vLgo+IFNvIGlmIGJpdCAwIGZyb20gZmlyc3QgdmNiIGJ5dGUgaXMgc2V0LCBmaXJzdCB2 aWRlbyBtb2RlIGluIHRoZSBzdmQKPiBsaXN0IGNhbiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0 b28uIEJpdCAxIG1lYW5zIHNlY29uZCB2aWRlbyBtb2RlCj4gZnJvbSBzdmQgbGlzdCBjYW4gc3Vw cG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLCBhbmQgc28gb24uCj4gCj4gVGhpcyBwYXRjaCBhZGRz IHR3byBiaXRtYXBzIGluIGRpc3BsYXkncyBoZG1pX2luZm8gc3RydWN0dXJlLCBvbmUgZWFjaAo+ IGZvciBWQ0IgYW5kIFZEQiBtb2Rlcy4gSWYgdGhlIHNvdXJjZSBpcyBIRE1JIDIuMCBjYXBhYmxl LCB0aGlzIHBhdGNoCj4gYWRkczoKPiAtIFZEQiBtb2RlcyAoWUNCQ1IgNDIwIG9ubHkgbW9kZXMp IGluIGNvbm5lY3RvcidzIG1vZGUgbGlzdCwgYWxzbyBtYWtlcwo+ICAgYW4gZW50cnkgaW4gdGhl IHZkYl9iaXRtYXAgcGVyIHZpYy4KPiAtIFZDQiBtb2RlcyAoWUNCQ1IgNDIwIGFsc28gbW9kZXMp IG9ubHkgZW50cnkgaW4gdGhlIHZjYl9iaXRtYXAuCj4gCj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBKb3NlIEFicmV1IDxqb2FicmV1QHN5 bm9wc3lzLmNvbT4KPiBDYzogRW1pbCBWZWxpa292IDxlbWlsLmwudmVsaWtvdkBnbWFpbC5jb20+ Cj4gCj4gVjI6IEFkZHJlc3NlZAo+ICAgICBSZXZpZXcgY29tbWVudHMgZnJvbSBFbWlsOgo+ICAg ICAtIFVzZSAxVUxMPDxpIGluc3RlYWQgb2YgMTw8aSB0byBtYWtlIHN1cmUgdGhlIG91dHB1dCBp cyA2NGJpdC4KPiAgICAgLSBVc2UgdGhlIHN1Z2dlc3RlZCBtZXRob2QgZm9yIHVwZGF0aW5nIGRi bWFwLgo+ICAgICAtIEFkZCBkb2N1bWVudGF0aW9uIGZvciBZQ0JDUjQyMF92Y2JfbWFwIHRvIGZp eCBrYnVpbGQgd2FybmluZy4KPiAKPiAgICAgUmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6Cj4g ICAgIC0gRG8gbm90IGV4cG9zZSB0aGUgWUNCQ1I0MjAgZmxhZ3MgaW4gdWFiaSBsYXllciwga2Vl cCBpdCBpbnRlcm5hbC4KPiAgICAgLSBTYXZlIGEgbWFwIG9mIFlDQkNSNDIwIG1vZGVzIGZvciBm dXR1cmUgcmVmZXJlbmNlLgo+ICAgICAtIENoZWNrIGRiIGxlbmd0aCBiZWZvcmUgdHJ5aW5nIHRv IHBhcnNlIGV4dGVuZGVkIHRhZy4KPiAgICAgLSBBZGQgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSA+ IDY0IG1vZGVzIGluIGNhcGFiaWxpdHkgbWFwIGJsb2NrLgo+ICAgICAtIFVzZSB5NDIwY21kYiBp biBmdW5jdGlvbiBuYW1lcyBhbmQgbWFjcm9zIHdoaWxlIGRlYWxpbmcgd2l0aCB2Y2IKPiAgICAg ICB0byBiZSBhbGlnbmVkIHdpdGggc3BlYy4KPiAgICAgLSBNb3ZlIHRoZSBkaXNwbGF5IGluZm9y bWF0aW9uIHBhcnNpbmcgYmxvY2sgYWhlYWQgb2YgbW9kZSBwYXJzaW5nCj4gICAgICAgYmxvY2tz Lgo+IAo+IFYzOiBBZGRyZXNzZWQgZGVzaWduL3JldmlldyBjb21tZW50cyBmcm9tIFZpbGxlCj4g ICAgIC0gRG8gbm90IGFkZCBmbGFncyBpbiB2aWRlbyBtb2RlcywgZWxzZSB3ZSBoYXZlIHRvIGV4 cG9zZSB0aGVtIHRvIHVzZXIKPiAgICAgLSBUaGVyZSBzaG91bGQgbm90IGJlIGEgVUFCSSBjaGFu Z2UsIGFuZCBrZXJuZWwgc2hvdWxkIGRldGVjdCB0aGUKPiAgICAgICBjaG9pY2Ugb2YgdGhlIG91 dHB1dCBiYXNlZCBvbiB0eXBlIG9mIG1vZGUsIGFuZCB0aGUgYml0bWFwcy4KPiAgICAgLSBVc2Ug c3RhbmRhcmQgYml0b3BzIGZyb20ga2VybmVsIGJpdG1hcCBoZWFkZXIsIGluc3RlYWQgb2YgY2Fs Y3VsYXRpbmcKPiAgICAgICBiaXQgcG9zaXRpb25zIG1hbnVhbGx5Lgo+IAo+IFY0OiBBZGRyZXNz ZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6Cj4gICAgIC0gcy95Y2Jjcl80MjBfdmRiL3k0 MjB2ZGIKPiAgICAgLSBzL3ljYmNyXzQyMF92Y2IveTQyMGNtZGIKPiAgICAgLSBCZSBsZXNzIHZl cmJvc2Ugb24gZGVzY3JpcHRpb24gb2YgZG9feTQyMHZkYl9tb2Rlcwo+ICAgICAtIE1vdmUgbmV3 bW9kZSB2YXJpYWJsZSBpbiB0aGUgbG9vcCBzY29wZS4KPiAgICAgLSBVc2Ugc3ZkX3RvX3ZpYygp IHRvIGdldCBhIFZJQywgaW5zdGVhZCBvZiAweDdmCj4gICAgIC0gUmVtb3ZlIGJpdG1hcCBkZXNj cmlwdGlvbiBmb3IgQ01EQiBtb2RlcyAmIFZEQiBtb2Rlcwo+ICAgICAtIERvbnQgYWRkIGNvbm5l Y3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQgY2hlY2sgZm9yIGNtZGIgbW9kZXMKPiAgICAgLSBSZW1v dmUgJ2xlbicgdmFyaWFibGUsIGluIGlzX3k0MjBjbWRiIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2Vk Cj4gICAgICAgb25seSBvbmNlCj4gICAgIC0gQWRkIGxlbmd0aCBjaGVjayBpbiBpc195NDIwdmRi IGZ1bmN0aW9uCj4gICAgIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGlmICghZGIpIGNoZWNrIGluIGZ1 bmN0aW9uIHBhcnNlX3k0MjBjbWRiX2JpdG1hcAo+ICAgICAtIERvIG5vdCBhZGQgcHJpbnQgYWJv dXQgWUNCQ1IgNDIwIG1vZGVzCj4gICAgIC0gRml4IGluZGVudGF0aW9uIGluIGZldyBwbGFjZXMK PiAgICAgLSBNb3ZlIHljYmNyNDIwX2RjX21vZGVzIGluIG5leHQgcGF0Y2gsIHdoZXJlIGl0cyB1 c2VkCj4gICAgIC0gQWRkIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIG1vdmVtZW50IG9mIGRybV9hZGRf ZGlzcGxheV9pbmZvKCkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNo YW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5j ICB8IDE1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBp bmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggfCAgMjAgKysrKysrCj4gIDIgZmlsZXMgY2hhbmdl ZCwgMTc0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiBp bmRleCBlMmQxYjMwLi44YzdlNzNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZWRpZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiBAQCAtMjc4MSw3ICsy NzgxLDkgQEAgYWRkX2RldGFpbGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIHN0cnVjdCBlZGlkICplZGlkLAo+ICAjZGVmaW5lIFZJREVPX0JMT0NLICAgICAweDAyCj4g ICNkZWZpbmUgVkVORE9SX0JMT0NLICAgIDB4MDMKPiAgI2RlZmluZSBTUEVBS0VSX0JMT0NLCTB4 MDQKPiAtI2RlZmluZSBWSURFT19DQVBBQklMSVRZX0JMT0NLCTB4MDcKPiArI2RlZmluZSBWSURF T19DQVBBQklMSVRZX0JMT0NLIDB4MDcKPiArI2RlZmluZSBWSURFT19EQVRBX0JMT0NLXzQyMAkw eDBFCj4gKyNkZWZpbmUgVklERU9fQ0FQX0JMT0NLX1k0MjBDTURCIDB4MEYKPiAgI2RlZmluZSBF RElEX0JBU0lDX0FVRElPCSgxIDw8IDYpCj4gICNkZWZpbmUgRURJRF9DRUFfWUNSQ0I0NDQJKDEg PDwgNSkKPiAgI2RlZmluZSBFRElEX0NFQV9ZQ1JDQjQyMgkoMSA8PCA0KQo+IEBAIC0zMTUzLDE1 ICszMTU1LDc5IEBAIGRybV9kaXNwbGF5X21vZGVfZnJvbV92aWNfaW5kZXgoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCXJldHVybiBuZXdtb2RlOwo+ICB9Cj4gIAo+ICsvKgo+ ICsgKiBkb195NDIwdmRiX21vZGVzIC0gUGFyc2UgWUNCQ1IgNDIwIG9ubHkgbW9kZXMKPiArICog QGNvbm5lY3RvcjogY29ubmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEhETUkgc2luawo+ICsg KiBAc3Zkczogc3RhcnQgb2YgdGhlIGRhdGEgYmxvY2sgb2YgQ0VBIFlDQkNSIDQyMCBWREIKPiAr ICogQGxlbjogbGVuZ3RoIG9mIHRoZSBDRUEgWUNCQ1IgNDIwIFZEQgo+ICsgKgo+ICsgKiBQYXJz ZSB0aGUgQ0VBLTg2MS1GIFlDQkNSIDQyMCBWaWRlbyBEYXRhIEJsb2NrIChZNDIwVkRCKQo+ICsg KiB3aGljaCBjb250YWlucyBtb2RlcyB3aGljaCBjYW4gYmUgc3VwcG9ydGVkIGluIFlDQkNSIDQy MAo+ICsgKiBvdXRwdXQgZm9ybWF0IG9ubHkuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGRvX3k0MjB2 ZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgIGNvbnN0 IHU4ICpzdmRzLCB1OCBzdmRzX2xlbikKPiArewo+ICsJaW50IG1vZGVzID0gMCwgaTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiArCXN0cnVjdCBkcm1fZGlz cGxheV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwo+ICsJc3RydWN0IGRy bV9oZG1pX2luZm8gKmhkbWkgPSAmaW5mby0+aGRtaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg c3Zkc19sZW47IGkrKykgewo+ICsJCXU4IHZpYyA9IHN2ZF90b192aWMoc3Zkc1tpXSk7Cj4gKwkJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4gKwo+ICsJCW5ld21vZGUgPSBkcm1f bW9kZV9kdXBsaWNhdGUoZGV2LCAmZWRpZF9jZWFfbW9kZXNbdmljXSk7Cj4gKwkJaWYgKCFuZXdt b2RlKQo+ICsJCQlicmVhazsKPiArCQliaXRtYXBfc2V0KGhkbWktPnk0MjBfdmRiX21vZGVzLCB2 aWMsIDEpOwo+ICsJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBuZXdtb2RlKTsKPiAr CQltb2RlcysrOwo+ICsJfQo+ICsKPiArCWlmIChtb2RlcyA+IDApCj4gKwkJaW5mby0+Y29sb3Jf Zm9ybWF0cyB8PSBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwOwo+ICsJcmV0dXJuIG1vZGVzOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBkcm1fYWRkX2NtZGJfbW9kZXMgLSBBZGQgYSBZQ0JDUiA0MjAg bW9kZSBpbnRvIGJpdG1hcAo+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgY29ycmVzcG9uZGlu ZyB0byB0aGUgSERNSSBzaW5rCj4gKyAqIEB2aWM6IENFQSB2aWMgZm9yIHRoZSB2aWRlbyBtb2Rl IHRvIGJlIGFkZGVkIGluIHRoZSBtYXAKPiArICoKPiArICogTWFrZXMgYW4gZW50cnkgZm9yIGEg dmlkZW9tb2RlIGluIHRoZSBZQ0JDUiA0MjAgYml0bWFwCj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ ICtkcm1fYWRkX2NtZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTgg c3ZkKQo+ICt7Cj4gKwl1OCB2aWMgPSBzdmRfdG9fdmljKHN2ZCk7Cj4gKwlzdHJ1Y3QgZHJtX2hk bWlfaW5mbyAqaGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwo+ICsKPiArCWJp dG1hcF9zZXQoaGRtaS0+eTQyMF9jbWRiX21vZGVzLCB2aWMsIDEpOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgaW50Cj4gIGRvX2NlYV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBj b25zdCB1OCAqZGIsIHU4IGxlbikKPiAgewo+ICAJaW50IGksIG1vZGVzID0gMDsKPiArCXN0cnVj dCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4g IAo+ICAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Cj4gIAkJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7Cj4gIAkJbW9kZSA9IGRybV9kaXNwbGF5X21vZGVfZnJvbV92aWNfaW5kZXgo Y29ubmVjdG9yLCBkYiwgbGVuLCBpKTsKPiAgCQlpZiAobW9kZSkgewo+ICsJCQkvKgo+ICsJCQkg KiBZQ0JDUjQyMCBjYXBhYmlsaXR5IGJsb2NrIGNvbnRhaW5zIGEgYml0bWFwIHdoaWNoCj4gKwkJ CSAqIGdpdmVzIHRoZSBpbmRleCBvZiBDRUEgbW9kZXMgZnJvbSBDRUEgVkRCLCB3aGljaAo+ICsJ CQkgKiBjYW4gc3VwcG9ydCBZQ0JDUiA0MjAgc2FtcGxpbmcgb3V0cHV0IGFsc28gKGFwYXJ0Cj4g KwkJCSAqIGZyb20gUkdCL1lDQkNSNDQ0IGV0YykuCj4gKwkJCSAqIEZvciBleGFtcGxlLCBpZiB0 aGUgYml0IDAgaW4gYml0bWFwIGlzIHNldCwKPiArCQkJICogZmlyc3QgbW9kZSBpbiBWREIgY2Fu IHN1cHBvcnQgWUNCQ1I0MjAgb3V0cHV0IHRvby4KPiArCQkJICogQWRkIFlDQkNSNDIwIG1vZGVz IG9ubHkgaWYgc2luayBpcyBIRE1JIDIuMCBjYXBhYmxlLgo+ICsJCQkgKi8KPiArCQkJaWYgKHRl c3RfYml0KGksICZoZG1pLT55NDIwX2NtZGJfbWFwKSkKPiArCQkJCWRybV9hZGRfY21kYl9tb2Rl cyhjb25uZWN0b3IsIGRiW2ldKTsKPiArCj4gIAkJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVj dG9yLCBtb2RlKTsKPiAgCQkJbW9kZXMrKzsKPiAgCQl9Cj4gQEAgLTM0MzcsNiArMzUwMywxMiBA QCBkb19oZG1pX3ZzZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgY29u c3QgdTggKmRiLCB1OCBsZW4sCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiArY2VhX2RiX2V4dGVu ZGVkX3RhZyhjb25zdCB1OCAqZGIpCj4gK3sKPiArCXJldHVybiBkYlsxXTsKPiArfQo+ICsKPiAr c3RhdGljIGludAo+ICBjZWFfZGJfcGF5bG9hZF9sZW4oY29uc3QgdTggKmRiKQo+ICB7Cj4gIAly ZXR1cm4gZGJbMF0gJiAweDFmOwo+IEBAIC0zNDk3LDkgKzM1NjksNzggQEAgc3RhdGljIGJvb2wg Y2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihjb25zdCB1OCAqZGIpCj4gIAlyZXR1cm4gb3VpID09 IEhETUlfRk9SVU1fSUVFRV9PVUk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGNlYV9kYl9pc195 NDIwY21kYihjb25zdCB1OCAqZGIpCj4gK3sKPiArCj4gKwlpZiAoY2VhX2RiX3RhZyhkYikgIT0g VklERU9fQ0FQQUJJTElUWV9CTE9DSykKClN0aWxsIHdvdWxkIGxpa2UgdG8gc2VlIHRoYXQgcGF0 Y2ggdG8gY2xlYW4gdXAgdGhlIGN1cnJlbnQgZXh0ZW5kZWQgdGFnCnVzYWdlLi4uCgo+ICsJCXJl dHVybiBmYWxzZTsKPiArCj4gKwlpZiAoIWNlYV9kYl9wYXlsb2FkX2xlbihkYikpCj4gKwkJcmV0 dXJuIGZhbHNlOwo+ICsKPiArCWlmIChjZWFfZGJfZXh0ZW5kZWRfdGFnKGRiKSAhPSBWSURFT19D QVBfQkxPQ0tfWTQyMENNREIpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0cnVl Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBjZWFfZGJfaXNfeTQyMHZkYihjb25zdCB1OCAqZGIp Cj4gK3sKPiArCWlmIChjZWFfZGJfdGFnKGRiKSAhPSBWSURFT19DQVBBQklMSVRZX0JMT0NLKQo+ ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoIWNlYV9kYl9wYXlsb2FkX2xlbihkYikpCj4g KwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChjZWFfZGJfZXh0ZW5kZWRfdGFnKGRiKSAhPSBW SURFT19EQVRBX0JMT0NLXzQyMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIHRy dWU7Cj4gK30KPiArCj4gICNkZWZpbmUgZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVu ZCkgXAo+ICAJZm9yICgoaSkgPSAoc3RhcnQpOyAoaSkgPCAoZW5kKSAmJiAoaSkgKyBjZWFfZGJf cGF5bG9hZF9sZW4oJihjZWEpWyhpKV0pIDwgKGVuZCk7IChpKSArPSBjZWFfZGJfcGF5bG9hZF9s ZW4oJihjZWEpWyhpKV0pICsgMSkKPiAgCj4gK3N0YXRpYyB2b2lkIGRybV9wYXJzZV95NDIwY21k Yl9iaXRtYXAoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgICAgY29u c3QgdTggKmRiKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25u ZWN0b3ItPmRpc3BsYXlfaW5mbzsKPiArCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmlu Zm8tPmhkbWk7Cj4gKwl1OCBtYXBfbGVuID0gY2VhX2RiX3BheWxvYWRfbGVuKGRiKSAtIDE7Cj4g Kwl1OCBjb3VudDsKPiArCXU2NCBtYXAgPSAwOwo+ICsKPiArCWlmIChtYXBfbGVuID09IDApIHsK PiArCQkvKiBBbGwgQ0VBIG1vZGVzIHN1cHBvcnQgeWNiY3I0MjAgc2FtcGxpbmcgYWxzby4qLwo+ ICsJCWhkbWktPnk0MjBfY21kYl9tYXAgPSBVNjRfTUFYOwo+ICsJCWluZm8tPmNvbG9yX2Zvcm1h dHMgfD0gRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ ICsJLyoKPiArCSAqIFRoaXMgbWFwIGluZGljYXRlcyB3aGljaCBvZiB0aGUgZXhpc3RpbmcgQ0VB IGJsb2NrIG1vZGVzCj4gKwkgKiBmcm9tIFZEQiBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQg dG9vLiBTbyBpZiBiaXQ9MCBpcwo+ICsJICogc2V0LCBmaXJzdCBtb2RlIGZyb20gVkRCIGNhbiBz dXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28uCj4gKwkgKiBXZSB3aWxsIHBhcnNlIGFuZCBrZWVw IHRoaXMgbWFwLCBiZWZvcmUgcGFyc2luZyBWREIgaXRzZWxmCj4gKwkgKiB0byBhdm9pZCBnb2lu ZyB0aHJvdWdoIHRoZSBzYW1lIGJsb2NrIGFnYWluIGFuZCBhZ2Fpbi4KPiArCSAqCj4gKwkgKiBT cGVjIGlzIG5vdCBjbGVhciBhYm91dCBtYXggcG9zc2libGUgc2l6ZSBvZiB0aGlzIGJsb2NrLgo+ ICsJICogQ2xhbXBpbmcgbWF4IGJpdG1hcCBibG9jayBzaXplIGF0IDggYnl0ZXMuIEV2ZXJ5IGJ5 dGUgY2FuCj4gKwkgKiBhZGRyZXNzIDggQ0VBIG1vZGVzLCBpbiB0aGlzIHdheSB0aGlzIG1hcCBj YW4gYWRkcmVzcwo+ICsJICogOCo4ID0gZmlyc3QgNjQgU1ZEcy4KPiArCSAqLwo+ICsJaWYgKFdB Uk5fT05fT05DRShtYXBfbGVuID4gOCkpCj4gKwkJbWFwX2xlbiA9IDg7Cj4gKwo+ICsJZm9yIChj b3VudCA9IDA7IGNvdW50IDwgbWFwX2xlbjsgY291bnQrKykKPiArCQltYXAgfD0gKHU2NClkYlsy ICsgY291bnRdIDw8ICg4ICogY291bnQpOwo+ICsKPiArCWlmIChtYXApCj4gKwkJaW5mby0+Y29s b3JfZm9ybWF0cyB8PSBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwOwo+ICsKPiArCWhkbWktPnk0 MjBfY21kYl9tYXAgPSBtYXA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQKPiAgYWRkX2NlYV9tb2Rl cyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAg ewo+IEBAIC0zNTIyLDEwICszNjYzLDE3IEBAIGFkZF9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gIAkJCQl2aWRlbyA9IGRiICsg MTsKPiAgCQkJCXZpZGVvX2xlbiA9IGRibDsKPiAgCQkJCW1vZGVzICs9IGRvX2NlYV9tb2Rlcyhj b25uZWN0b3IsIHZpZGVvLCBkYmwpOwo+IC0JCQl9Cj4gLQkJCWVsc2UgaWYgKGNlYV9kYl9pc19o ZG1pX3ZzZGIoZGIpKSB7Cj4gKwkJCX0gZWxzZSBpZiAoY2VhX2RiX2lzX2hkbWlfdnNkYihkYikp IHsKPiAgCQkJCWhkbWkgPSBkYjsKPiAgCQkJCWhkbWlfbGVuID0gZGJsOwo+ICsJCQl9IGVsc2Ug aWYgKGNlYV9kYl9pc195NDIwdmRiKGRiKSAmJgo+ICsJCQkJICAgY29ubmVjdG9yLT55Y2Jjcl80 MjBfYWxsb3dlZCkgewo+ICsJCQkJY29uc3QgdTggKnZkYjQyMCA9ICZkYlsyXTsKPiArCj4gKwkJ CQkvKiBBZGQgNDoyOjAob25seSkgbW9kZXMgcHJlc2VudCBpbiBFRElEICovCj4gKwkJCQltb2Rl cyArPSBkb195NDIwdmRiX21vZGVzKGNvbm5lY3RvciwKPiArCQkJCQkJCSAgdmRiNDIwLAo+ICsJ CQkJCQkJICBkYmwgLSAxKTsKPiAgCQkJfQo+ICAJCX0KPiAgCX0KPiBAQCAtNDIwNiw2ICs0MzU0 LDggQEAgc3RhdGljIHZvaWQgZHJtX3BhcnNlX2NlYV9leHQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiAgCQkJZHJtX3BhcnNlX2hkbWlfdnNkYl92aWRlbyhjb25uZWN0b3IsIGRi KTsKPiAgCQlpZiAoY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihkYikpCj4gIAkJCWRybV9wYXJz ZV9oZG1pX2ZvcnVtX3ZzZGIoY29ubmVjdG9yLCBkYik7Cj4gKwkJaWYgKGNlYV9kYl9pc195NDIw Y21kYihkYikpCj4gKwkJCWRybV9wYXJzZV95NDIwY21kYl9iaXRtYXAoY29ubmVjdG9yLCBkYik7 Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTQ0NjAsNiArNDYxMCw3IEBAIGludCBkcm1fYWRkX2VkaWRf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQp Cj4gIAludW1fbW9kZXMgKz0gYWRkX2NlYV9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+ICAJbnVt X21vZGVzICs9IGFkZF9hbHRlcm5hdGVfY2VhX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4gIAlu dW1fbW9kZXMgKz0gYWRkX2Rpc3BsYXlpZF9kZXRhaWxlZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQp Owo+ICsKPiAgCWlmIChlZGlkLT5mZWF0dXJlcyAmIERSTV9FRElEX0ZFQVRVUkVfREVGQVVMVF9H VEYpCj4gIAkJbnVtX21vZGVzICs9IGFkZF9pbmZlcnJlZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQp Owo+ICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXggNzQ5M2ZkMy4uY2UyMjEyZCAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1f Y29ubmVjdG9yLmgKPiBAQCAtMTM3LDYgKzEzNywyNSBAQCBzdHJ1Y3QgZHJtX3NjZGMgewo+ICBz dHJ1Y3QgZHJtX2hkbWlfaW5mbyB7Cj4gIAkvKiogQHNjZGM6IHNpbmsncyBzY2RjIHN1cHBvcnQg YW5kIGNhcGFiaWxpdGllcyAqLwo+ICAJc3RydWN0IGRybV9zY2RjIHNjZGM7Cj4gKwo+ICsJLyoq Cj4gKwkgKiBAeTQyMF92ZGJfbW9kZXM6IGJpdG1hcCBvZiBtb2RlcyB3aGljaCBjYW4gc3VwcG9y dCB5Y2JjcjQyMAo+ICsJICogb3V0cHV0IG9ubHkgKG5vdCBub3JtYWwgUkdCL1lDQkNSNDQ0LzQy MiBvdXRwdXRzKS4gVGhlcmUgYXJlIHRvdGFsCj4gKwkgKiAxMDcgVklDcyBkZWZpbmVkIGJ5IENF QS04NjEtRiBzcGVjLCBzbyB0aGUgc2l6ZSBpcyAxMjggYml0cyB0byBtYXAKPiArCSAqIHVwdG8g MTI4IFZJQ3M7Cj4gKwkgKi8KPiArCXVuc2lnbmVkIGxvbmcgeTQyMF92ZGJfbW9kZXNbQklUU19U T19MT05HUygxMjgpXTsKPiArCj4gKwkvKioKPiArCSAqIEB5NDIwX2NtZGJfbW9kZXM6IGJpdG1h cCBvZiBtb2RlcyB3aGljaCBjYW4gc3VwcG9ydCB5Y2JjcjQyMAo+ICsJICogb3V0cHV0IGFsc28s IGFsb25nIHdpdGggbm9ybWFsIEhETUkgb3V0cHV0cy4gVGhlcmUgYXJlIHRvdGFsIDEwNwo+ICsJ ICogVklDcyBkZWZpbmVkIGJ5IENFQS04NjEtRiBzcGVjLCBzbyB0aGUgc2l6ZSBpcyAxMjggYml0 cyB0byBtYXAgdXB0bwo+ICsJICogMTI4IFZJQ3M7Cj4gKwkgKi8KPiArCXVuc2lnbmVkIGxvbmcg eTQyMF9jbWRiX21vZGVzW0JJVFNfVE9fTE9OR1MoMTI4KV07Cj4gKwo+ICsJLyoqIEB5NDIwX2Nt ZGJfbWFwOiBiaXRtYXAgb2YgU1ZEIGluZGV4LCB0byBleHRyYXh0IHZjYiBtb2RlcyAqLwo+ICsJ dW5zaWduZWQgbG9uZyB5NDIwX2NtZGJfbWFwOwoKdTY0LCBvdGhlcndpc2UgaXQncyBidXN0ZWQg b24gMzJiaXQgbWFjaGluZXMuCgpNb3N0bCB0aGlzIGxvb2tzIHByZXR0eSBnb29kLiBJIHRoaW5r IHRoZSBtYWluIHByb2JsZW0gaXMgdGhlIGxhY2sgb2YKbW9kZSB2YWxpZGF0aW9uIHRoYXQgd291 bGQgcmVqZWN0IHRoZSA0OjI6MCBvbmx5IG1vZGVzIGlmIG5vdCBzdXBwb3J0ZWQKYnkgdGhlIGRy aXZlci9kZXZpY2UuIEkgZ3Vlc3MgdGhhdCdzIGluIGEgbGF0ZXIgcGF0Y2g/IElmIHNvIHdlIG5l ZWQgdG8KcmVvcmRlciB0aGUgc2VyaWVzIGEgYml0IHRvIGF2b2lkIHJlZ2VyZXNzaW9ucy4KCj4g IH07Cj4gIAo+ICAvKioKPiBAQCAtMjAwLDYgKzIxOSw3IEBAIHN0cnVjdCBkcm1fZGlzcGxheV9p bmZvIHsKPiAgI2RlZmluZSBEUk1fQ09MT1JfRk9STUFUX1JHQjQ0NAkJKDE8PDApCj4gICNkZWZp bmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NAkoMTw8MSkKPiAgI2RlZmluZSBEUk1fQ09MT1Jf Rk9STUFUX1lDUkNCNDIyCSgxPDwyKQo+ICsjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0 MjAJKDE8PDMpCj4gIAo+ICAJLyoqCj4gIAkgKiBAY29sb3JfZm9ybWF0czogSERNSSBDb2xvciBm b3JtYXRzLCBzZWxlY3RzIGJldHdlZW4gUkdCIGFuZCBZQ3JDYgo+IC0tIAo+IDIuNy40CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK