From mboxrd@z Thu Jan 1 00:00:00 1970 From: Swati Sharma Subject: [v7][PATCH 03/12] drm/i915: Add func to compare hw/sw gamma lut Date: Wed, 29 May 2019 15:20:53 +0530 Message-ID: <1559123462-7343-4-git-send-email-swati2.sharma@intel.com> References: <1559123462-7343-1-git-send-email-swati2.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id D37B189F75 for ; Wed, 29 May 2019 09:54:39 +0000 (UTC) In-Reply-To: <1559123462-7343-1-git-send-email-swati2.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org djM6IC1SZWJhc2UKdjQ6IC1SZW5hbWVkIGludGVsX2NvbXBhcmVfY29sb3JfbHV0KCkgdG8gaW50 ZWxfY29sb3JfbHV0X2VxdWFsKCkgW0phbmldCiAgICAtQWRkZWQgdGhlIGRlZmF1bHQgbGFiZWwg YWJvdmUgdGhlIGNvcnJlY3QgbGFiZWwgW0phbmldCiAgICAtQ29ycmVjdGVkIHNtYXRjaCB3YXJu ICJ2YXJpYWJsZSBkZXJlZmVyZW5jZWQgYmVmb3JlIGNoZWNrIgogICAgIFtEYW4gQ2FycGVudGVy XQp2NTogLUFkZGVkIGNvbmRpdGlvbiAoIWJsb2IxICYmICFibG9iMikgcmV0dXJuIHRydWUgW0ph bmldCiAgICAtQ2FsbGVkIFBJUEVfQ09ORl9DSEVDS19DT0xPUl9MVVQgaW5zaWRlIGlmICghYWRq dXN0KSBbSmFuaV0KICAgIC1BZGRlZCAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0NPTE9SX0xVVCBb SmFuaV0KdjY6IC1BZGRlZCBmdW5jIGludGVsX2NvbG9yX2dldF9iaXRfcHJlY2lzaW9uKCkgdG8g Z2V0IGJpdCBwcmVjaXNpb24gZm9yCiAgICAgZ2FtbWEgYW5kIGRlZ2FtbWEgbHV0IHJlYWRvdXQg ZGVwZW5kaW5nIHVwb24gcGxhdGZvcm0gYW5kCiAgICAgY29ycmVzcG9uZGluZyB0byBsb2FkX2x1 dHMoKSBbQW5raXRdCiAgICAtQWRkZWQgZGVidWcgbG9nIGZvciBjb2xvciBwYXJhIGluIGludGVs X2R1bXBfcGlwZV9jb25maWcgW0phbmldCiAgICAtTWFkZSBwYXRjaDExIGFzIHBhdGNoMyBbSmFu aV0Kdjc6IC1SZW5hbWVkIGZ1bmMgaW50ZWxfY29sb3JfZ2V0X2JpdF9wcmVjaXNpb24oKSB0bwog ICAgIGludGVsX2NvbG9yX2dldF9nYW1tYV9iaXRfcHJlY2lzaW9uKCkKICAgIC1BZGRlZCBzZXBh cmF0ZSBmdW5jdGlvbi9wbGF0Zm9ybSBmb3IgZ2FtbWEgYml0IHByZWNpc2lvbiBbVmlsbGVdCiAg ICAtQ29ycmVjdGVkIGNoZWNrcGF0Y2ggd2FybmluZ3MKClNpZ25lZC1vZmYtYnk6IFN3YXRpIFNo YXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29sb3IuYyAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5oICAgfCAgIDcgKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAyNCArKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCAxOTcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCmluZGV4IDUw Yjk4ZWUuLmIyMGEyYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwpAQCAtMTI1MSw2 ICsxMjUxLDE3MiBAQCBzdGF0aWMgaW50IGljbF9jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBpOXh4X2dh bW1hX3ByZWNpc2lvbihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlp ZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKKwkJcmV0dXJuIDA7CisKKwlzd2l0Y2ggKGNy dGNfc3RhdGUtPmdhbW1hX21vZGUpIHsKKwljYXNlIEdBTU1BX01PREVfTU9ERV84QklUOgorCQly ZXR1cm4gODsKKwljYXNlIEdBTU1BX01PREVfTU9ERV8xMEJJVDoKKwkJcmV0dXJuIDE2OworCWRl ZmF1bHQ6CisJCU1JU1NJTkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsKKwkJcmV0dXJu IDA7CisJfQorfQorCitzdGF0aWMgaW50IGNodl9nYW1tYV9wcmVjaXNpb24oc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJaWYgKGNydGNfc3RhdGUtPmNnbV9tb2RlICYg Q0dNX1BJUEVfTU9ERV9HQU1NQSkKKwkJcmV0dXJuIDEwOworCWVsc2UKKwkJcmV0dXJuIGk5eHhf Z2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUpOworfQorCitzdGF0aWMgaW50IGlsa19nYW1tYV9w cmVjaXNpb24oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJaWYgKCFj cnRjX3N0YXRlLT5nYW1tYV9lbmFibGUpCisJCXJldHVybiAwOworCisJaWYgKChjcnRjX3N0YXRl LT5jc2NfbW9kZSAmIENTQ19QT1NJVElPTl9CRUZPUkVfR0FNTUEpID09IDApCisJCXJldHVybiAw OworCisJc3dpdGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKSB7CisJY2FzZSBHQU1NQV9NT0RF X01PREVfOEJJVDoKKwkJcmV0dXJuIDg7CisJY2FzZSBHQU1NQV9NT0RFX01PREVfMTBCSVQ6CisJ CXJldHVybiAxMDsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSk7CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIGludCBpdmJfZ2FtbWFfcHJlY2lz aW9uKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWlmICghY3J0Y19z dGF0ZS0+Z2FtbWFfZW5hYmxlKQorCQlyZXR1cm4gMDsKKworCWlmICgoY3J0Y19zdGF0ZS0+Y3Nj X21vZGUgJiBDU0NfUE9TSVRJT05fQkVGT1JFX0dBTU1BKSA9PSAwKQorCQlyZXR1cm4gMDsKKwor CXN3aXRjaCAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSkgeworCWNhc2UgR0FNTUFfTU9ERV9NT0RF XzhCSVQ6CisJCXJldHVybiA4OworCWNhc2UgR0FNTUFfTU9ERV9NT0RFX1NQTElUOgorCWNhc2Ug R0FNTUFfTU9ERV9NT0RFXzEwQklUOgorCQlyZXR1cm4gMTA7CisJZGVmYXVsdDoKKwkJTUlTU0lO R19DQVNFKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpOworCQlyZXR1cm4gMDsKKwl9Cit9CisKK3N0 YXRpYyBpbnQgZ2xrX2dhbW1hX3ByZWNpc2lvbihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKK3sKKwlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKKwkJcmV0dXJuIDA7 CisKKwlpZiAoKGNydGNfc3RhdGUtPmNzY19tb2RlICYgQ1NDX1BPU0lUSU9OX0JFRk9SRV9HQU1N QSkgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUp IHsKKwljYXNlIEdBTU1BX01PREVfTU9ERV84QklUOgorCQlyZXR1cm4gODsKKwljYXNlIEdBTU1B X01PREVfTU9ERV8xMEJJVDoKKwkJcmV0dXJuIDEwOworCWRlZmF1bHQ6CisJCU1JU1NJTkdfQ0FT RShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsKKwkJcmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMg aW50IGljbF9nYW1tYV9wcmVjaXNpb24oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCit7CisJaWYgKChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgUFJFX0NTQ19HQU1NQV9FTkFC TEUpID09IDApCisJCXJldHVybiAwOworCisJc3dpdGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2Rl ICYgR0FNTUFfTU9ERV9NT0RFX01BU0spIHsKKwljYXNlIEdBTU1BX01PREVfTU9ERV84QklUOgor CQlyZXR1cm4gODsKKwljYXNlIEdBTU1BX01PREVfTU9ERV8xMEJJVDoKKwkJcmV0dXJuIDEwOwor CWRlZmF1bHQ6CisJCU1JU1NJTkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsKKwkJcmV0 dXJuIDA7CisJfQorfQorCitpbnQgaW50ZWxfY29sb3JfZ2V0X2dhbW1hX2JpdF9wcmVjaXNpb24o c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CisK KwlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKSB7CisJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKKwkJCXJldHVybiBjaHZfZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUpOworCQllbHNlCisJ CQlyZXR1cm4gaTl4eF9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7CisJfSBlbHNlIHsKKwkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCisJCQlyZXR1cm4gaWNsX2dhbW1hX3ByZWNp c2lvbihjcnRjX3N0YXRlKTsKKwkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwg SVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCisJCQlyZXR1cm4gZ2xrX2dhbW1hX3ByZWNpc2lvbihj cnRjX3N0YXRlKTsKKwkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQorCQkJcmV0 dXJuIGl2Yl9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7CisJCWVsc2UKKwkJCXJldHVybiBp bGtfZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUpOworCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW5saW5lIGJvb2wgZXJyX2NoZWNrKHN0cnVjdCBkcm1fY29sb3JfbHV0ICpzd19sdXQs CisJCQkgICAgIHN0cnVjdCBkcm1fY29sb3JfbHV0ICpod19sdXQsIHUzMiBlcnIpCit7CisJcmV0 dXJuICgoYWJzKChsb25nKWh3X2x1dC0+cmVkIC0gc3dfbHV0LT5yZWQpKSA8PSBlcnIpICYmCisJ CSgoYWJzKChsb25nKWh3X2x1dC0+Ymx1ZSAtIHN3X2x1dC0+Ymx1ZSkpIDw9IGVycikgJiYKKwkJ KChhYnMoKGxvbmcpaHdfbHV0LT5ncmVlbiAtIHN3X2x1dC0+Z3JlZW4pKSA8PSBlcnIpOworfQor Citib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJs b2IxLAorCQkJICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMiwKKwkJCSAgIHUzMiBi aXRfcHJlY2lzaW9uKQoreworCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpzd19sdXQsICpod19sdXQ7 CisJaW50IHN3X2x1dF9zaXplLCBod19sdXRfc2l6ZSwgaTsKKwl1MzIgZXJyOworCisJaWYgKCFi bG9iMSAmJiAhYmxvYjIpCisJCXJldHVybiB0cnVlOworCisJaWYgKCFibG9iMSkKKwkJcmV0dXJu IHRydWU7CisKKwlpZiAoIWJsb2IyKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzd19sdXRfc2l6ZSA9 IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iMSk7CisJaHdfbHV0X3NpemUgPSBkcm1fY29sb3JfbHV0 X3NpemUoYmxvYjIpOworCisJaWYgKHN3X2x1dF9zaXplICE9IGh3X2x1dF9zaXplKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlzd19sdXQgPSBibG9iMS0+ZGF0YTsKKwlod19sdXQgPSBibG9iMi0+ZGF0 YTsKKworCWVyciA9IDB4ZmZmZiA+PiBiaXRfcHJlY2lzaW9uOworCisJZm9yIChpID0gMDsgaSA8 IHN3X2x1dF9zaXplOyBpKyspIHsKKwkJaWYgKCFlcnJfY2hlY2soJmh3X2x1dFtpXSwgJnN3X2x1 dFtpXSwgZXJyKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwog dm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmgKaW5kZXggMDU3ZThhYy4uMDJlYTFiYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5oCkBAIC02LDEzICs2LDIwIEBACiAjaWZuZGVmIF9fSU5U RUxfQ09MT1JfSF9fCiAjZGVmaW5lIF9fSU5URUxfQ09MT1JfSF9fCiAKKyNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgorCiBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKIHN0cnVjdCBpbnRlbF9jcnRj Oworc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iOwogCiB2b2lkIGludGVsX2NvbG9yX2luaXQoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpOwogaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfY29sb3Jf bG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZv aWQgaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Citib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Js b2IgKmJsb2IxLAorCQkJICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMiwKKwkJCSAg IHUzMiBiaXRfcHJlY2lzaW9uKTsKK2ludCBpbnRlbF9jb2xvcl9nZXRfZ2FtbWFfYml0X3ByZWNp c2lvbihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAKICNlbmRpZiAvKiBf X0lOVEVMX0NPTE9SX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4 IDNlMDEwMjguLmI4ZmYzZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAg LTExNTcwLDYgKzExNTcwLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnN0YXRl LT5iYXNlLmRzdCksCiAJCQkJICAgICAgZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+YmFzZS5kc3Qp KTsKIAl9CisKKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJCURSTV9ERUJVR19LTVMo ImNnbV9tb2RlOiVkIGdhbW1hX21vZGU6JWQgZ2FtbWFfZW5hYmxlOiVkIGNzY19lbmFibGU6JWRc biIsCisJCQkgICAgICAgcGlwZV9jb25maWctPmNnbV9tb2RlLCBwaXBlX2NvbmZpZy0+Z2FtbWFf bW9kZSwKKwkJCSAgICAgICBwaXBlX2NvbmZpZy0+Z2FtbWFfZW5hYmxlLCBwaXBlX2NvbmZpZy0+ Y3NjX2VuYWJsZSk7CisJZWxzZQorCQlEUk1fREVCVUdfS01TKCJjc2NfbW9kZTolZCBnYW1tYV9t b2RlOiVkIGdhbW1hX2VuYWJsZTolZCBjc2NfZW5hYmxlOiVkXG4iLAorCQkJICAgICAgIHBpcGVf Y29uZmlnLT5jc2NfbW9kZSwgcGlwZV9jb25maWctPmdhbW1hX21vZGUsCisJCQkgICAgICAgcGlw ZV9jb25maWctPmdhbW1hX2VuYWJsZSwgcGlwZV9jb25maWctPmNzY19lbmFibGUpOwogfQogCiBz dGF0aWMgYm9vbCBjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKQEAgLTExOTQ3LDYgKzExOTU2LDcgQEAgc3RhdGljIGJvb2wgZmFzdGJv b3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgIGJvb2wg YWRqdXN0KQogewogCWJvb2wgcmV0ID0gdHJ1ZTsKKwl1MzIgYnBfZ2FtbWEgPSAwOwogCWJvb2wg Zml4dXBfaW5oZXJpdGVkID0gYWRqdXN0ICYmCiAJCShjdXJyZW50X2NvbmZpZy0+YmFzZS5tb2Rl LnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpICYmCiAJCSEocGlwZV9j b25maWctPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVE KTsKQEAgLTEyMDk4LDYgKzEyMTA4LDE1IEBAIHN0YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0gXAogfSB3aGlsZSAoMCkKIAor I2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQ09MT1JfTFVUKG5hbWUsIGJpdF9wcmVjaXNpb24pIGRv IHsgXAorCWlmICghaW50ZWxfY29sb3JfbHV0X2VxdWFsKGN1cnJlbnRfY29uZmlnLT5uYW1lLCBc CisJCQkJICAgcGlwZV9jb25maWctPm5hbWUsIGJpdF9wcmVjaXNpb24pKSB7IFwKKwkJcGlwZV9j b25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnkobmFtZSksIFwKKwkJCQkiaHdfc3RhdGUgZG9l c24ndCBtYXRjaCBzd19zdGF0ZVxuIik7IFwKKwkJcmV0ID0gZmFsc2U7IFwKKwl9IFwKK30gd2hp bGUgKDApCisKICNkZWZpbmUgUElQRV9DT05GX1FVSVJLKHF1aXJrKSBcCiAJKChjdXJyZW50X2Nv bmZpZy0+cXVpcmtzIHwgcGlwZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQogCkBAIC0xMjE5 Myw2ICsxMjIxMiwxMCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCVBJUEVfQ09ORl9DSEVDS19YKGNzY19tb2RlKTsK IAkJUElQRV9DT05GX0NIRUNLX0JPT0woZ2FtbWFfZW5hYmxlKTsKIAkJUElQRV9DT05GX0NIRUNL X0JPT0woY3NjX2VuYWJsZSk7CisKKwkJYnBfZ2FtbWEgPSBpbnRlbF9jb2xvcl9nZXRfZ2FtbWFf Yml0X3ByZWNpc2lvbihwaXBlX2NvbmZpZyk7CisJCWlmIChicF9nYW1tYSkKKwkJCVBJUEVfQ09O Rl9DSEVDS19DT0xPUl9MVVQoYmFzZS5nYW1tYV9sdXQsIGJwX2dhbW1hKTsKIAl9CiAKIAlQSVBF X0NPTkZfQ0hFQ0tfQk9PTChkb3VibGVfd2lkZSk7CkBAIC0xMjI1NSw2ICsxMjI3OCw3IEBAIHN0 YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19GTEFHUwogI3VuZGVmIFBJUEVfQ09ORl9DSEVD S19DTE9DS19GVVpaWQogI3VuZGVmIFBJUEVfQ09ORl9RVUlSSworI3VuZGVmIFBJUEVfQ09ORl9D SEVDS19DT0xPUl9MVVQKIAogCXJldHVybiByZXQ7CiB9Ci0tIAoxLjkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4