From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH RFC v3] drm: Add optinal COLOR_ENCODING and COLOR_RANGE properties to drm_plane Date: Mon, 15 May 2017 18:19:47 +0300 Message-ID: <20170515151947.GQ12629@intel.com> References: <963db466139af1bc1e0ec96018a1ac92fde48f43.1494842310.git.jsarha@ti.com> <20170515133410.GP12629@intel.com> <7185e381-b476-ed69-953b-e44be0986725@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id E4DCE89015 for ; Mon, 15 May 2017 15:19:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: <7185e381-b476-ed69-953b-e44be0986725@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha Cc: Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXkgMTUsIDIwMTcgYXQgMDU6MjU6MDJQTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90 ZToKPiBPbiAwNS8xNS8xNyAxNjozNCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gTW9u LCBNYXkgMTUsIDIwMTcgYXQgMDI6MTk6MDlQTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90ZToKPiA+ PiBBZGQgYSBzdGFuZGFyZCBvcHRpbmFsIHByb3BlcnRpZXMgdG8gc3VwcG9ydCBkaWZmZXJlbnQg bm9uIFJHQiBjb2xvcgo+ID4+IGVuY29kaW5ncyBpbiBEUk0gcGxhbmVzLiBDT0xPUl9FTkNPRElO RyBzZWxlY3QgdGhlIHN1cHBvcnRlZCBub24gUkdCCj4gPj4gY29sb3IgZW5jb2RpbmcsIGZvciBp bnN0YW5jZSBJVFUtUiBCVC43MDkgWUNiQ3IuIENPTE9SX1JBTkdFIHNlbGVjdHMKPiA+PiB0aGUg dmFsdWUgcmFuZ2VzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgY29sb3IgZW5jb2RpbmcuIFRoZSBwcm9w ZXJ0aWVzCj4gPj4gYXJlIHN0b3JlZCB0byBkcm1fcGxhbmUgb2JqZWN0IHRvIGFsbG93IGRpZmZl cmVudCBzZXQgb2Ygc3VwcG9ydGVkCj4gPj4gZW5jb2RpbmcgZm9yIGRpZmZlcmVudCBwbGFuZXMg b24gdGhlIGRldmljZS4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJo YUB0aS5jb20+Cj4gPj4gLS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAg IHwgIDggKysrKwo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyB8IDk3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2RybV9wbGFuZS5jICAgICAgfCAgNiArKysKPiA+PiAgaW5jbHVkZS9kcm0vZHJtX2NvbG9y X21nbXQuaCAgICAgfCAyMCArKysrKysrKysKPiA+PiAgaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgg ICAgICAgICAgfCAgOCArKysrCj4gPj4gIDUgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMo KykKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+IGluZGV4IDQwMzMzODQuLmYzNDFkZGEg MTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+PiBAQCAtNzc0LDYgKzc3NCwxMCBAQCBp bnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gPj4gIAkJc3RhdGUtPnJvdGF0aW9uID0gdmFsOwo+ID4+ICAJfSBlbHNlIGlmIChwcm9wZXJ0 eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0eSkgewo+ID4+ICAJCXN0YXRlLT56cG9zID0gdmFsOwo+ ID4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JfZW5jb2RpbmdfcHJvcGVy dHkpIHsKPiA+PiArCQlzdGF0ZS0+Y29sb3JfZW5jb2RpbmcgPSB2YWw7Cj4gPj4gKwl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSkgewo+ID4+ICsJCXN0 YXRlLT5jb2xvcl9yYW5nZSA9IHZhbDsKPiA+PiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5h dG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gPj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWlj X3NldF9wcm9wZXJ0eShwbGFuZSwgc3RhdGUsCj4gPj4gIAkJCQlwcm9wZXJ0eSwgdmFsKTsKPiA+ PiBAQCAtODM0LDYgKzgzOCwxMCBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gIAkJKnZhbCA9IHN0YXRlLT5yb3RhdGlvbjsK PiA+PiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnpwb3NfcHJvcGVydHkpIHsKPiA+ PiAgCQkqdmFsID0gc3RhdGUtPnpwb3M7Cj4gPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBs YW5lLT5jb2xvcl9lbmNvZGluZ19wcm9wZXJ0eSkgewo+ID4+ICsJCSp2YWwgPSBzdGF0ZS0+Y29s b3JfZW5jb2Rpbmc7Cj4gPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9y YW5nZV9wcm9wZXJ0eSkgewo+ID4+ICsJCSp2YWwgPSBzdGF0ZS0+Y29sb3JfcmFuZ2U7Cj4gPj4g IAl9IGVsc2UgaWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewo+ID4+ICAJ CXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLCBw cm9wZXJ0eSwgdmFsKTsKPiA+PiAgCX0gZWxzZSB7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fY29sb3JfbWdtdC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210 LmMKPiA+PiBpbmRleCA1MzNmM2EzLi4yZTA0ZWJiIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9j b2xvcl9tZ210LmMKPiA+PiBAQCAtMzMsNiArMzMsMTEgQEAKPiA+PiAgICogcHJvcGVydGllcyBv biB0aGUgJmRybV9jcnRjIG9iamVjdC4gVGhleSBhcmUgc2V0IHVwIGJ5IGNhbGxpbmcKPiA+PiAg ICogZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KPiA+PiAgICoKPiA+PiArICogU3VwcG9y dCBmb3IgZGlmZmVyZW50IG5vbiBSR0IgY29sb3IgZW5jb2RpbmdzIGlzIGNvbnRyb2xsZWQgdHJv dWdoCj4gPj4gKyAqIHBsYW5lIHNwZWNpZmljIENPTE9SX0VOQ09ESU5HIGFuZCBDT0xPUl9SQU5H RSBwcm9wZXJ0aWVzLgo+ID4gCj4gPiBQdXR0aW5nIHRoaXMgY29tbWVudCBpbiBtaWRkbGUgb2Yg dGhlIGNydGMgc3R1ZmYgc2VlbXMgYSBiaXQgc3RyYW5nZQo+ID4gd2hlbiB0aGUgcmVzdCBvZiB0 aGUgcGxhbmUgc3R1ZmYgaXMgYXQgdGhlIGVuZC4gCj4gPiAKPiAKPiBPay4gSSByZW1vdmUgdGhl bS4gT2YgY291cnNlIGluIHRoZSBmdXR1cmUgc29tZSBvbmUgbWF5IHdhbnQgdG8gYXR0YWNoCj4g dGhvc2UgcHJvZXJ0aWVzIHRvIGNydGNzIHRvbywgYnV0IHRoYXQgaXMgYSBkaWZmZXJlbnQgc3Rv cnkuCgpUcnVlLiBCdXQgYXQgdGhhdCBwb2ludCBJIGd1ZXNzIHdlJ2xsIGhhdmUgdG8gcmV3b3Jk IHRoZSBjb21tZW50IGFueXdheS4KCj4gCj4gPiBUaGlzIHNob3VsZCBzcGVjaWZ5IHNvbWV3aGVy ZSB0aGF0IHRoZXNlIHBsYW5lIHByb3BlcnRpZXMgY29udHJvbAo+ID4gdGhlIHBsYW5lIGlucHV0 IGFuZCBub3QgdGhlIG91dHB1dC4KPiA+IAo+IAo+IE9rLiBJJ2xsIG1ha2UgdGhlIGRvY3VtZW50 YXRpb24gbW9yZSB2ZXJib3NlLgo+IAo+ID4+ICsgKgo+ID4+ICsgKiBUaGUgJmRybV9jcnRjIG9i amVjdCdzIHByb3BlcnRpZXMgYXJlOgo+ID4+ICsgKgo+ID4+ICAgKiAiREVHQU1NQV9MVVTigJ06 Cj4gPj4gICAqCUJsb2IgcHJvcGVydHkgdG8gc2V0IHRoZSBkZWdhbW1hIGxvb2t1cCB0YWJsZSAo TFVUKSBtYXBwaW5nIHBpeGVsIGRhdGEKPiA+PiAgICoJZnJvbSB0aGUgZnJhbWVidWZmZXIgYmVm b3JlIGl0IGlzIGdpdmVuIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCj4gPj4gQEAgLTg1 LDYgKzkwLDE4IEBACj4gPj4gICAqIGRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoKS4gRHJp dmVycyB3aGljaCBzdXBwb3J0IGJvdGggc2hvdWxkIHVzZQo+ID4+ICAgKiBkcm1fYXRvbWljX2hl bHBlcl9sZWdhY3lfZ2FtbWFfc2V0KCkgdG8gYWxpYXMgdGhlIGxlZ2FjeSBnYW1tYSByYW1wIHdp dGggdGhlCj4gPj4gICAqICJHQU1NQV9MVVQiIHByb3BlcnR5IGFib3ZlLgo+ID4+ICsgKgo+ID4+ ICsgKiBUaGUgJmRybV9wbGFuZSBvYmplY3QncyBwcm9wZXJ0aWVzIGFyZToKPiA+PiArICoKPiA+ PiArICogIkNPTE9SX0VOQ09ESU5HIgo+ID4+ICsgKiAJT3B0aW9uYWwgcGxhbmUgZW51bSBwcm9w ZXJ0eSB0byBzdXBwb3J0IGRpZmZlcmVudCBub24gUkdCCj4gPj4gKyAqIAljb2xvciBlbmNvZGlu Z3MuIFRoZSBkcml2ZXIgY2FuIHByb3ZpZGUgYSBzdWJzZXQgb2Ygc3RhbmRhcmQKPiA+PiArICog CWVudW0gdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgRFJNIHBsYW5lLgo+ID4+ICsgKgo+ID4+ICsg KiAiQ09MT1JfUkFOR0UiCj4gPj4gKyAqIAlPcHRpb25hbCBwbGFuZSBlbnVtIHByb3BlcnR5IHRv IHN1cHBvcnQgZGlmZmVyZW50IG5vbiBSR0IKPiA+PiArICogCWNvbG9yIHBhcmFtZXRlciByYW5n ZXMuIFRoZSBkcml2ZXIgY2FuIHByb3ZpZGUgYSBzdWJzZXQgb2YKPiA+PiArICogCXN0YW5kYXJk IGVudW0gdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgRFJNIHBsYW5lLgo+ID4+ICAgKi8KPiA+PiAg Cj4gPj4gIC8qKgo+ID4+IEBAIC0zMzMsMyArMzUwLDgzIEBAIGludCBkcm1fbW9kZV9nYW1tYV9n ZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+PiAgCWRybV9tb2Rlc2V0X3VubG9j aygmY3J0Yy0+bXV0ZXgpOwo+ID4+ICAJcmV0dXJuIHJldDsKPiA+PiAgfQo+ID4+ICsKPiA+PiAr c3RhdGljIGNoYXIgKmNvbG9yX2VuY29kaW5nX25hbWVbXSA9IHsKPiA+IAo+ID4gTWlzc2luZyBh IGZldyBjb25zdHMuCj4gPiAKPiA+PiArCVtEUk1fQ09MT1JfWUNCQ1JfQlQ2MDFdID0gIklUVS1S IEJULjYwMSBZQ2JDciIsCj4gPj4gKwlbRFJNX0NPTE9SX1lDQkNSX0JUNzA5XSA9ICJJVFUtUiBC VC43MDkgWUNiQ3IiLAo+ID4+ICsJW0RSTV9DT0xPUl9ZQ0JDUl9CVDIwMjBdID0gIklUVS1SIEJU LjIwMjAgWUNiQ3IiLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGljIGNoYXIgKmNvbG9yX3Jh bmdlX25hbWVbXSA9IHsKPiA+IAo+ID4gZGl0dG8uCj4gPiAKPiAKPiBXaWxsIGZpeC4KPiAKPiA+ PiArCVtEUk1fQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRV0gPSAiWUNiQ3IgRlVMTCBSQU5HRSIsCj4g Pj4gKwlbRFJNX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0VdID0gIllDYkNyIExJTUlURUQgUkFO R0UiLAo+ID4gCj4gPiBMb3dlcmNhc2UgZm9yIHRoZSBzdHJpbmdzIG1heWJlPyBJIGd1ZXNzIHdl IGRvbid0IGhhdmUgYW55IGNvbnNpc3RlbnQKPiA+IHN0eWxlIGluIHRoaXMgcmVnYXJkLgo+ID4g Cj4gCj4gTG93ZXIgY2FzZSBvZiBldmVyeXRoaW5nIGJ1dCBZQ2JDciwgcmlnaHQ/CgpUaGF0IHdv dWxkIHdvcmsgZm9yIG1lLiBCdXQgYXMgc3RhdGVkLCB3ZSBhbHJlYWR5IHRvdGFsbHkgbGFjayBh CmNvbnNpc3RlbnQgc3R5bGUgc28gSSBndWVzcyBpdCBkb2Vzbid0IG1hdHRlciB0b28gbXVjaCBp biB0aGUgZW5kLgpTYW1lIGdvZXMgZm9yIHRoZSBwcm9wIG5hbWVzLCBiYXNpYyBhdG9taWMgcHJv cHMgYXJlIGFsbCBjYXBzLCAKenBvcy9yb3RhdGlvbiBhcmUgYWxsIGxvd2VyY2FzZSwgYW5kIG1h bnkgb3RoZXIgcHJvcHMgYXJlIHNvbWV3aGVyZQppbiBiZXR3ZWVuLgoKPiAKPiA+PiArfTsKPiA+ PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBkcm1fcGxhbmVfY3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMg LSBjb2xvciBlbmNvZGluZyByZWxhdGVkIHBsYW5lIHByb3BlcnRpZXMKPiA+PiArICogQHN1cHBv cnRlZF9lbmNvZGluZ3M6IGJpdGZpZWxkIGluZGljYXRpbmcgc3VwcG9ydGVkIGNvbG9yIGVuY2Rp bmdzCj4gPj4gKyAqIEBzdXBwb3J0ZWRfcmFuZ2VzOiBiaXRmaWxlbGQgaW5kaWNhdGluZyBzdXBw b3J0ZWQgY29sb3IgcmFuZ2VzCj4gPj4gKyAqIEBkZWZhdWx0X2VuY29kaW5nOiBkZWZhdWx0IGNv bG9yIGVuY29kaW5nCj4gPj4gKyAqIEBkZWZhdWx0X3JhbmdlOiBkZWZhdWx0IGNvbG9yIHJhbmdl Cj4gPj4gKyAqCj4gPj4gKyAqIENyZWF0ZSBhbmQgYXR0YWNoIHBsYW5lIHNwZWNpZmljIENPTE9S X0VOQ09ESU5HIGFuZCBDT0xPUl9SQU5HRQo+ID4+ICsgKiBwcm9wZXJ0aWVzIHRvIHRvIHRoZSBk cm1fcGxhbmUgb2JqZWN0LiBUaGUgc3VwcG9ydGVkIGVuY29kaW5ncyBhbmQKPiA+PiArICogcmFu Z2VzIHNob3VsZCBiZSBwcm92aWRlZCBpbiBzdXBwb3J0ZWRfZW5jb2RpbmdzIGFuZAo+ID4+ICsg KiBzdXBwb3J0ZWRfcmFuZ2VzIGJpdG1hc2tzLiBFYWNoIGJpdCBzZXQgaW4gdGhlIGJpdG1hc3Qg aW5kaWNhdGVzCj4gPj4gKyAqIHRoZSBpdHMgbnVtYmVyIGFzIGVudW0gdmFsdWUgYmVpbmcgc3Vw cG9ydGVkLgo+ID4+ICsgKi8KPiA+PiAraW50IGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVy dGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+PiArCQkJCSAgICAgIHUzMiBzdXBwb3J0 ZWRfZW5jb2RpbmdzLAo+ID4+ICsJCQkJICAgICAgdTMyIHN1cHBvcnRlZF9yYW5nZXMsCj4gPj4g KwkJCQkgICAgICBlbnVtIGRybV9jb2xvcl9lbmNvZGluZyBkZWZhdWx0X2VuY29kaW5nLAo+ID4+ ICsJCQkJICAgICAgZW51bSBkcm1fY29sb3JfcmFuZ2UgZGVmYXVsdF9yYW5nZSkKPiA+PiArewo+ ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gPj4gKwlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4+ICsJc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBlbnVt X2xpc3RbbWF4KERSTV9DT0xPUl9FTkNPRElOR19NQVgsCj4gPj4gKwkJCQkJCURSTV9DT0xPUl9S QU5HRV9NQVgpXTsKPiA+PiArCXVuc2lnbmVkIGludCBpLCBsZW47Cj4gPiAKPiA+ICd1bnNpZ25l ZCBpbnQgaScgbWlnaHQgc3VycHJpc2Ugc29tZW9uZSBpZiB0aGV5IGV2ZXIgdHJ5IHRvIGNoYW5n ZSB0aGUKPiA+IGxvb3AgdG8gZ28gYmFja3dhcmRzLiBCZXR0ZXIgbWFrZSBpdCBzaWduZWQgSU1P Lgo+ID4gCj4gCj4gT2ssIHdpbGwgZml4Lgo+IAo+ID4+ICsKPiA+PiArCj4gPj4gKwlpZiAoV0FS Tl9PTihwbGFuZS0+Y29sb3JfZW5jb2RpbmdfcHJvcGVydHkgIT0gTlVMTCkgfHwKPiA+PiArCSAg ICBXQVJOX09OKHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSAhPSBOVUxMKSkKPiA+PiArCQly ZXR1cm4gLUVFWElTVDsKPiA+IAo+ID4gSSB0aGluayBJIGFscmVhZHkgc3RhdGVkIHRoYXQgd2Ug ZG9uJ3QgaGF2ZSB0aGVzZSBzb3J0cyBvZiBjaGVja3MKPiA+IGVsc2V3aGVyZSwgc28gSU1PIG5v IHBvaW50IGluIGFkZGluZyB0aGVtIGhlcmUgZWl0aGVyIHVubGVzcyB5b3UKPiA+IGdvIGFuZCBj aGFuZ2UgYWxsIHRoZSBvdGhlciBwbGFjZXMgdG9vLgo+ID4gCj4gPiBKdXN0IGZlZWxzIGxpa2Ug YWNjdW11bGF0aW5nIHJhbmRvbSBkaWZmZXJlbmNlcyB0aGF0IHdpbGwgY29uZnVzZQo+ID4gcGVv cGxlIGluIHRoZSBmdXR1cmUuCj4gPiAKPiA+PiArCj4gPj4gKwlsZW4gPSAwOwo+ID4+ICsJZm9y IChpID0gMDsgaSA8IERSTV9DT0xPUl9FTkNPRElOR19NQVg7IGkrKykgewo+ID4+ICsJCWlmICgo QklUKGkpICYgc3VwcG9ydGVkX2VuY29kaW5ncykgPT0gMCkKPiA+IAo+ID4gJ2ZvbyAmIEJJVChp KScgd291bGQgYmUgdGhlIG1vcmUgY29udmVudGlvbmFsIG9yZGVyLgo+ID4gCj4gCj4gT2ssIEkn bGwgc3dhcCB0aGUgb3JkZXIuCj4gCj4gPj4gKwkJCWNvbnRpbnVlOwo+ID4+ICsKPiA+PiArCQll bnVtX2xpc3RbaV0udHlwZSA9IGk7Cj4gPj4gKwkJZW51bV9saXN0W2ldLm5hbWUgPSBjb2xvcl9l bmNvZGluZ19uYW1lW2ldOwo+ID4gCj4gPiBlbnVtX2xpc3RbbGVuXSA/Cj4gPiAKPiAKPiBBcmdo LiBUaGF0J3MgYSByZWFsIGJ1Zy4gVGhhbmtzLCBJJ2xsIGZpeCB0aGF0Lgo+IAo+ID4+ICsJCWxl bisrOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Vu dW0oZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiA+PiArCQkJCQkiQ09MT1JfRU5DT0RJTkci LAo+ID4+ICsJCQkJCWVudW1fbGlzdCwgbGVuKTsKPiA+PiArCWlmICghcHJvcCkKPiA+PiArCQly ZXR1cm4gLUVOT01FTTsKPiA+PiArCXBsYW5lLT5jb2xvcl9lbmNvZGluZ19wcm9wZXJ0eSA9IHBy b3A7Cj4gPj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3As IGRlZmF1bHRfZW5jb2RpbmcpOwo+ID4gCj4gPiBNaXNzaW5nIHRoZSBwbGFuZS0+c3RhdGUtPndo YXRldmVyIHNldHVwIGhlcmUuCj4gCj4gV2hhdCBkbyB5b3UgbWVhbj8gSW5pdGlhbGl6ZSB0aGUg cGxhbmUtPnN0YXRlLT5jb2xvcl9lbmNvZGluZyB3aXRoIHRoZQo+IGRlZmF1bHQgdmFsdWU/Cj4g Cj4gVGhlcmUgaXMgbm8gc3RhdGUgYWxsb2NhdGVkIGZvciBhIHBsYW5lIGF0IGluaXRpYWxpemF0 aW9uIHBoYXNlLCB3aGVyZSBJCj4gYXR0YWNoIHRoZSBwcm9wZXJ0aWVzLCBhdCBsZWFzdCBpbiBv bWFwZHJtLiBJIHNvbWVob3cgZXhwZWN0ZWQgdGhpcyB0bwo+IGJlIHRha2VuIGNhcmUgYnkgdGhl IGRlZmF1bHQgdmFsdWUgaW4gdGhlIGF0dGFjaCBjYWxsLCBidXQgbm93IEkgc2VlIGl0Cj4gZG9l cyBub3QgZG8gdGhhdC4KClllYWguIEZvciB0aGUgcHJvcHMgd2UganVzdCBkbyAnaWYgKHN0YXRl KSBzdGF0ZS0+Zm9vID0gYmFyOycuCgo+IAo+ID4gCj4gPj4gKwo+ID4+ICsJbGVuID0gMDsKPiA+ PiArCWZvciAoaSA9IDA7IGkgPCBEUk1fQ09MT1JfUkFOR0VfTUFYOyBpKyspIHsKPiA+PiArCQlp ZiAoKEJJVChpKSAmIHN1cHBvcnRlZF9yYW5nZXMpID09IDApCj4gPj4gKwkJCWNvbnRpbnVlOwo+ ID4+ICsKPiA+PiArCQllbnVtX2xpc3RbaV0udHlwZSA9IGk7Cj4gPj4gKwkJZW51bV9saXN0W2ld Lm5hbWUgPSBjb2xvcl9yYW5nZV9uYW1lW2ldOwo+ID4+ICsJCWxlbisrOwo+ID4+ICsJfQo+ID4+ ICsKPiA+PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LCBEUk1fTU9ERV9Q Uk9QX0FUT01JQywKPiA+PiArCQkJCQkiQ09MT1JfUkFOR0UiLAo+ID4+ICsJCQkJCWVudW1fbGlz dCwgbGVuKTsKPiA+PiArCWlmICghcHJvcCkKPiA+PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+PiAr CXBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSA9IHByb3A7Cj4gPj4gKwlkcm1fb2JqZWN0X2F0 dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIGRlZmF1bHRfcmFuZ2UpOwo+ID4gCj4g PiBTYW1lIGlzc3VlcyBoZXJlCj4gPiAKPiA+IEkgd2FzIHNvbWV3aGF0IHdvbmRlcmluZyBpZiB3 ZSBzaG91bGQgZXZlbiBoYXZlIHRoZXNlIHR3byBwcm9wcyBoYW5kbGVkCj4gPiBpbiB0aGUgc2Ft ZSBmdW5jdGlvbiwgYnV0IEkgc3VwcG9zZSBpdCBkb2VzIG1ha2Ugc29tZSBzZW5zZS4gTm90IG11 Y2gKPiA+IHBvaW50IGluIGFkZGluZyBqdXN0IG9uZSBidXQgbm90IHRoZSBvdGhlci4KPiA+IAo+ IAo+IEkgd2FzIHRoaW5raW5nIGFib3V0IHRoZSBzYW1lIHRoaW5nLCBhbmQgZGVjaWRlZCB0aGF0 IGlmIG9ubHkgb25lIHJhbmdlCj4gaXMgc3VwcG9ydGVkLCBpdCBpcyBiZXR0ZXIgdG8gZXhwb3Nl IHRoYXQgYXMgYSBzaW5nbGV0b24gZW51bSBhcyB3ZWxsLgo+IAo+ID4+ICsKPiA+PiArCXJldHVy biAwOwo+ID4+ICt9Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+ID4+IGluZGV4IGZlZGQ0ZDYuLmE2NzYy ZTggMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPj4gQEAgLTI0NCw2ICsyNDQsMTIgQEAg dm9pZCBkcm1fcGxhbmVfY2xlYW51cChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiA+PiAgCj4g Pj4gIAlrZnJlZShwbGFuZS0+bmFtZSk7Cj4gPj4gIAo+ID4+ICsJaWYgKHBsYW5lLT5jb2xvcl9l bmNvZGluZ19wcm9wZXJ0eSkKPiA+PiArCQlkcm1fcHJvcGVydHlfZGVzdHJveShkZXYsIHBsYW5l LT5jb2xvcl9lbmNvZGluZ19wcm9wZXJ0eSk7Cj4gPj4gKwo+ID4+ICsJaWYgKHBsYW5lLT5jb2xv cl9yYW5nZV9wcm9wZXJ0eSkKPiA+PiArCQlkcm1fcHJvcGVydHlfZGVzdHJveShkZXYsIHBsYW5l LT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSk7Cj4gPiAKPiA+IE5vdCBuZWVkZWQuCj4gPiAKPiAKPiBJ cyB0aGF0IHNvbWUgbGF0ZSBhZGRpdGlvbj8gSSByZW1lbWJlciBoYXZpbmcgc29tZSB0cm91Ymxl IGVhcmxpZXIgYW5kCj4gYWRkZWQgdGhlc2UgYmVjYXVzZSBvZiB0aGF0LiBNYXliZSBJIHJlbWVt YmVyIHdyb25nLi4uCgpJIGJlbGlldmUgYWxsIHByb3BzIHNob3VsZCBlbmQgdXAgb24gc29tZSBn bG9iYWwgbGlzdCB0aGF0IGdldHMKY2xlYW5lZCB1cCBieSB0aGUgY29yZS4KCj4gCj4gPj4gKwo+ ID4+ICAJbWVtc2V0KHBsYW5lLCAwLCBzaXplb2YoKnBsYW5lKSk7Cj4gPj4gIH0KPiA+PiAgRVhQ T1JUX1NZTUJPTChkcm1fcGxhbmVfY2xlYW51cCk7Cj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9jb2xvcl9tZ210LmggYi9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCj4gPj4g aW5kZXggMDNhNTljYi4uN2ExYWY2MyAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1f Y29sb3JfbWdtdC5oCj4gPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaAo+ID4+ IEBAIC0yNiw2ICsyNiw4IEBACj4gPj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ID4+ICAK PiA+PiAgc3RydWN0IGRybV9jcnRjOwo+ID4+ICtzdHJ1Y3QgZHJtX3BsYW5lOwo+ID4+ICtzdHJ1 Y3QgZHJtX3Byb3BfZW51bV9saXN0Owo+ID4+ICAKPiA+PiAgdWludDMyX3QgZHJtX2NvbG9yX2x1 dF9leHRyYWN0KHVpbnQzMl90IHVzZXJfaW5wdXQsIHVpbnQzMl90IGJpdF9wcmVjaXNpb24pOwo+ ID4+ICAKPiA+PiBAQCAtMzcsNCArMzksMjIgQEAgdm9pZCBkcm1fY3J0Y19lbmFibGVfY29sb3Jf bWdtdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4gIGludCBkcm1fbW9kZV9jcnRjX3NldF9n YW1tYV9zaXplKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+PiAgCQkJCSBpbnQgZ2FtbWFfc2l6 ZSk7Cj4gPj4gIAo+ID4+ICtlbnVtIGRybV9jb2xvcl9lbmNvZGluZyB7Cj4gPj4gKwlEUk1fQ09M T1JfWUNCQ1JfQlQ2MDEgPSAwLAo+ID4gCj4gPiA9IDAgc2VlbXMgcG9pbnRsZXNzLgo+ID4gCj4g Cj4gSSBhZGRlZCB0aGVtIGp1c3QgZm9yIHN0YXRpbmcgdGhhdCB0aGUgY29kZSBicmVha3MgaWYg dGhlIGVudW1zIGRvIG5vdAo+IHN0YXJ0IGZyb20gMCwgYnV0IEkgY2FuIHJlbW92ZSB0aGF0LgoK SSdtIHByZXR0eSBzdXJlIGVudW1zIGFsd2F5cyBzdGFydCBhdCAwLgoKPiAKPiA+PiArCURSTV9D T0xPUl9ZQ0JDUl9CVDcwOSwKPiA+PiArCURSTV9DT0xPUl9ZQ0JDUl9CVDIwMjAsCj4gPj4gKwlE Uk1fQ09MT1JfRU5DT0RJTkdfTUFYLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArZW51bSBkcm1fY29s b3JfcmFuZ2Ugewo+ID4+ICsJRFJNX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0UgPSAwLAo+ID4g Cj4gPiBkaXR0bwo+ID4gCj4gPj4gKwlEUk1fQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRSwKPiA+PiAr CURSTV9DT0xPUl9SQU5HRV9NQVgsCj4gPj4gK307Cj4gPj4gKwo+ID4+ICtpbnQgZHJtX3BsYW5l X2NyZWF0ZV9jb2xvcl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+ICsJ CQkJICAgICAgdTMyIHN1cHBvcnRlZF9lbmNvZGluZ3MsCj4gPj4gKwkJCQkgICAgICB1MzIgc3Vw cG9ydGVkX3JhbmdlcywKPiA+PiArCQkJCSAgICAgIGVudW0gZHJtX2NvbG9yX2VuY29kaW5nIGRl ZmF1bHRfZW5jb2RpbmcsCj4gPj4gKwkJCQkgICAgICBlbnVtIGRybV9jb2xvcl9yYW5nZSBkZWZh dWx0X3JhbmdlKTsKPiA+PiAgI2VuZGlmCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV9wbGFuZS5oIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiA+PiBpbmRleCA5YWIzZTcwLi5m NGRlNWY5IDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiA+PiBAQCAtMjYsNiArMjYsNyBAQAo+ID4+ICAj aW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ID4+ICAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KPiA+ PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPiA+PiArI2luY2x1ZGUgPGRybS9k cm1fY29sb3JfbWdtdC5oPgo+ID4+ICAKPiA+PiAgc3RydWN0IGRybV9jcnRjOwo+ID4+ICBzdHJ1 Y3QgZHJtX3ByaW50ZXI7Cj4gPj4gQEAgLTExMiw2ICsxMTMsMTAgQEAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSB7Cj4gPj4gIAl1bnNpZ25lZCBpbnQgenBvczsKPiA+PiAgCXVuc2lnbmVkIGludCBu b3JtYWxpemVkX3pwb3M7Cj4gPj4gIAo+ID4+ICsJLyogQ29sb3IgZW5jb2RpbmcgZm9yIG5vbiBS R0IgZm9ybWF0cyAqLwo+ID4+ICsJZW51bSBkcm1fY29sb3JfZW5jb2RpbmcgY29sb3JfZW5jb2Rp bmc7Cj4gPj4gKwllbnVtIGRybV9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZTsKPiA+PiArCj4gPj4g IAkvKiBDbGlwcGVkIGNvb3JkaW5hdGVzICovCj4gPj4gIAlzdHJ1Y3QgZHJtX3JlY3Qgc3JjLCBk c3Q7Cj4gPj4gIAo+ID4+IEBAIC01MjMsNiArNTI4LDkgQEAgc3RydWN0IGRybV9wbGFuZSB7Cj4g Pj4gIAo+ID4+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqenBvc19wcm9wZXJ0eTsKPiA+PiAgCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnJvdGF0aW9uX3Byb3BlcnR5Owo+ID4+ICsKPiA+PiArCXN0cnVj dCBkcm1fcHJvcGVydHkgKmNvbG9yX2VuY29kaW5nX3Byb3BlcnR5Owo+ID4+ICsJc3RydWN0IGRy bV9wcm9wZXJ0eSAqY29sb3JfcmFuZ2VfcHJvcGVydHk7Cj4gPj4gIH07Cj4gPj4gIAo+ID4+ICAj ZGVmaW5lIG9ial90b19wbGFuZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9wbGFuZSwg YmFzZSkKPiA+PiAtLSAKPiA+PiAxLjkuMQo+ID4gCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVs IE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK