From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 07/49] drm/amd/display: Add 22, 24, and 26 degamma Date: Fri, 9 Aug 2019 17:37:00 -0400 Message-ID: <20190809213742.30301-8-sunpeng.li@amd.com> References: <20190809213742.30301-1-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809213742.30301-1-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Leo Li , Nevenko Stupar , Vitaly Prosyak , Gary Kattan RnJvbTogVml0YWx5IFByb3N5YWsgPHZpdGFseS5wcm9zeWFrQGFtZC5jb20+CgpbV2h5ICYgSG93 XQpTdXBwb3J0IGRlZ2FtbWEgUk9NIGFuZCBSQU0gYmFzZWQgb24gaGFyZHdhcmUgY2FwYWJpbGl0 aWVzLgpTb21lIHJlZmFjdG9yaW5nIGludG8gY29sb3IgbW9kdWxlCgpTaWduZWQtb2ZmLWJ5OiBW aXRhbHkgUHJvc3lhayA8dml0YWx5LnByb3N5YWtAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEdhcnkg S2F0dGFuIDxHYXJ5LkthdHRhbkBhbWQuY29tPgpSZXZpZXdlZC1ieTogTmV2ZW5rbyBTdHVwYXIg PE5ldmVua28uU3R1cGFyQGFtZC5jb20+CkFja2VkLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlAYW1k LmNvbT4KQWNrZWQtYnk6IFZpdGFseSBQcm9zeWFrIDxWaXRhbHkuUHJvc3lha0BhbWQuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kYy5oICAgICAgICAgICB8ICAgNSAr LQogLi4uL2FtZC9kaXNwbGF5L21vZHVsZXMvY29sb3IvY29sb3JfZ2FtbWEuYyAgIHwgMTE2ICsr KysrKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA0NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kYy5oCmluZGV4IGM1ODVlMTZi YzlmMS4uZTNkNzcxMGI1YzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvZGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMuaApAQCAt NjE0LDkgKzYxNCwxMiBAQCBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB7CiAJVFJB TlNGRVJfRlVOQ1RJT05fVU5JVFksCiAJVFJBTlNGRVJfRlVOQ1RJT05fSExHLAogCVRSQU5TRkVS X0ZVTkNUSU9OX0hMRzEyLAotCVRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIKKwlUUkFOU0ZFUl9G VU5DVElPTl9HQU1NQTIyLAorCVRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjQsCisJVFJBTlNGRVJf RlVOQ1RJT05fR0FNTUEyNgogfTsKIAorCiBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyB7CiAJc3Ry dWN0IGtyZWYgcmVmY291bnQ7CiAJZW51bSBkY190cmFuc2Zlcl9mdW5jX3R5cGUgdHlwZTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2NvbG9yL2NvbG9y X2dhbW1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9jb2xvci9jb2xv cl9nYW1tYS5jCmluZGV4IDI5NGZlNGYwY2I2Ny4uOGIyZWU2MDZkYmMyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9jb2xvci9jb2xvcl9nYW1tYS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2NvbG9yL2NvbG9yX2dhbW1h LmMKQEAgLTU3LDEyICs1NywxMiBAQCBzdGF0aWMgc3RydWN0IHRyYW5zbGF0ZV9mcm9tX2xpbmVh cl9zcGFjZV9hcmdzIHNjcmF0Y2hfZ2FtbWFfYXJnczsKIHN0YXRpYyBzdHJ1Y3QgZml4ZWQzMV8z MiBwb3dfYnVmZmVyW05VTV9QVFNfSU5fUkVHSU9OXTsKIHN0YXRpYyBzdHJ1Y3QgZml4ZWQzMV8z MiBnYW1tYV9vZl8yOyAvLyAyXmdhbW1hCiBpbnQgcG93X2J1ZmZlcl9wdHIgPSAtMTsKLQotc3Rh dGljIGNvbnN0IGludDMyX3QgZ2FtbWFfbnVtZXJhdG9yMDFbXSA9IHsgMzEzMDgsCTE4MDAwMCwJ MH07Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBnYW1tYV9udW1lcmF0b3IwMltdID0geyAxMjkyMCwJ NDUwMCwJMH07Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBnYW1tYV9udW1lcmF0b3IwM1tdID0geyA1 NSwJOTksCTB9Owotc3RhdGljIGNvbnN0IGludDMyX3QgZ2FtbWFfbnVtZXJhdG9yMDRbXSA9IHsg NTUsCTk5LAkwfTsKLXN0YXRpYyBjb25zdCBpbnQzMl90IGdhbW1hX251bWVyYXRvcjA1W10gPSB7 IDI0MDAsCTIyMDAsIDIyMDB9OworCQkJCQkJCQkJCS8qc1JHQgkgNzA5IDIuMiAyLjQgUDMqLwor c3RhdGljIGNvbnN0IGludDMyX3QgZ2FtbWFfbnVtZXJhdG9yMDFbXSA9IHsgMzEzMDgsCTE4MDAw MCwJMCwJMCwJMH07CitzdGF0aWMgY29uc3QgaW50MzJfdCBnYW1tYV9udW1lcmF0b3IwMltdID0g eyAxMjkyMCwJNDUwMCwJMCwJMCwJMH07CitzdGF0aWMgY29uc3QgaW50MzJfdCBnYW1tYV9udW1l cmF0b3IwM1tdID0geyA1NSwJOTksCQkwLAkwLAkwfTsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGdh bW1hX251bWVyYXRvcjA0W10gPSB7IDU1LAk5OSwJCTAsCTAsCTB9Oworc3RhdGljIGNvbnN0IGlu dDMyX3QgZ2FtbWFfbnVtZXJhdG9yMDVbXSA9IHsgMjQwMCwJMjIwMCwJMjIwMCwgMjQwMCwgMjYw MH07CiAKIHN0YXRpYyBib29sIHBxX2luaXRpYWxpemVkOyAvKiA9IGZhbHNlOyAqLwogc3RhdGlj IGJvb2wgZGVfcHFfaW5pdGlhbGl6ZWQ7IC8qID0gZmFsc2U7ICovCkBAIC0yNjcsMjMgKzI2Nywy OCBAQCBzdHJ1Y3QgZGl2aWRlcnMgewogCXN0cnVjdCBmaXhlZDMxXzMyIGRpdmlkZXIzOwogfTsK IAotZW51bSBnYW1tYV90eXBlX2luZGV4IHsKLQlnYW1tYV90eXBlX2luZGV4XzJfNCwKLQlnYW1t YV90eXBlX2luZGV4XzJfMiwKLQlnYW1tYV90eXBlX2luZGV4XzJfMl9mbGF0Ci19OwogCi1zdGF0 aWMgdm9pZCBidWlsZF9jb2VmZmljaWVudHMoc3RydWN0IGdhbW1hX2NvZWZmaWNpZW50cyAqY29l ZmZpY2llbnRzLCBlbnVtIGdhbW1hX3R5cGVfaW5kZXggdHlwZSkKK3N0YXRpYyBib29sIGJ1aWxk X2NvZWZmaWNpZW50cyhzdHJ1Y3QgZ2FtbWFfY29lZmZpY2llbnRzICpjb2VmZmljaWVudHMsIGVu dW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHR5cGUpCiB7CiAKLQogCXVpbnQzMl90IGkg PSAwOwogCXVpbnQzMl90IGluZGV4ID0gMDsKKwlib29sIHJldCA9IHRydWU7CiAKLQlpZiAodHlw ZSA9PSBnYW1tYV90eXBlX2luZGV4XzJfMikKKwlpZiAodHlwZSA9PSBUUkFOU0ZFUl9GVU5DVElP Tl9TUkdCKQorCQlpbmRleCA9IDA7CisJZWxzZSBpZiAodHlwZSA9PSBUUkFOU0ZFUl9GVU5DVElP Tl9CVDcwOSkKIAkJaW5kZXggPSAxOwotCWVsc2UgaWYgKHR5cGUgPT0gZ2FtbWFfdHlwZV9pbmRl eF8yXzJfZmxhdCkKKwllbHNlIGlmICh0eXBlID09IFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIp CiAJCWluZGV4ID0gMjsKKwllbHNlIGlmICh0eXBlID09IFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1B MjQpCisJCWluZGV4ID0gMzsKKwllbHNlIGlmICh0eXBlID09IFRSQU5TRkVSX0ZVTkNUSU9OX0dB TU1BMjYpCisJCWluZGV4ID0gNDsKKwllbHNlIHsKKwkJcmV0ID0gZmFsc2U7CisJCWdvdG8gcmVs ZWFzZTsKKwl9CiAKIAlkbyB7CiAJCWNvZWZmaWNpZW50cy0+YTBbaV0gPSBkY19maXhwdF9mcm9t X2ZyYWN0aW9uKApAQCAtMjk5LDYgKzMwNCw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2NvZWZmaWNp ZW50cyhzdHJ1Y3QgZ2FtbWFfY29lZmZpY2llbnRzICpjb2VmZmljaWVudHMsIGVudW0gZ2FtCiAK IAkJKytpOwogCX0gd2hpbGUgKGkgIT0gQVJSQVlfU0laRShjb2VmZmljaWVudHMtPmEwKSk7City ZWxlYXNlOgorCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZml4ZWQzMV8zMiB0cmFu c2xhdGVfZnJvbV9saW5lYXJfc3BhY2UoCkBAIC03MzUsMTEgKzc0MiwxMiBAQCBzdGF0aWMgdm9p ZCBidWlsZF9kZV9wcShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKmRlX3BxLAogCX0KIH0KIAot c3RhdGljIHZvaWQgYnVpbGRfcmVnYW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKnJnYl9y ZWdhbW1hLAorc3RhdGljIGJvb2wgYnVpbGRfcmVnYW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFf ZXggKnJnYl9yZWdhbW1hLAogCQl1aW50MzJfdCBod19wb2ludHNfbnVtLAotCQljb25zdCBzdHJ1 Y3QgaHdfeF9wb2ludCAqY29vcmRpbmF0ZV94LCBlbnVtIGdhbW1hX3R5cGVfaW5kZXggdHlwZSkK KwkJY29uc3Qgc3RydWN0IGh3X3hfcG9pbnQgKmNvb3JkaW5hdGVfeCwgZW51bSBkY190cmFuc2Zl cl9mdW5jX3ByZWRlZmluZWQgdHlwZSkKIHsKIAl1aW50MzJfdCBpOworCWJvb2wgcmV0ID0gZmFs c2U7CiAKIAlzdHJ1Y3QgZ2FtbWFfY29lZmZpY2llbnRzICpjb2VmZjsKIAlzdHJ1Y3QgcHdsX2Zs b2F0X2RhdGFfZXggKnJnYiA9IHJnYl9yZWdhbW1hOwpAQCAtNzQ3LDkgKzc1NSwxMCBAQCBzdGF0 aWMgdm9pZCBidWlsZF9yZWdhbW1hKHN0cnVjdCBwd2xfZmxvYXRfZGF0YV9leCAqcmdiX3JlZ2Ft bWEsCiAKIAljb2VmZiA9IGt2emFsbG9jKHNpemVvZigqY29lZmYpLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIWNvZWZmKQotCQlyZXR1cm47CisJCWdvdG8gcmVsZWFzZTsKIAotCWJ1aWxkX2NvZWZmaWNp ZW50cyhjb2VmZiwgdHlwZSk7CisJaWYgKCFidWlsZF9jb2VmZmljaWVudHMoY29lZmYsIHR5cGUp KQorCQlnb3RvIHJlbGVhc2U7CiAKIAltZW1zZXQocG93X2J1ZmZlciwgMCwgTlVNX1BUU19JTl9S RUdJT04gKiBzaXplb2Yoc3RydWN0IGZpeGVkMzFfMzIpKTsKIAlwb3dfYnVmZmVyX3B0ciA9IDA7 IC8vIHNlZSB2YXJpYWJsZSBkZWZpbml0aW9uIGZvciBtb3JlIGluZm8KQEAgLTc2NSw4ICs3NzQs MTAgQEAgc3RhdGljIHZvaWQgYnVpbGRfcmVnYW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXgg KnJnYl9yZWdhbW1hLAogCQkrK2k7CiAJfQogCXBvd19idWZmZXJfcHRyID0gLTE7IC8vIHJlc2V0 IGJhY2sgdG8gbm8gb3B0aW1pemUKLQorCXJldCA9IHRydWU7CityZWxlYXNlOgogCWtmcmVlKGNv ZWZmKTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBoZXJtaXRlX3NwbGluZV9lZXRm KHN0cnVjdCBmaXhlZDMxXzMyIGlucHV0X3gsCkBAIC05NDEsMTUgKzk1MiwxOCBAQCBzdGF0aWMg Ym9vbCBidWlsZF9mcmVlc3luY19oZHIoc3RydWN0IHB3bF9mbG9hdF9kYXRhX2V4ICpyZ2JfcmVn YW1tYSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgYnVpbGRfZGVnYW1tYShzdHJ1 Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKmN1cnZlLAorc3RhdGljIGJvb2wgYnVpbGRfZGVnYW1tYShz dHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKmN1cnZlLAogCQl1aW50MzJfdCBod19wb2ludHNfbnVt LAotCQljb25zdCBzdHJ1Y3QgaHdfeF9wb2ludCAqY29vcmRpbmF0ZV94LCBlbnVtIGdhbW1hX3R5 cGVfaW5kZXggdHlwZSkKKwkJY29uc3Qgc3RydWN0IGh3X3hfcG9pbnQgKmNvb3JkaW5hdGVfeCwg ZW51bSBkY190cmFuc2Zlcl9mdW5jX3ByZWRlZmluZWQgdHlwZSkKIHsKIAl1aW50MzJfdCBpOwog CXN0cnVjdCBnYW1tYV9jb2VmZmljaWVudHMgY29lZmY7CiAJdWludDMyX3QgYmVnaW5faW5kZXgs IGVuZF9pbmRleDsKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKCFidWlsZF9jb2VmZmljaWVu dHMoJmNvZWZmLCB0eXBlKSkKKwkJZ290byByZWxlYXNlOwogCi0JYnVpbGRfY29lZmZpY2llbnRz KCZjb2VmZiwgdHlwZSk7CiAJaSA9IDA7CiAKIAkvKiBYIHBvaW50cyBpcyAyXi0yNSB0byAyXjcK QEAgLTk3OCw2ICs5OTIsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9kZWdhbW1hKHN0cnVjdCBwd2xf ZmxvYXRfZGF0YV9leCAqY3VydmUsCiAJCWN1cnZlW2ldLmIgPSBkY19maXhwdF9vbmU7CiAJCWkr KzsKIAl9CisJcmV0ID0gdHJ1ZTsKK3JlbGVhc2U6CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGlj IHZvaWQgYnVpbGRfaGxnX2RlZ2FtbWEoc3RydWN0IHB3bF9mbG9hdF9kYXRhX2V4ICpkZWdhbW1h LApAQCAtMTY3Miw2ICsxNjg5LDEyIEBAIGJvb2wgbW9kX2NvbG9yX2NhbGN1bGF0ZV9yZWdhbW1h X3BhcmFtcyhzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqb3V0cHV0X3RmLAogCQkJCU1BWF9IV19Q T0lOVFMsCiAJCQkJY29vcmRpbmF0ZXNfeCwKIAkJCQlmc19wYXJhbXMpOworCX0gZWxzZSBpZiAo dGYgPT0gVFJBTlNGRVJfRlVOQ1RJT05fSExHKSB7CisJCWJ1aWxkX2ZyZWVzeW5jX2hkcihyZ2Jf cmVnYW1tYSwKKwkJCQlNQVhfSFdfUE9JTlRTLAorCQkJCWNvb3JkaW5hdGVzX3gsCisJCQkJZnNf cGFyYW1zKTsKKwogCX0gZWxzZSB7CiAJCXRmX3B0cy0+ZW5kX2V4cG9uZW50ID0gMDsKIAkJdGZf cHRzLT54X3BvaW50X2F0X3kxX3JlZCA9IDE7CkBAIC0xNjgwLDkgKzE3MDMsNyBAQCBib29sIG1v ZF9jb2xvcl9jYWxjdWxhdGVfcmVnYW1tYV9wYXJhbXMoc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMg Km91dHB1dF90ZiwKIAogCQlidWlsZF9yZWdhbW1hKHJnYl9yZWdhbW1hLAogCQkJCU1BWF9IV19Q T0lOVFMsCi0JCQkJY29vcmRpbmF0ZXNfeCwgdGYgPT0gVFJBTlNGRVJfRlVOQ1RJT05fU1JHQiA/ IGdhbW1hX3R5cGVfaW5kZXhfMl80IDoKLQkJCQkJdGYgPT0gVFJBTlNGRVJfRlVOQ1RJT05fR0FN TUEyMiA/Ci0JCQkJCWdhbW1hX3R5cGVfaW5kZXhfMl8yX2ZsYXQgOiBnYW1tYV90eXBlX2luZGV4 XzJfMik7CisJCQkJY29vcmRpbmF0ZXNfeCwgdGYpOwogCX0KIAltYXBfcmVnYW1tYV9od190b194 X3VzZXIocmFtcCwgY29lZmYsIHJnYl91c2VyLAogCQkJY29vcmRpbmF0ZXNfeCwgYXhpc194LCBy Z2JfcmVnYW1tYSwKQEAgLTE4ODMsMTMgKzE5MDQsMTkgQEAgYm9vbCBtb2RfY29sb3JfY2FsY3Vs YXRlX2RlZ2FtbWFfcGFyYW1zKHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICppbnB1dF90ZiwKIAkJ CQlNQVhfSFdfUE9JTlRTLAogCQkJCWNvb3JkaW5hdGVzX3gpOwogCWVsc2UgaWYgKHRmID09IFRS QU5TRkVSX0ZVTkNUSU9OX1NSR0IgfHwKLQkJCXRmID09IFRSQU5TRkVSX0ZVTkNUSU9OX0JUNzA5 KQorCQl0ZiA9PSBUUkFOU0ZFUl9GVU5DVElPTl9CVDcwOSB8fAorCQl0ZiA9PSBUUkFOU0ZFUl9G VU5DVElPTl9HQU1NQTIyIHx8CisJCXRmID09IFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjQgfHwK KwkJdGYgPT0gVFJBTlNGRVJfRlVOQ1RJT05fR0FNTUEyNikKIAkJYnVpbGRfZGVnYW1tYShjdXJ2 ZSwKIAkJCQlNQVhfSFdfUE9JTlRTLAogCQkJCWNvb3JkaW5hdGVzX3gsCi0JCQkJdGYgPT0gVFJB TlNGRVJfRlVOQ1RJT05fU1JHQiA/Ci0JCQkJZ2FtbWFfdHlwZV9pbmRleF8yXzQgOiB0ZiA9PSBU UkFOU0ZFUl9GVU5DVElPTl9HQU1NQTIyID8KLQkJCQlnYW1tYV90eXBlX2luZGV4XzJfMl9mbGF0 IDogZ2FtbWFfdHlwZV9pbmRleF8yXzIpOworCQkJCXRmKTsKKwllbHNlIGlmICh0ZiA9PSBUUkFO U0ZFUl9GVU5DVElPTl9ITEcpCisJCWJ1aWxkX2hsZ19kZWdhbW1hKGN1cnZlLAorCQkJCU1BWF9I V19QT0lOVFMsCisJCQkJY29vcmRpbmF0ZXNfeCwKKwkJCQl0cnVlKTsKIAllbHNlIGlmICh0ZiA9 PSBUUkFOU0ZFUl9GVU5DVElPTl9MSU5FQVIpIHsKIAkJLy8ganVzdCBjb3B5IGNvb3JkaW5hdGVz X3ggaW50byBjdXJ2ZQogCQlpID0gMDsKQEAgLTE5NzYsNyArMjAwMywxMCBAQCBib29sICBtb2Rf Y29sb3JfY2FsY3VsYXRlX2N1cnZlKGVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRy YW5zLAogCiAJCWt2ZnJlZShyZ2JfcmVnYW1tYSk7CiAJfSBlbHNlIGlmICh0cmFucyA9PSBUUkFO U0ZFUl9GVU5DVElPTl9TUkdCIHx8Ci0JCQkgIHRyYW5zID09IFRSQU5TRkVSX0ZVTkNUSU9OX0JU NzA5KSB7CisJCXRyYW5zID09IFRSQU5TRkVSX0ZVTkNUSU9OX0JUNzA5IHx8CisJCXRyYW5zID09 IFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIgfHwKKwkJdHJhbnMgPT0gVFJBTlNGRVJfRlVOQ1RJ T05fR0FNTUEyNCB8fAorCQl0cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI2KSB7CiAJ CXJnYl9yZWdhbW1hID0ga3ZjYWxsb2MoTUFYX0hXX1BPSU5UUyArIF9FWFRSQV9QT0lOVFMsCiAJ CQkJICAgICAgIHNpemVvZigqcmdiX3JlZ2FtbWEpLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsK QEAgLTE5OTAsOSArMjAyMCw3IEBAIGJvb2wgIG1vZF9jb2xvcl9jYWxjdWxhdGVfY3VydmUoZW51 bSBkY190cmFuc2Zlcl9mdW5jX3ByZWRlZmluZWQgdHJhbnMsCiAJCWJ1aWxkX3JlZ2FtbWEocmdi X3JlZ2FtbWEsCiAJCQkJTUFYX0hXX1BPSU5UUywKIAkJCQljb29yZGluYXRlc194LAotCQkJCXRy YW5zID09IFRSQU5TRkVSX0ZVTkNUSU9OX1NSR0IgPwotCQkJCWdhbW1hX3R5cGVfaW5kZXhfMl80 IDogdHJhbnMgPT0gVFJBTlNGRVJfRlVOQ1RJT05fR0FNTUEyMiA/Ci0JCQkJZ2FtbWFfdHlwZV9p bmRleF8yXzJfZmxhdCA6IGdhbW1hX3R5cGVfaW5kZXhfMl8yKTsKKwkJCQl0cmFucyk7CiAJCWZv ciAoaSA9IDA7IGkgPD0gTUFYX0hXX1BPSU5UUyA7IGkrKykgewogCQkJcG9pbnRzLT5yZWRbaV0g ICAgPSByZ2JfcmVnYW1tYVtpXS5yOwogCQkJcG9pbnRzLT5ncmVlbltpXSAgPSByZ2JfcmVnYW1t YVtpXS5nOwpAQCAtMjAwMSw4ICsyMDI5LDcgQEAgYm9vbCAgbW9kX2NvbG9yX2NhbGN1bGF0ZV9j dXJ2ZShlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0cmFucywKIAkJcmV0ID0gdHJ1 ZTsKIAogCQlrdmZyZWUocmdiX3JlZ2FtbWEpOwotCX0gZWxzZSBpZiAodHJhbnMgPT0gVFJBTlNG RVJfRlVOQ1RJT05fSExHIHx8Ci0JCXRyYW5zID09IFRSQU5TRkVSX0ZVTkNUSU9OX0hMRzEyKSB7 CisJfSBlbHNlIGlmICh0cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9ITEcpIHsKIAkJcmdiX3Jl Z2FtbWEgPSBrdmNhbGxvYyhNQVhfSFdfUE9JTlRTICsgX0VYVFJBX1BPSU5UUywKIAkJCQkgICAg ICAgc2l6ZW9mKCpyZ2JfcmVnYW1tYSksCiAJCQkJICAgICAgIEdGUF9LRVJORUwpOwpAQCAtMjAx Miw3ICsyMDM5LDcgQEAgYm9vbCAgbW9kX2NvbG9yX2NhbGN1bGF0ZV9jdXJ2ZShlbnVtIGRjX3Ry YW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0cmFucywKIAkJYnVpbGRfaGxnX3JlZ2FtbWEocmdiX3Jl Z2FtbWEsCiAJCQkJTUFYX0hXX1BPSU5UUywKIAkJCQljb29yZGluYXRlc194LAotCQkJCXRyYW5z ID09IFRSQU5TRkVSX0ZVTkNUSU9OX0hMRzEyID8gdHJ1ZTpmYWxzZSk7CisJCQkJdHJ1ZSk7CiAJ CWZvciAoaSA9IDA7IGkgPD0gTUFYX0hXX1BPSU5UUyA7IGkrKykgewogCQkJcG9pbnRzLT5yZWRb aV0gICAgPSByZ2JfcmVnYW1tYVtpXS5yOwogCQkJcG9pbnRzLT5ncmVlbltpXSAgPSByZ2JfcmVn YW1tYVtpXS5nOwpAQCAtMjA2Miw4ICsyMDg5LDEwIEBAIGJvb2wgIG1vZF9jb2xvcl9jYWxjdWxh dGVfZGVnYW1tYV9jdXJ2ZShlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0cmFucywK IAogCQlrdmZyZWUocmdiX2RlZ2FtbWEpOwogCX0gZWxzZSBpZiAodHJhbnMgPT0gVFJBTlNGRVJf RlVOQ1RJT05fU1JHQiB8fAotCQkJICB0cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9CVDcwOSB8 fAotCQkJICB0cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTIyKSB7CisJCXRyYW5zID09 IFRSQU5TRkVSX0ZVTkNUSU9OX0JUNzA5IHx8CisJCXRyYW5zID09IFRSQU5TRkVSX0ZVTkNUSU9O X0dBTU1BMjIgfHwKKwkJdHJhbnMgPT0gVFJBTlNGRVJfRlVOQ1RJT05fR0FNTUEyNCB8fAorCQl0 cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI2KSB7CiAJCXJnYl9kZWdhbW1hID0ga3Zj YWxsb2MoTUFYX0hXX1BPSU5UUyArIF9FWFRSQV9QT0lOVFMsCiAJCQkJICAgICAgIHNpemVvZigq cmdiX2RlZ2FtbWEpLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKQEAgLTIwNzMsOSArMjEwMiw3 IEBAIGJvb2wgIG1vZF9jb2xvcl9jYWxjdWxhdGVfZGVnYW1tYV9jdXJ2ZShlbnVtIGRjX3RyYW5z ZmVyX2Z1bmNfcHJlZGVmaW5lZCB0cmFucywKIAkJYnVpbGRfZGVnYW1tYShyZ2JfZGVnYW1tYSwK IAkJCQlNQVhfSFdfUE9JTlRTLAogCQkJCWNvb3JkaW5hdGVzX3gsCi0JCQkJdHJhbnMgPT0gVFJB TlNGRVJfRlVOQ1RJT05fU1JHQiA/Ci0JCQkJZ2FtbWFfdHlwZV9pbmRleF8yXzQgOiB0cmFucyA9 PSBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTIyID8KLQkJCQlnYW1tYV90eXBlX2luZGV4XzJfMl9m bGF0IDogZ2FtbWFfdHlwZV9pbmRleF8yXzIpOworCQkJCXRyYW5zKTsKIAkJZm9yIChpID0gMDsg aSA8PSBNQVhfSFdfUE9JTlRTIDsgaSsrKSB7CiAJCQlwb2ludHMtPnJlZFtpXSAgICA9IHJnYl9k ZWdhbW1hW2ldLnI7CiAJCQlwb2ludHMtPmdyZWVuW2ldICA9IHJnYl9kZWdhbW1hW2ldLmc7CkBA IC0yMDg0LDggKzIxMTEsNyBAQCBib29sICBtb2RfY29sb3JfY2FsY3VsYXRlX2RlZ2FtbWFfY3Vy dmUoZW51bSBkY190cmFuc2Zlcl9mdW5jX3ByZWRlZmluZWQgdHJhbnMsCiAJCXJldCA9IHRydWU7 CiAKIAkJa3ZmcmVlKHJnYl9kZWdhbW1hKTsKLQl9IGVsc2UgaWYgKHRyYW5zID09IFRSQU5TRkVS X0ZVTkNUSU9OX0hMRyB8fAotCQl0cmFucyA9PSBUUkFOU0ZFUl9GVU5DVElPTl9ITEcxMikgewor CX0gZWxzZSBpZiAodHJhbnMgPT0gVFJBTlNGRVJfRlVOQ1RJT05fSExHKSB7CiAJCXJnYl9kZWdh bW1hID0ga3ZjYWxsb2MoTUFYX0hXX1BPSU5UUyArIF9FWFRSQV9QT0lOVFMsCiAJCQkJICAgICAg IHNpemVvZigqcmdiX2RlZ2FtbWEpLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKQEAgLTIwOTUs NyArMjEyMSw3IEBAIGJvb2wgIG1vZF9jb2xvcl9jYWxjdWxhdGVfZGVnYW1tYV9jdXJ2ZShlbnVt IGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0cmFucywKIAkJYnVpbGRfaGxnX2RlZ2FtbWEo cmdiX2RlZ2FtbWEsCiAJCQkJTUFYX0hXX1BPSU5UUywKIAkJCQljb29yZGluYXRlc194LAotCQkJ CXRyYW5zID09IFRSQU5TRkVSX0ZVTkNUSU9OX0hMRzEyID8gdHJ1ZTpmYWxzZSk7CisJCQkJdHJ1 ZSk7CiAJCWZvciAoaSA9IDA7IGkgPD0gTUFYX0hXX1BPSU5UUyA7IGkrKykgewogCQkJcG9pbnRz LT5yZWRbaV0gICAgPSByZ2JfZGVnYW1tYVtpXS5yOwogCQkJcG9pbnRzLT5ncmVlbltpXSAgPSBy Z2JfZGVnYW1tYVtpXS5nOwotLSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2FtZC1nZng=