From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Fri, 21 Apr 2017 12:51:14 +0300 Message-ID: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelnx194.ext.ti.com (lelnx194.ext.ti.com [198.47.27.80]) by gabe.freedesktop.org (Postfix) with ESMTPS id 315316E40D for ; Fri, 21 Apr 2017 09:51:41 +0000 (UTC) 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: dri-devel@lists.freedesktop.org Cc: Liviu.Dudau@arm.com, Jyri Sarha , tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org QWRkIHN0YW5kYXJkIHByb3BlcnRpZXMgdG8gY29udHJvbCBZQ2JDciB0byBSR0IgY29udmVyc2lv biBpbiBEUk0KcGxhbmVzLiBUaGUgY3JlYXRlZCBwcm9wZXJ0aWVzIGFyZSBzdG9yZWQgdG8gZHJt X3BsYW5lIG9iamVjdCB0byBhbGxvdwpkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRlZCBjb252ZXJz aW9uIG1vZGVzIGZvciBkaWZmZXJlbnQgcGxhbmVzIG9uCnRoZSBkZXZpY2UuIEZvciBzaW1wbGlj aXR5IHRoZSByZWxhdGVkIHByb3BlcnR5IGJsb2JzIGZvciBDU0MgbWF0cml4CmFuZCBZQ2JDciBw cmVvZmZzZXRzIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgc2FtZSBwbGFjZS4gVGhlIGJsb2IKY29u dGVudHMgYXJlIGRlZmluZWQgaW4gdGhlIHVhcGkvZHJtL2RybV9tb2RlLmggaGVhZGVyLgoKU2ln bmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pYy5jICAgICAgICB8ICAyNiArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYyB8ICAgOSArKysKIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdt dC5jICAgIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVy cy9ncHUvZHJtL2RybV9wbGFuZS5jICAgICAgICAgfCAgMTAgKysrCiBpbmNsdWRlL2RybS9kcm1f Y29sb3JfbWdtdC5oICAgICAgICB8ICAyMyArKysrKysKIGluY2x1ZGUvZHJtL2RybV9wbGFuZS5o ICAgICAgICAgICAgIHwgIDEwICsrKwogaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oICAgICAg ICAgfCAgMTIgKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwppbmRleCBmODgxMzE5Li5kMTUxMmFhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMKQEAgLTczMiw2ICs3MzIsOCBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRf cHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiB7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHBsYW5lLT5kZXY7CiAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRl di0+bW9kZV9jb25maWc7CisJaW50IHJldDsKKwlib29sIGR1bW15OwogCiAJaWYgKHByb3BlcnR5 ID09IGNvbmZpZy0+cHJvcF9mYl9pZCkgewogCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IGRybV9mcmFtZWJ1ZmZlcl9sb29rdXAoZGV2LCB2YWwpOwpAQCAtNzc0LDYgKzc3NiwyMiBAQCBp bnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJCXN0YXRlLT5yb3RhdGlvbiA9IHZhbDsKIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5l LT56cG9zX3Byb3BlcnR5KSB7CiAJCXN0YXRlLT56cG9zID0gdmFsOworCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gcGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5KSB7CisJCXN0YXRlLT55 Y2Jjcl90b19yZ2JfbW9kZSA9IHZhbDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55 Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5KSB7CisJCXJldCA9IGRybV9hdG9taWNfcmVwbGFjZV9w cm9wZXJ0eV9ibG9iX2Zyb21faWQoZGV2LAorCQkJCSZzdGF0ZS0+eWNiY3JfdG9fcmdiX2NzYywK KwkJCQl2YWwsCisJCQkJc2l6ZW9mKHN0cnVjdCBkcm1feWNiY3JfdG9fcmdiX2NzYyksCisJCQkJ JmR1bW15KTsKKwkJcmV0dXJuIHJldDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55 Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X3Byb3BlcnR5KSB7CisJCXJldCA9IGRybV9hdG9taWNfcmVw bGFjZV9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoZGV2LAorCQkJCSZzdGF0ZS0+eWNiY3JfdG9fcmdi X3ByZW9mZnNldCwKKwkJCQl2YWwsCisJCQkJc2l6ZW9mKHN0cnVjdCBkcm1feWNiY3JfdG9fcmdi X3ByZW9mZnNldCksCisJCQkJJmR1bW15KTsKKwkJcmV0dXJuIHJldDsKIAl9IGVsc2UgaWYgKHBs YW5lLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eSkgewogCQlyZXR1cm4gcGxhbmUtPmZ1bmNz LT5hdG9taWNfc2V0X3Byb3BlcnR5KHBsYW5lLCBzdGF0ZSwKIAkJCQlwcm9wZXJ0eSwgdmFsKTsK QEAgLTgzNCw2ICs4NTIsMTQgQEAgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkqdmFsID0gc3RhdGUtPnJvdGF0aW9uOwogCX0gZWxz ZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnpwb3NfcHJvcGVydHkpIHsKIAkJKnZhbCA9IHN0YXRl LT56cG9zOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX3RvX3JnYl9tb2Rl X3Byb3BlcnR5KSB7CisJCSp2YWwgPSBzdGF0ZS0+eWNiY3JfdG9fcmdiX21vZGU7CisJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSkgeworCQkq dmFsID0gc3RhdGUtPnljYmNyX3RvX3JnYl9jc2MgPworCQkJc3RhdGUtPnljYmNyX3RvX3JnYl9j c2MtPmJhc2UuaWQgOiAwOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX3Rv X3JnYl9wcmVvZmZzZXRfcHJvcGVydHkpIHsKKwkJKnZhbCA9IHN0YXRlLT55Y2Jjcl90b19yZ2Jf cHJlb2Zmc2V0ID8KKwkJCXN0YXRlLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0LT5iYXNlLmlkIDog MDsKIAl9IGVsc2UgaWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewogCQly ZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KHBsYW5lLCBzdGF0ZSwgcHJv cGVydHksIHZhbCk7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKaW5k ZXggYzM5OTRiNC4uODlmZDgyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKQEAg LTMxOTYsNiArMzE5NiwxMiBAQCB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogewogCW1lbWNweShzdGF0ZSwgcGxh bmUtPnN0YXRlLCBzaXplb2YoKnN0YXRlKSk7CiAKKwlpZiAoc3RhdGUtPnljYmNyX3RvX3JnYl9j c2MpCisJCWRybV9wcm9wZXJ0eV9ibG9iX2dldChzdGF0ZS0+eWNiY3JfdG9fcmdiX2NzYyk7CisK KwlpZiAoc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQpCisJCWRybV9wcm9wZXJ0eV9ibG9i X2dldChzdGF0ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCk7CisKIAlpZiAoc3RhdGUtPmZiKQog CQlkcm1fZnJhbWVidWZmZXJfZ2V0KHN0YXRlLT5mYik7CiAKQEAgLTMyMzYsNiArMzI0Miw5IEBA IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKgogICovCiB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJf cGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKKwlk cm1fcHJvcGVydHlfYmxvYl9wdXQoc3RhdGUtPnljYmNyX3RvX3JnYl9jc2MpOworCWRybV9wcm9w ZXJ0eV9ibG9iX3B1dChzdGF0ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCk7CisKIAlpZiAoc3Rh dGUtPmZiKQogCQlkcm1fZnJhbWVidWZmZXJfcHV0KHN0YXRlLT5mYik7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9j b2xvcl9tZ210LmMKaW5kZXggY2MyM2I5YS4uYmFkYWRkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9jb2xvcl9tZ210LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9t Z210LmMKQEAgLTI5LDkgKzI5LDE0IEBACiAvKioKICAqIERPQzogb3ZlcnZpZXcKICAqCi0gKiBD b2xvciBtYW5hZ2VtZW50IG9yIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGlzIHN1cHBvcnRlZCB0 aHJvdWdoIGEgc2V0IG9mIDUKLSAqIHByb3BlcnRpZXMgb24gdGhlICZkcm1fY3J0YyBvYmplY3Qu IFRoZXkgYXJlIHNldCB1cCBieSBjYWxsaW5nCi0gKiBkcm1fY3J0Y19lbmFibGVfY29sb3JfbWdt dCgpLgorICogQ29sb3IgbWFuYWdlbWVudCBvciBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbiBD UlRDcyBpcyBzdXBwb3J0ZWQKKyAqIHRocm91Z2ggYSBzZXQgb2YgNSBwcm9wZXJ0aWVzIG9uIHRo ZSAmZHJtX2NydGMgb2JqZWN0LiBUaGV5IGFyZSBzZXQKKyAqIHVwIGJ5IGNhbGxpbmcgZHJtX2Ny dGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KKyAqCisgKiBDb2xvciBzcGFjZSBjb252ZXJzaW9ucyBm cm9tIFlDYkNyIHRvIFJHQiBjb2xvciBzcGFjZSBpbiBwbGFuZXMgaXMKKyAqIHN1cHBvcnRlciB0 cm91Z2ggMyBvcHRpb25hbCBwcm9wZXJ0aWVzIGluICZkcm1fcGxhbmUgb2JqZWN0LgorICoKKyAq IFRoZSAmZHJtX2NydGMgb2JqZWN0J3MgcHJvcGVydGllcyBhcmU6CiAgKgogICogIkRFR0FNTUFf TFVU4oCdOgogICoJQmxvYiBwcm9wZXJ0eSB0byBzZXQgdGhlIGRlZ2FtbWEgbG9va3VwIHRhYmxl IChMVVQpIG1hcHBpbmcgcGl4ZWwgZGF0YQpAQCAtODUsNiArOTAsMjggQEAKICAqIGRybV9tb2Rl X2NydGNfc2V0X2dhbW1hX3NpemUoKS4gRHJpdmVycyB3aGljaCBzdXBwb3J0IGJvdGggc2hvdWxk IHVzZQogICogZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCgpIHRvIGFsaWFzIHRo ZSBsZWdhY3kgZ2FtbWEgcmFtcCB3aXRoIHRoZQogICogIkdBTU1BX0xVVCIgcHJvcGVydHkgYWJv dmUuCisgKgorICogVGhlICZkcm1fcGxhbmUgb2JqZWN0J3MgcHJvcGVydGllcyBhcmU6CisgKgor ICogIllDQkNSX1RPX1JHQl9NT0RFIgorICogCU9wdGlvbmFsIHBsYW5lIGVudW0gcHJvcGVydHkg dG8gY29uZmlndXJlIFlDYkNyIHRvIFJHQgorICogCWNvbnZlcnNpb24uIFRoZSBwb3NzaWJsZSBt b2RlcyBpbmNsdWRlIGEgbnVtYmVyIG9mIHN0YW5kYXJkCisgKiAJY29udmVyc2lvbnMgYW5kIGEg cG9zc2liaWxpdHkgdG8gc2VsZWN0IGN1c3RvbSBjb252ZXJzaW9uCisgKiAJbWF0cml4IGFuZCBw cmVvZmZzZXQgdmVjdG9yLiBUaGUgZHJpdmVyIHNob3VsZCBzZWxlY3QgdGhlCisgKglzdXBwb3J0 ZWQgc3Vic2V0IG9mIG9mIHRoZSBtb2Rlcy4KKyAqCisgKiAiWUNCQ1JfVE9fUkdCX0NTQyIKKyAq CU9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IGJsb2IgdG8gc2V0IFlDYkNyIHRvIFJHQiBjb252ZXJz aW9uCisgKgltYXRyaXguIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdCBkcm1feWNiY3JfdG9fcmdi X2NzYyB3aGljaCBpcworICoJZGVmaW5lZCBpbiB1YXBpL2RybS9kcm1fbW9kZS5oLiBXaGV0aGVy IHRoaXMgcHJvcGVydHkgaXMKKyAqCWFjdGl2ZSBkZXBlbmRlbnQgb24gWUNCQ1JfVE9fUkdCX01P REUgcHJvcGVydHkuCisgKgorICogIllDQkNSX1RPX1JHQl9QUkVPRkZTRVQiCisgKglPcHRpb25h bCBwbGFuZSBwcm9wZXJ0eSBibG9iIHRvIGNvbmZpZ3VyZSBZQ2JDciBvZmZzZXQgYmVmb3JlCisg KglZQ2JDciB0byBSR0IgQ1NDIGlzIGFwcGxpZWQuIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdAor ICoJZHJtX3ljYmNyX3RvX3JnYl9wcmVvZmZzZXQgd2hpY2ggaXMgZGVmaW5lZCBpbgorICoJdWFw aS9kcm0vZHJtX21vZGUuaC4gV2hldGhlciB0aGlzIHByb3BlcnR5IGlzIGFjdGl2ZSBkZXBlbmRl bnQKKyAqCW9uIFlDQkNSX1RPX1JHQl9NT0RFIHByb3BlcnR5LgogICovCiAKIC8qKgpAQCAtMzMw LDMgKzM1NywxMDYgQEAgaW50IGRybV9tb2RlX2dhbW1hX2dldF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKIAlyZXR1cm4gcmV0Owog fQorCitzdGF0aWMgY2hhciAqeWNiY3JfdG9fcmdiX21vZGVfbmFtZVtdID0geworCVtEUk1fUExB TkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDYwMV9GVUxMXSA9CisJCSJZQ2JDciBCVC42MDEg bGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAorCVtEUk1fUExBTkVfWUNC Q1JfQlQ2MDFfRlVMTF9UT19SR0JfQlQ2MDFfRlVMTF0gPQorCQkiWUNiQ3IgQlQuNjAxIGZ1bGwg cmFuZ2UgVE8gUkdCIEJULjYwMSBmdWxsIHJhbmdlIiwKKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5 X0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQorCQkiWUNiQ3IgQlQuNzA5IGxpbWl0ZWQgcmFuZ2Ug VE8gUkdCIEJULjcwOSBmdWxsIHJhbmdlIiwKKwlbRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1f VE9fUkdCX0JUMjAyMF9GVUxMXSA9CisJCSJZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2UgVE8g UkdCIEJULjIwMjAgZnVsbCByYW5nZSIsCisJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9f UkdCX0JUNzA5X0ZVTExdID0KKwkJIllDYkNyIEJULjYwMSBsaW1pdGVkIHJhbmdlIFRPIFJHQiBC VC43MDkgZnVsbCByYW5nZSIsCisJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JU MjAyMF9GVUxMXSA9CisJCSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuMjAy MCBmdWxsIHJhbmdlIiwKKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQ2MDFf RlVMTF0gPQorCQkiWUNiQ3IgQlQuNzA5IGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjYwMSBmdWxs IHJhbmdlIiwKKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQyMDIwX0ZVTExd ID0KKwkJIllDYkNyIEJULjcwOSBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC4yMDIwIGZ1bGwgcmFu Z2UiLAorCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQ2MDFfRlVMTF0gPQor CQkiWUNiQ3IgQlQuMjAyMCBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIs CisJW0RSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDcwOV9GVUxMXSA9CisJCSJZ Q2JDciBCVC4yMDIwIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjcwOSBmdWxsIHJhbmdlIiwKKwlb RFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVF0gPQorCQkiWUNiQ3IgVE8g UkdCIENTQyBsaW1pdGVkIHJhbmdlIHByZW9mZnNldCIsCisJW0RSTV9QTEFORV9ZQ0JDUl9UT19S R0JfQ1NDX0ZVTExfUFJFT0ZGU0VUXSA9CisJCSJZQ2JDciBUTyBSR0IgQ1NDIGZ1bGwgcmFuZ2Ug cHJlb2Zmc2V0IiwKKwlbRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfUFJFT0ZGU0VUX1ZFQ1RP Ul0gPQorCQkiWUNCQ1IgVE8gUkdCIENTQyBwcmVvZmZzZXQgdmVjdG9yIiwKK307CisKKy8qKgor ICogZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl90b19yZ2JfcHJvcGVydGllcyAtIHljYmNyIHRvIHJn YiByZWxhdGVkIHByb3BlcnRpZXMKKyAqIEBlbnVtX2xpc3Q6IGRybV9wcm9wX2VudW1fbGlzdCBh cnJheSBvZiBzdXBwb3J0ZWQgbW9kZXMgd2l0aG91dCBuYW1lcworICogQGVudW1fbGlzdF9sZW46 IGxlbmd0aCBvZiBlbnVtX2xpc3QgYXJyYXkKKyAqIEBkZWZhdWx0X21vZGU6IGRlZmF1bHQgY3Nj IG1vZGUKKyAqCisgKiBDcmVhdGUgYW5kIGF0dGFjaCBwbGFuZSBzcGVjaWZpYyBZQ2JDciB0byBS R0IgY29udmVyc2lvbiByZWxhdGVkCisgKiBwcm9wZXJ0aWVzIHRvIHRvIHRoZSBkcm1fcGxhbmUg b2JqZWN0LiBUaGUgWUNCQ1JfVE9fUkdCX01PREUgcHJvcGV0eQorICogY3JlYXRlZCBhbmQgYW4g dGhlIHN1cHBvcnRlZCBtb2RlcyBzaG91bGQgYmUgcHJvdmlkZWQgdGhlIGVudW1fbGlzdAorICog cGFyYW1ldGVyLiBZQ0JDUl9UT19SR0JfQ1NDIGFuZCBZQ0JDUl9UT19SR0JfUFJFT0ZGU0VUIHBy b3BlcnRpZXMgYXJlCisgKiBjcmVhdGVkIGJhc2VkIG9uIHN1cHBvcnRlZCBjb252ZXJzaW9uIG1v ZGVzLiBUaGUgZW51bV9saXN0IHBhcmFtZXRlcgorICogc2hvdWxkIG5vdCBjb250YWluIHRoZSBl bnVtIG5hbWVzLCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBuYW1lcyBhcmUKKyAqIGFkZGVkIGJ5IHRo aXMgZnVuY3Rpb24uCisgKi8KK2ludCBkcm1fcGxhbmVfY3JlYXRlX3ljYmNyX3RvX3JnYl9wcm9w ZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJc3RydWN0IGRybV9wcm9wX2VudW1f bGlzdCAqZW51bV9saXN0LAorCQkJdW5zaWduZWQgaW50IGVudW1fbGlzdF9sZW4sCisJCQllbnVt IGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSBkZWZhdWx0X21vZGUpCit7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsK Kwlib29sIHljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gZmFsc2U7CisJYm9vbCB5Y2Jjcl90b19y Z2JfcHJlb2Zmc2V0X2NyZWF0ZSA9IGZhbHNlOworCWludCBpOworCisJaWYgKFdBUk5fT04ocGxh bmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5ICE9IE5VTEwpKQorCQlyZXR1cm4gLUVFWElT VDsKKworCWZvciAoaSA9IDA7IGkgPCBlbnVtX2xpc3RfbGVuOyBpKyspIHsKKwkJZW51bSBkcm1f cGxhbmVfeWNiY3JfdG9fcmdiX21vZGUgbW9kZSA9IGVudW1fbGlzdFtpXS50eXBlOworCisJCWVu dW1fbGlzdFtpXS5uYW1lID0geWNiY3JfdG9fcmdiX21vZGVfbmFtZVttb2RlXTsKKworCQlpZiAo bW9kZSA9PSBEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19MSU1fUFJFT0ZGU0VUIHx8CisJCSAg ICBtb2RlID09IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0ZVTExfUFJFT0ZGU0VUKQorCQkJ eWNiY3JfdG9fcmdiX2NzY19jcmVhdGUgPSB0cnVlOworCisJCWlmIChtb2RlID09IERSTV9QTEFO RV9ZQ0JDUl9UT19SR0JfQ1NDX1BSRU9GRlNFVF9WRUNUT1IpIHsKKwkJCXljYmNyX3RvX3JnYl9j c2NfY3JlYXRlID0gdHJ1ZTsKKwkJCXljYmNyX3RvX3JnYl9wcmVvZmZzZXRfY3JlYXRlID0gdHJ1 ZTsKKwkJfQorCX0KKworCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LCBEUk1f TU9ERV9QUk9QX0FUT01JQywKKwkJCQkJIllDQkNSX1RPX1JHQl9NT0RFIiwKKwkJCQkJZW51bV9s aXN0LCBlbnVtX2xpc3RfbGVuKTsKKwlpZiAoIXByb3ApCisJCXJldHVybiAtRU5PTUVNOworCXBs YW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eSA9IHByb3A7CisJZHJtX29iamVjdF9hdHRh Y2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCBkZWZhdWx0X21vZGUpOworCisJaWYgKHlj YmNyX3RvX3JnYl9jc2NfY3JlYXRlKSB7CisJCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRl diwgRFJNX01PREVfUFJPUF9BVE9NSUMgfAorCQkJCQkgICBEUk1fTU9ERV9QUk9QX0JMT0IsCisJ CQkJCSAgICJZQ0JDUl9UT19SR0JfQ1NDIiwgMCk7CisJCWlmICghcHJvcCkKKwkJCXJldHVybiAt RU5PTUVNOworCQlwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSA9IHByb3A7CisJCWRy bV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgMCk7CisJfQorCisJ aWYgKHljYmNyX3RvX3JnYl9wcmVvZmZzZXRfY3JlYXRlKSB7CisJCXByb3AgPSBkcm1fcHJvcGVy dHlfY3JlYXRlKGRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMgfAorCQkJCQkgICBEUk1fTU9ERV9Q Uk9QX0JMT0IsCisJCQkJCSAgICJZQ0JDUl9UT19SR0JfUFJFT0ZGU0VUIiwgMCk7CisJCWlmICgh cHJvcCkKKwkJCXJldHVybiAtRU5PTUVNOworCQlwbGFuZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNl dF9wcm9wZXJ0eSA9IHByb3A7CisJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+ YmFzZSwgcHJvcCwgMCk7CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKaW5kZXgg YmM3MWFhMi4uNGM3ZTgyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwpAQCAtMjQ0LDYgKzI0NCwxNiBAQCB2 b2lkIGRybV9wbGFuZV9jbGVhbnVwKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCiAJa2ZyZWUo cGxhbmUtPm5hbWUpOwogCisJaWYgKHBsYW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eSkK KwkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBwbGFuZS0+eWNiY3JfdG9fcmdiX21vZGVfcHJv cGVydHkpOworCisJaWYgKHBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5KQorCQlkcm1f cHJvcGVydHlfZGVzdHJveShkZXYsIHBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5KTsK KworCWlmIChwbGFuZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSkKKwkJZHJtX3By b3BlcnR5X2Rlc3Ryb3koZGV2LAorCQkJCSAgICAgcGxhbmUtPnljYmNyX3RvX3JnYl9wcmVvZmZz ZXRfcHJvcGVydHkpOworCiAJbWVtc2V0KHBsYW5lLCAwLCBzaXplb2YoKnBsYW5lKSk7CiB9CiBF WFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jbGVhbnVwKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9jb2xvcl9tZ210LmggYi9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCmluZGV4IDAz YTU5Y2IuLmEyMGIzZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmgK KysrIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lu Y2x1ZGUgPGxpbnV4L2N0eXBlLmg+CiAKIHN0cnVjdCBkcm1fY3J0YzsKK3N0cnVjdCBkcm1fcGxh bmU7CitzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0OwogCiB1aW50MzJfdCBkcm1fY29sb3JfbHV0 X2V4dHJhY3QodWludDMyX3QgdXNlcl9pbnB1dCwgdWludDMyX3QgYml0X3ByZWNpc2lvbik7CiAK QEAgLTM3LDQgKzM5LDI1IEBAIHZvaWQgZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogaW50IGRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCQkJCSBpbnQgZ2FtbWFfc2l6ZSk7CiAKK2VudW0gZHJtX3BsYW5l X3ljYmNyX3RvX3JnYl9tb2RlIHsKKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9C VDYwMV9GVUxMID0gMCwKKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfRlVMTF9UT19SR0JfQlQ2MDFf RlVMTCwKKwlEUk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElNX1RPX1JHQl9CVDcwOV9GVUxMLAorCURS TV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDIwMjBfRlVMTCwKKwlEUk1fUExBTkVf WUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDcwOV9GVUxMLAorCURSTV9QTEFORV9ZQ0JDUl9CVDYw MV9MSU1fVE9fUkdCX0JUMjAyMF9GVUxMLAorCURSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9f UkdCX0JUNjAxX0ZVTEwsCisJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQyMDIw X0ZVTEwsCisJRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNjAxX0ZVTEwsCisJ RFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNzA5X0ZVTEwsCisJRFJNX1BMQU5F X1lDQkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVCwKKwlEUk1fUExBTkVfWUNCQ1JfVE9fUkdC X0NTQ19GVUxMX1BSRU9GRlNFVCwKKwlEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19QUkVPRkZT RVRfVkVDVE9SLAorfTsKKworaW50IGRybV9wbGFuZV9jcmVhdGVfeWNiY3JfdG9fcmdiX3Byb3Bl cnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQlzdHJ1Y3QgZHJtX3Byb3BfZW51bV9s aXN0ICplbnVtX2xpc3QsCisJCQl1bnNpZ25lZCBpbnQgZW51bV9saXN0X2xlbiwKKwkJCWVudW0g ZHJtX3BsYW5lX3ljYmNyX3RvX3JnYl9tb2RlIGRlZmF1bHRfbW9kZSk7CisKICNlbmRpZgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUu aAppbmRleCA5YWIzZTcwLi40MWRjZGUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxh bmUuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaApAQCAtMjYsNiArMjYsNyBAQAogI2lu Y2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgogI2luY2x1ZGUg PGRybS9kcm1fbW9kZV9vYmplY3QuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NvbG9yX21nbXQuaD4K IAogc3RydWN0IGRybV9jcnRjOwogc3RydWN0IGRybV9wcmludGVyOwpAQCAtMTEyLDYgKzExMywx MSBAQCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKIAl1bnNpZ25lZCBpbnQgenBvczsKIAl1bnNp Z25lZCBpbnQgbm9ybWFsaXplZF96cG9zOwogCisJLyogWUNiQ3IgdG8gUkdCIGNvbnZlcnNpb24g Ki8KKwllbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSB5Y2Jjcl90b19yZ2JfbW9kZTsK KwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnljYmNyX3RvX3JnYl9jc2M7CisJc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICp5Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0OworCiAJLyogQ2xpcHBlZCBj b29yZGluYXRlcyAqLwogCXN0cnVjdCBkcm1fcmVjdCBzcmMsIGRzdDsKIApAQCAtNTIzLDYgKzUy OSwxMCBAQCBzdHJ1Y3QgZHJtX3BsYW5lIHsKIAogCXN0cnVjdCBkcm1fcHJvcGVydHkgKnpwb3Nf cHJvcGVydHk7CiAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcm90YXRpb25fcHJvcGVydHk7CisKKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5ICp5Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eTsKKwlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICp5Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5OworCXN0cnVjdCBkcm1fcHJv cGVydHkgKnljYmNyX3RvX3JnYl9wcmVvZmZzZXRfcHJvcGVydHk7CiB9OwogCiAjZGVmaW5lIG9i al90b19wbGFuZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9wbGFuZSwgYmFzZSkKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0v ZHJtX21vZGUuaAppbmRleCA4YzY3ZmMwLi4yN2UwYmVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2RybV9tb2RlLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCkBAIC01 NDMsNiArNTQzLDE4IEBAIHN0cnVjdCBkcm1fY29sb3JfbHV0IHsKIAlfX3UxNiByZXNlcnZlZDsK IH07CiAKK3N0cnVjdCBkcm1feWNiY3JfdG9fcmdiX2NzYyB7CisJLyogQ29udmVyc2lvbiBtYXRy aXggaW4gMi1jb21wbGVtZW50IHMzMi4zMiBmb3JtYXQuICovCisJX19zNjQgcnksIHJjYiwgcmNy OworCV9fczY0IGd5LCBnY2IsIGdjcjsKKwlfX3M2NCBieSwgYmNiLCBiY3I7Cit9OworCitzdHJ1 Y3QgZHJtX3ljYmNyX3RvX3JnYl9wcmVvZmZzZXQgeworCS8qIE9mZnNldCB2ZWN0b3IgaW4gMi1j b21wbGVtZW50IHMuMzIgZm9ybWF0LiAqLworCV9fczMyIHksIGNiLCBjcjsKK307CisKICNkZWZp bmUgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UIDB4MDEKICNkZWZpbmUgRFJNX01PREVfUEFHRV9G TElQX0FTWU5DIDB4MDIKICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdFVF9BQlNPTFVU RSAweDQKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK