From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [v2, 1/8] drm: Add optional COLOR_ENCODING and COLOR_RANGE properties to drm_plane Date: Fri, 30 Nov 2018 16:29:16 +0200 Message-ID: <20181130142916.GW9144@intel.com> References: <20180219202823.10508-1-ville.syrjala@linux.intel.com> <2a1074ba-e2a7-83fc-8a13-c785dc8da2f9@samsung.com> <20181130132512.GR9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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: Andrzej Hajda Cc: Christoph Manszewski , Hans Verkuil , intel-gfx@lists.freedesktop.org, Russell King - ARM Linux , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMzAsIDIwMTggYXQgMDM6MjA6NTlQTSArMDEwMCwgQW5kcnplaiBIYWpkYSB3 cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBBcyBDaHJpc3RvcGggY2Fubm90IHJlc3BvbmQgdGlsbCBt aWRkbGUgbmV4dCB3ZWVrIEkgY2FuIHRyeSB0byByZXNwb25kCj4gaW4gaGlzIGFic2VuY2UsIGFz IEkgYW0gZmFtaWxpYXIgd2l0aCB0aGUgc3ViamVjdC4KPiAKPiBPbiAzMC4xMS4yMDE4IDE0OjI1 LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBGcmksIE5vdiAzMCwgMjAxOCBhdCAwMjow ODoxMVBNICswMTAwLCBDaHJpc3RvcGggTWFuc3pld3NraSB3cm90ZToKPiA+PiBIaSwKPiA+Pgo+ ID4+IEkgYW0gbG9va2luZyBmb3IgYSB3YXkgdG8gZXhwb3J0IHRoZSBjb2xvciBlbmNvZGluZyBh bmQgcmFuZ2Ugc2VsZWN0aW9uCj4gPj4gdG8gdXNlciBzcGFjZS4gSSBjYW1lIGFjcm9zcyB0aG9z ZSBwcm9wZXJ0aWVzIGFuZCBhbSB3b25kZXJpbmcsIHdoeQo+ID4+IHRoZXkgYXJlIG1lYW50IG9u bHkgZm9yIG5vbiBSR0IgY29sb3IgZW5jb2RpbmdzLiBXb3VsZCBpdCBiZSBva2F5LCB0bwo+ID4+ IG1vZGlmeSB0aGVtIGFuZCB1c2Ugd2l0aCBSR0IgZm9ybWF0cyBhcyB3ZWxsPwo+ID4gV2hhdCB5 b3UgdHJ5aW5nIHRvIGRvPyBJbnB1dCBsaW1pdGVkIHJhbmdlIFJHQiBkYXRhIGFuZCBleHBhbmQg dG8gZnVsbAo+ID4gcmFuZ2U/Cj4gCj4gCj4gRm9yIGV4YW1wbGUuIEJ1dCB0aGVyZSBhcmUgdHdv IG1vcmUgZ2VuZXJhbCBxdWVzdGlvbnMsIHdoaWNoCj4gc3VycHJpc2luZ2x5IHdlIGhhdmUgbm90 IGZvdW5kIGFuc3dlciBmb3IuCj4gCj4gMS4gV2hhdCBjb2xvciBlbmNvZGluZyBhbmQgcmFuZ2Ug ZHJtIHNob3VsZCBleHBlY3Qgb24gaXRzIGlucHV0IFJHQgo+IGJ1ZmZlcnMgYnkgZGVmYXVsdD8K ClJHQiBpcyBqdXN0IFJHQi4gVGhlcmUgaXMgbm8gZW5jb2RpbmcuIEl0J3MgYXNzdW1lZCB0byBi ZSBmdWxsIHJhbmdlCmJlY2F1c2Ugbm8gb25lIHJlYWxseSB1c2VzIGFueXRoaW5nIGVsc2UuCgo+ IAo+IDIuIEhvdyB1c2Vyc3BhY2Ugc2hvdWxkIGluZm9ybSBkcm0gdGhhdCBnaXZlbiBidWZmZXIg aGFzIHNwZWNpZmllZAo+IG5vbi1kZWZhdWx0IGNvbG9yIGVuY29kaW5nIGFuZCByYW5nZT8KPiAK PiAKPiBIb3BlZnVsbHkgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1Y2ggcHJvcGVydGllcyBidXQg b25seSBmb3IgWUNiQ3IKPiBmb3JtYXRzLCB0aGUgcXVlc3Rpb24gaXMgd2hhdCBzaG91bGQgYmUg dGhlIGJlc3Qgd2F5IHRvIGV4cGFuZCBpdCB0byBSR0IKPiBmb3JtYXRzOgo+IAo+IEEuIEFkZCBh bm90aGVyIGVudW1zOiBEUk1fQ09MT1JfUkdCX0JUNjAxIGFuZCBmcmllbmRzLgoKQlQuNjAxIHNw ZWNpZmllcyBob3cgdG8gZW5jb2RlciBSR0IgZGF0YSBhcyBZQ2JDci4gU28gd2l0aG91dApZQ2JD ciBCVC42MDEgZG9lcyBub3QgbWVhbiBhbnl0aGluZy4gV2VsbCwgdGhlIHN0YW5kYXJkIGRvZXMK Y29udGFpbiBvdGhlciB0aGluZ3MgYXMgd2VsbCBJIHN1cHBvc2UsIGJ1dCBmb3IgdGhlIHB1cnBv c2VzCm9mIHRoZSBjb2xvciBlbmNvZGluZyBwcm9wIG9ubHkgdGhhdCBvbmUgcGFydCBpcyByZWxl dmFudC4KCj4gCj4gQi4gUmV1c2UgY3VycmVudCBlbnVtcywgYnV0IHJlbW92ZSBmb3JtYXQgaW5m b3JtYXRpb24gZnJvbSB0aGVtOgo+IERSTV9DT0xPUl9ZQ0JDUl9CVDYwMSA9PiBEUk1fQ09MT1Jf QlQ2MDEuCj4gCj4gCj4gUmVnYXJkcwo+IAo+IEFuZHJ6ZWoKPiAKPiA+Cj4gPj4gUmVnYXJkcywK PiA+PiBDaHJpcwo+ID4+Cj4gPj4KPiA+PiBPbiAwMi8xOS8yMDE4IDA5OjI4IFBNLCBWaWxsZSBT eXJqYWxhIHdyb3RlOgo+ID4+PiBGcm9tOiBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+ID4+ Pgo+ID4+PiBBZGQgYSBzdGFuZGFyZCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIHN1cHBvcnQgZGlm ZmVyZW50IG5vbiBSR0IgY29sb3IKPiA+Pj4gZW5jb2RpbmdzIGluIERSTSBwbGFuZXMuIENPTE9S X0VOQ09ESU5HIHNlbGVjdCB0aGUgc3VwcG9ydGVkIG5vbiBSR0IKPiA+Pj4gY29sb3IgZW5jb2Rp bmcsIGZvciBpbnN0YW5jZSBJVFUtUiBCVC43MDkgWUNiQ3IuIENPTE9SX1JBTkdFIHNlbGVjdHMK PiA+Pj4gdGhlIHZhbHVlIHJhbmdlcyB3aXRoaW4gdGhlIHNlbGVjdGVkIGNvbG9yIGVuY29kaW5n LiBUaGUgcHJvcGVydGllcwo+ID4+PiBhcmUgc3RvcmVkIHRvIGRybV9wbGFuZSBvYmplY3QgdG8g YWxsb3cgZGlmZmVyZW50IHNldCBvZiBzdXBwb3J0ZWQKPiA+Pj4gZW5jb2RpbmcgZm9yIGRpZmZl cmVudCBwbGFuZXMgb24gdGhlIGRldmljZS4KPiA+Pj4KPiA+Pj4gdjI6IEFkZC9maXgga2VybmVs ZG9jcywgdmVyaWZ5IGJpdG1hc2tzIChkYW52ZXQpCj4gPj4+Cj4gPj4+IENjOiBIYXJyeSBXZW50 bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KPiA+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4KPiA+Pj4gQ2M6IERhbmllbCBTdG9uZSA8ZGFuaWVsQGZvb2lzaGJhci5v cmc+Cj4gPj4+IENjOiBSdXNzZWxsIEtpbmcgLSBBUk0gTGludXggPGxpbnV4QGFybWxpbnV4Lm9y Zy51az4KPiA+Pj4gQ2M6IElsaWEgTWlya2luIDxpbWlya2luQGFsdW0ubWl0LmVkdT4KPiA+Pj4g Q2M6IEhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgo+ID4+PiBDYzogVW1hIFNoYW5r YXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+Pj4gQ2M6IFNoYXNoYW5rIFNoYXJtYSA8c2hh c2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiA+Pj4gUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IEp5 cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gPj4+IFt2c3lyamFsYSB2MjogQWRkL2ZpeCBrZXJu ZWxkb2NzLCB2ZXJpZnkgYml0bWFza3NdCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IFJldmlld2VkLWJ5OiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4+PiAtLS0KPiA+Pj4gICBk cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICB8ICAgOCArKysKPiA+Pj4gICBkcml2ZXJz L2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+Pj4gICBpbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oICAgICB8 ICAxOSArKysrKysrKwo+ID4+PiAgIGluY2x1ZGUvZHJtL2RybV9wbGFuZS5oICAgICAgICAgIHwg IDMyICsrKysrKysrKysrKwo+ID4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMo KykKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPj4+IGluZGV4IDQ2NzMzZDUzNDU4Ny4u NDUyYTBiMGJhZmJjIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+Pj4gQEAgLTc1 OSw2ICs3NTksMTAgQEAgc3RhdGljIGludCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+Pj4gICAJCXN0YXRlLT5yb3RhdGlvbiA9IHZhbDsK PiA+Pj4gICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0eSkgewo+ ID4+PiAgIAkJc3RhdGUtPnpwb3MgPSB2YWw7Cj4gPj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9 PSBwbGFuZS0+Y29sb3JfZW5jb2RpbmdfcHJvcGVydHkpIHsKPiA+Pj4gKwkJc3RhdGUtPmNvbG9y X2VuY29kaW5nID0gdmFsOwo+ID4+PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNv bG9yX3JhbmdlX3Byb3BlcnR5KSB7Cj4gPj4+ICsJCXN0YXRlLT5jb2xvcl9yYW5nZSA9IHZhbDsK PiA+Pj4gICAJfSBlbHNlIGlmIChwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpIHsK PiA+Pj4gICAJCXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkocGxhbmUs IHN0YXRlLAo+ID4+PiAgIAkJCQlwcm9wZXJ0eSwgdmFsKTsKPiA+Pj4gQEAgLTgxOCw2ICs4MjIs MTAgQEAgZHJtX2F0b21pY19wbGFuZV9nZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gPj4+ICAgCQkqdmFsID0gc3RhdGUtPnJvdGF0aW9uOwo+ID4+PiAgIAl9IGVsc2UgaWYg KHByb3BlcnR5ID09IHBsYW5lLT56cG9zX3Byb3BlcnR5KSB7Cj4gPj4+ICAgCQkqdmFsID0gc3Rh dGUtPnpwb3M7Cj4gPj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JfZW5j b2RpbmdfcHJvcGVydHkpIHsKPiA+Pj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xvcl9lbmNvZGluZzsK PiA+Pj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0 eSkgewo+ID4+PiArCQkqdmFsID0gc3RhdGUtPmNvbG9yX3JhbmdlOwo+ID4+PiAgIAl9IGVsc2Ug aWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewo+ID4+PiAgIAkJcmV0dXJu IHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShwbGFuZSwgc3RhdGUsIHByb3BlcnR5 LCB2YWwpOwo+ID4+PiAgIAl9IGVsc2Ugewo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9jb2xvcl9tZ210LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+ ID4+PiBpbmRleCAwZDAwMmIwNDViZDIuLjRiODNlMDc4ZDNlOSAxMDA2NDQKPiA+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9jb2xvcl9tZ210LmMKPiA+Pj4gQEAgLTg4LDYgKzg4LDIwIEBACj4gPj4+ICAgICog ZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgpLiBEcml2ZXJzIHdoaWNoIHN1cHBvcnQgYm90 aCBzaG91bGQgdXNlCj4gPj4+ICAgICogZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3Nl dCgpIHRvIGFsaWFzIHRoZSBsZWdhY3kgZ2FtbWEgcmFtcCB3aXRoIHRoZQo+ID4+PiAgICAqICJH QU1NQV9MVVQiIHByb3BlcnR5IGFib3ZlLgo+ID4+PiArICoKPiA+Pj4gKyAqIFN1cHBvcnQgZm9y IGRpZmZlcmVudCBub24gUkdCIGNvbG9yIGVuY29kaW5ncyBpcyBjb250cm9sbGVkIHRocm91Z2gK PiA+Pj4gKyAqICZkcm1fcGxhbmUgc3BlY2lmaWMgQ09MT1JfRU5DT0RJTkcgYW5kIENPTE9SX1JB TkdFIHByb3BlcnRpZXMuIFRoZXkKPiA+Pj4gKyAqIGFyZSBzZXQgdXAgYnkgY2FsbGluZyBkcm1f cGxhbmVfY3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMoKS4KPiA+Pj4gKyAqCj4gPj4+ICsgKiAiQ09M T1JfRU5DT0RJTkciCj4gPj4+ICsgKiAJT3B0aW9uYWwgcGxhbmUgZW51bSBwcm9wZXJ0eSB0byBz dXBwb3J0IGRpZmZlcmVudCBub24gUkdCCj4gPj4+ICsgKiAJY29sb3IgZW5jb2RpbmdzLiBUaGUg ZHJpdmVyIGNhbiBwcm92aWRlIGEgc3Vic2V0IG9mIHN0YW5kYXJkCj4gPj4+ICsgKiAJZW51bSB2 YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBEUk0gcGxhbmUuCj4gPj4+ICsgKgo+ID4+PiArICogIkNP TE9SX1JBTkdFIgo+ID4+PiArICogCU9wdGlvbmFsIHBsYW5lIGVudW0gcHJvcGVydHkgdG8gc3Vw cG9ydCBkaWZmZXJlbnQgbm9uIFJHQgo+ID4+PiArICogCWNvbG9yIHBhcmFtZXRlciByYW5nZXMu IFRoZSBkcml2ZXIgY2FuIHByb3ZpZGUgYSBzdWJzZXQgb2YKPiA+Pj4gKyAqIAlzdGFuZGFyZCBl bnVtIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIERSTSBwbGFuZS4KPiA+Pj4gICAgKi8KPiA+Pj4g ICAKPiA+Pj4gICAvKioKPiA+Pj4gQEAgLTMzOSwzICszNTMsOTIgQEAgaW50IGRybV9tb2RlX2dh bW1hX2dldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+PiAgIAlkcm1fbW9kZXNl dF91bmxvY2soJmNydGMtPm11dGV4KTsKPiA+Pj4gICAJcmV0dXJuIHJldDsKPiA+Pj4gICB9Cj4g Pj4+ICsKPiA+Pj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY29sb3JfZW5jb2RpbmdfbmFt ZVtdID0gewo+ID4+PiArCVtEUk1fQ09MT1JfWUNCQ1JfQlQ2MDFdID0gIklUVS1SIEJULjYwMSBZ Q2JDciIsCj4gPj4+ICsJW0RSTV9DT0xPUl9ZQ0JDUl9CVDcwOV0gPSAiSVRVLVIgQlQuNzA5IFlD YkNyIiwKPiA+Pj4gKwlbRFJNX0NPTE9SX1lDQkNSX0JUMjAyMF0gPSAiSVRVLVIgQlQuMjAyMCBZ Q2JDciIsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IGNvbG9yX3JhbmdlX25hbWVbXSA9IHsKPiA+Pj4gKwlbRFJNX0NPTE9SX1lDQkNSX0ZVTExfUkFO R0VdID0gIllDYkNyIGZ1bGwgcmFuZ2UiLAo+ID4+PiArCVtEUk1fQ09MT1JfWUNCQ1JfTElNSVRF RF9SQU5HRV0gPSAiWUNiQ3IgbGltaXRlZCByYW5nZSIsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ ICsvKioKPiA+Pj4gKyAqIGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcyAtIGNvbG9y IGVuY29kaW5nIHJlbGF0ZWQgcGxhbmUgcHJvcGVydGllcwo+ID4+PiArICogQHBsYW5lOiBwbGFu ZSBvYmplY3QKPiA+Pj4gKyAqIEBzdXBwb3J0ZWRfZW5jb2RpbmdzOiBiaXRmaWVsZCBpbmRpY2F0 aW5nIHN1cHBvcnRlZCBjb2xvciBlbmNvZGluZ3MKPiA+Pj4gKyAqIEBzdXBwb3J0ZWRfcmFuZ2Vz OiBiaXRmaWxlbGQgaW5kaWNhdGluZyBzdXBwb3J0ZWQgY29sb3IgcmFuZ2VzCj4gPj4+ICsgKiBA ZGVmYXVsdF9lbmNvZGluZzogZGVmYXVsdCBjb2xvciBlbmNvZGluZwo+ID4+PiArICogQGRlZmF1 bHRfcmFuZ2U6IGRlZmF1bHQgY29sb3IgcmFuZ2UKPiA+Pj4gKyAqCj4gPj4+ICsgKiBDcmVhdGUg YW5kIGF0dGFjaCBwbGFuZSBzcGVjaWZpYyBDT0xPUl9FTkNPRElORyBhbmQgQ09MT1JfUkFOR0UK PiA+Pj4gKyAqIHByb3BlcnRpZXMgdG8gQHBsYW5lLiBUaGUgc3VwcG9ydGVkIGVuY29kaW5ncyBh bmQgcmFuZ2VzIHNob3VsZAo+ID4+PiArICogYmUgcHJvdmlkZWQgaW4gc3VwcG9ydGVkX2VuY29k aW5ncyBhbmQgc3VwcG9ydGVkX3JhbmdlcyBiaXRtYXNrcy4KPiA+Pj4gKyAqIEVhY2ggYml0IHNl dCBpbiB0aGUgYml0bWFzayBpbmRpY2F0ZXMgdGhhdCBpdHMgbnVtYmVyIGFzIGVudW0KPiA+Pj4g KyAqIHZhbHVlIGlzIHN1cHBvcnRlZC4KPiA+Pj4gKyAqLwo+ID4+PiAraW50IGRybV9wbGFuZV9j cmVhdGVfY29sb3JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+Pj4gKwkJ CQkgICAgICB1MzIgc3VwcG9ydGVkX2VuY29kaW5ncywKPiA+Pj4gKwkJCQkgICAgICB1MzIgc3Vw cG9ydGVkX3JhbmdlcywKPiA+Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb2xvcl9lbmNvZGluZyBk ZWZhdWx0X2VuY29kaW5nLAo+ID4+PiArCQkJCSAgICAgIGVudW0gZHJtX2NvbG9yX3JhbmdlIGRl ZmF1bHRfcmFuZ2UpCj4gPj4+ICt7Cj4gPj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBs YW5lLT5kZXY7Cj4gPj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKPiA+Pj4gKwlzdHJ1 Y3QgZHJtX3Byb3BfZW51bV9saXN0IGVudW1fbGlzdFttYXgoRFJNX0NPTE9SX0VOQ09ESU5HX01B WCwKPiA+Pj4gKwkJCQkJCURSTV9DT0xPUl9SQU5HRV9NQVgpXTsKPiA+Pj4gKwlpbnQgaSwgbGVu Owo+ID4+PiArCj4gPj4+ICsJaWYgKFdBUk5fT04oc3VwcG9ydGVkX2VuY29kaW5ncyA9PSAwIHx8 Cj4gPj4+ICsJCSAgICAoc3VwcG9ydGVkX2VuY29kaW5ncyAmIC1CSVQoRFJNX0NPTE9SX0VOQ09E SU5HX01BWCkpICE9IDAgfHwKPiA+Pj4gKwkJICAgIChzdXBwb3J0ZWRfZW5jb2RpbmdzICYgQklU KGRlZmF1bHRfZW5jb2RpbmcpKSA9PSAwKSkKPiA+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4+ ICsKPiA+Pj4gKwlpZiAoV0FSTl9PTihzdXBwb3J0ZWRfcmFuZ2VzID09IDAgfHwKPiA+Pj4gKwkJ ICAgIChzdXBwb3J0ZWRfcmFuZ2VzICYgLUJJVChEUk1fQ09MT1JfUkFOR0VfTUFYKSkgIT0gMCB8 fAo+ID4+PiArCQkgICAgKHN1cHBvcnRlZF9yYW5nZXMgJiBCSVQoZGVmYXVsdF9yYW5nZSkpID09 IDApKQo+ID4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pj4gKwo+ID4+PiArCWxlbiA9IDA7Cj4g Pj4+ICsJZm9yIChpID0gMDsgaSA8IERSTV9DT0xPUl9FTkNPRElOR19NQVg7IGkrKykgewo+ID4+ PiArCQlpZiAoKHN1cHBvcnRlZF9lbmNvZGluZ3MgJiBCSVQoaSkpID09IDApCj4gPj4+ICsJCQlj b250aW51ZTsKPiA+Pj4gKwo+ID4+PiArCQllbnVtX2xpc3RbbGVuXS50eXBlID0gaTsKPiA+Pj4g KwkJZW51bV9saXN0W2xlbl0ubmFtZSA9IGNvbG9yX2VuY29kaW5nX25hbWVbaV07Cj4gPj4+ICsJ CWxlbisrOwo+ID4+PiArCX0KPiA+Pj4gKwo+ID4+PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3Jl YXRlX2VudW0oZGV2LCAwLCAiQ09MT1JfRU5DT0RJTkciLAo+ID4+PiArCQkJCQllbnVtX2xpc3Qs IGxlbik7Cj4gPj4+ICsJaWYgKCFwcm9wKQo+ID4+PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+Pj4g KwlwbGFuZS0+Y29sb3JfZW5jb2RpbmdfcHJvcGVydHkgPSBwcm9wOwo+ID4+PiArCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgZGVmYXVsdF9lbmNvZGluZyk7 Cj4gPj4+ICsJaWYgKHBsYW5lLT5zdGF0ZSkKPiA+Pj4gKwkJcGxhbmUtPnN0YXRlLT5jb2xvcl9l bmNvZGluZyA9IGRlZmF1bHRfZW5jb2Rpbmc7Cj4gPj4+ICsKPiA+Pj4gKwlsZW4gPSAwOwo+ID4+ PiArCWZvciAoaSA9IDA7IGkgPCBEUk1fQ09MT1JfUkFOR0VfTUFYOyBpKyspIHsKPiA+Pj4gKwkJ aWYgKChzdXBwb3J0ZWRfcmFuZ2VzICYgQklUKGkpKSA9PSAwKQo+ID4+PiArCQkJY29udGludWU7 Cj4gPj4+ICsKPiA+Pj4gKwkJZW51bV9saXN0W2xlbl0udHlwZSA9IGk7Cj4gPj4+ICsJCWVudW1f bGlzdFtsZW5dLm5hbWUgPSBjb2xvcl9yYW5nZV9uYW1lW2ldOwo+ID4+PiArCQlsZW4rKzsKPiA+ Pj4gKwl9Cj4gPj4+ICsKPiA+Pj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRl diwgMCwJIkNPTE9SX1JBTkdFIiwKPiA+Pj4gKwkJCQkJZW51bV9saXN0LCBsZW4pOwo+ID4+PiAr CWlmICghcHJvcCkKPiA+Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPj4+ICsJcGxhbmUtPmNvbG9y X3JhbmdlX3Byb3BlcnR5ID0gcHJvcDsKPiA+Pj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmcGxhbmUtPmJhc2UsIHByb3AsIGRlZmF1bHRfcmFuZ2UpOwo+ID4+PiArCWlmIChwbGFuZS0+ c3RhdGUpCj4gPj4+ICsJCXBsYW5lLT5zdGF0ZS0+Y29sb3JfcmFuZ2UgPSBkZWZhdWx0X3Jhbmdl Owo+ID4+PiArCj4gPj4+ICsJcmV0dXJuIDA7Cj4gPj4+ICt9Cj4gPj4+ICtFWFBPUlRfU1lNQk9M KGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcyk7Cj4gPj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQu aAo+ID4+PiBpbmRleCAwM2E1OWNiY2U2MjEuLmIzYjZkMzAyY2E4YyAxMDA2NDQKPiA+Pj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaAo+ID4+PiArKysgYi9pbmNsdWRlL2RybS9k cm1fY29sb3JfbWdtdC5oCj4gPj4+IEBAIC0yNiw2ICsyNiw3IEBACj4gPj4+ICAgI2luY2x1ZGUg PGxpbnV4L2N0eXBlLmg+Cj4gPj4+ICAgCj4gPj4+ICAgc3RydWN0IGRybV9jcnRjOwo+ID4+PiAr c3RydWN0IGRybV9wbGFuZTsKPiA+Pj4gICAKPiA+Pj4gICB1aW50MzJfdCBkcm1fY29sb3JfbHV0 X2V4dHJhY3QodWludDMyX3QgdXNlcl9pbnB1dCwgdWludDMyX3QgYml0X3ByZWNpc2lvbik7Cj4g Pj4+ICAgCj4gPj4+IEBAIC0zNyw0ICszOCwyMiBAQCB2b2lkIGRybV9jcnRjX2VuYWJsZV9jb2xv cl9tZ210KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4gICBpbnQgZHJtX21vZGVfY3J0Y19z ZXRfZ2FtbWFfc2l6ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+ICAgCQkJCSBpbnQgZ2Ft bWFfc2l6ZSk7Cj4gPj4+ICAgCj4gPj4+ICtlbnVtIGRybV9jb2xvcl9lbmNvZGluZyB7Cj4gPj4+ ICsJRFJNX0NPTE9SX1lDQkNSX0JUNjAxLAo+ID4+PiArCURSTV9DT0xPUl9ZQ0JDUl9CVDcwOSwK PiA+Pj4gKwlEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwLAo+ID4+PiArCURSTV9DT0xPUl9FTkNPRElO R19NQVgsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtlbnVtIGRybV9jb2xvcl9yYW5nZSB7Cj4g Pj4+ICsJRFJNX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0UsCj4gPj4+ICsJRFJNX0NPTE9SX1lD QkNSX0ZVTExfUkFOR0UsCj4gPj4+ICsJRFJNX0NPTE9SX1JBTkdFX01BWCwKPiA+Pj4gK307Cj4g Pj4+ICsKPiA+Pj4gK2ludCBkcm1fcGxhbmVfY3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4+ICsJCQkJICAgICAgdTMyIHN1cHBvcnRlZF9lbmNvZGlu Z3MsCj4gPj4+ICsJCQkJICAgICAgdTMyIHN1cHBvcnRlZF9yYW5nZXMsCj4gPj4+ICsJCQkJICAg ICAgZW51bSBkcm1fY29sb3JfZW5jb2RpbmcgZGVmYXVsdF9lbmNvZGluZywKPiA+Pj4gKwkJCQkg ICAgICBlbnVtIGRybV9jb2xvcl9yYW5nZSBkZWZhdWx0X3JhbmdlKTsKPiA+Pj4gICAjZW5kaWYK PiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oIGIvaW5jbHVkZS9kcm0v ZHJtX3BsYW5lLmgKPiA+Pj4gaW5kZXggODE4NWUzNDY4YTIzLi5mN2JmNGE0OGIxYzMgMTAwNjQ0 Cj4gPj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPj4+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9wbGFuZS5oCj4gPj4+IEBAIC0yNiw2ICsyNiw3IEBACj4gPj4+ICAgI2luY2x1ZGUg PGxpbnV4L2xpc3QuaD4KPiA+Pj4gICAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KPiA+Pj4gICAj aW5jbHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ID4+PiArI2luY2x1ZGUgPGRybS9kcm1f Y29sb3JfbWdtdC5oPgo+ID4+PiAgIAo+ID4+PiAgIHN0cnVjdCBkcm1fY3J0YzsKPiA+Pj4gICBz dHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gPj4+IEBAIC0xMTIsNiArMTEzLDIwIEBAIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgewo+ID4+PiAgIAl1bnNpZ25lZCBpbnQgenBvczsKPiA+Pj4gICAJdW5zaWdu ZWQgaW50IG5vcm1hbGl6ZWRfenBvczsKPiA+Pj4gICAKPiA+Pj4gKwkvKioKPiA+Pj4gKwkgKiBA Y29sb3JfZW5jb2Rpbmc6Cj4gPj4+ICsJICoKPiA+Pj4gKwkgKiBDb2xvciBlbmNvZGluZyBmb3Ig bm9uIFJHQiBmb3JtYXRzCj4gPj4+ICsJICovCj4gPj4+ICsJZW51bSBkcm1fY29sb3JfZW5jb2Rp bmcgY29sb3JfZW5jb2Rpbmc7Cj4gPj4+ICsKPiA+Pj4gKwkvKioKPiA+Pj4gKwkgKiBAY29sb3Jf cmFuZ2U6Cj4gPj4+ICsJICoKPiA+Pj4gKwkgKiBDb2xvciByYW5nZSBmb3Igbm9uIFJHQiBmb3Jt YXRzCj4gPj4+ICsJICovCj4gPj4+ICsJZW51bSBkcm1fY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2U7 Cj4gPj4+ICsKPiA+Pj4gICAJLyogQ2xpcHBlZCBjb29yZGluYXRlcyAqLwo+ID4+PiAgIAlzdHJ1 Y3QgZHJtX3JlY3Qgc3JjLCBkc3Q7Cj4gPj4+ICAgCj4gPj4+IEBAIC01NTgsNiArNTczLDIzIEBA IHN0cnVjdCBkcm1fcGxhbmUgewo+ID4+PiAgIAo+ID4+PiAgIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICp6cG9zX3Byb3BlcnR5Owo+ID4+PiAgIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpyb3RhdGlvbl9w cm9wZXJ0eTsKPiA+Pj4gKwo+ID4+PiArCS8qKgo+ID4+PiArCSAqIEBjb2xvcl9lbmNvZGluZ19w cm9wZXJ0eToKPiA+Pj4gKwkgKgo+ID4+PiArCSAqIE9wdGlvbmFsICJDT0xPUl9FTkNPRElORyIg ZW51bSBwcm9wZXJ0eSBmb3Igc3BlY2lmeWluZwo+ID4+PiArCSAqIGNvbG9yIGVuY29kaW5nIGZv ciBub24gUkdCIGZvcm1hdHMuCj4gPj4+ICsJICogU2VlIGRybV9wbGFuZV9jcmVhdGVfY29sb3Jf cHJvcGVydGllcygpLgo+ID4+PiArCSAqLwo+ID4+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmNv bG9yX2VuY29kaW5nX3Byb3BlcnR5Owo+ID4+PiArCS8qKgo+ID4+PiArCSAqIEBjb2xvcl9yYW5n ZV9wcm9wZXJ0eToKPiA+Pj4gKwkgKgo+ID4+PiArCSAqIE9wdGlvbmFsICJDT0xPUl9SQU5HRSIg ZW51bSBwcm9wZXJ0eSBmb3Igc3BlY2lmeWluZwo+ID4+PiArCSAqIGNvbG9yIHJhbmdlIGZvciBu b24gUkdCIGZvcm1hdHMuCj4gPj4+ICsJICogU2VlIGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJv cGVydGllcygpLgo+ID4+PiArCSAqLwo+ID4+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmNvbG9y X3JhbmdlX3Byb3BlcnR5Owo+ID4+PiAgIH07Cj4gPj4+ICAgCj4gPj4+ICAgI2RlZmluZSBvYmpf dG9fcGxhbmUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fcGxhbmUsIGJhc2UpCj4gCgot LSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=