From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Tue, 2 May 2017 10:33:20 +0200 Message-ID: <20170502083320.fptp6aq3budhtker@phenom.ffwll.local> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id C904189D61 for ; Tue, 2 May 2017 08:33:24 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id u65so2447445wmu.3 for ; Tue, 02 May 2017 01:33:24 -0700 (PDT) Content-Disposition: inline In-Reply-To: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@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 T24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMTI6NTE6MTRQTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90 ZToKPiBBZGQgc3RhbmRhcmQgcHJvcGVydGllcyB0byBjb250cm9sIFlDYkNyIHRvIFJHQiBjb252 ZXJzaW9uIGluIERSTQo+IHBsYW5lcy4gVGhlIGNyZWF0ZWQgcHJvcGVydGllcyBhcmUgc3RvcmVk IHRvIGRybV9wbGFuZSBvYmplY3QgdG8gYWxsb3cKPiBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRl ZCBjb252ZXJzaW9uIG1vZGVzIGZvciBkaWZmZXJlbnQgcGxhbmVzIG9uCj4gdGhlIGRldmljZS4g Rm9yIHNpbXBsaWNpdHkgdGhlIHJlbGF0ZWQgcHJvcGVydHkgYmxvYnMgZm9yIENTQyBtYXRyaXgK PiBhbmQgWUNiQ3IgcHJlb2Zmc2V0cyBhcmUgYWxzbyBzdG9yZWQgaW4gdGhlIHNhbWUgcGxhY2Uu IFRoZSBibG9iCj4gY29udGVudHMgYXJlIGRlZmluZWQgaW4gdGhlIHVhcGkvZHJtL2RybV9tb2Rl LmggaGVhZGVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ CgpKdXN0IHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHN1cnByaXNlczogV2UgbmVlZCB0aGUgdXNl cnNwYWNlIGZvciB0aGlzCnRvby4gLW1vZGVzZXR0aW5nIChmb3IgWHYgbWF5YmUpLCBzb21lIHdh eWxhbmQgY29tcG9zaXRvciAod2VzdG9uLCBvem9uZSwKd2hhdGV2ZXIgeW91IGZlZWwgbGlrZSkg b3IgZHJtX2h3Y29tcG9zZXIuCgpCdXQgeWVhaCBtaWdodCBiZSBnb29kIHRvIGJpa2VzaGVkIHRo ZSB1YWJpIGZpcnN0IGEgYml0IG1vcmUgYW5kIGdldCBhdApsZWFzdCBzb21lIGFncmVlbWVudCBv biB0aGF0LgoKVGhhbmtzLCBEYW5pZWwKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWMuYyAgICAgICAgfCAgMjYgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyB8ICAgOSArKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMgICAg fCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fcGxhbmUuYyAgICAgICAgIHwgIDEwICsrKwo+ICBpbmNsdWRlL2RybS9kcm1fY29s b3JfbWdtdC5oICAgICAgICB8ICAyMyArKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgg ICAgICAgICAgICAgfCAgMTAgKysrCj4gIGluY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCAgICAg ICAgIHwgIDEyICsrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBpbmRleCBmODgxMzE5Li5kMTUxMmFh IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gQEAgLTczMiw2ICs3MzIsOCBAQCBpbnQgZHJtX2F0 b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIHsKPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9tb2Rl X2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gKwlpbnQgcmV0Owo+ICsJYm9v bCBkdW1teTsKPiAgCj4gIAlpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2ZiX2lkKSB7Cj4g IAkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBkcm1fZnJhbWVidWZmZXJfbG9va3VwKGRl diwgdmFsKTsKPiBAQCAtNzc0LDYgKzc3NiwyMiBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRf cHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJc3RhdGUtPnJvdGF0aW9uID0g dmFsOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0eSkgewo+ ICAJCXN0YXRlLT56cG9zID0gdmFsOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+ eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+eWNiY3JfdG9fcmdiX21v ZGUgPSB2YWw7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19yZ2Jf Y3NjX3Byb3BlcnR5KSB7Cj4gKwkJcmV0ID0gZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5X2Js b2JfZnJvbV9pZChkZXYsCj4gKwkJCQkmc3RhdGUtPnljYmNyX3RvX3JnYl9jc2MsCj4gKwkJCQl2 YWwsCj4gKwkJCQlzaXplb2Yoc3RydWN0IGRybV95Y2Jjcl90b19yZ2JfY3NjKSwKPiArCQkJCSZk dW1teSk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUt PnljYmNyX3RvX3JnYl9wcmVvZmZzZXRfcHJvcGVydHkpIHsKPiArCQlyZXQgPSBkcm1fYXRvbWlj X3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKGRldiwKPiArCQkJCSZzdGF0ZS0+eWNiY3Jf dG9fcmdiX3ByZW9mZnNldCwKPiArCQkJCXZhbCwKPiArCQkJCXNpemVvZihzdHJ1Y3QgZHJtX3lj YmNyX3RvX3JnYl9wcmVvZmZzZXQpLAo+ICsJCQkJJmR1bW15KTsKPiArCQlyZXR1cm4gcmV0Owo+ ICAJfSBlbHNlIGlmIChwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpIHsKPiAgCQly ZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KHBsYW5lLCBzdGF0ZSwKPiAg CQkJCXByb3BlcnR5LCB2YWwpOwo+IEBAIC04MzQsNiArODUyLDE0IEBAIGludCBkcm1fYXRvbWlj X3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkqdmFsID0g c3RhdGUtPnJvdGF0aW9uOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19w cm9wZXJ0eSkgewo+ICAJCSp2YWwgPSBzdGF0ZS0+enBvczsKPiArCX0gZWxzZSBpZiAocHJvcGVy dHkgPT0gcGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IHN0 YXRlLT55Y2Jjcl90b19yZ2JfbW9kZTsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUt PnljYmNyX3RvX3JnYl9jc2NfcHJvcGVydHkpIHsKPiArCQkqdmFsID0gc3RhdGUtPnljYmNyX3Rv X3JnYl9jc2MgPwo+ICsJCQlzdGF0ZS0+eWNiY3JfdG9fcmdiX2NzYy0+YmFzZS5pZCA6IDA7Cj4g Kwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X3By b3BlcnR5KSB7Cj4gKwkJKnZhbCA9IHN0YXRlLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0ID8KPiAr CQkJc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQtPmJhc2UuaWQgOiAwOwo+ICAJfSBlbHNl IGlmIChwbGFuZS0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkpIHsKPiAgCQlyZXR1cm4gcGxh bmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KHBsYW5lLCBzdGF0ZSwgcHJvcGVydHksIHZh bCk7Cj4gIAl9IGVsc2Ugewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gaW5kZXgg YzM5OTRiNC4uODlmZDgyNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4g QEAgLTMxOTYsNiArMzE5NiwxMiBAQCB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVw bGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICB7Cj4gIAltZW1jcHkoc3Rh dGUsIHBsYW5lLT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSkpOwo+ICAKPiArCWlmIChzdGF0ZS0+eWNi Y3JfdG9fcmdiX2NzYykKPiArCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoc3RhdGUtPnljYmNyX3Rv X3JnYl9jc2MpOwo+ICsKPiArCWlmIChzdGF0ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCkKPiAr CQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQpOwo+ ICsKPiAgCWlmIChzdGF0ZS0+ZmIpCj4gIAkJZHJtX2ZyYW1lYnVmZmVyX2dldChzdGF0ZS0+ZmIp Owo+ICAKPiBAQCAtMzIzNiw2ICszMjQyLDkgQEAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqCj4g ICAqLwo+ICB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+ICsJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0 KHN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjKTsKPiArCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChzdGF0 ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCk7Cj4gKwo+ICAJaWYgKHN0YXRlLT5mYikKPiAgCQlk cm1fZnJhbWVidWZmZXJfcHV0KHN0YXRlLT5mYik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdt dC5jCj4gaW5kZXggY2MyM2I5YS4uYmFkYWRkZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2NvbG9yX21nbXQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdt dC5jCj4gQEAgLTI5LDkgKzI5LDE0IEBACj4gIC8qKgo+ICAgKiBET0M6IG92ZXJ2aWV3Cj4gICAq Cj4gLSAqIENvbG9yIG1hbmFnZW1lbnQgb3IgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaXMgc3Vw cG9ydGVkIHRocm91Z2ggYSBzZXQgb2YgNQo+IC0gKiBwcm9wZXJ0aWVzIG9uIHRoZSAmZHJtX2Ny dGMgb2JqZWN0LiBUaGV5IGFyZSBzZXQgdXAgYnkgY2FsbGluZwo+IC0gKiBkcm1fY3J0Y19lbmFi bGVfY29sb3JfbWdtdCgpLgo+ICsgKiBDb2xvciBtYW5hZ2VtZW50IG9yIGNvbG9yIHNwYWNlIGFk anVzdG1lbnRzIGluIENSVENzIGlzIHN1cHBvcnRlZAo+ICsgKiB0aHJvdWdoIGEgc2V0IG9mIDUg cHJvcGVydGllcyBvbiB0aGUgJmRybV9jcnRjIG9iamVjdC4gVGhleSBhcmUgc2V0Cj4gKyAqIHVw IGJ5IGNhbGxpbmcgZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KPiArICoKPiArICogQ29s b3Igc3BhY2UgY29udmVyc2lvbnMgZnJvbSBZQ2JDciB0byBSR0IgY29sb3Igc3BhY2UgaW4gcGxh bmVzIGlzCj4gKyAqIHN1cHBvcnRlciB0cm91Z2ggMyBvcHRpb25hbCBwcm9wZXJ0aWVzIGluICZk cm1fcGxhbmUgb2JqZWN0Lgo+ICsgKgo+ICsgKiBUaGUgJmRybV9jcnRjIG9iamVjdCdzIHByb3Bl cnRpZXMgYXJlOgo+ICAgKgo+ICAgKiAiREVHQU1NQV9MVVTigJ06Cj4gICAqCUJsb2IgcHJvcGVy dHkgdG8gc2V0IHRoZSBkZWdhbW1hIGxvb2t1cCB0YWJsZSAoTFVUKSBtYXBwaW5nIHBpeGVsIGRh dGEKPiBAQCAtODUsNiArOTAsMjggQEAKPiAgICogZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6 ZSgpLiBEcml2ZXJzIHdoaWNoIHN1cHBvcnQgYm90aCBzaG91bGQgdXNlCj4gICAqIGRybV9hdG9t aWNfaGVscGVyX2xlZ2FjeV9nYW1tYV9zZXQoKSB0byBhbGlhcyB0aGUgbGVnYWN5IGdhbW1hIHJh bXAgd2l0aCB0aGUKPiAgICogIkdBTU1BX0xVVCIgcHJvcGVydHkgYWJvdmUuCj4gKyAqCj4gKyAq IFRoZSAmZHJtX3BsYW5lIG9iamVjdCdzIHByb3BlcnRpZXMgYXJlOgo+ICsgKgo+ICsgKiAiWUNC Q1JfVE9fUkdCX01PREUiCj4gKyAqIAlPcHRpb25hbCBwbGFuZSBlbnVtIHByb3BlcnR5IHRvIGNv bmZpZ3VyZSBZQ2JDciB0byBSR0IKPiArICogCWNvbnZlcnNpb24uIFRoZSBwb3NzaWJsZSBtb2Rl cyBpbmNsdWRlIGEgbnVtYmVyIG9mIHN0YW5kYXJkCj4gKyAqIAljb252ZXJzaW9ucyBhbmQgYSBw b3NzaWJpbGl0eSB0byBzZWxlY3QgY3VzdG9tIGNvbnZlcnNpb24KPiArICogCW1hdHJpeCBhbmQg cHJlb2Zmc2V0IHZlY3Rvci4gVGhlIGRyaXZlciBzaG91bGQgc2VsZWN0IHRoZQo+ICsgKglzdXBw b3J0ZWQgc3Vic2V0IG9mIG9mIHRoZSBtb2Rlcy4KPiArICoKPiArICogIllDQkNSX1RPX1JHQl9D U0MiCj4gKyAqCU9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IGJsb2IgdG8gc2V0IFlDYkNyIHRvIFJH QiBjb252ZXJzaW9uCj4gKyAqCW1hdHJpeC4gVGhlIGJsb2IgY29udGFpbnMgc3RydWN0IGRybV95 Y2Jjcl90b19yZ2JfY3NjIHdoaWNoIGlzCj4gKyAqCWRlZmluZWQgaW4gdWFwaS9kcm0vZHJtX21v ZGUuaC4gV2hldGhlciB0aGlzIHByb3BlcnR5IGlzCj4gKyAqCWFjdGl2ZSBkZXBlbmRlbnQgb24g WUNCQ1JfVE9fUkdCX01PREUgcHJvcGVydHkuCj4gKyAqCj4gKyAqICJZQ0JDUl9UT19SR0JfUFJF T0ZGU0VUIgo+ICsgKglPcHRpb25hbCBwbGFuZSBwcm9wZXJ0eSBibG9iIHRvIGNvbmZpZ3VyZSBZ Q2JDciBvZmZzZXQgYmVmb3JlCj4gKyAqCVlDYkNyIHRvIFJHQiBDU0MgaXMgYXBwbGllZC4gVGhl IGJsb2IgY29udGFpbnMgc3RydWN0Cj4gKyAqCWRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0IHdo aWNoIGlzIGRlZmluZWQgaW4KPiArICoJdWFwaS9kcm0vZHJtX21vZGUuaC4gV2hldGhlciB0aGlz IHByb3BlcnR5IGlzIGFjdGl2ZSBkZXBlbmRlbnQKPiArICoJb24gWUNCQ1JfVE9fUkdCX01PREUg cHJvcGVydHkuCj4gICAqLwo+ICAKPiAgLyoqCj4gQEAgLTMzMCwzICszNTcsMTA2IEBAIGludCBk cm1fbW9kZV9nYW1tYV9nZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWRybV9t b2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiArCj4gK3N0YXRp YyBjaGFyICp5Y2Jjcl90b19yZ2JfbW9kZV9uYW1lW10gPSB7Cj4gKwlbRFJNX1BMQU5FX1lDQkNS X0JUNjAxX0xJTV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC42MDEgbGltaXRl ZCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9C VDYwMV9GVUxMX1RPX1JHQl9CVDYwMV9GVUxMXSA9Cj4gKwkJIllDYkNyIEJULjYwMSBmdWxsIHJh bmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5 X0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC43MDkgbGltaXRlZCByYW5n ZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDIwMjBf TElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFu Z2UgVE8gUkdCIEJULjIwMjAgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAx X0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5n ZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9M SU1fVE9fUkdCX0JUMjAyMF9GVUxMXSA9Cj4gKwkJIllDYkNyIEJULjYwMSBsaW1pdGVkIHJhbmdl IFRPIFJHQiBCVC4yMDIwIGZ1bGwgcmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9M SU1fVE9fUkdCX0JUNjAxX0ZVTExdID0KPiArCQkiWUNiQ3IgQlQuNzA5IGxpbWl0ZWQgcmFuZ2Ug VE8gUkdCIEJULjYwMSBmdWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElN X1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC43MDkgbGltaXRlZCByYW5nZSBU TyBSR0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJ TV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2Ug VE8gUkdCIEJULjYwMSBmdWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJ TV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2Ug VE8gUkdCIEJULjcwOSBmdWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NT Q19MSU1fUFJFT0ZGU0VUXSA9Cj4gKwkJIllDYkNyIFRPIFJHQiBDU0MgbGltaXRlZCByYW5nZSBw cmVvZmZzZXQiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0ZVTExfUFJFT0ZGU0VU XSA9Cj4gKwkJIllDYkNyIFRPIFJHQiBDU0MgZnVsbCByYW5nZSBwcmVvZmZzZXQiLAo+ICsJW0RS TV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX1BSRU9GRlNFVF9WRUNUT1JdID0KPiArCQkiWUNCQ1Ig VE8gUkdCIENTQyBwcmVvZmZzZXQgdmVjdG9yIiwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBkcm1f cGxhbmVfY3JlYXRlX3ljYmNyX3RvX3JnYl9wcm9wZXJ0aWVzIC0geWNiY3IgdG8gcmdiIHJlbGF0 ZWQgcHJvcGVydGllcwo+ICsgKiBAZW51bV9saXN0OiBkcm1fcHJvcF9lbnVtX2xpc3QgYXJyYXkg b2Ygc3VwcG9ydGVkIG1vZGVzIHdpdGhvdXQgbmFtZXMKPiArICogQGVudW1fbGlzdF9sZW46IGxl bmd0aCBvZiBlbnVtX2xpc3QgYXJyYXkKPiArICogQGRlZmF1bHRfbW9kZTogZGVmYXVsdCBjc2Mg bW9kZQo+ICsgKgo+ICsgKiBDcmVhdGUgYW5kIGF0dGFjaCBwbGFuZSBzcGVjaWZpYyBZQ2JDciB0 byBSR0IgY29udmVyc2lvbiByZWxhdGVkCj4gKyAqIHByb3BlcnRpZXMgdG8gdG8gdGhlIGRybV9w bGFuZSBvYmplY3QuIFRoZSBZQ0JDUl9UT19SR0JfTU9ERSBwcm9wZXR5Cj4gKyAqIGNyZWF0ZWQg YW5kIGFuIHRoZSBzdXBwb3J0ZWQgbW9kZXMgc2hvdWxkIGJlIHByb3ZpZGVkIHRoZSBlbnVtX2xp c3QKPiArICogcGFyYW1ldGVyLiBZQ0JDUl9UT19SR0JfQ1NDIGFuZCBZQ0JDUl9UT19SR0JfUFJF T0ZGU0VUIHByb3BlcnRpZXMgYXJlCj4gKyAqIGNyZWF0ZWQgYmFzZWQgb24gc3VwcG9ydGVkIGNv bnZlcnNpb24gbW9kZXMuIFRoZSBlbnVtX2xpc3QgcGFyYW1ldGVyCj4gKyAqIHNob3VsZCBub3Qg Y29udGFpbiB0aGUgZW51bSBuYW1lcywgYmVjYXVzZSB0aGUgc3RhbmRhcmQgbmFtZXMgYXJlCj4g KyAqIGFkZGVkIGJ5IHRoaXMgZnVuY3Rpb24uCj4gKyAqLwo+ICtpbnQgZHJtX3BsYW5lX2NyZWF0 ZV95Y2Jjcl90b19yZ2JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJ c3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+ICsJCQl1bnNpZ25lZCBpbnQg ZW51bV9saXN0X2xlbiwKPiArCQkJZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdiX21vZGUgZGVm YXVsdF9tb2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsK PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gKwlib29sIHljYmNyX3RvX3JnYl9jc2Nf Y3JlYXRlID0gZmFsc2U7Cj4gKwlib29sIHljYmNyX3RvX3JnYl9wcmVvZmZzZXRfY3JlYXRlID0g ZmFsc2U7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoV0FSTl9PTihwbGFuZS0+eWNiY3JfdG9fcmdi X21vZGVfcHJvcGVydHkgIT0gTlVMTCkpCj4gKwkJcmV0dXJuIC1FRVhJU1Q7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IGVudW1fbGlzdF9sZW47IGkrKykgewo+ICsJCWVudW0gZHJtX3BsYW5lX3lj YmNyX3RvX3JnYl9tb2RlIG1vZGUgPSBlbnVtX2xpc3RbaV0udHlwZTsKPiArCj4gKwkJZW51bV9s aXN0W2ldLm5hbWUgPSB5Y2Jjcl90b19yZ2JfbW9kZV9uYW1lW21vZGVdOwo+ICsKPiArCQlpZiAo bW9kZSA9PSBEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19MSU1fUFJFT0ZGU0VUIHx8Cj4gKwkJ ICAgIG1vZGUgPT0gRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfRlVMTF9QUkVPRkZTRVQpCj4g KwkJCXljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gdHJ1ZTsKPiArCj4gKwkJaWYgKG1vZGUgPT0g RFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfUFJFT0ZGU0VUX1ZFQ1RPUikgewo+ICsJCQl5Y2Jj cl90b19yZ2JfY3NjX2NyZWF0ZSA9IHRydWU7Cj4gKwkJCXljYmNyX3RvX3JnYl9wcmVvZmZzZXRf Y3JlYXRlID0gdHJ1ZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9j cmVhdGVfZW51bShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICsJCQkJCSJZQ0JDUl9UT19S R0JfTU9ERSIsCj4gKwkJCQkJZW51bV9saXN0LCBlbnVtX2xpc3RfbGVuKTsKPiArCWlmICghcHJv cCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCXBsYW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9w ZXJ0eSA9IHByb3A7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2Us IHByb3AsIGRlZmF1bHRfbW9kZSk7Cj4gKwo+ICsJaWYgKHljYmNyX3RvX3JnYl9jc2NfY3JlYXRl KSB7Cj4gKwkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0FU T01JQyB8Cj4gKwkJCQkJICAgRFJNX01PREVfUFJPUF9CTE9CLAo+ICsJCQkJCSAgICJZQ0JDUl9U T19SR0JfQ1NDIiwgMCk7Cj4gKwkJaWYgKCFwcm9wKQo+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiAr CQlwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSA9IHByb3A7Cj4gKwkJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCAwKTsKPiArCX0KPiArCj4gKwlp ZiAoeWNiY3JfdG9fcmdiX3ByZW9mZnNldF9jcmVhdGUpIHsKPiArCQlwcm9wID0gZHJtX3Byb3Bl cnR5X2NyZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDIHwKPiArCQkJCQkgICBEUk1fTU9E RV9QUk9QX0JMT0IsCj4gKwkJCQkJICAgIllDQkNSX1RPX1JHQl9QUkVPRkZTRVQiLCAwKTsKPiAr CQlpZiAoIXByb3ApCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsJCXBsYW5lLT55Y2Jjcl90b19y Z2JfcHJlb2Zmc2V0X3Byb3BlcnR5ID0gcHJvcDsKPiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9w ZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIDApOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcGxhbmUuYwo+IGluZGV4IGJjNzFhYTIuLjRjN2U4MjcgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9w bGFuZS5jCj4gQEAgLTI0NCw2ICsyNDQsMTYgQEAgdm9pZCBkcm1fcGxhbmVfY2xlYW51cChzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgCj4gIAlrZnJlZShwbGFuZS0+bmFtZSk7Cj4gIAo+ICsJ aWYgKHBsYW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eSkKPiArCQlkcm1fcHJvcGVydHlf ZGVzdHJveShkZXYsIHBsYW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eSk7Cj4gKwo+ICsJ aWYgKHBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5KQo+ICsJCWRybV9wcm9wZXJ0eV9k ZXN0cm95KGRldiwgcGxhbmUtPnljYmNyX3RvX3JnYl9jc2NfcHJvcGVydHkpOwo+ICsKPiArCWlm IChwbGFuZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSkKPiArCQlkcm1fcHJvcGVy dHlfZGVzdHJveShkZXYsCj4gKwkJCQkgICAgIHBsYW5lLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0 X3Byb3BlcnR5KTsKPiArCj4gIAltZW1zZXQocGxhbmUsIDAsIHNpemVvZigqcGxhbmUpKTsKPiAg fQo+ICBFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jbGVhbnVwKTsKPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaCBiL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmgK PiBpbmRleCAwM2E1OWNiLi5hMjBiM2ZmIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9j b2xvcl9tZ210LmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCj4gQEAgLTI2 LDYgKzI2LDggQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gIAo+ICBzdHJ1Y3QgZHJt X2NydGM7Cj4gK3N0cnVjdCBkcm1fcGxhbmU7Cj4gK3N0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3Q7 Cj4gIAo+ICB1aW50MzJfdCBkcm1fY29sb3JfbHV0X2V4dHJhY3QodWludDMyX3QgdXNlcl9pbnB1 dCwgdWludDMyX3QgYml0X3ByZWNpc2lvbik7Cj4gIAo+IEBAIC0zNyw0ICszOSwyNSBAQCB2b2lk IGRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgaW50 IGRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ CQkJIGludCBnYW1tYV9zaXplKTsKPiAgCj4gK2VudW0gZHJtX3BsYW5lX3ljYmNyX3RvX3JnYl9t b2RlIHsKPiArCURSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JUNjAxX0ZVTEwgPSAw LAo+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0ZVTExfVE9fUkdCX0JUNjAxX0ZVTEwsCj4gKwlE Uk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElNX1RPX1JHQl9CVDcwOV9GVUxMLAo+ICsJRFJNX1BMQU5F X1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUMjAyMF9GVUxMLAo+ICsJRFJNX1BMQU5FX1lDQkNS X0JUNjAxX0xJTV9UT19SR0JfQlQ3MDlfRlVMTCwKPiArCURSTV9QTEFORV9ZQ0JDUl9CVDYwMV9M SU1fVE9fUkdCX0JUMjAyMF9GVUxMLAo+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19S R0JfQlQ2MDFfRlVMTCwKPiArCURSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUMjAy MF9GVUxMLAo+ICsJRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNjAxX0ZVTEws Cj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQ3MDlfRlVMTCwKPiArCURS TV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVQsCj4gKwlEUk1fUExBTkVfWUNC Q1JfVE9fUkdCX0NTQ19GVUxMX1BSRU9GRlNFVCwKPiArCURSTV9QTEFORV9ZQ0JDUl9UT19SR0Jf Q1NDX1BSRU9GRlNFVF9WRUNUT1IsCj4gK307Cj4gKwo+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV95 Y2Jjcl90b19yZ2JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJc3Ry dWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+ICsJCQl1bnNpZ25lZCBpbnQgZW51 bV9saXN0X2xlbiwKPiArCQkJZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdiX21vZGUgZGVmYXVs dF9tb2RlKTsKPiArCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGxh bmUuaCBiL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gaW5kZXggOWFiM2U3MC4uNDFkY2RlMiAx MDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9wbGFuZS5oCj4gQEAgLTI2LDYgKzI2LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX21vZGVf b2JqZWN0Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NvbG9yX21nbXQuaD4KPiAgCj4gIHN0cnVj dCBkcm1fY3J0YzsKPiAgc3RydWN0IGRybV9wcmludGVyOwo+IEBAIC0xMTIsNiArMTEzLDExIEBA IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ICAJdW5zaWduZWQgaW50IHpwb3M7Cj4gIAl1bnNp Z25lZCBpbnQgbm9ybWFsaXplZF96cG9zOwo+ICAKPiArCS8qIFlDYkNyIHRvIFJHQiBjb252ZXJz aW9uICovCj4gKwllbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSB5Y2Jjcl90b19yZ2Jf bW9kZTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqeWNiY3JfdG9fcmdiX2NzYzsKPiAr CXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqeWNiY3JfdG9fcmdiX3ByZW9mZnNldDsKPiArCj4g IAkvKiBDbGlwcGVkIGNvb3JkaW5hdGVzICovCj4gIAlzdHJ1Y3QgZHJtX3JlY3Qgc3JjLCBkc3Q7 Cj4gIAo+IEBAIC01MjMsNiArNTI5LDEwIEBAIHN0cnVjdCBkcm1fcGxhbmUgewo+ICAKPiAgCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnpwb3NfcHJvcGVydHk7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICpyb3RhdGlvbl9wcm9wZXJ0eTsKPiArCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp5Y2Jjcl90 b19yZ2JfbW9kZV9wcm9wZXJ0eTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnljYmNyX3RvX3Jn Yl9jc2NfcHJvcGVydHk7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp5Y2Jjcl90b19yZ2JfcHJl b2Zmc2V0X3Byb3BlcnR5Owo+ICB9Owo+ICAKPiAgI2RlZmluZSBvYmpfdG9fcGxhbmUoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fcGxhbmUsIGJhc2UpCj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+IGlu ZGV4IDhjNjdmYzAuLjI3ZTBiZWUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1f bW9kZS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gQEAgLTU0Myw2ICs1 NDMsMTggQEAgc3RydWN0IGRybV9jb2xvcl9sdXQgewo+ICAJX191MTYgcmVzZXJ2ZWQ7Cj4gIH07 Cj4gIAo+ICtzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9jc2Mgewo+ICsJLyogQ29udmVyc2lvbiBt YXRyaXggaW4gMi1jb21wbGVtZW50IHMzMi4zMiBmb3JtYXQuICovCj4gKwlfX3M2NCByeSwgcmNi LCByY3I7Cj4gKwlfX3M2NCBneSwgZ2NiLCBnY3I7Cj4gKwlfX3M2NCBieSwgYmNiLCBiY3I7Cj4g K307Cj4gKwo+ICtzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9wcmVvZmZzZXQgewo+ICsJLyogT2Zm c2V0IHZlY3RvciBpbiAyLWNvbXBsZW1lbnQgcy4zMiBmb3JtYXQuICovCj4gKwlfX3MzMiB5LCBj YiwgY3I7Cj4gK307Cj4gKwo+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCAweDAx Cj4gICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX0FTWU5DIDB4MDIKPiAgI2RlZmluZSBEUk1f TU9ERV9QQUdFX0ZMSVBfVEFSR0VUX0FCU09MVVRFIDB4NAo+IC0tIAo+IDEuOS4xCj4gCgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==