From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Fri, 21 Apr 2017 16:08:29 +0300 Message-ID: <20170421130829.GL30290@intel.com> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> <20170421111756.GI30290@intel.com> <2912686.y7t6reP9Co@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5457B6E4D1 for ; Fri, 21 Apr 2017 13:08:34 +0000 (UTC) Content-Disposition: inline In-Reply-To: <2912686.y7t6reP9Co@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart 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 T24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMDM6MTA6MzFQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIZWxsbywKPiAKPiBDQydpbmcgSGFucyBWZXJrdWlsIGZvciBoaXMga25vd2xl ZGdlIG9uIGNvbG9yc3BhY2UuCj4gCj4gT24gRnJpZGF5IDIxIEFwciAyMDE3IDE0OjE3OjU2IFZp bGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIEZyaSwgQXByIDIxLCAyMDE3IGF0IDEyOjUxOjE0 UE0gKzAzMDAsIEp5cmkgU2FyaGEgd3JvdGU6Cj4gPiA+IEFkZCBzdGFuZGFyZCBwcm9wZXJ0aWVz IHRvIGNvbnRyb2wgWUNiQ3IgdG8gUkdCIGNvbnZlcnNpb24gaW4gRFJNCj4gPiA+IHBsYW5lcy4g VGhlIGNyZWF0ZWQgcHJvcGVydGllcyBhcmUgc3RvcmVkIHRvIGRybV9wbGFuZSBvYmplY3QgdG8g YWxsb3cKPiA+ID4gZGlmZmVyZW50IHNldCBvZiBzdXBwb3J0ZWQgY29udmVyc2lvbiBtb2RlcyBm b3IgZGlmZmVyZW50IHBsYW5lcyBvbgo+ID4gPiB0aGUgZGV2aWNlLiBGb3Igc2ltcGxpY2l0eSB0 aGUgcmVsYXRlZCBwcm9wZXJ0eSBibG9icyBmb3IgQ1NDIG1hdHJpeAo+ID4gPiBhbmQgWUNiQ3Ig cHJlb2Zmc2V0cyBhcmUgYWxzbyBzdG9yZWQgaW4gdGhlIHNhbWUgcGxhY2UuIFRoZSBibG9iCj4g PiA+IGNvbnRlbnRzIGFyZSBkZWZpbmVkIGluIHRoZSB1YXBpL2RybS9kcm1fbW9kZS5oIGhlYWRl ci4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ Cj4gPiA+IC0tLQo+ID4gPiAKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAg ICAgIHwgIDI2ICsrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBl ci5jIHwgICA5ICsrKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMgICAg fCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2RybV9wbGFuZS5jICAgICAgICAgfCAgMTAgKysrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1f Y29sb3JfbWdtdC5oICAgICAgICB8ICAyMyArKysrKysKPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9w bGFuZS5oICAgICAgICAgICAgIHwgIDEwICsrKwo+ID4gPiAgaW5jbHVkZS91YXBpL2RybS9kcm1f bW9kZS5oICAgICAgICAgfCAgMTIgKysrKwo+ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAKPiBbc25pcF0KPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4gPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2RybV9jb2xvcl9tZ210LmMgaW5kZXggY2MyM2I5YS4uYmFkYWRkZCAxMDA2NDQKPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMKPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMKPiA+ID4gQEAgLTI5LDkgKzI5LDE0IEBACj4gPiA+ ICAvKioKPiA+ID4gICAqIERPQzogb3ZlcnZpZXcKPiA+ID4gICAqCj4gPiA+IC0gKiBDb2xvciBt YW5hZ2VtZW50IG9yIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGlzIHN1cHBvcnRlZCB0aHJvdWdo IGEgc2V0Cj4gPiA+IG9mIDUKPiA+ID4gLSAqIHByb3BlcnRpZXMgb24gdGhlICZkcm1fY3J0YyBv YmplY3QuIFRoZXkgYXJlIHNldCB1cCBieSBjYWxsaW5nCj4gPiA+IC0gKiBkcm1fY3J0Y19lbmFi bGVfY29sb3JfbWdtdCgpLgo+ID4gPiArICogQ29sb3IgbWFuYWdlbWVudCBvciBjb2xvciBzcGFj ZSBhZGp1c3RtZW50cyBpbiBDUlRDcyBpcyBzdXBwb3J0ZWQKPiA+ID4gKyAqIHRocm91Z2ggYSBz ZXQgb2YgNSBwcm9wZXJ0aWVzIG9uIHRoZSAmZHJtX2NydGMgb2JqZWN0LiBUaGV5IGFyZSBzZXQK PiA+ID4gKyAqIHVwIGJ5IGNhbGxpbmcgZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KPiA+ ID4gKyAqCj4gPiA+ICsgKiBDb2xvciBzcGFjZSBjb252ZXJzaW9ucyBmcm9tIFlDYkNyIHRvIFJH QiBjb2xvciBzcGFjZSBpbiBwbGFuZXMgaXMKPiA+ID4gKyAqIHN1cHBvcnRlciB0cm91Z2ggMyBv cHRpb25hbCBwcm9wZXJ0aWVzIGluICZkcm1fcGxhbmUgb2JqZWN0Lgo+ID4gPiArICoKPiA+ID4g KyAqIFRoZSAmZHJtX2NydGMgb2JqZWN0J3MgcHJvcGVydGllcyBhcmU6Cj4gPiA+ICAgKgo+ID4g PiAgICogIkRFR0FNTUFfTFVU4oCdOgo+ID4gPiAgICoJQmxvYiBwcm9wZXJ0eSB0byBzZXQgdGhl IGRlZ2FtbWEgbG9va3VwIHRhYmxlIChMVVQpIG1hcHBpbmcgcGl4ZWwgZGF0YQo+ID4gPiBAQCAt ODUsNiArOTAsMjggQEAKPiA+ID4gICAqIGRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoKS4g RHJpdmVycyB3aGljaCBzdXBwb3J0IGJvdGggc2hvdWxkIHVzZQo+ID4gPiAgICogZHJtX2F0b21p Y19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCgpIHRvIGFsaWFzIHRoZSBsZWdhY3kgZ2FtbWEgcmFt cAo+ID4gPiAgIHdpdGggdGhlCj4gPiA+ICAgKiAiR0FNTUFfTFVUIiBwcm9wZXJ0eSBhYm92ZS4K PiA+ID4gCj4gPiA+ICsgKgo+ID4gPiArICogVGhlICZkcm1fcGxhbmUgb2JqZWN0J3MgcHJvcGVy dGllcyBhcmU6Cj4gPiA+ICsgKgo+ID4gPiArICogIllDQkNSX1RPX1JHQl9NT0RFIgo+ID4gPiAr ICogCU9wdGlvbmFsIHBsYW5lIGVudW0gcHJvcGVydHkgdG8gY29uZmlndXJlIFlDYkNyIHRvIFJH Qgo+ID4gPiArICogCWNvbnZlcnNpb24uIFRoZSBwb3NzaWJsZSBtb2RlcyBpbmNsdWRlIGEgbnVt YmVyIG9mIHN0YW5kYXJkCj4gPiA+ICsgKiAJY29udmVyc2lvbnMgYW5kIGEgcG9zc2liaWxpdHkg dG8gc2VsZWN0IGN1c3RvbSBjb252ZXJzaW9uCj4gPiA+ICsgKiAJbWF0cml4IGFuZCBwcmVvZmZz ZXQgdmVjdG9yLiBUaGUgZHJpdmVyIHNob3VsZCBzZWxlY3QgdGhlCj4gPiA+ICsgKgkJc3VwcG9y dGVkIHN1YnNldCBvZiBvZiB0aGUgbW9kZXMuCj4gPiA+ICsgKgo+ID4gPiArICogIllDQkNSX1RP X1JHQl9DU0MiCj4gPiA+ICsgKglPcHRpb25hbCBwbGFuZSBwcm9wZXJ0eSBibG9iIHRvIHNldCBZ Q2JDciB0byBSR0IgY29udmVyc2lvbgo+ID4gPiArICoJbWF0cml4LiBUaGUgYmxvYiBjb250YWlu cyBzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9jc2Mgd2hpY2ggaXMKPiA+ID4gKyAqCWRlZmluZWQg aW4gdWFwaS9kcm0vZHJtX21vZGUuaC4gV2hldGhlciB0aGlzIHByb3BlcnR5IGlzCj4gPiA+ICsg KglhY3RpdmUgZGVwZW5kZW50IG9uIFlDQkNSX1RPX1JHQl9NT0RFIHByb3BlcnR5Lgo+ID4gPiAr ICoKPiA+ID4gKyAqICJZQ0JDUl9UT19SR0JfUFJFT0ZGU0VUIgo+ID4gPiArICoJT3B0aW9uYWwg cGxhbmUgcHJvcGVydHkgYmxvYiB0byBjb25maWd1cmUgWUNiQ3Igb2Zmc2V0IGJlZm9yZQo+ID4g PiArICoJWUNiQ3IgdG8gUkdCIENTQyBpcyBhcHBsaWVkLiBUaGUgYmxvYiBjb250YWlucyBzdHJ1 Y3QKPiA+ID4gKyAqCWRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0IHdoaWNoIGlzIGRlZmluZWQg aW4KPiA+ID4gKyAqCXVhcGkvZHJtL2RybV9tb2RlLmguIFdoZXRoZXIgdGhpcyBwcm9wZXJ0eSBp cyBhY3RpdmUgZGVwZW5kZW50Cj4gPiA+ICsgKglvbiBZQ0JDUl9UT19SR0JfTU9ERSBwcm9wZXJ0 eS4KPiA+ID4gICAqLwo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gQEAgLTMzMCwzICszNTcsMTA2 IEBAIGludCBkcm1fbW9kZV9nYW1tYV9nZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+ID4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gPiA+ICAJcmV0dXJuIHJldDsK PiA+ID4gIH0KPiA+ID4gKwo+ID4gPiArc3RhdGljIGNoYXIgKnljYmNyX3RvX3JnYl9tb2RlX25h bWVbXSA9IHsKPiA+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ2MDFf RlVMTF0gPQo+ID4gPiArCQkiWUNiQ3IgQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjYw MSBmdWxsIHJhbmdlIiwKPiA+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0ZVTExfVE9fUkdC X0JUNjAxX0ZVTExdID0KPiA+ID4gKwkJIllDYkNyIEJULjYwMSBmdWxsIHJhbmdlIFRPIFJHQiBC VC42MDEgZnVsbCByYW5nZSIsCj4gPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9f UkdCX0JUNzA5X0ZVTExdID0KPiA+ID4gKwkJIllDYkNyIEJULjcwOSBsaW1pdGVkIHJhbmdlIFRP IFJHQiBCVC43MDkgZnVsbCByYW5nZSIsCj4gPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDIwMjBf TElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+ID4gPiArCQkiWUNiQ3IgQlQuMjAyMCBsaW1pdGVk IHJhbmdlIFRPIFJHQiBCVC4yMDIwIGZ1bGwgcmFuZ2UiLAo+ID4gPiArCVtEUk1fUExBTkVfWUNC Q1JfQlQ2MDFfTElNX1RPX1JHQl9CVDcwOV9GVUxMXSA9Cj4gPiA+ICsJCSJZQ2JDciBCVC42MDEg bGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+ID4gCj4gPiBXZSBwcm9i YWJseSBkb24ndCB3YW50IHRvIGNvbmZsYXRlIHRoZSBZQ2JDci0+UkdCIHBhcnQgd2l0aCB0aGUg Y29sb3JzcGFjZQo+ID4gY29udmVyc2lvbiBiZWNhdXNlIHRoZSBZQ2JDci0+UkdCIHBhcnQgc2hv dWxkIGJlIHBlcmZvcm1lZCBvbiBnYW1tYSBlbmNvZGVkCj4gPiBkYXRhIGFuZCB0aGUgY29sb3Jz cGFjZSBjb252ZXJzaW9uIG9uIGxpbmVhciBkYXRhLiBTbyB3ZSBuZWVkIGEgZGVnYW1tYQo+ID4g c3RhZ2UgaW4gYmV0d2Vlbi4gQXQgbGVhc3QgdGhhdCBzZWVtZWQgdG8gYmUgdGhlIGdlbmVyYWwg Y29uY2VuY3VzIGFmdGVyCj4gPiB0aGUgbGFzdCByb3VuZCBvZiBtYWlscyBvbiB0aGlzIHRvcGlj Lgo+ID4gCj4gPiBBZnRlciBzdGFyaW5nIGF0IHRoZSB2NGwgZG9jcyBvbiB0aGlzIHN0dWZmIEkg a2luZGEgbGlrZSB0aGVpcgo+ID4gImVuY29kaW5nIiB0ZXJtaW5vbG9neSB0byBkZXNjcmliZSB0 aGUgWUNiQ3ItPlJHQiBwYXJ0LCBzbyBJJ20gbm93IGEKPiA+IGxpdHRsZSBwYXJ0aWFsIHRvIGNh bGxpbmcgdGhlIHByb3Agc29tZXRoaW5nIGxpa2UgWUNCQ1JfRU5DT0RJTkcuCj4gCj4gRm9yIHF1 aXRlIG9idmlvdXMgcmVhc29ucyBJIGFncmVlIHdpdGggdGhpcyBwYXJ0aWFsIHJlYXNvbmluZyA6 LSkgSSB3b3VsZCBhbHNvIAo+IGNvcHkgaG93IFY0TDIgc3BsaXRzIGNvbG9yIHNwYWNlIGluZm9y bWF0aW9uIGludG8gYSB0cmFuc2ZlciBmdW5jdGlvbiwgYW4gCj4gZW5jb2RpbmcgYW5kIGEgcXVh bnRpemF0aW9uLiBJZiB5b3UgZ3JvdXAgYWxsIHRocmVlIGluIGEgc2luZ2xlIGVudW0geW91IHdp bGwgCj4gZW5kIHVwIHdpdGggbG90cyBvZiBwb3NzaWJsZSBjb21iaW5hdGlvbnMuCj4gCj4gPiBP VE9IIGlmIHdlIHdhbnQgdG8gZXhwb3NlIHRoZSByYXcgbWF0cml4IGFzIGEgYmxvYiB0aGVuIG1h eWJlIGNhbGxpbmcgaXQgYQo+ID4gQ1NDIG1pZ2h0IGJlIGJldHRlci4gTm90IHN1cmUgdGhlcmUn cyBtdWNoIHBvaW50IGluIGV4cG9zaW5nIGl0IHRob3VnaC4KPiA+IEkgZG9uJ3QgdGhpbmsgbW9z dCBwZW9wbGUgYXJlIGluIHRoZSBoYWJpdCBpZiBjb29raW5nIHVwIG5ldyB3YXlzIHRvCj4gPiBl bmNvZGUgdGhlaXIgcGl4ZWwgZGF0YS4KPiAKPiBJIGJlbGlldmUgaXQgd291bGQgYmUgbW9yZSBh Ym91dCBzdXBwb3J0aW5nIHdlaXJkIGNvbG9yIGVuY29kaW5ncyB0aGF0IGFyZSBpbiAKPiB0aGUg d2lsZCBvdXQgdGhlcmUgaW4gdmFyaW91cyBtZWRpYSBzb3VyY2VzLiBJJ20gbm90IGFuIGV4cGVy dCBpbiB0aGUgZmllbGQgb2YgCj4gY29sb3Igc3BhY2VzIHRob3VnaC4KCldlIGNhbiBhbHdheXMg YWRkIG1vcmUgdmFsdWVzIHRvIHRoZSBlbnVtIGlmIG5ldyB1c2VmdWwgZW5jb2RpbmdzIGNyb3AK dXAuIEknZCBiZSBtb3JlIGluY2xpbmVkIHRvIGV4cG9zaW5nIHRoZSBibG9iIGlmIHNvbWUgbWVk aWEgZm9ybWF0cwp3b3VsZCBhbGxvdyB5b3UgdG8gc3BlY2lmeSBhIGN1c3RvbSBtYXRyaXggYXMg d2VsbC4gTm90IHN1cmUgYW55IGRvLgoKSSBndWVzcyBtYXliZSB0aGUgb25seSByZWFsIGJlbmVm aXQgZnJvbSBleHBvc2luZyB0aGUgYmxvYiB3b3VsZCBiZSB0aGF0CnlvdSBjb3VsZCB0aGVuIGNv bWJpbmUgdGhlIGVuY29kaW5nIGFuZCBjb2xvcnNwYWNlIGNvbnZlcnNpb24gc3RhZ2VzCnRvIHRo ZSBvbmUgbWF0cml4IGlmIHlvdSBmb3Igc29tZSByZWFzb24gZGVjaWRlIHRoYXQgZGVnYW1tYSBp cyBub3QgeW91cgp0aGluZy4gT3RoZXJ3aXNlIHdlJ2QgaGF2ZSB0byBtdWx0aXBseSB0aGUgbWF0 cmljZXMgaW4gdGhlIGtlcm5lbCwgd2hpY2gKSSBndWVzcyB3ZSBtYXkgaGF2ZSB0byBhbnl3YXkg aW4gc29tZSBjYXNlcy4gQXQgbGVhc3QgaTkxNSB0cmllcyB0byBkbwp0aGF0ICh1bnN1Y2Nlc2Z1 bGx5IEkgbWlnaHQgYWRkKSBmb3IgdGhlIG91dHB1dCBDU0Mgc3R1ZmYuCgpBbnl3YXlzLCBJIGp1 c3Qgd2FudGVkIHRvIHBvaW50IG91dCB0aGF0IEkgdGhpbmsgZXhwb3NpbmcgdGhlIGJsb2IKcHJv cGFibHkgd29uJ3QgaGF2ZSBhbnkgcmVhbCB1c2Vycywgc28gbm90IHN1cmUgaXQncyB3b3J0aCB0 aGUKaGFzc2xlLiBCdXQgaWYgcGVvcGxlIGZpbmQgaXQgdXNlZnVsIEkgd29uJ3Qgb2JqZWN0IHRv IGhhdmluZyBpdC4KCj4gCj4gPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdC X0JUMjAyMF9GVUxMXSA9Cj4gPiA+ICsJCSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBS R0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPiA+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJ TV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+ID4gPiArCQkiWUNiQ3IgQlQuNzA5IGxpbWl0ZWQgcmFu Z2UgVE8gUkdCIEJULjYwMSBmdWxsIHJhbmdlIiwKPiA+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0JU NzA5X0xJTV9UT19SR0JfQlQyMDIwX0ZVTExdID0KPiA+ID4gKwkJIllDYkNyIEJULjcwOSBsaW1p dGVkIHJhbmdlIFRPIFJHQiBCVC4yMDIwIGZ1bGwgcmFuZ2UiLAo+ID4gPiArCVtEUk1fUExBTkVf WUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+ID4gPiArCQkiWUNiQ3IgQlQu MjAyMCBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4gPiA+ICsJW0RS TV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDcwOV9GVUxMXSA9Cj4gPiA+ICsJCSJZ Q2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjcwOSBmdWxsIHJhbmdlIiwKPiA+ ID4gKwlbRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVF0gPQo+ID4gPiAr CQkiWUNiQ3IgVE8gUkdCIENTQyBsaW1pdGVkIHJhbmdlIHByZW9mZnNldCIsCj4gPiA+ICsJW0RS TV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0ZVTExfUFJFT0ZGU0VUXSA9Cj4gPiA+ICsJCSJZQ2JD ciBUTyBSR0IgQ1NDIGZ1bGwgcmFuZ2UgcHJlb2Zmc2V0IiwKPiA+ID4gKwlbRFJNX1BMQU5FX1lD QkNSX1RPX1JHQl9DU0NfUFJFT0ZGU0VUX1ZFQ1RPUl0gPQo+ID4gPiArCQkiWUNCQ1IgVE8gUkdC IENTQyBwcmVvZmZzZXQgdmVjdG9yIiwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4g PiArICogZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl90b19yZ2JfcHJvcGVydGllcyAtIHljYmNyIHRv IHJnYiByZWxhdGVkCj4gPiA+IHByb3BlcnRpZXMKPiA+ID4gKyAqIEBlbnVtX2xpc3Q6IGRybV9w cm9wX2VudW1fbGlzdCBhcnJheSBvZiBzdXBwb3J0ZWQgbW9kZXMgd2l0aG91dCBuYW1lcwo+ID4g PiArICogQGVudW1fbGlzdF9sZW46IGxlbmd0aCBvZiBlbnVtX2xpc3QgYXJyYXkKPiA+ID4gKyAq IEBkZWZhdWx0X21vZGU6IGRlZmF1bHQgY3NjIG1vZGUKPiA+ID4gKyAqCj4gPiA+ICsgKiBDcmVh dGUgYW5kIGF0dGFjaCBwbGFuZSBzcGVjaWZpYyBZQ2JDciB0byBSR0IgY29udmVyc2lvbiByZWxh dGVkCj4gPiA+ICsgKiBwcm9wZXJ0aWVzIHRvIHRvIHRoZSBkcm1fcGxhbmUgb2JqZWN0LiBUaGUg WUNCQ1JfVE9fUkdCX01PREUgcHJvcGV0eQo+ID4gPiArICogY3JlYXRlZCBhbmQgYW4gdGhlIHN1 cHBvcnRlZCBtb2RlcyBzaG91bGQgYmUgcHJvdmlkZWQgdGhlIGVudW1fbGlzdAo+ID4gPiArICog cGFyYW1ldGVyLiBZQ0JDUl9UT19SR0JfQ1NDIGFuZCBZQ0JDUl9UT19SR0JfUFJFT0ZGU0VUIHBy b3BlcnRpZXMgYXJlCj4gPiA+ICsgKiBjcmVhdGVkIGJhc2VkIG9uIHN1cHBvcnRlZCBjb252ZXJz aW9uIG1vZGVzLiBUaGUgZW51bV9saXN0IHBhcmFtZXRlcgo+ID4gPiArICogc2hvdWxkIG5vdCBj b250YWluIHRoZSBlbnVtIG5hbWVzLCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBuYW1lcyBhcmUKPiA+ ID4gKyAqIGFkZGVkIGJ5IHRoaXMgZnVuY3Rpb24uCj4gPiA+ICsgKi8KPiA+ID4gK2ludCBkcm1f cGxhbmVfY3JlYXRlX3ljYmNyX3RvX3JnYl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ID4gPiArCQkJc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+ID4g PiArCQkJdW5zaWduZWQgaW50IGVudW1fbGlzdF9sZW4sCj4gPiA+ICsJCQllbnVtIGRybV9wbGFu ZV95Y2Jjcl90b19yZ2JfbW9kZSBkZWZhdWx0X21vZGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0 eSAqcHJvcDsKPiA+ID4gKwlib29sIHljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gZmFsc2U7Cj4g PiA+ICsJYm9vbCB5Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X2NyZWF0ZSA9IGZhbHNlOwo+ID4gPiAr CWludCBpOwo+IAo+IGkgdGFrZXMgcG9zaXRpdmUgdmFsdWVzIG9ubHksIHlvdSBjYW4gbWFrZSBp dCBhbiB1bnNpZ25lZCBpbnQuCj4gCj4gPiA+ICsKPiA+ID4gKwlpZiAoV0FSTl9PTihwbGFuZS0+ eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHkgIT0gTlVMTCkpCj4gPiA+ICsJCXJldHVybiAtRUVY SVNUOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGVudW1fbGlzdF9sZW47IGkrKykg ewo+ID4gPiArCQllbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSBtb2RlID0gZW51bV9s aXN0W2ldLnR5cGU7Cj4gPiA+ICsKPiA+ID4gKwkJZW51bV9saXN0W2ldLm5hbWUgPSB5Y2Jjcl90 b19yZ2JfbW9kZV9uYW1lW21vZGVdOwo+ID4gPiArCj4gPiA+ICsJCWlmIChtb2RlID09IERSTV9Q TEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVQgfHwKPiA+ID4gKwkJICAgIG1vZGUg PT0gRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfRlVMTF9QUkVPRkZTRVQpCj4gPiA+ICsJCQl5 Y2Jjcl90b19yZ2JfY3NjX2NyZWF0ZSA9IHRydWU7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKG1vZGUg PT0gRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfUFJFT0ZGU0VUX1ZFQ1RPUikgewo+ID4gPiAr CQkJeWNiY3JfdG9fcmdiX2NzY19jcmVhdGUgPSB0cnVlOwo+ID4gPiArCQkJeWNiY3JfdG9fcmdi X3ByZW9mZnNldF9jcmVhdGUgPSB0cnVlOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfZW51bShkZXYsIERSTV9NT0RFX1BST1Bf QVRPTUlDLAo+ID4gPiArCQkJCQkiWUNCQ1JfVE9fUkdCX01PREUiLAo+ID4gPiArCQkJCQllbnVt X2xpc3QsIGVudW1fbGlzdF9sZW4pOwo+ID4gPiArCWlmICghcHJvcCkKPiA+ID4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gPiA+ICsJcGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5ID0gcHJv cDsKPiA+ID4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3As IGRlZmF1bHRfbW9kZSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoeWNiY3JfdG9fcmdiX2NzY19jcmVh dGUpIHsKPiA+ID4gKwkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9Q Uk9QX0FUT01JQyB8Cj4gPiA+ICsJCQkJCSAgIERSTV9NT0RFX1BST1BfQkxPQiwKPiA+ID4gKwkJ CQkJICAgIllDQkNSX1RPX1JHQl9DU0MiLCAwKTsKPiA+ID4gKwkJaWYgKCFwcm9wKQo+ID4gPiAr CQkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsJCXBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3Bl cnR5ID0gcHJvcDsKPiA+ID4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5i YXNlLCBwcm9wLCAwKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlpZiAoeWNiY3JfdG9fcmdi X3ByZW9mZnNldF9jcmVhdGUpIHsKPiA+ID4gKwkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUo ZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQyB8Cj4gPiA+ICsJCQkJCSAgIERSTV9NT0RFX1BST1Bf QkxPQiwKPiA+ID4gKwkJCQkJICAgIllDQkNSX1RPX1JHQl9QUkVPRkZTRVQiLCAwKTsKPiA+ID4g KwkJaWYgKCFwcm9wKQo+ID4gPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsJCXBsYW5lLT55 Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X3Byb3BlcnR5ID0gcHJvcDsKPiA+ID4gKwkJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCAwKTsKPiA+ID4gKwl9Cj4gPiA+ ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiAKPiBbc25pcF0KPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmggYi9pbmNsdWRlL2RybS9kcm1fY29s b3JfbWdtdC5oCj4gPiA+IGluZGV4IDAzYTU5Y2IuLmEyMGIzZmYgMTAwNjQ0Cj4gPiA+IC0tLSBh L2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2NvbG9yX21nbXQuaAo+IAo+IFtzbmlwXQo+IAo+ID4gPiBAQCAtMzcsNCArMzksMjUgQEAgdm9p ZCBkcm1fY3J0Y19lbmFibGVfY29sb3JfbWdtdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ ICBpbnQgZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gPiA+ICAJCQkJIGludCBnYW1tYV9zaXplKTsKPiA+ID4gCj4gPiA+ICtlbnVtIGRybV9wbGFu ZV95Y2Jjcl90b19yZ2JfbW9kZSB7Cj4gPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9U T19SR0JfQlQ2MDFfRlVMTCA9IDAsCj4gPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0ZVTExf VE9fUkdCX0JUNjAxX0ZVTEwsCj4gPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19S R0JfQlQ3MDlfRlVMTCwKPiA+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0Jf QlQyMDIwX0ZVTEwsCj4gPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ3 MDlfRlVMTCwKPiA+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIwMjBf RlVMTCwKPiA+ID4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElNX1RPX1JHQl9CVDYwMV9GVUxM LAo+ID4gPiArCURSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUMjAyMF9GVUxMLAo+ ID4gPiArCURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDYwMV9GVUxMLAo+ID4g PiArCURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDcwOV9GVUxMLAo+ID4gPiAr CURSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVQsCj4gPiA+ICsJRFJNX1BM QU5FX1lDQkNSX1RPX1JHQl9DU0NfRlVMTF9QUkVPRkZTRVQsCj4gPiA+ICsJRFJNX1BMQU5FX1lD QkNSX1RPX1JHQl9DU0NfUFJFT0ZGU0VUX1ZFQ1RPUiwKPiAKPiBBbGwgdGhvc2UgdmFsdWVzIHNo b3VsZCBiZSBkb2N1bWVudGVkLgo+IAo+IFNob3VsZCB0aGUgQ1NDIGNvZWZmaWNpZW50IHRhYmxl cyBiZSBjZW50cmFsaXplZCBpbiBjb3JlIGNvZGUgPyBQYXRjaCA1LzYgYWRkcyAKPiB0YWJsZXMg dG8gdGhlIG9tYXBkcm0gZHJpdmVyLCBmb3Igc3RhbmRhcmQgY29udmVyc2lvbnMgaXQgd291bGQg bWFrZSBzZW5zZSB0byAKPiBzaGFyZSB0aGF0IGRhdGEuCj4gCj4gPiA+ICt9Owo+ID4gPiArCj4g PiA+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl90b19yZ2JfcHJvcGVydGllcyhzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gKwkJCXN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgKmVu dW1fbGlzdCwKPiA+ID4gKwkJCXVuc2lnbmVkIGludCBlbnVtX2xpc3RfbGVuLAo+ID4gPiArCQkJ ZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdiX21vZGUgZGVmYXVsdF9tb2RlKTsKPiA+ID4gKwo+ ID4gPiAgI2VuZGlmCj4gCj4gW3NuaXBdCj4gCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3Vh cGkvZHJtL2RybV9tb2RlLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiA+ID4gaW5k ZXggOGM2N2ZjMC4uMjdlMGJlZSAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9k cm1fbW9kZS5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ID4gPiBA QCAtNTQzLDYgKzU0MywxOCBAQCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCB7Cj4gPiA+ICAJX191MTYg cmVzZXJ2ZWQ7Cj4gPiA+ICB9Owo+ID4gPiAKPiA+ID4gK3N0cnVjdCBkcm1feWNiY3JfdG9fcmdi X2NzYyB7Cj4gPiA+ICsJLyogQ29udmVyc2lvbiBtYXRyaXggaW4gMi1jb21wbGVtZW50IHMzMi4z MiBmb3JtYXQuICovCj4gPiA+ICsJX19zNjQgcnksIHJjYiwgcmNyOwo+ID4gPiArCV9fczY0IGd5 LCBnY2IsIGdjcjsKPiA+ID4gKwlfX3M2NCBieSwgYmNiLCBiY3I7Cj4gPiA+ICt9Owo+ID4gPiAr Cj4gPiA+ICtzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9wcmVvZmZzZXQgewo+ID4gPiArCS8qIE9m ZnNldCB2ZWN0b3IgaW4gMi1jb21wbGVtZW50IHMuMzIgZm9ybWF0LiAqLwo+ID4gPiArCV9fczMy IHksIGNiLCBjcjsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gCj4gPiA+ICAjZGVmaW5lIERSTV9N T0RFX1BBR0VfRkxJUF9FVkVOVCAweDAxCj4gPiA+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJ UF9BU1lOQyAweDAyCj4gPiA+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9UQVJHRVRfQUJT T0xVVEUgMHg0Cj4gCj4gLS0gCj4gUmVnYXJkcywKPiAKPiBMYXVyZW50IFBpbmNoYXJ0CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK