From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Fri, 21 Apr 2017 15:10:31 +0300 Message-ID: <2912686.y7t6reP9Co@avalon> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> <20170421111756.GI30290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 48AD56E069 for ; Fri, 21 Apr 2017 12:09:30 +0000 (UTC) In-Reply-To: <20170421111756.GI30290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, Hans Verkuil , Jyri Sarha List-Id: dri-devel@lists.freedesktop.org SGVsbG8sCgpDQydpbmcgSGFucyBWZXJrdWlsIGZvciBoaXMga25vd2xlZGdlIG9uIGNvbG9yc3Bh Y2UuCgpPbiBGcmlkYXkgMjEgQXByIDIwMTcgMTQ6MTc6NTYgVmlsbGUgU3lyasOkbMOkIHdyb3Rl Ogo+IE9uIEZyaSwgQXByIDIxLCAyMDE3IGF0IDEyOjUxOjE0UE0gKzAzMDAsIEp5cmkgU2FyaGEg d3JvdGU6Cj4gPiBBZGQgc3RhbmRhcmQgcHJvcGVydGllcyB0byBjb250cm9sIFlDYkNyIHRvIFJH QiBjb252ZXJzaW9uIGluIERSTQo+ID4gcGxhbmVzLiBUaGUgY3JlYXRlZCBwcm9wZXJ0aWVzIGFy ZSBzdG9yZWQgdG8gZHJtX3BsYW5lIG9iamVjdCB0byBhbGxvdwo+ID4gZGlmZmVyZW50IHNldCBv ZiBzdXBwb3J0ZWQgY29udmVyc2lvbiBtb2RlcyBmb3IgZGlmZmVyZW50IHBsYW5lcyBvbgo+ID4g dGhlIGRldmljZS4gRm9yIHNpbXBsaWNpdHkgdGhlIHJlbGF0ZWQgcHJvcGVydHkgYmxvYnMgZm9y IENTQyBtYXRyaXgKPiA+IGFuZCBZQ2JDciBwcmVvZmZzZXRzIGFyZSBhbHNvIHN0b3JlZCBpbiB0 aGUgc2FtZSBwbGFjZS4gVGhlIGJsb2IKPiA+IGNvbnRlbnRzIGFyZSBkZWZpbmVkIGluIHRoZSB1 YXBpL2RybS9kcm1fbW9kZS5oIGhlYWRlci4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogSnlyaSBT YXJoYSA8anNhcmhhQHRpLmNvbT4KPiA+IC0tLQo+ID4gCj4gPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWMuYyAgICAgICAgfCAgMjYgKysrKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jIHwgICA5ICsrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3Jf bWdtdC5jICAgIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMgICAgICAgICB8ICAxMCArKysKPiA+ICBpbmNsdWRlL2Ry bS9kcm1fY29sb3JfbWdtdC5oICAgICAgICB8ICAyMyArKysrKysKPiA+ICBpbmNsdWRlL2RybS9k cm1fcGxhbmUuaCAgICAgICAgICAgICB8ICAxMCArKysKPiA+ICBpbmNsdWRlL3VhcGkvZHJtL2Ry bV9tb2RlLmggICAgICAgICB8ICAxMiArKysrCj4gPiAgNyBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCltzbmlwXQoKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nv bG9yX21nbXQuYyBpbmRleCBjYzIzYjlhLi5iYWRhZGRkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Y29sb3JfbWdtdC5jCj4gPiBAQCAtMjksOSArMjksMTQgQEAKPiA+ICAvKioKPiA+ICAgKiBET0M6 IG92ZXJ2aWV3Cj4gPiAgICoKPiA+IC0gKiBDb2xvciBtYW5hZ2VtZW50IG9yIGNvbG9yIHNwYWNl IGFkanVzdG1lbnRzIGlzIHN1cHBvcnRlZCB0aHJvdWdoIGEgc2V0Cj4gPiBvZiA1Cj4gPiAtICog cHJvcGVydGllcyBvbiB0aGUgJmRybV9jcnRjIG9iamVjdC4gVGhleSBhcmUgc2V0IHVwIGJ5IGNh bGxpbmcKPiA+IC0gKiBkcm1fY3J0Y19lbmFibGVfY29sb3JfbWdtdCgpLgo+ID4gKyAqIENvbG9y IG1hbmFnZW1lbnQgb3IgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW4gQ1JUQ3MgaXMgc3VwcG9y dGVkCj4gPiArICogdGhyb3VnaCBhIHNldCBvZiA1IHByb3BlcnRpZXMgb24gdGhlICZkcm1fY3J0 YyBvYmplY3QuIFRoZXkgYXJlIHNldAo+ID4gKyAqIHVwIGJ5IGNhbGxpbmcgZHJtX2NydGNfZW5h YmxlX2NvbG9yX21nbXQoKS4KPiA+ICsgKgo+ID4gKyAqIENvbG9yIHNwYWNlIGNvbnZlcnNpb25z IGZyb20gWUNiQ3IgdG8gUkdCIGNvbG9yIHNwYWNlIGluIHBsYW5lcyBpcwo+ID4gKyAqIHN1cHBv cnRlciB0cm91Z2ggMyBvcHRpb25hbCBwcm9wZXJ0aWVzIGluICZkcm1fcGxhbmUgb2JqZWN0Lgo+ ID4gKyAqCj4gPiArICogVGhlICZkcm1fY3J0YyBvYmplY3QncyBwcm9wZXJ0aWVzIGFyZToKPiA+ ICAgKgo+ID4gICAqICJERUdBTU1BX0xVVOKAnToKPiA+ICAgKglCbG9iIHByb3BlcnR5IHRvIHNl dCB0aGUgZGVnYW1tYSBsb29rdXAgdGFibGUgKExVVCkgbWFwcGluZyBwaXhlbCBkYXRhCj4gPiBA QCAtODUsNiArOTAsMjggQEAKPiA+ICAgKiBkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKCku IERyaXZlcnMgd2hpY2ggc3VwcG9ydCBib3RoIHNob3VsZCB1c2UKPiA+ICAgKiBkcm1fYXRvbWlj X2hlbHBlcl9sZWdhY3lfZ2FtbWFfc2V0KCkgdG8gYWxpYXMgdGhlIGxlZ2FjeSBnYW1tYSByYW1w Cj4gPiAgIHdpdGggdGhlCj4gPiAgICogIkdBTU1BX0xVVCIgcHJvcGVydHkgYWJvdmUuCj4gPiAK PiA+ICsgKgo+ID4gKyAqIFRoZSAmZHJtX3BsYW5lIG9iamVjdCdzIHByb3BlcnRpZXMgYXJlOgo+ ID4gKyAqCj4gPiArICogIllDQkNSX1RPX1JHQl9NT0RFIgo+ID4gKyAqIAlPcHRpb25hbCBwbGFu ZSBlbnVtIHByb3BlcnR5IHRvIGNvbmZpZ3VyZSBZQ2JDciB0byBSR0IKPiA+ICsgKiAJY29udmVy c2lvbi4gVGhlIHBvc3NpYmxlIG1vZGVzIGluY2x1ZGUgYSBudW1iZXIgb2Ygc3RhbmRhcmQKPiA+ ICsgKiAJY29udmVyc2lvbnMgYW5kIGEgcG9zc2liaWxpdHkgdG8gc2VsZWN0IGN1c3RvbSBjb252 ZXJzaW9uCj4gPiArICogCW1hdHJpeCBhbmQgcHJlb2Zmc2V0IHZlY3Rvci4gVGhlIGRyaXZlciBz aG91bGQgc2VsZWN0IHRoZQo+ID4gKyAqCQlzdXBwb3J0ZWQgc3Vic2V0IG9mIG9mIHRoZSBtb2Rl cy4KPiA+ICsgKgo+ID4gKyAqICJZQ0JDUl9UT19SR0JfQ1NDIgo+ID4gKyAqCU9wdGlvbmFsIHBs YW5lIHByb3BlcnR5IGJsb2IgdG8gc2V0IFlDYkNyIHRvIFJHQiBjb252ZXJzaW9uCj4gPiArICoJ bWF0cml4LiBUaGUgYmxvYiBjb250YWlucyBzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9jc2Mgd2hp Y2ggaXMKPiA+ICsgKglkZWZpbmVkIGluIHVhcGkvZHJtL2RybV9tb2RlLmguIFdoZXRoZXIgdGhp cyBwcm9wZXJ0eSBpcwo+ID4gKyAqCWFjdGl2ZSBkZXBlbmRlbnQgb24gWUNCQ1JfVE9fUkdCX01P REUgcHJvcGVydHkuCj4gPiArICoKPiA+ICsgKiAiWUNCQ1JfVE9fUkdCX1BSRU9GRlNFVCIKPiA+ ICsgKglPcHRpb25hbCBwbGFuZSBwcm9wZXJ0eSBibG9iIHRvIGNvbmZpZ3VyZSBZQ2JDciBvZmZz ZXQgYmVmb3JlCj4gPiArICoJWUNiQ3IgdG8gUkdCIENTQyBpcyBhcHBsaWVkLiBUaGUgYmxvYiBj b250YWlucyBzdHJ1Y3QKPiA+ICsgKglkcm1feWNiY3JfdG9fcmdiX3ByZW9mZnNldCB3aGljaCBp cyBkZWZpbmVkIGluCj4gPiArICoJdWFwaS9kcm0vZHJtX21vZGUuaC4gV2hldGhlciB0aGlzIHBy b3BlcnR5IGlzIGFjdGl2ZSBkZXBlbmRlbnQKPiA+ICsgKglvbiBZQ0JDUl9UT19SR0JfTU9ERSBw cm9wZXJ0eS4KPiA+ICAgKi8KPiA+ICAKPiA+ICAvKioKPiA+IEBAIC0zMzAsMyArMzU3LDEwNiBA QCBpbnQgZHJtX21vZGVfZ2FtbWFfZ2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g PiAgCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiA+ICAJcmV0dXJuIHJldDsKPiA+ICB9 Cj4gPiArCj4gPiArc3RhdGljIGNoYXIgKnljYmNyX3RvX3JnYl9tb2RlX25hbWVbXSA9IHsKPiA+ ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JUNjAxX0ZVTExdID0KPiA+ICsJ CSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0ZVTExfVE9fUkdCX0JUNjAxX0ZVTExdID0KPiA+ ICsJCSJZQ2JDciBCVC42MDEgZnVsbCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ID4g KwkJIllDYkNyIEJULjcwOSBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC43MDkgZnVsbCByYW5nZSIs Cj4gPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQyMDIwX0ZVTExdID0K PiA+ICsJCSJZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjIwMjAgZnVsbCBy YW5nZSIsCj4gPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDcwOV9GVUxM XSA9Cj4gPiArCQkiWUNiQ3IgQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjcwOSBmdWxs IHJhbmdlIiwKPiAKPiBXZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGNvbmZsYXRlIHRoZSBZQ2JD ci0+UkdCIHBhcnQgd2l0aCB0aGUgY29sb3JzcGFjZQo+IGNvbnZlcnNpb24gYmVjYXVzZSB0aGUg WUNiQ3ItPlJHQiBwYXJ0IHNob3VsZCBiZSBwZXJmb3JtZWQgb24gZ2FtbWEgZW5jb2RlZAo+IGRh dGEgYW5kIHRoZSBjb2xvcnNwYWNlIGNvbnZlcnNpb24gb24gbGluZWFyIGRhdGEuIFNvIHdlIG5l ZWQgYSBkZWdhbW1hCj4gc3RhZ2UgaW4gYmV0d2Vlbi4gQXQgbGVhc3QgdGhhdCBzZWVtZWQgdG8g YmUgdGhlIGdlbmVyYWwgY29uY2VuY3VzIGFmdGVyCj4gdGhlIGxhc3Qgcm91bmQgb2YgbWFpbHMg b24gdGhpcyB0b3BpYy4KPiAKPiBBZnRlciBzdGFyaW5nIGF0IHRoZSB2NGwgZG9jcyBvbiB0aGlz IHN0dWZmIEkga2luZGEgbGlrZSB0aGVpcgo+ICJlbmNvZGluZyIgdGVybWlub2xvZ3kgdG8gZGVz Y3JpYmUgdGhlIFlDYkNyLT5SR0IgcGFydCwgc28gSSdtIG5vdyBhCj4gbGl0dGxlIHBhcnRpYWwg dG8gY2FsbGluZyB0aGUgcHJvcCBzb21ldGhpbmcgbGlrZSBZQ0JDUl9FTkNPRElORy4KCkZvciBx dWl0ZSBvYnZpb3VzIHJlYXNvbnMgSSBhZ3JlZSB3aXRoIHRoaXMgcGFydGlhbCByZWFzb25pbmcg Oi0pIEkgd291bGQgYWxzbyAKY29weSBob3cgVjRMMiBzcGxpdHMgY29sb3Igc3BhY2UgaW5mb3Jt YXRpb24gaW50byBhIHRyYW5zZmVyIGZ1bmN0aW9uLCBhbiAKZW5jb2RpbmcgYW5kIGEgcXVhbnRp emF0aW9uLiBJZiB5b3UgZ3JvdXAgYWxsIHRocmVlIGluIGEgc2luZ2xlIGVudW0geW91IHdpbGwg CmVuZCB1cCB3aXRoIGxvdHMgb2YgcG9zc2libGUgY29tYmluYXRpb25zLgoKPiBPVE9IIGlmIHdl IHdhbnQgdG8gZXhwb3NlIHRoZSByYXcgbWF0cml4IGFzIGEgYmxvYiB0aGVuIG1heWJlIGNhbGxp bmcgaXQgYQo+IENTQyBtaWdodCBiZSBiZXR0ZXIuIE5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2lu dCBpbiBleHBvc2luZyBpdCB0aG91Z2guCj4gSSBkb24ndCB0aGluayBtb3N0IHBlb3BsZSBhcmUg aW4gdGhlIGhhYml0IGlmIGNvb2tpbmcgdXAgbmV3IHdheXMgdG8KPiBlbmNvZGUgdGhlaXIgcGl4 ZWwgZGF0YS4KCkkgYmVsaWV2ZSBpdCB3b3VsZCBiZSBtb3JlIGFib3V0IHN1cHBvcnRpbmcgd2Vp cmQgY29sb3IgZW5jb2RpbmdzIHRoYXQgYXJlIGluIAp0aGUgd2lsZCBvdXQgdGhlcmUgaW4gdmFy aW91cyBtZWRpYSBzb3VyY2VzLiBJJ20gbm90IGFuIGV4cGVydCBpbiB0aGUgZmllbGQgb2YgCmNv bG9yIHNwYWNlcyB0aG91Z2guCgo+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19S R0JfQlQyMDIwX0ZVTExdID0KPiA+ICsJCSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBS R0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1f VE9fUkdCX0JUNjAxX0ZVTExdID0KPiA+ICsJCSJZQ2JDciBCVC43MDkgbGltaXRlZCByYW5nZSBU TyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJ TV9UT19SR0JfQlQyMDIwX0ZVTExdID0KPiA+ICsJCSJZQ2JDciBCVC43MDkgbGltaXRlZCByYW5n ZSBUTyBSR0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDIw MjBfTElNX1RPX1JHQl9CVDYwMV9GVUxMXSA9Cj4gPiArCQkiWUNiQ3IgQlQuMjAyMCBsaW1pdGVk IHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4gPiArCVtEUk1fUExBTkVfWUNCQ1Jf QlQyMDIwX0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ID4gKwkJIllDYkNyIEJULjIwMjAgbGlt aXRlZCByYW5nZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+ID4gKwlbRFJNX1BMQU5FX1lD QkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVF0gPQo+ID4gKwkJIllDYkNyIFRPIFJHQiBDU0Mg bGltaXRlZCByYW5nZSBwcmVvZmZzZXQiLAo+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9D U0NfRlVMTF9QUkVPRkZTRVRdID0KPiA+ICsJCSJZQ2JDciBUTyBSR0IgQ1NDIGZ1bGwgcmFuZ2Ug cHJlb2Zmc2V0IiwKPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX1BSRU9GRlNFVF9W RUNUT1JdID0KPiA+ICsJCSJZQ0JDUiBUTyBSR0IgQ1NDIHByZW9mZnNldCB2ZWN0b3IiLAo+ID4g K307Cj4gPiArCj4gPiArLyoqCj4gPiArICogZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl90b19yZ2Jf cHJvcGVydGllcyAtIHljYmNyIHRvIHJnYiByZWxhdGVkCj4gPiBwcm9wZXJ0aWVzCj4gPiArICog QGVudW1fbGlzdDogZHJtX3Byb3BfZW51bV9saXN0IGFycmF5IG9mIHN1cHBvcnRlZCBtb2RlcyB3 aXRob3V0IG5hbWVzCj4gPiArICogQGVudW1fbGlzdF9sZW46IGxlbmd0aCBvZiBlbnVtX2xpc3Qg YXJyYXkKPiA+ICsgKiBAZGVmYXVsdF9tb2RlOiBkZWZhdWx0IGNzYyBtb2RlCj4gPiArICoKPiA+ ICsgKiBDcmVhdGUgYW5kIGF0dGFjaCBwbGFuZSBzcGVjaWZpYyBZQ2JDciB0byBSR0IgY29udmVy c2lvbiByZWxhdGVkCj4gPiArICogcHJvcGVydGllcyB0byB0byB0aGUgZHJtX3BsYW5lIG9iamVj dC4gVGhlIFlDQkNSX1RPX1JHQl9NT0RFIHByb3BldHkKPiA+ICsgKiBjcmVhdGVkIGFuZCBhbiB0 aGUgc3VwcG9ydGVkIG1vZGVzIHNob3VsZCBiZSBwcm92aWRlZCB0aGUgZW51bV9saXN0Cj4gPiAr ICogcGFyYW1ldGVyLiBZQ0JDUl9UT19SR0JfQ1NDIGFuZCBZQ0JDUl9UT19SR0JfUFJFT0ZGU0VU IHByb3BlcnRpZXMgYXJlCj4gPiArICogY3JlYXRlZCBiYXNlZCBvbiBzdXBwb3J0ZWQgY29udmVy c2lvbiBtb2Rlcy4gVGhlIGVudW1fbGlzdCBwYXJhbWV0ZXIKPiA+ICsgKiBzaG91bGQgbm90IGNv bnRhaW4gdGhlIGVudW0gbmFtZXMsIGJlY2F1c2UgdGhlIHN0YW5kYXJkIG5hbWVzIGFyZQo+ID4g KyAqIGFkZGVkIGJ5IHRoaXMgZnVuY3Rpb24uCj4gPiArICovCj4gPiAraW50IGRybV9wbGFuZV9j cmVhdGVfeWNiY3JfdG9fcmdiX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g PiArCQkJc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+ID4gKwkJCXVuc2ln bmVkIGludCBlbnVtX2xpc3RfbGVuLAo+ID4gKwkJCWVudW0gZHJtX3BsYW5lX3ljYmNyX3RvX3Jn Yl9tb2RlIGRlZmF1bHRfbW9kZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBwbGFuZS0+ZGV2Owo+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4gKwlib29s IHljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gZmFsc2U7Cj4gPiArCWJvb2wgeWNiY3JfdG9fcmdi X3ByZW9mZnNldF9jcmVhdGUgPSBmYWxzZTsKPiA+ICsJaW50IGk7CgppIHRha2VzIHBvc2l0aXZl IHZhbHVlcyBvbmx5LCB5b3UgY2FuIG1ha2UgaXQgYW4gdW5zaWduZWQgaW50LgoKPiA+ICsKPiA+ ICsJaWYgKFdBUk5fT04ocGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5ICE9IE5VTEwp KQo+ID4gKwkJcmV0dXJuIC1FRVhJU1Q7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBlbnVt X2xpc3RfbGVuOyBpKyspIHsKPiA+ICsJCWVudW0gZHJtX3BsYW5lX3ljYmNyX3RvX3JnYl9tb2Rl IG1vZGUgPSBlbnVtX2xpc3RbaV0udHlwZTsKPiA+ICsKPiA+ICsJCWVudW1fbGlzdFtpXS5uYW1l ID0geWNiY3JfdG9fcmdiX21vZGVfbmFtZVttb2RlXTsKPiA+ICsKPiA+ICsJCWlmIChtb2RlID09 IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVQgfHwKPiA+ICsJCSAgICBt b2RlID09IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0ZVTExfUFJFT0ZGU0VUKQo+ID4gKwkJ CXljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gdHJ1ZTsKPiA+ICsKPiA+ICsJCWlmIChtb2RlID09 IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX1BSRU9GRlNFVF9WRUNUT1IpIHsKPiA+ICsJCQl5 Y2Jjcl90b19yZ2JfY3NjX2NyZWF0ZSA9IHRydWU7Cj4gPiArCQkJeWNiY3JfdG9fcmdiX3ByZW9m ZnNldF9jcmVhdGUgPSB0cnVlOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCXByb3AgPSBk cm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiA+ICsJ CQkJCSJZQ0JDUl9UT19SR0JfTU9ERSIsCj4gPiArCQkJCQllbnVtX2xpc3QsIGVudW1fbGlzdF9s ZW4pOwo+ID4gKwlpZiAoIXByb3ApCj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsJcGxhbmUt PnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5ID0gcHJvcDsKPiA+ICsJZHJtX29iamVjdF9hdHRh Y2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCBkZWZhdWx0X21vZGUpOwo+ID4gKwo+ID4g KwlpZiAoeWNiY3JfdG9fcmdiX2NzY19jcmVhdGUpIHsKPiA+ICsJCXByb3AgPSBkcm1fcHJvcGVy dHlfY3JlYXRlKGRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMgfAo+ID4gKwkJCQkJICAgRFJNX01P REVfUFJPUF9CTE9CLAo+ID4gKwkJCQkJICAgIllDQkNSX1RPX1JHQl9DU0MiLCAwKTsKPiA+ICsJ CWlmICghcHJvcCkKPiA+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsJCXBsYW5lLT55Y2Jjcl90 b19yZ2JfY3NjX3Byb3BlcnR5ID0gcHJvcDsKPiA+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgMCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKHljYmNy X3RvX3JnYl9wcmVvZmZzZXRfY3JlYXRlKSB7Cj4gPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2Ny ZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDIHwKPiA+ICsJCQkJCSAgIERSTV9NT0RFX1BS T1BfQkxPQiwKPiA+ICsJCQkJCSAgICJZQ0JDUl9UT19SR0JfUFJFT0ZGU0VUIiwgMCk7Cj4gPiAr CQlpZiAoIXByb3ApCj4gPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPiArCQlwbGFuZS0+eWNiY3Jf dG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSA9IHByb3A7Cj4gPiArCQlkcm1fb2JqZWN0X2F0dGFj aF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIDApOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJl dHVybiAwOwo+ID4gK30KCltzbmlwXQoKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Y29sb3JfbWdtdC5oIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaAo+ID4gaW5kZXggMDNh NTljYi4uYTIwYjNmZiAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210 LmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmgKCltzbmlwXQoKPiA+IEBA IC0zNyw0ICszOSwyNSBAQCB2b2lkIGRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiA+ICBpbnQgZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJCSBpbnQgZ2FtbWFfc2l6ZSk7Cj4gPiAKPiA+ICtl bnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSB7Cj4gPiArCURSTV9QTEFORV9ZQ0JDUl9C VDYwMV9MSU1fVE9fUkdCX0JUNjAxX0ZVTEwgPSAwLAo+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2 MDFfRlVMTF9UT19SR0JfQlQ2MDFfRlVMTCwKPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJ TV9UT19SR0JfQlQ3MDlfRlVMTCwKPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9f UkdCX0JUMjAyMF9GVUxMLAo+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9C VDcwOV9GVUxMLAo+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIwMjBf RlVMTCwKPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQ2MDFfRlVMTCwK PiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQyMDIwX0ZVTEwsCj4gPiAr CURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDYwMV9GVUxMLAo+ID4gKwlEUk1f UExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQ3MDlfRlVMTCwKPiA+ICsJRFJNX1BMQU5F X1lDQkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVCwKPiA+ICsJRFJNX1BMQU5FX1lDQkNSX1RP X1JHQl9DU0NfRlVMTF9QUkVPRkZTRVQsCj4gPiArCURSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1ND X1BSRU9GRlNFVF9WRUNUT1IsCgpBbGwgdGhvc2UgdmFsdWVzIHNob3VsZCBiZSBkb2N1bWVudGVk LgoKU2hvdWxkIHRoZSBDU0MgY29lZmZpY2llbnQgdGFibGVzIGJlIGNlbnRyYWxpemVkIGluIGNv cmUgY29kZSA/IFBhdGNoIDUvNiBhZGRzIAp0YWJsZXMgdG8gdGhlIG9tYXBkcm0gZHJpdmVyLCBm b3Igc3RhbmRhcmQgY29udmVyc2lvbnMgaXQgd291bGQgbWFrZSBzZW5zZSB0byAKc2hhcmUgdGhh dCBkYXRhLgoKPiA+ICt9Owo+ID4gKwo+ID4gK2ludCBkcm1fcGxhbmVfY3JlYXRlX3ljYmNyX3Rv X3JnYl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gKwkJCXN0cnVjdCBk cm1fcHJvcF9lbnVtX2xpc3QgKmVudW1fbGlzdCwKPiA+ICsJCQl1bnNpZ25lZCBpbnQgZW51bV9s aXN0X2xlbiwKPiA+ICsJCQllbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSBkZWZhdWx0 X21vZGUpOwo+ID4gKwo+ID4gICNlbmRpZgoKW3NuaXBdCgo+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ID4g aW5kZXggOGM2N2ZjMC4uMjdlMGJlZSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0v ZHJtX21vZGUuaAo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPiBAQCAt NTQzLDYgKzU0MywxOCBAQCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCB7Cj4gPiAgCV9fdTE2IHJlc2Vy dmVkOwo+ID4gIH07Cj4gPiAKPiA+ICtzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9jc2Mgewo+ID4g KwkvKiBDb252ZXJzaW9uIG1hdHJpeCBpbiAyLWNvbXBsZW1lbnQgczMyLjMyIGZvcm1hdC4gKi8K PiA+ICsJX19zNjQgcnksIHJjYiwgcmNyOwo+ID4gKwlfX3M2NCBneSwgZ2NiLCBnY3I7Cj4gPiAr CV9fczY0IGJ5LCBiY2IsIGJjcjsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBkcm1feWNiY3Jf dG9fcmdiX3ByZW9mZnNldCB7Cj4gPiArCS8qIE9mZnNldCB2ZWN0b3IgaW4gMi1jb21wbGVtZW50 IHMuMzIgZm9ybWF0LiAqLwo+ID4gKwlfX3MzMiB5LCBjYiwgY3I7Cj4gPiArfTsKPiA+ICsKPiA+ IAo+ID4gICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UIDB4MDEKPiA+ICAjZGVmaW5l IERSTV9NT0RFX1BBR0VfRkxJUF9BU1lOQyAweDAyCj4gPiAgI2RlZmluZSBEUk1fTU9ERV9QQUdF X0ZMSVBfVEFSR0VUX0FCU09MVVRFIDB4NAoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK