From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH RFC v2 2/2] drm: Add YCBCR_DECODE_CSC and YCBCR_CSC_PREOFFSET properties to drm_plane Date: Thu, 4 May 2017 17:51:45 +0300 Message-ID: <20170504145145.GZ12629@intel.com> References: <24ec5f778bf658c11561d36b416523ac2b978f7c.1493881618.git.jsarha@ti.com> <20170504132245.rkcjjiwuz22ajvj3@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 67B426E062 for ; Thu, 4 May 2017 14:51:51 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170504132245.rkcjjiwuz22ajvj3@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: laurent.pinchart@ideasonboard.com, Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, Jyri Sarha List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXkgMDQsIDIwMTcgYXQgMDM6MjI6NDVQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE1heSAwNCwgMjAxNyBhdCAxMDoxNDoyNkFNICswMzAwLCBKeXJpIFNh cmhhIHdyb3RlOgo+ID4gQWRkIHN0YW5kYXJkIG9wdGluYWwgcHJvcGVydHkgYmxvYnMgZm9yIFlD YkNyIHRvIFJHQiBjb252ZXJzaW9uIENTQwo+ID4gbWF0cml4IGFuZCBZQ2JDciBwcmVvZmZzZXQg dmVjdG9yIGluIERSTSBwbGFuZXMuIE5ldyBlbnVtcyBhcmUgZGVmaW5lZAo+ID4gdG8gWUNCQ1Jf RU5DT0RJTkcgcHJvcGVydHkgdG8gYWN0aXZhdGUgdGhlIENTQyBhbmQgcHJlb2Zmc2V0Cj4gPiBw cm9wZXJ0aWVzLiBGb3Igc2ltcGxpY2l0eSB0aGUgbmV3IHByb3BlcnRpZXMgYXJlIHN0b3JlZCBp biB0aGUKPiA+IGRybV9wbGFuZSBvYmplY3QsIGJlY2F1c2UgdGhlIFlDQkNSX0VOQ09ESU5HIGlz IGFscmVhZHkgdGhlcmUuIFRoZQo+ID4gYmxvYiBjb250ZW50cyBhcmUgZGVmaW5lZCBpbiB0aGUg dWFwaS9kcm0vZHJtX21vZGUuaCBoZWFkZXIuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEp5cmkg U2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gCj4gTm90IHN1cmUgd2Ugd2FudCB0byBtYWtlIHRoaXMg eXV2MnJnYiBzcGVjaWZpYywgcGxlbnR5IG9mIHBsYW5lcyBoYXZlCj4gZ2VuZXJpYyBkZWdhbW1h L29mZnNldCwgY3NjLCBnYW1tZS9vZmZzZXQgaHcuIEkgdGhpbmsgd2hhdCB3ZSB3YW50IGluc3Rl YWQKPiBpcyB0aGUgZ2VuZXJpYyBjc2Mgc3VwcG9ydCwgcGx1cyBhIHljYmNyMnJnYiBtb2RlIG9m ICJieXBhc3MiLgoKTXkgaWRlYSBpcyB0byBub3QgZXhwb3NlIHRoaXMuIEFuZCBpbnN0ZWFkIGp1 c3QgZXhwb3NlIGEgbm9ybWFsCmN0bSwgYW5kIHRoZW4ganVzdCByZWZ1c2UgYW55IGNvbWJpbmF0 aW9uIG9mIFlDYkNyLT5SR0IvZGVnYW1tYS9jdG0KdGhhdCBjYW4ndCBiZSBkb25lIGJ5IHRoZSBo dy4KCj4gCj4gQW5kIGFzIHVzdWFsLCB0aGlzIG5lZWRzIHNvbWUgdXNlcnNwYWNlIGNvbXBvc2l0 b3Igd2hpY2ggYWN0dWFsbHkgdXNlcyBpdAo+IChub3QganVzdCBhIGRlbW8sIHNpbmNlIHRoZXJl J3MgYSBodWdlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGRlbW8gYW5kCj4gc29tZXRoaW5nIHRoYXQg aGFzIHRvIEp1c3QgV29yayBsaWtlIGEgcmVhbCBjb21wb3NpdG9yKS4KPiAtRGFuaWVsCj4gCj4g PiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICB8IDE5ICsrKysr KysrKysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICA5ICsr KysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jICAgIHwgNTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f cGxhbmUuYyAgICAgICAgIHwgIDYgKysrKwo+ID4gIGluY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210 LmggICAgICAgIHwgIDMgKysKPiA+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAg ICB8ICA0ICsrKwo+ID4gIGluY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCAgICAgICAgIHwgMTIg KysrKysrKysKPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+IGluZGV4IGJjZWY5M2QuLjg3YTJk NTUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiBAQCAtNzMzLDYgKzczMyw3IEBAIGlu dCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gPiAgCXN0cnVjdCBk cm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ID4gIAlpbnQgcmV0 Owo+ID4gKwlib29sIGR1bW15Owo+ID4gIAo+ID4gIAlpZiAocHJvcGVydHkgPT0gY29uZmlnLT5w cm9wX2ZiX2lkKSB7Cj4gPiAgCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGRybV9mcmFt ZWJ1ZmZlcl9sb29rdXAoZGV2LCB2YWwpOwo+ID4gQEAgLTc3Nyw2ICs3NzgsMTggQEAgaW50IGRy bV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4g IAkJc3RhdGUtPnpwb3MgPSB2YWw7Cj4gPiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUt PnljYmNyX2VuY29kaW5nX3Byb3BlcnR5KSB7Cj4gPiAgCQlzdGF0ZS0+eWNiY3JfZW5jb2Rpbmcg PSB2YWw7Cj4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX2RlY29kZV9j c2NfcHJvcGVydHkpIHsKPiA+ICsJCXJldCA9IGRybV9hdG9taWNfcmVwbGFjZV9wcm9wZXJ0eV9i bG9iX2Zyb21faWQoZGV2LAo+ID4gKwkJCQkmc3RhdGUtPnljYmNyX2RlY29kZV9jc2MsIHZhbCwK PiA+ICsJCQkJc2l6ZW9mKHN0cnVjdCBkcm1feWNiY3JfZGVjb2RlX2NzYyksCj4gPiArCQkJCSZk dW1teSk7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBs YW5lLT55Y2Jjcl9jc2NfcHJlb2Zmc2V0X3Byb3BlcnR5KSB7Cj4gPiArCQlyZXQgPSBkcm1fYXRv bWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKGRldiwKPiA+ICsJCQkJJnN0YXRlLT55 Y2Jjcl9jc2NfcHJlb2Zmc2V0LCB2YWwsCj4gPiArCQkJCXNpemVvZihzdHJ1Y3QgZHJtX3ljYmNy X2NzY19wcmVvZmZzZXQpLAo+ID4gKwkJCQkmZHVtbXkpOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ ICAJfSBlbHNlIGlmIChwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpIHsKPiA+ICAJ CXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLAo+ ID4gIAkJCQlwcm9wZXJ0eSwgdmFsKTsKPiA+IEBAIC04MzksNiArODUyLDEyIEBAIGludCBkcm1f YXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJ CSp2YWwgPSBzdGF0ZS0+enBvczsKPiA+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+ eWNiY3JfZW5jb2RpbmdfcHJvcGVydHkpIHsKPiA+ICAJCSp2YWwgPSBzdGF0ZS0+eWNiY3JfZW5j b2Rpbmc7Cj4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX2RlY29kZV9j c2NfcHJvcGVydHkpIHsKPiA+ICsJCSp2YWwgPSBzdGF0ZS0+eWNiY3JfZGVjb2RlX2NzYyA/Cj4g PiArCQkJc3RhdGUtPnljYmNyX2RlY29kZV9jc2MtPmJhc2UuaWQgOiAwOwo+ID4gKwl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl9jc2NfcHJlb2Zmc2V0X3Byb3BlcnR5KSB7Cj4g PiArCQkqdmFsID0gc3RhdGUtPnljYmNyX2NzY19wcmVvZmZzZXQgPwo+ID4gKwkJCXN0YXRlLT55 Y2Jjcl9jc2NfcHJlb2Zmc2V0LT5iYXNlLmlkIDogMDsKPiA+ICAJfSBlbHNlIGlmIChwbGFuZS0+ ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkpIHsKPiA+ICAJCXJldHVybiBwbGFuZS0+ZnVuY3Mt PmF0b21pY19nZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiA+ICAJ fSBlbHNlIHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiBpbmRleCA4YmU5 NzE5Li42ZWNjMzJmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4g PiBAQCAtMzIzOCw2ICszMjM4LDEyIEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9k dXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgewo+ID4gIAltZW1j cHkoc3RhdGUsIHBsYW5lLT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSkpOwo+ID4gIAo+ID4gKwlpZiAo c3RhdGUtPnljYmNyX2RlY29kZV9jc2MpCj4gPiArCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoc3Rh dGUtPnljYmNyX2RlY29kZV9jc2MpOwo+ID4gKwo+ID4gKwlpZiAoc3RhdGUtPnljYmNyX2NzY19w cmVvZmZzZXQpCj4gPiArCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoc3RhdGUtPnljYmNyX2NzY19w cmVvZmZzZXQpOwo+ID4gKwo+ID4gIAlpZiAoc3RhdGUtPmZiKQo+ID4gIAkJZHJtX2ZyYW1lYnVm ZmVyX2dldChzdGF0ZS0+ZmIpOwo+ID4gIAo+ID4gQEAgLTMyNzgsNiArMzI4NCw5IEBAIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKgo+ID4gICAqLwo+ID4gIHZvaWQgX19kcm1fYXRvbWljX2hlbHBl cl9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQo+ID4g IHsKPiA+ICsJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KHN0YXRlLT55Y2Jjcl9kZWNvZGVfY3NjKTsK PiA+ICsJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KHN0YXRlLT55Y2Jjcl9jc2NfcHJlb2Zmc2V0KTsK PiA+ICsKPiA+ICAJaWYgKHN0YXRlLT5mYikKPiA+ICAJCWRybV9mcmFtZWJ1ZmZlcl9wdXQoc3Rh dGUtPmZiKTsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9y X21nbXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4gPiBpbmRleCAyNDVi MTRhLi4zMTllZDQ2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9t Z210LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4gPiBAQCAt OTUsOCArOTUsMjMgQEAKPiA+ICAgKgo+ID4gICAqICJZQ0JDUl9FTkNPRElORyIKPiA+ICAgKiAJ T3B0aW9uYWwgcGxhbmUgZW51bSBwcm9wZXJ0eSB0byBjb250cm9sIFlDYkNyIHRvIFJHQgo+ID4g LSAqIAljb252ZXJzaW9uLiBUaGUgZHJpdmVyIHByb3ZpZGVzIGEgc3Vic2V0IG9mIHN0YW5kYXJk Cj4gPiAtICoJZW51bSB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBEUk0gcGxhbmUuCj4gPiArICog CWNvbnZlcnNpb24uIFRoZSBkcml2ZXIgcHJvdmlkZXMgYSBzdWJzZXQgb2Ygc3RhbmRhcmQgZW51 bQo+ID4gKyAqIAl2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBEUk0gcGxhbmUuIFRoZSBwb3NzaWJs ZSBlbmNvZGluZ3MKPiA+ICsgKiAJaW5jbHVkZSB0aGUgc3RhbmRhcmQgY29udmVyc2lvbnMgYW5k IGEgcG9zc2liaWxpdHkgdG8gc2VsZWN0IGEKPiA+ICsgKiAJY3VzdG9tIGNvbnZlcnNpb24gbWF0 cml4IGFuZCBwcmVvZmZzZXQgdmVjdG9yLgo+ID4gKyAqCj4gPiArICogIllDQkNSX0RFQ09ERV9D U0MiCj4gPiArICoJT3B0aW9uYWwgcGxhbmUgcHJvcGVydHkgYmxvYiB0byBzZXQgWUNiQ3IgdG8g UkdCIGNvbnZlcnNpb24KPiA+ICsgKgltYXRyaXguIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdCBk cm1feWNiY3JfdG9fcmdiX2NzYyB3aGljaCBpcwo+ID4gKyAqCWRlZmluZWQgaW4gdWFwaS9kcm0v ZHJtX21vZGUuaC4gV2hldGhlciB0aGlzIHByb3BlcnR5IGlzCj4gPiArICoJdXNlZCBkZXBlbmRz IG9uIHRoZSB2YWx1ZSBvZiBZQ0JDUl9FTkNPRElORyBwcm9wZXJ0eS4KPiA+ICsgKgo+ID4gKyAq ICJZQ0JDUl9DU0NfUFJFT0ZGU0VUIgo+ID4gKyAqCU9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IGJs b2IgdG8gY29uZmlndXJlIFlDYkNyIG9mZnNldCBiZWZvcmUKPiA+ICsgKglZQ2JDciB0byBSR0Ig Q1NDIGlzIGFwcGxpZWQuIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdAo+ID4gKyAqCWRybV95Y2Jj cl9jc2NfcHJlb2Zmc2V0IHdoaWNoIGlzIGRlZmluZWQgaW4KPiA+ICsgKgl1YXBpL2RybS9kcm1f bW9kZS5oLiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgdXNlZCBkZXBlbmRzIG9uCj4gPiArICoJ dGhlIHZhbHVlIG9mIFlDQkNSX0VOQ09ESU5HIHByb3BlcnR5Lgo+ID4gICAqLwo+ID4gIAo+ID4g IC8qKgo+ID4gQEAgLTM1MSw2ICszNjYsOSBAQCBpbnQgZHJtX21vZGVfZ2FtbWFfZ2V0X2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCVtEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElN SVRFRF9SQU5HRV0gPSAiQlQuNjAxIGxpbWl0ZWQgcmFuZ2UiLAo+ID4gIAlbRFJNX1BMQU5FX1lD QkNSX0JUNzA5X0xJTUlURURfUkFOR0VdID0gIkJULjcwOSBsaW1pdGVkIHJhbmdlIiwKPiA+ICAJ W0RSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNSVRFRF9SQU5HRV0gPSAiQlQuMjAyMCBsaW1pdGVk IHJhbmdlIiwKPiA+ICsJW0RSTV9QTEFORV9ZQ0JDUl9DU0NfRlVMTF9SQU5HRV0gPSAiWUNiQ3Ig Q1NDIGZ1bGwgcmFuZ2UiLAo+ID4gKwlbRFJNX1BMQU5FX1lDQkNSX0NTQ19MSU1JVEVEX1JBTkdF XSA9ICJZQ2JDciBDU0MgbGltaXRlZCByYW5nZSIsCj4gPiArCVtEUk1fUExBTkVfWUNCQ1JfQ1ND X1BSRU9GRlNFVF0gPSAiWUNiQ3IgQ1NDIGFuZCBwcmVvZmZzZXQgdmVjdG9yIiwKPiA+ICB9Owo+ ID4gIAo+ID4gIC8qKgo+ID4gQEAgLTM2Myw2ICszODEsOCBAQCBpbnQgZHJtX21vZGVfZ2FtbWFf Z2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgICogZHJtX3BsYW5lIG9iamVj dC4gVGhlIHN1cHBvcnRlZCBlbmNvZGluZ3Mgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZQo+ID4g ICAqIGVudW1fbGlzdCBwYXJhbWV0ZXIuIFRoZSBlbnVtX2xpc3QgcGFyYW1ldGVyIHNob3VsZCBu b3QgY29udGFpbiB0aGUKPiA+ICAgKiBlbnVtIG5hbWVzLCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBu YW1lcyBhcmUgYWRkZWQgYnkgdGhpcyBmdW5jdGlvbi4KPiA+ICsgKiBZQ0JDUl9ERUNPREVfQ1ND IGFuZCBZQ0JDUl9DU0NfUFJFT0ZGU0VUIHByb3BlcnRpZXMgYXJlIGNyZWF0ZWQKPiA+ICsgKiBi YXNlZCBvbiB0aGUgcHJvdmlkZWQgZW51bV9saXN0Lgo+ID4gICAqLwo+ID4gIGludCBkcm1fcGxh bmVfY3JlYXRlX3ljYmNyX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAg CQkJc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+ID4gQEAgLTM3MSw2ICsz OTEsOCBAQCBpbnQgZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5l LT5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gPiArCWJvb2wgeWNiY3Jf ZGVjb2RlX2NzY19jcmVhdGUgPSBmYWxzZTsKPiA+ICsJYm9vbCB5Y2Jjcl9jc2NfcHJlb2Zmc2V0 X2NyZWF0ZSA9IGZhbHNlOwo+ID4gIAl1bnNpZ25lZCBpbnQgaTsKPiA+ICAKPiA+ICAJaWYgKFdB Uk5fT04ocGxhbmUtPnljYmNyX2VuY29kaW5nX3Byb3BlcnR5ICE9IE5VTEwpKQo+ID4gQEAgLTM4 MCw2ICs0MDIsMTUgQEAgaW50IGRybV9wbGFuZV9jcmVhdGVfeWNiY3JfcHJvcGVydGllcyhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJCWVudW0gZHJtX3BsYW5lX3ljYmNyX2VuY29kaW5n IGVuY29kaW5nID0gZW51bV9saXN0W2ldLnR5cGU7Cj4gPiAgCj4gPiAgCQllbnVtX2xpc3RbaV0u bmFtZSA9IHljYmNyX2VuY29kaW5nX25hbWVbZW5jb2RpbmddOwo+ID4gKwo+ID4gKwkJaWYgKGVu Y29kaW5nID09IERSTV9QTEFORV9ZQ0JDUl9DU0NfRlVMTF9SQU5HRSB8fAo+ID4gKwkJICAgIGVu Y29kaW5nID09IERSTV9QTEFORV9ZQ0JDUl9DU0NfTElNSVRFRF9SQU5HRSkKPiA+ICsJCQl5Y2Jj cl9kZWNvZGVfY3NjX2NyZWF0ZSA9IHRydWU7Cj4gPiArCj4gPiArCQlpZiAoZW5jb2RpbmcgPT0g RFJNX1BMQU5FX1lDQkNSX0NTQ19QUkVPRkZTRVQpIHsKPiA+ICsJCQl5Y2Jjcl9kZWNvZGVfY3Nj X2NyZWF0ZSA9IHRydWU7Cj4gPiArCQkJeWNiY3JfY3NjX3ByZW9mZnNldF9jcmVhdGUgPSB0cnVl Owo+ID4gKwkJfQo+ID4gIAl9Cj4gPiAgCj4gPiAgCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRl X2VudW0oZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiA+IEBAIC0zOTAsNSArNDIxLDI1IEBA IGludCBkcm1fcGxhbmVfY3JlYXRlX3ljYmNyX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gPiAgCXBsYW5lLT55Y2Jjcl9lbmNvZGluZ19wcm9wZXJ0eSA9IHByb3A7Cj4gPiAg CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgZGVmYXVsdF9t b2RlKTsKPiA+ICAKPiA+ICsJaWYgKHljYmNyX2RlY29kZV9jc2NfY3JlYXRlKSB7Cj4gPiArCQlw cm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDIHwKPiA+ ICsJCQkJCSAgIERSTV9NT0RFX1BST1BfQkxPQiwKPiA+ICsJCQkJCSAgICJZQ0JDUl9ERUNPREVf Q1NDIiwgMCk7Cj4gPiArCQlpZiAoIXByb3ApCj4gPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPiAr CQlwbGFuZS0+eWNiY3JfZGVjb2RlX2NzY19wcm9wZXJ0eSA9IHByb3A7Cj4gPiArCQlkcm1fb2Jq ZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIDApOwo+ID4gKwl9Cj4gPiAr Cj4gPiArCWlmICh5Y2Jjcl9jc2NfcHJlb2Zmc2V0X2NyZWF0ZSkgewo+ID4gKwkJcHJvcCA9IGRy bV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQyB8Cj4gPiArCQkJCQkg ICBEUk1fTU9ERV9QUk9QX0JMT0IsCj4gPiArCQkJCQkgICAiWUNCQ1JfQ1NDX1BSRU9GRlNFVCIs IDApOwo+ID4gKwkJaWYgKCFwcm9wKQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOwo+ID4gKwkJcGxh bmUtPnljYmNyX2NzY19wcmVvZmZzZXRfcHJvcGVydHkgPSBwcm9wOwo+ID4gKwkJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCAwKTsKPiA+ICsJfQo+ID4gKwo+ ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPiBpbmRleCAwMDdjNGQ3 Li5kMTBjOTQyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+IEBAIC0yNDcsNiArMjQ3LDEy IEBAIHZvaWQgZHJtX3BsYW5lX2NsZWFudXAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gPiAg CWlmIChwbGFuZS0+eWNiY3JfZW5jb2RpbmdfcHJvcGVydHkpCj4gPiAgCQlkcm1fcHJvcGVydHlf ZGVzdHJveShkZXYsIHBsYW5lLT55Y2Jjcl9lbmNvZGluZ19wcm9wZXJ0eSk7Cj4gPiAgCj4gPiAr CWlmIChwbGFuZS0+eWNiY3JfZGVjb2RlX2NzY19wcm9wZXJ0eSkKPiA+ICsJCWRybV9wcm9wZXJ0 eV9kZXN0cm95KGRldiwgcGxhbmUtPnljYmNyX2RlY29kZV9jc2NfcHJvcGVydHkpOwo+ID4gKwo+ ID4gKwlpZiAocGxhbmUtPnljYmNyX2NzY19wcmVvZmZzZXRfcHJvcGVydHkpCj4gPiArCQlkcm1f cHJvcGVydHlfZGVzdHJveShkZXYsIHBsYW5lLT55Y2Jjcl9jc2NfcHJlb2Zmc2V0X3Byb3BlcnR5 KTsKPiA+ICsKPiA+ICAJbWVtc2V0KHBsYW5lLCAwLCBzaXplb2YoKnBsYW5lKSk7Cj4gPiAgfQo+ ID4gIEVYUE9SVF9TWU1CT0woZHJtX3BsYW5lX2NsZWFudXApOwo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmggYi9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5o Cj4gPiBpbmRleCAxNzcxMzk0Li5iZGZkMzdlIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2NvbG9yX21nbXQuaAo+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaAo+ ID4gQEAgLTQ0LDYgKzQ0LDkgQEAgZW51bSBkcm1fcGxhbmVfeWNiY3JfZW5jb2Rpbmcgewo+ID4g IAlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNSVRFRF9SQU5HRSwKPiA+ICAJRFJNX1BMQU5FX1lD QkNSX0JUNzA5X0xJTUlURURfUkFOR0UsCj4gPiAgCURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElN SVRFRF9SQU5HRSwKPiA+ICsJRFJNX1BMQU5FX1lDQkNSX0NTQ19GVUxMX1JBTkdFLAo+ID4gKwlE Uk1fUExBTkVfWUNCQ1JfQ1NDX0xJTUlURURfUkFOR0UsCj4gPiArCURSTV9QTEFORV9ZQ0JDUl9D U0NfUFJFT0ZGU0VULAo+ID4gIH07Cj4gPiAgCj4gPiAgaW50IGRybV9wbGFuZV9jcmVhdGVfeWNi Y3JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fcGxhbmUuaCBiL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPiBpbmRl eCA0ZDA1MTBmLi42M2IxZTBjIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5l LmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPiBAQCAtMTE1LDYgKzExNSw4 IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ID4gIAo+ID4gIAkvKiBZQ2JDciB0byBSR0Ig Y29udmVyc2lvbiAqLwo+ID4gIAllbnVtIGRybV9wbGFuZV95Y2Jjcl9lbmNvZGluZyB5Y2Jjcl9l bmNvZGluZzsKPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp5Y2Jjcl9kZWNvZGVfY3Nj Owo+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnljYmNyX2NzY19wcmVvZmZzZXQ7Cj4g PiAgCj4gPiAgCS8qIENsaXBwZWQgY29vcmRpbmF0ZXMgKi8KPiA+ICAJc3RydWN0IGRybV9yZWN0 IHNyYywgZHN0Owo+ID4gQEAgLTUyOSw2ICs1MzEsOCBAQCBzdHJ1Y3QgZHJtX3BsYW5lIHsKPiA+ ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcm90YXRpb25fcHJvcGVydHk7Cj4gPiAgCj4gPiAgCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnljYmNyX2VuY29kaW5nX3Byb3BlcnR5Owo+ID4gKwlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICp5Y2Jjcl9kZWNvZGVfY3NjX3Byb3BlcnR5Owo+ID4gKwlzdHJ1Y3QgZHJt X3Byb3BlcnR5ICp5Y2Jjcl9jc2NfcHJlb2Zmc2V0X3Byb3BlcnR5Owo+ID4gIH07Cj4gPiAgCj4g PiAgI2RlZmluZSBvYmpfdG9fcGxhbmUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fcGxh bmUsIGJhc2UpCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIGIv aW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPiBpbmRleCA4YzY3ZmMwLi44Yzk1NjhkIDEw MDY0NAo+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPiArKysgYi9pbmNs dWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiA+IEBAIC01NDMsNiArNTQzLDE4IEBAIHN0cnVjdCBk cm1fY29sb3JfbHV0IHsKPiA+ICAJX191MTYgcmVzZXJ2ZWQ7Cj4gPiAgfTsKPiA+ICAKPiA+ICtz dHJ1Y3QgZHJtX3ljYmNyX2RlY29kZV9jc2Mgewo+ID4gKwkvKiBDb252ZXJzaW9uIG1hdHJpeCBp biAyLWNvbXBsZW1lbnQgczMyLjMyIGZvcm1hdC4gKi8KPiA+ICsJX19zNjQgcnksIHJjYiwgcmNy Owo+ID4gKwlfX3M2NCBneSwgZ2NiLCBnY3I7Cj4gPiArCV9fczY0IGJ5LCBiY2IsIGJjcjsKPiA+ ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBkcm1feWNiY3JfY3NjX3ByZW9mZnNldCB7Cj4gPiArCS8q IE9mZnNldCB2ZWN0b3IgaW4gMi1jb21wbGVtZW50IHMuMzIgZm9ybWF0LiAqLwo+ID4gKwlfX3Mz MiB5LCBjYiwgY3I7Cj4gPiArfTsKPiA+ICsKPiA+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJ UF9FVkVOVCAweDAxCj4gPiAgI2RlZmluZSBEUk1fTU9ERV9QQUdFX0ZMSVBfQVNZTkMgMHgwMgo+ ID4gICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdFVF9BQlNPTFVURSAweDQKPiA+IC0t IAo+ID4gMS45LjEKPiA+IAo+IAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdp bmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClZpbGxl IFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==