From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 2/6] drm: introduce color correction properties Date: Wed, 17 Feb 2016 17:55:13 -0800 Message-ID: <20160218015513.GZ27772@intel.com> References: <1455020358-18926-1-git-send-email-lionel.g.landwerlin@intel.com> <1455020358-18926-3-git-send-email-lionel.g.landwerlin@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: <1455020358-18926-3-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org, kausalmalladi@gmail.com, kiran.s.kumar@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMDksIDIwMTYgYXQgMTI6MTk6MTRQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gUGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsg U2hhcm1hLgo+IAo+IHYyOiBSZWdpc3RlciBMVVQgc2l6ZSBwcm9wZXJ0aWVzIGFzIHJhbmdlCj4g Cj4gdjM6IEZpeCByb3VuZCBpbiBkcm1fY29sb3JfbHV0X2dldF92YWx1ZSgpIGhlbHBlcgo+ICAg ICBNb3JlIGRvY3Mgb24gaG93IGRlZ2FtbWEvZ2FtbWEgcHJvcGVydGllcyBhcmUgdXNlZAo+IAo+ IHY0OiBVcGRhdGUgY29udHJpYnV0b3JzCgpBIGNvdXBsZSBtaW5vciBub3RlczoKICogSW4gdGhl IGtlcm5lbGRvYywgeW91IG1pZ2h0IHdhbnQgdG8gc3BlbGwgb3V0IHRoZSBmaXJzdCB1c2Ugb2Yg dGhlCiAgIGFjcm9ueW1zIGZvciBjbGFyaXR5LiAgSS5lLiwgQ29sb3IgVHJhbnNmb3JtYXRpb24g TWF0cml4LCBMb29rdXAKICAgVGFibGUuCiAqIFlvdSBtaWdodCB3YW50IHRvIGFkZCBEUk1fREVC VUdfS01TKCkgY2FsbHMgdG8gc29tZSBvZiB0aGUgZXJyb3IKICAgY29uZGl0aW9ucyAoZS5nLiwg d2hlbiB0aGUgYmxvYiBoYXMgYW4gaW52YWxpZCBzaXplKSBzbyB0aGF0IGl0IHdpbGwKICAgYmUg bW9yZSBhcHBhcmVudCB3aHkgd2UgZmFpbGVkIHdoZW4gbG9va2luZyBhdCBrZXJuZWwgbG9ncy4K ICogTG9va3MgbGlrZSBvbmUgbWlub3Igd2hpdGVzcGFjZSBlcnJvciwgbm90ZWQgYmVsb3cuCiAq IE9uZSBtaW5vciBoZWxwZXIgbm90ZSBiZWxvdy4KCkFzaWRlIGZyb20gdGhvc2UsClJldmlld2Vk LWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgoKCkFsc28sIHNvbWV3 aGVyZSAocHJvYmFibHkgYXMgYSBmb2xsb3d1cCBwYXRjaCB0byB0aGlzIHNlcmllcyksIEkgdGhp bmsKd2UgbmVlZCBzb21lIGtlcm5lbGRvYyB0ZXh0IHRoYXQgZGVzY3JpYmVzIHRoZSByZWxhdGlv bnNoaXAgYmV0d2VlbiB0aGlzCmNvbG9yIG1hbmFnZW1lbnQgd29yayBhbmQgdGhlIG9sZCBsZWdh Y3kgZ2FtbWEgaW9jdGwuICBJLmUuLCB3aGF0CmhhcHBlbnMgaWYgeW91IGludGVybWl4IGNhbGxz IHRvIHRoZSBsZWdhY3kgaW9jdGwgd2l0aCB1cGRhdGVzIHRvIHRoZQpjb2xvciBtYW5hZ2VyIHBy b3BlcnRpZXMuCgoKTWF0dAoKCj4gCj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxz aGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2Vy bGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBLdW1h ciwgS2lyYW4gUyA8a2lyYW4ucy5rdW1hckBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogS2F1 c2FsIE1hbGxhZGkgPGthdXNhbG1hbGxhZGlAZ21haWwuY29tPgouLi4KPiBAQCAtNDE5LDggKzQ3 Miw0NyBAQCBpbnQgZHJtX2F0b21pY19jcnRjX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAkJcmV0ID0gZHJtX2F0b21pY19zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjKHN0YXRl LCBtb2RlKTsKPiAgCQlkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2VfYmxvYihtb2RlKTsKPiAgCQly ZXR1cm4gcmV0Owo+IC0JfQo+IC0JZWxzZSBpZiAoY3J0Yy0+ZnVuY3MtPmF0b21pY19zZXRfcHJv cGVydHkpCj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ZGVnYW1tYV9sdXRfcHJv cGVydHkpIHsKPiArCQlib29sIHJlcGxhY2VkID0gZmFsc2U7Cj4gKwkJdWludDY0X3QgbHV0X3Np emUgPSAwOwo+ICsKPiArCQlyZXQgPSBkcm1fb2JqZWN0X3Byb3BlcnR5X2dldF92YWx1ZSgmY3J0 Yy0+YmFzZSwKPiArCQkJCQljb25maWctPmRlZ2FtbWFfbHV0X3NpemVfcHJvcGVydHksCj4gKwkJ CQkJJmx1dF9zaXplKTsKPiArCQlpZiAocmV0ID09IDApCj4gKwkJCXJldCA9IGRybV9hdG9taWNf cmVwbGFjZV9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoY3J0YywKPiArCQkJCQkmc3RhdGUtPmRlZ2Ft bWFfbHV0LAo+ICsJCQkJCXZhbCwKPiArCQkJCQlsdXRfc2l6ZSAqIHNpemVvZihzdHJ1Y3QgZHJt X2NvbG9yX2x1dCksCj4gKwkJCQkJJnJlcGxhY2VkKTsKPiArCQlzdGF0ZS0+Y29sb3JfbWdtdF9j aGFuZ2VkID0gcmVwbGFjZWQ7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0gZWxzZSBpZiAocHJvcGVy dHkgPT0gY29uZmlnLT5jdG1fbWF0cml4X3Byb3BlcnR5KSB7Cj4gKwkJYm9vbCByZXBsYWNlZCA9 IGZhbHNlOwo+ICsKPiArCQlyZXQgPSBkcm1fYXRvbWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9m cm9tX2lkKGNydGMsCj4gKwkJCQkJJnN0YXRlLT5jdG1fbWF0cml4LAo+ICsJCQkJCXZhbCwKPiAr CQkJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9jdG0pLAo+ICsJCQkJCQkJICAgICAgICZyZXBs YWNlZCk7CgpMb29rcyBsaWtlIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBvZmYgd2l0aCB0aGUg d2hpdGVzcGFjZSBoZXJlLgoKCj4gKwkJc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IHJlcGxh Y2VkOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ Z2FtbWFfbHV0X3Byb3BlcnR5KSB7Cj4gKwkJYm9vbCByZXBsYWNlZCA9IGZhbHNlOwo+ICsJCXVp bnQ2NF90IGx1dF9zaXplID0gMDsKPiArCj4gKwkJcmV0ID0gZHJtX29iamVjdF9wcm9wZXJ0eV9n ZXRfdmFsdWUoJmNydGMtPmJhc2UsCj4gKwkJCQkJY29uZmlnLT5nYW1tYV9sdXRfc2l6ZV9wcm9w ZXJ0eSwKPiArCQkJCQkmbHV0X3NpemUpOwo+ICsJCWlmIChyZXQgPT0gMCkKPiArCQkJcmV0ID0g ZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5X2Jsb2JfZnJvbV9pZChjcnRjLAo+ICsJCQkJCSZz dGF0ZS0+Z2FtbWFfbHV0LAo+ICsJCQkJCXZhbCwKPiArCQkJCQlsdXRfc2l6ZSAqIHNpemVvZihz dHJ1Y3QgZHJtX2NvbG9yX2x1dCksCj4gKwkJCQkJJnJlcGxhY2VkKTsKPiArCQlzdGF0ZS0+Y29s b3JfbWdtdF9jaGFuZ2VkID0gcmVwbGFjZWQ7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0gZWxzZSBp ZiAoY3J0Yy0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpCj4gIAkJcmV0dXJuIGNydGMtPmZ1 bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KGNydGMsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiAg CWVsc2UKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtNDU2LDYgKzU0OCwxMiBAQCBkcm1fYXRv bWljX2NydGNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkqdmFsID0g c3RhdGUtPmFjdGl2ZTsKPiAgCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9tb2Rl X2lkKQo+ICAJCSp2YWwgPSAoc3RhdGUtPm1vZGVfYmxvYikgPyBzdGF0ZS0+bW9kZV9ibG9iLT5i YXNlLmlkIDogMDsKPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ZGVnYW1tYV9sdXRf cHJvcGVydHkpCj4gKwkJKnZhbCA9IChzdGF0ZS0+ZGVnYW1tYV9sdXQpID8gc3RhdGUtPmRlZ2Ft bWFfbHV0LT5iYXNlLmlkIDogMDsKPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+Y3Rt X21hdHJpeF9wcm9wZXJ0eSkKPiArCQkqdmFsID0gKHN0YXRlLT5jdG1fbWF0cml4KSA/IHN0YXRl LT5jdG1fbWF0cml4LT5iYXNlLmlkIDogMDsKPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZp Zy0+Z2FtbWFfbHV0X3Byb3BlcnR5KQo+ICsJCSp2YWwgPSAoc3RhdGUtPmdhbW1hX2x1dCkgPyBz dGF0ZS0+Z2FtbWFfbHV0LT5iYXNlLmlkIDogMDsKPiAgCWVsc2UgaWYgKGNydGMtPmZ1bmNzLT5h dG9taWNfZ2V0X3Byb3BlcnR5KQo+ICAJCXJldHVybiBjcnRjLT5mdW5jcy0+YXRvbWljX2dldF9w cm9wZXJ0eShjcnRjLCBzdGF0ZSwgcHJvcGVydHksIHZhbCk7Cj4gIAllbHNlCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCAyYjQzMGIwLi5kMTNkZmQ4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMjUxMywxMCArMjUxMywxNyBAQCB2b2lk IF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAKPiAgCWlmIChzdGF0ZS0+bW9kZV9ibG9iKQo+ICAJCWRybV9wcm9wZXJ0eV9y ZWZlcmVuY2VfYmxvYihzdGF0ZS0+bW9kZV9ibG9iKTsKPiArCWlmIChzdGF0ZS0+ZGVnYW1tYV9s dXQpCj4gKwkJZHJtX3Byb3BlcnR5X3JlZmVyZW5jZV9ibG9iKHN0YXRlLT5kZWdhbW1hX2x1dCk7 Cj4gKwlpZiAoc3RhdGUtPmN0bV9tYXRyaXgpCj4gKwkJZHJtX3Byb3BlcnR5X3JlZmVyZW5jZV9i bG9iKHN0YXRlLT5jdG1fbWF0cml4KTsKPiArCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KQo+ICsJCWRy bV9wcm9wZXJ0eV9yZWZlcmVuY2VfYmxvYihzdGF0ZS0+Z2FtbWFfbHV0KTsKPiAgCXN0YXRlLT5t b2RlX2NoYW5nZWQgPSBmYWxzZTsKPiAgCXN0YXRlLT5hY3RpdmVfY2hhbmdlZCA9IGZhbHNlOwo+ ICAJc3RhdGUtPnBsYW5lc19jaGFuZ2VkID0gZmFsc2U7Cj4gIAlzdGF0ZS0+Y29ubmVjdG9yc19j aGFuZ2VkID0gZmFsc2U7Cj4gKwlzdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkID0gZmFsc2U7Cj4g IAlzdGF0ZS0+ZXZlbnQgPSBOVUxMOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWlj X2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gQEAgLTI1NTcsNiArMjU2NCw5IEBAIHZv aWQgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4g IAlkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2VfYmxvYihzdGF0ZS0+bW9kZV9ibG9iKTsKPiArCWRy bV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKHN0YXRlLT5kZWdhbW1hX2x1dCk7Cj4gKwlkcm1f cHJvcGVydHlfdW5yZWZlcmVuY2VfYmxvYihzdGF0ZS0+Y3RtX21hdHJpeCk7Cj4gKwlkcm1fcHJv cGVydHlfdW5yZWZlcmVuY2VfYmxvYihzdGF0ZS0+Z2FtbWFfbHV0KTsKPiAgfQo+ICBFWFBPUlRf U1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKTsKPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9jcnRjLmMKPiBpbmRleCBiMTljOGY0Li44ZThmNTdhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBA QCAtMTU2NSw2ICsxNTY1LDQxIEBAIHN0YXRpYyBpbnQgZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJk X3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlyZXR1cm4gLUVOT01FTTsK PiAgCWRldi0+bW9kZV9jb25maWcucHJvcF9tb2RlX2lkID0gcHJvcDsKPiAgCj4gKwlwcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZShkZXYsCj4gKwkJCURSTV9NT0RFX1BST1BfQkxPQiwKPiArCQkJ IkRFR0FNTUFfTFVUIiwgMCk7CgpOb3QgYSBiaWcgZGVhbCBlaXRoZXIgd2F5LCBidXQgdGhlcmUn cyBhIGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYigpIHlvdQpjb3VsZCB1c2UgdG8gbWFrZSB0aGUg Y29kZSBzbGlnaHRseSBzaW1wbGVyIGZvciB0aGUgYmxvYiBwcm9wZXJ0aWVzCmhlcmUuCgoKPiAr CWlmICghcHJvcCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWRldi0+bW9kZV9jb25maWcuZGVn YW1tYV9sdXRfcHJvcGVydHkgPSBwcm9wOwo+ICsKPiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3Jl YXRlX3JhbmdlKGRldiwKPiArCQkJRFJNX01PREVfUFJPUF9JTU1VVEFCTEUsCj4gKwkJCSJERUdB TU1BX0xVVF9TSVpFIiwgMCwgVUlOVF9NQVgpOwo+ICsJaWYgKCFwcm9wKQo+ICsJCXJldHVybiAt RU5PTUVNOwo+ICsJZGV2LT5tb2RlX2NvbmZpZy5kZWdhbW1hX2x1dF9zaXplX3Byb3BlcnR5ID0g cHJvcDsKPiArCj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShkZXYsCj4gKwkJCURSTV9N T0RFX1BST1BfQkxPQiwKPiArCQkJIkNUTV9NQVRSSVgiLCAwKTsKPiArCWlmICghcHJvcCkKPiAr CQlyZXR1cm4gLUVOT01FTTsKPiArCWRldi0+bW9kZV9jb25maWcuY3RtX21hdHJpeF9wcm9wZXJ0 eSA9IHByb3A7Cj4gKwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LAo+ICsJCQlE Uk1fTU9ERV9QUk9QX0JMT0IsCj4gKwkJCSJHQU1NQV9MVVQiLCAwKTsKPiArCWlmICghcHJvcCkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWRldi0+bW9kZV9jb25maWcuZ2FtbWFfbHV0X3Byb3Bl cnR5ID0gcHJvcDsKPiArCj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYs Cj4gKwkJCURSTV9NT0RFX1BST1BfSU1NVVRBQkxFLAo+ICsJCQkiR0FNTUFfTFVUX1NJWkUiLCAw LCBVSU5UX01BWCk7Cj4gKwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYt Pm1vZGVfY29uZmlnLmdhbW1hX2x1dF9zaXplX3Byb3BlcnR5ID0gcHJvcDsKPiArCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jCj4gaW5kZXggOWY4Yjg5 NC4uM2NkOGNiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBAQCAtMTA3Mywz ICsxMDczLDM2IEBAIGludCBkcm1faGVscGVyX2NydGNfbW9kZV9zZXRfYmFzZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIGludCB4LCBpbnQgeSwKPiAgCXJldHVybiBkcm1fcGxhbmVfaGVscGVyX2Nv bW1pdChwbGFuZSwgcGxhbmVfc3RhdGUsIG9sZF9mYik7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1faGVscGVyX2NydGNfbW9kZV9zZXRfYmFzZSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2hlbHBl cl9jcnRjX2VuYWJsZV9jb2xvcl9tZ210IC0gZW5hYmxlIGNvbG9yIG1hbmFnZW1lbnQgcHJvcGVy dGllcwo+ICsgKiBAY3J0YzogRFJNIENSVEMKPiArICogQGRlZ2FtbWFfbHV0X3NpemU6IHRoZSBz aXplIG9mIHRoZSBkZWdhbW1hIGx1dCAoYmVmb3JlIENTQykKPiArICogQGdhbW1hX2x1dF9zaXpl OiB0aGUgc2l6ZSBvZiB0aGUgZ2FtbWEgbHV0IChhZnRlciBDU0MpCj4gKyAqCj4gKyAqIFRoaXMg ZnVuY3Rpb24gbGV0cyB0aGUgZHJpdmVyIGVuYWJsZSB0aGUgY29sb3IgY29ycmVjdGlvbiBwcm9w ZXJ0aWVzIG9uIGEKPiArICogQ1JUQy4gVGhpcyBpbmNsdWRlcyAzIGRlZ2FtbWEsIGNzYyBhbmQg Z2FtbWEgcHJvcGVydGllcyB0aGF0IHVzZXJzcGFjZSBjYW4KPiArICogc2V0IGFuZCAyIHNpemUg cHJvcGVydGllcyB0byBpbmZvcm0gdGhlIHVzZXJzcGFjZSBvZiB0aGUgbHV0IHNpemVzLgo+ICsg Ki8KPiArdm9pZCBkcm1faGVscGVyX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICsJCQkJICAgICAgIGludCBkZWdhbW1hX2x1dF9zaXplLAo+ICsJCQkJICAg ICAgIGludCBnYW1tYV9sdXRfc2l6ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1v ZGVfY29uZmlnOwo+ICsKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjcnRjLT5iYXNl LAo+ICsJCQkJICAgY29uZmlnLT5kZWdhbW1hX2x1dF9wcm9wZXJ0eSwgMCk7Cj4gKwlkcm1fb2Jq ZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZSwKPiArCQkJCSAgIGNvbmZpZy0+Y3RtX21h dHJpeF9wcm9wZXJ0eSwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+ YmFzZSwKPiArCQkJCSAgIGNvbmZpZy0+Z2FtbWFfbHV0X3Byb3BlcnR5LCAwKTsKPiArCj4gKwlk cm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZSwKPiArCQkJCSAgIGNvbmZpZy0+ ZGVnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSwKPiArCQkJCSAgIGRlZ2FtbWFfbHV0X3NpemUpOwo+ ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsCj4gKwkJCQkgICBjb25m aWctPmdhbW1hX2x1dF9zaXplX3Byb3BlcnR5LAo+ICsJCQkJICAgZ2FtbWFfbHV0X3NpemUpOwo+ ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2hlbHBlcl9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KTsK PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgKPiBpbmRleCA4YzdmYjNkLi5lMDdiMTc0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9jcnRjLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTMwNSw2ICsz MDUsOCBAQCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jczsKPiAgICogQG1vZGVfY2hhbmdl ZDogY3J0Y19zdGF0ZS0+bW9kZSBvciBjcnRjX3N0YXRlLT5lbmFibGUgaGFzIGJlZW4gY2hhbmdl ZAo+ICAgKiBAYWN0aXZlX2NoYW5nZWQ6IGNydGNfc3RhdGUtPmFjdGl2ZSBoYXMgYmVlbiB0b2dn bGVkLgo+ICAgKiBAY29ubmVjdG9yc19jaGFuZ2VkOiBjb25uZWN0b3JzIHRvIHRoaXMgY3J0YyBo YXZlIGJlZW4gdXBkYXRlZAo+ICsgKiBAY29sb3JfbWdtdF9jaGFuZ2VkOiBjb2xvciBtYW5hZ2Vt ZW50IHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkIChkZWdhbW1hIG9yCj4gKyAqCWdhbW1hIExVVCBv ciBDU0MgbWF0cml4KQo+ICAgKiBAcGxhbmVfbWFzazogYml0bWFzayBvZiAoMSA8PCBkcm1fcGxh bmVfaW5kZXgocGxhbmUpKSBvZiBhdHRhY2hlZCBwbGFuZXMKPiAgICogQGNvbm5lY3Rvcl9tYXNr OiBiaXRtYXNrIG9mICgxIDw8IGRybV9jb25uZWN0b3JfaW5kZXgoY29ubmVjdG9yKSkgb2YgYXR0 YWNoZWQgY29ubmVjdG9ycwo+ICAgKiBAZW5jb2Rlcl9tYXNrOiBiaXRtYXNrIG9mICgxIDw8IGRy bV9lbmNvZGVyX2luZGV4KGVuY29kZXIpKSBvZiBhdHRhY2hlZCBlbmNvZGVycwo+IEBAIC0zMTIs NiArMzE0LDExIEBAIHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzOwo+ICAgKiAJdXBkYXRl IHRvIGVuc3VyZSBmcmFtZWJ1ZmZlciBjbGVhbnVwIGlzbid0IGRvbmUgdG9vIGVhcmx5Cj4gICAq IEBhZGp1c3RlZF9tb2RlOiBmb3IgdXNlIGJ5IGhlbHBlcnMgYW5kIGRyaXZlcnMgdG8gY29tcHV0 ZSBhZGp1c3RlZCBtb2RlIHRpbWluZ3MKPiAgICogQG1vZGU6IGN1cnJlbnQgbW9kZSB0aW1pbmdz Cj4gKyAqIEBkZWdhbW1hX2x1dDogTG9va3VwIHRhYmxlIGZvciBjb252ZXJ0aW5nIGZyYW1lYnVm ZmVyIHBpeGVsIGRhdGEKPiArICoJYmVmb3JlIGFwcGx5IHRoZSBjb252ZXJzaW9uIG1hdHJpeAo+ ICsgKiBAY3RtX21hdHJpeDogVHJhbnNmb3JtYXRpb24gbWF0cml4Cj4gKyAqIEBnYW1tYV9sdXQ6 IExvb2t1cCB0YWJsZSBmb3IgY29udmVydGluZyBwaXhlbCBkYXRhIGFmdGVyIHRoZQo+ICsgKglj b252ZXJzaW9uIG1hdHJpeAo+ICAgKiBAZXZlbnQ6IG9wdGlvbmFsIHBvaW50ZXIgdG8gYSBEUk0g ZXZlbnQgdG8gc2lnbmFsIHVwb24gY29tcGxldGlvbiBvZiB0aGUKPiAgICogCXN0YXRlIHVwZGF0 ZQo+ICAgKiBAc3RhdGU6IGJhY2twb2ludGVyIHRvIGdsb2JhbCBkcm1fYXRvbWljX3N0YXRlCj4g QEAgLTMzMyw2ICszNDAsNyBAQCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgewo+ICAJYm9vbCBtb2Rl X2NoYW5nZWQgOiAxOwo+ICAJYm9vbCBhY3RpdmVfY2hhbmdlZCA6IDE7Cj4gIAlib29sIGNvbm5l Y3RvcnNfY2hhbmdlZCA6IDE7Cj4gKwlib29sIGNvbG9yX21nbXRfY2hhbmdlZCA6IDE7Cj4gIAo+ ICAJLyogYXR0YWNoZWQgcGxhbmVzIGJpdG1hc2s6Cj4gIAkgKiBXQVJOSU5HOiB0cmFuc2l0aW9u YWwgaGVscGVycyBkbyBub3QgbWFpbnRhaW4gcGxhbmVfbWFzayBzbwo+IEBAIC0zNTUsNiArMzYz LDExIEBAIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSB7Cj4gIAkvKiBibG9iIHByb3BlcnR5IHRvIGV4 cG9zZSBjdXJyZW50IG1vZGUgdG8gYXRvbWljIHVzZXJzcGFjZSAqLwo+ICAJc3RydWN0IGRybV9w cm9wZXJ0eV9ibG9iICptb2RlX2Jsb2I7Cj4gIAo+ICsJLyogYmxvYiBwcm9wZXJ0eSB0byBleHBv c2UgY29sb3IgbWFuYWdlbWVudCB0byB1c2Vyc3BhY2UgKi8KPiArCXN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqZGVnYW1tYV9sdXQ7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmN0bV9t YXRyaXg7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dDsKPiArCj4gIAlz dHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKPiAgCj4gIAlzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gQEAgLTc1Nyw3ICs3NzAsNyBAQCBzdHJ1Y3QgZHJtX2Ny dGMgewo+ICAJaW50IHgsIHk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgKmZ1bmNz Owo+ICAKPiAtCS8qIENSVEMgZ2FtbWEgc2l6ZSBmb3IgcmVwb3J0aW5nIHRvIHVzZXJzcGFjZSAq Lwo+ICsJLyogTGVnYWN5IEZCIENSVEMgZ2FtbWEgc2l6ZSBmb3IgcmVwb3J0aW5nIHRvIHVzZXJz cGFjZSAqLwo+ICAJdWludDMyX3QgZ2FtbWFfc2l6ZTsKPiAgCXVpbnQxNl90ICpnYW1tYV9zdG9y ZTsKPiAgCj4gQEAgLTIwMjUsNiArMjAzOCwxNSBAQCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1 bmNzIHsKPiAgICogQHByb3BlcnR5X2Jsb2JfbGlzdDogbGlzdCBvZiBhbGwgdGhlIGJsb2IgcHJv cGVydHkgb2JqZWN0cwo+ICAgKiBAYmxvYl9sb2NrOiBtdXRleCBmb3IgYmxvYiBwcm9wZXJ0eSBh bGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50Cj4gICAqIEAqX3Byb3BlcnR5OiBjb3JlIHByb3BlcnR5 IHRyYWNraW5nCj4gKyAqIEBkZWdhbW1hX2x1dF9wcm9wZXJ0eTogTFVUIHVzZWQgdG8gY29udmVy dCB0aGUgZnJhbWVidWZmZXIncyBjb2xvcnMgdG8gbGluZWFyCj4gKyAqCWdhbW1hCj4gKyAqIEBk ZWdhbW1hX2x1dF9zaXplX3Byb3BlcnR5OiBzaXplIG9mIHRoZSBkZWdhbW1hIExVVCBhcyBzdXBw b3J0ZWQgYnkgdGhlCj4gKyAqCWRyaXZlciAocmVhZC1vbmx5KQo+ICsgKiBAY3RtX21hdHJpeF9w cm9wZXJ0eTogTWF0cml4IHVzZWQgdG8gY29udmVydCBjb2xvcnMgYWZ0ZXIgdGhlIGxvb2t1cCBp biB0aGUKPiArICoJZGVnYW1tYSBMVVQKPiArICogQGdhbW1hX2x1dF9wcm9wZXJ0eTogTFVUIHVz ZWQgdG8gY29udmVydCB0aGUgY29sb3JzLCBhZnRlciB0aGUgQ1NDIG1hdHJpeCwgdG8KPiArICoJ dGhlIGdhbW1hIHNwYWNlIG9mIHRoZSBjb25uZWN0ZWQgc2NyZWVuIChyZWFkLW9ubHkpCj4gKyAq IEBnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eTogc2l6ZSBvZiB0aGUgZ2FtbWEgTFVUIGFzIHN1cHBv cnRlZCBieSB0aGUgZHJpdmVyCj4gICAqIEBwcmVmZXJyZWRfZGVwdGg6IHByZWZlcnJlZCBSQkcg cGl4ZWwgZGVwdGgsIHVzZWQgYnkgZmIgaGVscGVycwo+ICAgKiBAcHJlZmVyX3NoYWRvdzogaGlu dCB0byB1c2Vyc3BhY2UgdG8gcHJlZmVyIHNoYWRvdy1mYiByZW5kZXJpbmcKPiAgICogQGFzeW5j X3BhZ2VfZmxpcDogZG9lcyB0aGlzIGRldmljZSBzdXBwb3J0IGFzeW5jIGZsaXBzIG9uIHRoZSBw cmltYXJ5IHBsYW5lPwo+IEBAIC0yMTI2LDYgKzIxNDgsMTMgQEAgc3RydWN0IGRybV9tb2RlX2Nv bmZpZyB7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICphc3BlY3RfcmF0aW9fcHJvcGVydHk7Cj4g IAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkaXJ0eV9pbmZvX3Byb3BlcnR5Owo+ICAKPiArCS8qIE9w dGlvbmFsIGNvbG9yIGNvcnJlY3Rpb24gcHJvcGVydGllcyAqLwo+ICsJc3RydWN0IGRybV9wcm9w ZXJ0eSAqZGVnYW1tYV9sdXRfcHJvcGVydHk7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkZWdh bW1hX2x1dF9zaXplX3Byb3BlcnR5Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqY3RtX21hdHJp eF9wcm9wZXJ0eTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmdhbW1hX2x1dF9wcm9wZXJ0eTsK PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmdhbW1hX2x1dF9zaXplX3Byb3BlcnR5Owo+ICsKPiAg CS8qIHByb3BlcnRpZXMgZm9yIHZpcnR1YWwgbWFjaGluZSBsYXlvdXQgKi8KPiAgCXN0cnVjdCBk cm1fcHJvcGVydHkgKnN1Z2dlc3RlZF94X3Byb3BlcnR5Owo+ICAJc3RydWN0IGRybV9wcm9wZXJ0 eSAqc3VnZ2VzdGVkX3lfcHJvcGVydHk7Cj4gQEAgLTI1NDgsNiArMjU3NywxOSBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBkcm1fcHJvcGVydHkgKmRybV9wcm9wZXJ0eV9maW5kKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gbW8gPyBvYmpfdG9fcHJvcGVydHkobW8pIDogTlVMTDsK PiAgfQo+ICAKPiArLyoKPiArICogRXh0cmFjdCBhIGRlZ2FtbWEvZ2FtbWEgTFVUIHZhbHVlIHBy b3ZpZGVkIGJ5IHVzZXIgYW5kIHJvdW5kIGl0IHRvIHRoZQo+ICsgKiBwcmVjaXNpb24gc3VwcG9y dGVkIGJ5IHRoZSBoYXJkd2FyZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZHJt X2NvbG9yX2x1dF9leHRyYWN0KHVpbnQzMl90IHVzZXJfaW5wdXQsCj4gKwkJCQkJICAgICB1aW50 MzJfdCBiaXRfcHJlY2lzaW9uKQo+ICt7Cj4gKwl1aW50MzJfdCB2YWwgPSAoKHVzZXJfaW5wdXQg PDwgMSkgKyAxKSA+PiAoMTYgLSBiaXRfcHJlY2lzaW9uICsgMSk7Cj4gKwl1aW50MzJfdCBtYXgg PSAweGZmZmYgPj4gKDE2IC0gYml0X3ByZWNpc2lvbik7Cj4gKwo+ICsJcmV0dXJuIGNsYW1wX3Zh bCh2YWwsIDAsIG1heCk7Cj4gK30KPiArCj4gIC8qIFBsYW5lIGxpc3QgaXRlcmF0b3IgZm9yIGxl Z2FjeSAob3ZlcmxheSBvbmx5KSBwbGFuZXMuICovCj4gICNkZWZpbmUgZHJtX2Zvcl9lYWNoX2xl Z2FjeV9wbGFuZShwbGFuZSwgZGV2KSBcCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBsYW5lLCAm KGRldiktPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGhlYWQpIFwKPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NydGNfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIu aAo+IGluZGV4IDRiMzdhZmEuLjk3ZmE4OTQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2NydGNfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIuaAo+IEBA IC00OCw2ICs0OCw5IEBAIGV4dGVybiBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlLAo+ICAJCQkJICAgICBpbnQgeCwgaW50IHksCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKm9sZF9mYik7Cj4gK2V4dGVybiB2b2lkIGRybV9oZWxwZXJfY3J0Y19lbmFibGVf Y29sb3JfbWdtdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkJICAgICAgaW50IGRlZ2Ft bWFfbHV0X3NpemUsCj4gKwkJCQkJICAgICAgaW50IGdhbW1hX2x1dF9zaXplKTsKPiAgZXh0ZXJu IGJvb2wgZHJtX2hlbHBlcl9jcnRjX2luX3VzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICBl eHRlcm4gYm9vbCBkcm1faGVscGVyX2VuY29kZXJfaW5fdXNlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2Rlcik7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiBpbmRleCA1MGFkYjQ2Li5jMDIxNzQzIDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ICsrKyBiL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaAo+IEBAIC00ODcsNiArNDg3LDIxIEBAIHN0cnVjdCBkcm1fbW9k ZV9jcnRjX2x1dCB7Cj4gIAlfX3U2NCBibHVlOwo+ICB9Owo+ICAKPiArc3RydWN0IGRybV9jb2xv cl9jdG0gewo+ICsJLyogQ29udmVyc2lvbiBtYXRyaXggaW4gUzMxLjMyIGZvcm1hdC4gKi8KPiAr CV9fczY0IG1hdHJpeFs5XTsKPiArfTsKPiArCj4gK3N0cnVjdCBkcm1fY29sb3JfbHV0IHsKPiAr CS8qCj4gKwkgKiBEYXRhIGlzIFUwLjE2IGZpeGVkIHBvaW50IGZvcm1hdC4KPiArCSAqLwo+ICsJ X191MTYgcmVkOwo+ICsJX191MTYgZ3JlZW47Cj4gKwlfX3UxNiBibHVlOwo+ICsJX191MTYgcmVz ZXJ2ZWQ7Cj4gK307Cj4gKwo+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCAweDAx Cj4gICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX0FTWU5DIDB4MDIKPiAgI2RlZmluZSBEUk1f TU9ERV9QQUdFX0ZMSVBfRkxBR1MgKERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVHxEUk1fTU9ERV9Q QUdFX0ZMSVBfQVNZTkMpCj4gLS0gCj4gMi43LjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNv ZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRl bCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK