From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] drm: Parse HDMI 2.0 YCbCr 4:2:0 VDB and VCB Date: Wed, 4 Jan 2017 15:22:25 +0200 Message-ID: <20170104132225.GE31595@intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7059A6E260 for ; Wed, 4 Jan 2017 13:22:31 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu Cc: Daniel Vetter , Carlos Palminha , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBEZWMgMzAsIDIwMTYgYXQgMDQ6NTM6MTZQTSArMDAwMCwgSm9zZSBBYnJldSB3cm90 ZToKPiBIRE1JIDIuMCBpbnRyb2R1Y2VzIGEgbmV3IHNhbXBsaW5nIG1vZGUgY2FsbGVkIFlDYkNy IDQ6MjowLgo+IEFjY29yZGluZyB0byB0aGUgc3BlYyB0aGUgRURJRCBtYXkgY29udGFpbiB0d28g YmxvY2tzIHRoYXQKPiBzaWduYWwgdGhpcyBzYW1wbGluZyBtb2RlOgo+IAktIFlDYkNyIDQ6Mjow IFZpZGVvIERhdGEgQmxvY2sKPiAJLSBZQ2JDciA0OjI6MCBWaWRlbyBDYXBhYmlsaXR5IE1hcCBE YXRhIEJsb2NrCj4gCj4gVGhlIHZpZGVvIGRhdGEgYmxvY2sgY29udGFpbnMgdGhlIGxpc3Qgb2Yg dmljJ3Mgd2VyZQo+IG9ubHkgWUNiQ3IgNDoyOjAgc2FtcGxpbmcgbW9kZSBzaGFsbCBiZSB1c2Vk IHdoaWxlIHRoZQo+IHZpZGVvIGNhcGFiaWxpdHkgbWFwIGRhdGEgYmxvY2sgY29udGFpbnMgYSBt YXNrIHdlcmUKPiBZQ2JDciA0OjI6MCBzYW1wbGluZyBtb2RlIG1heSBiZSB1c2VkLgo+IAo+IFRo aXMgUkZDIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGVzZSB0d28gbmV3IGJsb2Nr cwo+IGFuZCBpbnRyb2R1Y2VzIG5ldyBmbGFncyB0byBzaWduYWwgdGhlIGRyaXZlcnMgaWYgdGhl Cj4gbW9kZSBpcyA0OjI6MCdvbmx5IG9yIDQ6MjowJ2FibGUuCj4gCj4gVGhlIHJlYXNvbiB0aGlz IGlzIHN0aWxsIGEgUkZDIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8KPiByZWZlcmVuY2UgaW4ga2Vy bmVsIGZvciB0aGlzIG5ldyBzYW1wbGluZyBtb2RlIChzcGVjaWFsbHkgaW4KPiBBVkkgaW5mb2Zy YW1lIHBhcnQpLCBzbywgSSB3YXMgaG9waW5nIHRvIGhlYXIgc29tZSBmZWVkYmFjawo+IGZpcnN0 Lgo+IAo+IFRlc3RlZCBpbiBhIEhETUkgMi4wIGNvbXBsaWFuY2Ugc2NlbmFyaW8uCj4gCj4gU2ln bmVkLW9mZi1ieTogSm9zZSBBYnJldSA8am9hYnJldUBzeW5vcHN5cy5jb20+Cj4gQ2M6IENhcmxv cyBQYWxtaW5oYSA8cGFsbWluaGFAc3lub3BzeXMuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxp bnV4LmludGVsLmNvbT4KPiBDYzogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4g Q2M6IERhdmlkIEFpcmxpZSA8YWlybGllZEBsaW51eC5pZT4KPiBDYzogZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jICB8IDEzOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzLmMg fCAgMTAgKysrLQo+ICBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggfCAgIDYgKysKPiAgMyBm aWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2VkaWQuYwo+IGluZGV4IDY3ZDZhNzMuLjZjZTFhMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9lZGlkLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IEBA IC0yNTQ5LDYgKzI1NDksOCBAQCBzdGF0aWMgaW50IGRybV9jdnRfbW9kZXMoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiAgI2RlZmluZSBWRU5ET1JfQkxPQ0sgICAgMHgwMwo+ICAj ZGVmaW5lIFNQRUFLRVJfQkxPQ0sJMHgwNAo+ICAjZGVmaW5lIFZJREVPX0NBUEFCSUxJVFlfQkxP Q0sJMHgwNwo+ICsjZGVmaW5lIFZJREVPX0RBVEFfQkxPQ0tfNDIwCTB4MEUKPiArI2RlZmluZSBW SURFT19DQVBfQkxPQ0tfNDIwCTB4MEYKPiAgI2RlZmluZSBFRElEX0JBU0lDX0FVRElPCSgxIDw8 IDYpCj4gICNkZWZpbmUgRURJRF9DRUFfWUNSQ0I0NDQJKDEgPDwgNSkKPiAgI2RlZmluZSBFRElE X0NFQV9ZQ1JDQjQyMgkoMSA8PCA0KQo+IEBAIC0zMDUwLDYgKzMwNTIsOTggQEAgc3RhdGljIGlu dCBhZGRfM2Rfc3RydWN0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHUx NiBzdHJ1Y3R1cmUsCj4gIAlyZXR1cm4gbW9kZXM7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgYWRk XzQyMF9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHU4IHZpYykKPiArewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ICsJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4gKwo+ICsJaWYgKCFkcm1fdmFsaWRfY2VhX3ZpYyh2 aWMpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCW5ld21vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUo ZGV2LCAmZWRpZF9jZWFfbW9kZXNbdmljXSk7Cj4gKwlpZiAoIW5ld21vZGUpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJbmV3bW9kZS0+ZmxhZ3MgfD0gRFJNX01PREVfRkxBR180MjBfT05MWTsKCldo eSBkb2VzIHVzZXJzcGFjZSBuZWVkIHRvIGtub3cgdGhpcz8gTXkgdGhpbmtpbmcgaGFzIGJlZW4g dGhhdCB0aGUKZHJpdmVyIHdvdWxkIGRvIHRoZSByaWdodCB0aGluZyBhdXRvbWFnaWNhbGx5LgoK V2UgZG8gcHJvYmFibHkgd2FudCBzb21lIGtpbmQgb2Ygb3V0cHV0IGNvbG9yc3BhY2UgcHJvcGVy dHkgdG8gYWxsb3cgdGhlCnVzZXIgdG8gc2VsZWN0IGJldHdlZW4gUkdCIHZzLiBZQ2JDciBldGMu IEJ1dCBJIHRoaW5rIGV2ZW4gd2l0aCB0aGF0IHdlCnNob3VsZCBzdGlsbCBhbGxvdyB0aGUgZHJp dmVyIHRvIGF1dG9tYWdpY2FsbHkgc2VsZWN0IFlDYkNyIDQ6MjowIG91dHB1dApzaW5jZSB0aGF0 J3MgdGhlIG9ubHkgd2F5IHRoZSBtb2RlIHdpbGwgd29yay4KCj4gKwlkcm1fbW9kZV9wcm9iZWRf YWRkKGNvbm5lY3RvciwgbmV3bW9kZSk7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgYWRkXzQyMF92ZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgY29uc3QgdTggKnN2ZHMsCj4gKwkJdTggc3Zkc19sZW4pCj4gK3sKPiArCWludCBtb2RlcyA9 IDAsIGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHN2ZHNfbGVuOyBpKyspCj4gKwkJbW9kZXMg Kz0gYWRkXzQyMF9tb2RlKGNvbm5lY3Rvciwgc3Zkc1tpXSk7Cj4gKwo+ICsJcmV0dXJuIG1vZGVz Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFkZF80MjBfdmNiX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGNvbnN0IHU4ICpzdmRzLAo+ICsJCXU4IHN2ZHNfbGVuLCBjb25z dCB1OCAqdmlkZW9fZGIsIHU4IHZpZGVvX2xlbikKPiArewo+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm5ld21vZGUgPSBOVUxMOwo+ICsJaW50IG1vZGVzID0gMCwgaSwgajsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgc3Zkc19sZW47IGkrKykgewo+ICsJCXU4IG1hc2sgPSBzdmRzW2ldOwo+ ICsJCWZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKPiArCQkJaWYgKG1hc2sgJiAoMSA8PCBqKSkg ewo+ICsJCQkJbmV3bW9kZSA9IGRybV9kaXNwbGF5X21vZGVfZnJvbV92aWNfaW5kZXgoCj4gKwkJ CQkJCWNvbm5lY3RvciwgdmlkZW9fZGIsIHZpZGVvX2xlbiwKPiArCQkJCQkJaSAqIDggKyBqKTsK PiArCQkJCWlmIChuZXdtb2RlKSB7Cj4gKwkJCQkJbmV3bW9kZS0+ZmxhZ3MgfD0gRFJNX01PREVf RkxBR180MjA7Cj4gKwkJCQkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG5ld21vZGUp Owo+ICsJCQkJCW1vZGVzKys7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIG1vZGVzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFkZF80MjBfdmNiX21vZGVzX2Fs bChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCWNvbnN0IHU4ICp2aWRlb19k YiwgdTggdmlkZW9fbGVuKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9k ZSA9IE5VTEw7Cj4gKwlpbnQgbW9kZXMgPSAwLCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCB2 aWRlb19sZW47IGkrKykgewo+ICsJCW5ld21vZGUgPSBkcm1fZGlzcGxheV9tb2RlX2Zyb21fdmlj X2luZGV4KGNvbm5lY3RvciwgdmlkZW9fZGIsCj4gKwkJCQl2aWRlb19sZW4sIGkpOwo+ICsJCWlm IChuZXdtb2RlKSB7Cj4gKwkJCW5ld21vZGUtPmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfNDIwOwo+ ICsJCQlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbmV3bW9kZSk7Cj4gKwkJCW1vZGVz Kys7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiBtb2RlczsKPiArfQo+ICsKPiArc3RhdGlj IGludCBkb19oZG1pXzQyMF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBj b25zdCB1OCAqdmRiLAo+ICsJCXU4IHZkYl9sZW4sIGNvbnN0IHU4ICp2Y2IsIHU4IHZjYl9sZW4s IGNvbnN0IHU4ICp2aWRlb19kYiwKPiArCQl1OCB2aWRlb19sZW4pCj4gK3sKPiArCWludCBtb2Rl cyA9IDA7Cj4gKwo+ICsJaWYgKHZkYiAmJiAodmRiX2xlbiA+IDEpKSAvKiBBZGQgNDoyOjAgbW9k ZXMgcHJlc2VudCBpbiBFRElEICovCj4gKwkJbW9kZXMgKz0gYWRkXzQyMF92ZGJfbW9kZXMoY29u bmVjdG9yLCAmdmRiWzJdLCB2ZGJfbGVuIC0gMSk7Cj4gKwo+ICsJaWYgKHZjYiAmJiAodmNiX2xl biA+IDEpKSAvKiBQYXJzZSBiaXQgbWFzayBvZiBzdXBwb3J0ZWQgbW9kZXMgKi8KPiArCQltb2Rl cyArPSBhZGRfNDIwX3ZjYl9tb2Rlcyhjb25uZWN0b3IsICZ2Y2JbMl0sIHZjYl9sZW4gLSAxLAo+ ICsJCQkJdmlkZW9fZGIsIHZpZGVvX2xlbik7Cj4gKwllbHNlIGlmICh2Y2IpIC8qIEFsbCBtb2Rl cyBzdXBwb3J0IDQ6MjowIG1vZGUgKi8KPiArCQltb2RlcyArPSBhZGRfNDIwX3ZjYl9tb2Rlc19h bGwoY29ubmVjdG9yLCB2aWRlb19kYiwgdmlkZW9fbGVuKTsKPiArCj4gKwlEUk1fREVCVUcoImFk ZGVkICVkIDQ6MjowIG1vZGVzXG4iLCBtb2Rlcyk7Cj4gKwlyZXR1cm4gbW9kZXM7Cj4gK30KPiAr Cj4gIC8qCj4gICAqIGRvX2hkbWlfdnNkYl9tb2RlcyAtIFBhcnNlIHRoZSBIRE1JIFZlbmRvciBT cGVjaWZpYyBkYXRhIGJsb2NrCj4gICAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciBjb3JyZXNwb25k aW5nIHRvIHRoZSBIRE1JIHNpbmsKPiBAQCAtMzIwNiw2ICszMzAwLDEyIEBAIHN0YXRpYyBpbnQg YWRkXzNkX3N0cnVjdF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MTYg c3RydWN0dXJlLAo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gK2NlYV9kYl9leHRlbmRlZF90YWco Y29uc3QgdTggKmRiKQo+ICt7Cj4gKwlyZXR1cm4gZGJbMV07Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQKPiAgY2VhX3JldmlzaW9uKGNvbnN0IHU4ICpjZWEpCj4gIHsKPiAgCXJldHVybiBjZWFbMV07 Cj4gQEAgLTMyMzksNiArMzMzOSwyOCBAQCBzdGF0aWMgYm9vbCBjZWFfZGJfaXNfaGRtaV92c2Ri KGNvbnN0IHU4ICpkYikKPiAgCXJldHVybiBoZG1pX2lkID09IEhETUlfSUVFRV9PVUk7Cj4gIH0K PiAgCj4gK3N0YXRpYyBib29sIGNlYV9kYl9pc19oZG1pX3ZkYjQyMChjb25zdCB1OCAqZGIpCj4g K3sKPiArCWlmIChjZWFfZGJfdGFnKGRiKSAhPSBWSURFT19DQVBBQklMSVRZX0JMT0NLKQo+ICsJ CXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoY2VhX2RiX2V4dGVuZGVkX3RhZyhkYikgIT0gVklE RU9fREFUQV9CTE9DS180MjApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0cnVl Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBjZWFfZGJfaXNfaGRtaV92Y2I0MjAoY29uc3QgdTgg KmRiKQo+ICt7Cj4gKwlpZiAoY2VhX2RiX3RhZyhkYikgIT0gVklERU9fQ0FQQUJJTElUWV9CTE9D SykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKGNlYV9kYl9leHRlbmRlZF90YWcoZGIp ICE9IFZJREVPX0NBUF9CTE9DS180MjApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVy biB0cnVlOwo+ICt9Cj4gKwo+ICAjZGVmaW5lIGZvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0 LCBlbmQpIFwKPiAgCWZvciAoKGkpID0gKHN0YXJ0KTsgKGkpIDwgKGVuZCkgJiYgKGkpICsgY2Vh X2RiX3BheWxvYWRfbGVuKCYoY2VhKVsoaSldKSA8IChlbmQpOyAoaSkgKz0gY2VhX2RiX3BheWxv YWRfbGVuKCYoY2VhKVsoaSldKSArIDEpCj4gIAo+IEBAIC0zMjQ2LDggKzMzNjgsOSBAQCBzdGF0 aWMgYm9vbCBjZWFfZGJfaXNfaGRtaV92c2RiKGNvbnN0IHU4ICpkYikKPiAgYWRkX2NlYV9tb2Rl cyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAg ewo+ICAJY29uc3QgdTggKmNlYSA9IGRybV9maW5kX2NlYV9leHRlbnNpb24oZWRpZCk7Cj4gLQlj b25zdCB1OCAqZGIsICpoZG1pID0gTlVMTCwgKnZpZGVvID0gTlVMTDsKPiAtCXU4IGRibCwgaGRt aV9sZW4sIHZpZGVvX2xlbiA9IDA7Cj4gKwljb25zdCB1OCAqZGIsICpoZG1pID0gTlVMTCwgKnZp ZGVvID0gTlVMTCwgKnZkYjQyMCA9IE5VTEwsCj4gKwkgICAgICAqdmNiNDIwID0gTlVMTDsKPiAr CXU4IGRibCwgaGRtaV9sZW4sIHZpZGVvX2xlbiA9IDAsIHZkYjQyMF9sZW4gPSAwLCB2Y2I0MjBf bGVuID0gMDsKPiAgCWludCBtb2RlcyA9IDA7Cj4gIAo+ICAJaWYgKGNlYSAmJiBjZWFfcmV2aXNp b24oY2VhKSA+PSAzKSB7Cj4gQEAgLTMyNjksNiArMzM5MiwxNCBAQCBzdGF0aWMgYm9vbCBjZWFf ZGJfaXNfaGRtaV92c2RiKGNvbnN0IHU4ICpkYikKPiAgCQkJCWhkbWkgPSBkYjsKPiAgCQkJCWhk bWlfbGVuID0gZGJsOwo+ICAJCQl9Cj4gKwkJCWVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZkYjQy MChkYikpIHsKPiArCQkJCXZkYjQyMCA9IGRiOwo+ICsJCQkJdmRiNDIwX2xlbiA9IGRibDsKPiAr CQkJfQo+ICsJCQllbHNlIGlmIChjZWFfZGJfaXNfaGRtaV92Y2I0MjAoZGIpKSB7Cj4gKwkJCQl2 Y2I0MjAgPSBkYjsKPiArCQkJCXZjYjQyMF9sZW4gPSBkYmw7Cj4gKwkJCX0KPiAgCQl9Cj4gIAl9 Cj4gIAo+IEBAIC0zMjgwLDYgKzM0MTEsMTAgQEAgc3RhdGljIGJvb2wgY2VhX2RiX2lzX2hkbWlf dnNkYihjb25zdCB1OCAqZGIpCj4gIAkJbW9kZXMgKz0gZG9faGRtaV92c2RiX21vZGVzKGNvbm5l Y3RvciwgaGRtaSwgaGRtaV9sZW4sIHZpZGVvLAo+ICAJCQkJCSAgICB2aWRlb19sZW4pOwo+ICAK PiArCWlmICh2ZGI0MjAgfHwgdmNiNDIwKQo+ICsJCW1vZGVzICs9IGRvX2hkbWlfNDIwX21vZGVz KGNvbm5lY3RvciwgdmRiNDIwLCB2ZGI0MjBfbGVuLAo+ICsJCQkJdmNiNDIwLCB2Y2I0MjBfbGVu LCB2aWRlbywgdmlkZW9fbGVuKTsKPiArCj4gIAlyZXR1cm4gbW9kZXM7Cj4gIH0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fbW9kZXMuYwo+IGluZGV4IGFjNmEzNTIuLjUzYzY1ZjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9tb2Rlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlcy5j Cj4gQEAgLTk2Nyw2ICs5NjcsMTAgQEAgYm9vbCBkcm1fbW9kZV9lcXVhbF9ub19jbG9ja3MoY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUxLCBjb25zdCBzdHJ1Y3QKPiAgCSAgICAo bW9kZTItPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+ICsJaWYgKChtb2RlMS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzQyMF9NQVNLKSAhPQo+ ICsJICAgIChtb2RlMi0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzQyMF9NQVNLKSkKPiArCQlyZXR1 cm4gZmFsc2U7Cj4gKwo+ICAJcmV0dXJuIGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrc19ub19zdGVy ZW8obW9kZTEsIG1vZGUyKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2VxdWFsX25v X2Nsb2Nrcyk7Cj4gQEAgLTk4NSw2ICs5ODksOSBAQCBib29sIGRybV9tb2RlX2VxdWFsX25vX2Ns b2Nrcyhjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTEsIGNvbnN0IHN0cnVjdAo+ ICBib29sIGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrc19ub19zdGVyZW8oY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUxLAo+ICAJCQkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlMikKPiAgewo+ICsJdW5zaWduZWQgaW50IGZsYWdzX21hc2sgPQo+ICsJCX4oRFJN X01PREVfRkxBR18zRF9NQVNLIHwgRFJNX01PREVfRkxBR180MjBfTUFTSyk7Cj4gKwo+ICAJaWYg KG1vZGUxLT5oZGlzcGxheSA9PSBtb2RlMi0+aGRpc3BsYXkgJiYKPiAgCSAgICBtb2RlMS0+aHN5 bmNfc3RhcnQgPT0gbW9kZTItPmhzeW5jX3N0YXJ0ICYmCj4gIAkgICAgbW9kZTEtPmhzeW5jX2Vu ZCA9PSBtb2RlMi0+aHN5bmNfZW5kICYmCj4gQEAgLTk5NSw4ICsxMDAyLDcgQEAgYm9vbCBkcm1f bW9kZV9lcXVhbF9ub19jbG9ja3Nfbm9fc3RlcmVvKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlMSwKPiAgCSAgICBtb2RlMS0+dnN5bmNfZW5kID09IG1vZGUyLT52c3luY19lbmQg JiYKPiAgCSAgICBtb2RlMS0+dnRvdGFsID09IG1vZGUyLT52dG90YWwgJiYKPiAgCSAgICBtb2Rl MS0+dnNjYW4gPT0gbW9kZTItPnZzY2FuICYmCj4gLQkgICAgKG1vZGUxLT5mbGFncyAmIH5EUk1f TU9ERV9GTEFHXzNEX01BU0spID09Cj4gLQkgICAgIChtb2RlMi0+ZmxhZ3MgJiB+RFJNX01PREVf RkxBR18zRF9NQVNLKSkKPiArCSAgICAobW9kZTEtPmZsYWdzICYgZmxhZ3NfbWFzaykgPT0gKG1v ZGUyLT5mbGFncyAmIGZsYWdzX21hc2spKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAgCXJldHVy biBmYWxzZTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIGIvaW5j bHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gaW5kZXggY2U3ZWZlMi4uZGM4ZTI4NSAxMDA2NDQK PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiArKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2RybV9tb2RlLmgKPiBAQCAtODQsNiArODQsMTIgQEAKPiAgI2RlZmluZSAgRFJNX01PREVf RkxBR18zRF9MX0RFUFRIX0dGWF9HRlhfREVQVEgJKDY8PDE0KQo+ICAjZGVmaW5lICBEUk1fTU9E RV9GTEFHXzNEX1RPUF9BTkRfQk9UVE9NCSg3PDwxNCkKPiAgI2RlZmluZSAgRFJNX01PREVfRkxB R18zRF9TSURFX0JZX1NJREVfSEFMRgkoODw8MTQpCj4gKy8qCj4gKyAqIEhETUkgMi4wCj4gKyAq Lwo+ICsjZGVmaW5lIERSTV9NT0RFX0ZMQUdfNDIwX01BU0sJCQkoMHgwMzw8MTkpCj4gKyNkZWZp bmUgIERSTV9NT0RFX0ZMQUdfNDIwCQkJKDE8PDE5KQo+ICsjZGVmaW5lICBEUk1fTU9ERV9GTEFH XzQyMF9PTkxZCQkJKDE8PDIwKQo+ICAKPiAgLyogUGljdHVyZSBhc3BlY3QgcmF0aW8gb3B0aW9u cyAqLwo+ICAjZGVmaW5lIERSTV9NT0RFX1BJQ1RVUkVfQVNQRUNUX05PTkUJCTAKPiAtLSAKPiAx LjkuMQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==