From mboxrd@z Thu Jan 1 00:00:00 1970 From: swati2.sharma@intel.com Subject: [RFC] drm/i915: adding state checker for gamma lut values Date: Fri, 15 Mar 2019 12:46:28 +0530 Message-ID: <1552634188-7372-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CDDD6E2B6 for ; Fri, 15 Mar 2019 07:21:56 +0000 (UTC) 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: jani.nikula@intel.com, daniel.vetter@ffwll.ch, animesh.manna@intel.com, Swati Sharma , uma.shankar@intel.com, rodrigo.vivi@intel.com, ankit.k.nautiyal@intel.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KCkFkZGVkIHN0YXRl IGNoZWNrZXIgdG8gdmFsaWRhdGUgZ2FtbWFfbHV0IHZhbHVlcy4gVGhpcwpyZWFkcyBoYXJkd2Fy ZSBzdGF0ZSwgYW5kIGNvbXBhcmVzIHRoZSBvcmlnaW5hbGx5IHJlcXVlc3RlZApzdGF0ZSB0byB0 aGUgc3RhdGUgcmVhZCBmcm9tIGhhcmR3YXJlLgoKVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gYmUg dXNlZCBmb3IgR2VuOSsgcGxhdGZvcm1zLApJIGhhdmVuJ3QgaW1wbGVtZW50ZWQgaXQgZm9yIGxl Z2FjeSBwbGF0Zm9ybXMuIEp1c3Qgd2FudCB0byBnZXQKZmVlZGJhY2sgaWYgdGhpcyBpcyB0aGUg cmlnaHQgYXBwcm9hY2ggdG8gZm9sbG93LgoKQWxzbywgaW52ZXJzZSBmdW5jdGlvbiBvZiBkcm1f Y29sb3JfbHV0X2V4dHJhY3QgaXMgbWlzc2luZwp0byBjb252ZXJ0IGhhcmR3YXJlIHJlYWQgdmFs dWVzIGJhY2sgdG8gdXNlciB2YWx1ZXMuClRoaW5raW5nIGZvciB0aGF0LiBJIGhhdmUgYWRkZWQg YWxsICJUT0RPcyIgYW5kICJQbGFjZWhvbGRlcnMiLgoKQW5vdGhlciBhcHByb2FjaDoKU3Rvcmlu ZyAid29yZCIgdG8gYmUgd3JpdHRlbiBpbnRvIGhhcmR3YXJlIGluIGRldl9wcml2IGFuZAppbnN0 ZWFkIG9mIGNvbXBhcmluZyBibG9iLCBjb21wYXJpbmcgIndvcmQiPyBJbiBkZXZfcHJpdiwKb25s eSBwb2ludGVyIHdpbGwgYmUgdGhlcmUgKHNvbWV0aGluZyBsaWtlICpnYW1tYV93b3JkKS4KCkZv ciB0aGlzIHRvbywgSSB3aWxsIHNlbmQgYSBwYXRjaCB0byBtYWtlIGl0IG1vcmUgY2xlYXIuCgpT aWduZWQtb2ZmLWJ5OiBTd2F0aSBTaGFybWEgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA1MCAr KysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAx ICsKIDQgZmlsZXMgY2hhbmdlZCwgMTczIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzRmZmUxOS4uYjQxYmZhYSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC0zMzQsNiArMzM0LDcgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlf ZnVuY3MgewogCSAqIGludm9sdmVkIHdpdGggdGhlIHNhbWUgY29tbWl0LgogCSAqLwogCXZvaWQg KCpsb2FkX2x1dHMpKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsK Kwl2b2lkICgqZ2V0X2NvbmZpZykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp OwogfTsKIAogI2RlZmluZSBDU1JfVkVSU0lPTihtYWpvciwgbWlub3IpCSgobWFqb3IpIDw8IDE2 IHwgKG1pbm9yKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCmluZGV4IGRhN2EwN2QuLmE1 MTVlOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwpAQCAtNzQsNiArNzQsMTEgQEAK ICNkZWZpbmUgSUxLX0NTQ19DT0VGRl8xXzAJCVwKIAkoKDcgPDwgMTIpIHwgSUxLX0NTQ19DT0VG Rl9GUChDVE1fQ09FRkZfMV8wLCA4KSkKIAorLyogTWFzayB0byBleHRyYWN0IFJHQiB2YWx1ZXMg ZnJvbSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgQ09MT1JfQkxVRV9NQVNLICAgICAgICAgMHgwMDAw MDNGRiAgICAgICAgICAgICAgLyogOTowICovCisjZGVmaW5lIENPTE9SX0dSRUVOX01BU0sgICAg ICAgIDB4MDAwRkZDMDAgICAgICAgICAgICAgIC8qIDE5OjEwICovCisjZGVmaW5lIENPTE9SX1JF RF9NQVNLICAgICAgICAgIDB4M0ZGMDAwMDAgICAgICAgICAgICAgIC8qIDI5OjIwICovCisKIHN0 YXRpYyBib29sIGx1dF9pc19sZWdhY3koY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICps dXQpCiB7CiAJcmV0dXJuIGRybV9jb2xvcl9sdXRfc2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVO R1RIOwpAQCAtNjcyLDYgKzY3Nyw5NyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlpOXh4X2xvYWRf bHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLCBOVUxMKTsKIH0KIAorc3RhdGljIHZvaWQgYmR3X2dl dF9nYW1tYV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIHUzMiBv ZmZzZXQpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2Uu ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOworCXUzMiBpLCB0bXAsIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdikt PmNvbG9yLmdhbW1hX2x1dF9zaXplOworCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOworCXN0cnVjdCBkcm1fY29sb3Jf bHV0ICpibG9iX2RhdGE7CisKKwlXQVJOX09OKG9mZnNldCAmIH5QQUxfUFJFQ19JTkRFWF9WQUxV RV9NQVNLKTsKKworCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksCisJCQkob2Zmc2V0 ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDApIHwKKwkJCVBBTF9QUkVDX0FVVE9fSU5DUkVNRU5U IHwKKwkJCW9mZnNldCk7CisKKwlibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwK KwkJCXNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkgKiBsdXRfc2l6ZSwKKwkJCU5VTEwpOwor CWlmIChJU19FUlIoYmxvYikpCisJCXJldHVybjsKKworCWJsb2JfZGF0YSA9IGJsb2ItPmRhdGE7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgeworCQl0bXAgPSBJOTE1X1JFQUQo UFJFQ19QQUxfREFUQShwaXBlKSk7CisJCS8qCisJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVl IHJlYWQgZnJvbSByZWdpc3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwor CQkgKiBzb21lIHdyYXBwZXIgbGlrZSBkcm1fY29sb3JfbHV0X3B1dCgpIChvcikgaW50ZWxfY29s b3JfbHV0X3B1dCgpIHNvIHRoYXQgaXQKKwkJICogY2FuIGJlIGNvbXBhcmVkIGxhdGVyLgorCQkg Ki8KKwkJYmxvYl9kYXRhW2ldLnJlZCA9ICh0bXAgJiBDT0xPUl9SRURfTUFTSykgPj4gMjA7CisJ CWJsb2JfZGF0YVtpXS5ncmVlbiA9ICh0bXAgJiBDT0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsKKwkJ YmxvYl9kYXRhW2ldLmJsdWUgPSB0bXAgJiBDT0xPUl9CTFVFX01BU0s7CisJfQorCisJSTkxNV9X UklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7CisKKwljcnRjX3N0YXRlLT5iYXNlLmdhbW1h X2x1dCA9IGJsb2I7Cit9CisKK3N0YXRpYyB2b2lkIGk5eHhfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CisJdTMyIGksIHRtcDsKKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gTlVM TDsKKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOworCisJYmxvYiA9IGRybV9wcm9w ZXJ0eV9jcmVhdGVfYmxvYihkZXYsCisJCQkJCXNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkg KiAyNTYsCisJCQkJCU5VTEwpOworCWlmIChJU19FUlIoYmxvYikpCisJCXJldHVybjsKKworCWJs b2JfZGF0YSA9IGJsb2ItPmRhdGE7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwkJ aWYgKEhBU19HTUNIKGRldl9wcml2KSkKKwkJCXRtcCA9IEk5MTVfUkVBRChQQUxFVFRFKHBpcGUs IGkpKTsKKwkJZWxzZQorCQkJdG1wID0gSTkxNV9SRUFEKExHQ19QQUxFVFRFKHBpcGUsIGkpKTsK KwkJLyoKKwkJICogVE9ETzogY29udmVydCBSR0IgdmFsdWUgcmVhZCBmcm9tIHJlZ2lzdGVyIGlu dG8gY29ycmVzcG9uZGluZyB1c2VyIHZhbHVlIHVzaW5nCisJCSAqIHNvbWUgd3JhcHBlciBsaWtl IGRybV9jb2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9sdXRfcHV0KCkgc28gdGhhdCBp dAorCQkgKiBjYW4gYmUgY29tcGFyZWQgbGF0ZXIuCisJCSAqLworCQlibG9iX2RhdGFbaV0ucmVk ID0gKHRtcCAmIENPTE9SX1JFRF9NQVNLKSA+PiAyMDsKKwkJYmxvYl9kYXRhW2ldLmdyZWVuID0g KHRtcCAmIENPTE9SX0dSRUVOX01BU0spID4+IDEwOworCQlibG9iX2RhdGFbaV0uYmx1ZSA9ICh0 bXAgJiBDT0xPUl9CTFVFX01BU0spOworCX0KKworCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0 ID0gYmxvYjsKK30KKworc3RhdGljIHZvaWQgaWNsX2dldF9jb25maWcoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJLyoKKwkgKiBUT0RPOiBwbGFjZWhvbGRlciBmb3Ig ZGVnYW1tYSB2YWxpZGF0aW9uCisJICogZ2xrX2dldF9kZWdhbW1hX2NvbmZpZyhjcnRjX3N0YXRl LCAwKTsKKwkgKi8KKworCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRl KSkKKwkJaTl4eF9nZXRfY29uZmlnKGNydGNfc3RhdGUpOworCWVsc2UKKwkJYmR3X2dldF9nYW1t YV9jb25maWcoY3J0Y19zdGF0ZSwgMCk7Cit9CisKIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj LT5kZXYpOwpAQCAtNjc5LDYgKzc3NSwxMyBAQCB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CiB9CiAKK3ZvaWQgaW50ZWxfY29sb3JfZ2V0X2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ ZGV2KTsKKworCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcoY3J0Y19zdGF0ZSk7Cit9CisK IHZvaWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwpAQCAtODMzLDIyICs5MzYsMzQgQEAgdm9p ZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCiAJZHJtX21vZGVf Y3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY3J0Yy0+YmFzZSwgMjU2KTsKIAorCS8qCisJICogVE9ETzog SW4gdGhlIGZvbGxvd2luZyBpZiBsYWRkZXIsIGtlcHQgcGxhY2Vob2xkZXJzCisJICogZm9yIGV4 dGVuZGluZyBsdXQgdmFsaWRhdGlvbiBmb3IgbGVnYWN5IHBsYXRmb3Jtcy4KKwkgKi8KIAlpZiAo SEFTX0dNQ0goZGV2X3ByaXYpKSB7Ci0JCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKKwkJ aWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMgPSBjaGVycnl2aWV3X2xvYWRfbHV0czsKLQkJZWxzZQorCQkJIC8qIGRldl9wcml2LT5k aXNwbGF5LmdldF9jb25maWcgPSBjaGVycnl2aWV3X2dldF9jb25maWc7ICovCisJCX0gZWxzZSB7 CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKKwkJCWRl dl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBpOXh4X2dldF9jb25maWc7CisJCX0KIAogCQlk ZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQgPSBpOXh4X2NvbG9yX2NvbW1pdDsKIAl9IGVs c2UgewotCQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCisJCWlmIChJU19JQ0VMQUtFKGRldl9w cml2KSkgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaWNsX2xvYWRfbHV0czsK LQkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZf cHJpdikpCisJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gaWNsX2dldF9jb25maWc7 CisJCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpIHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGdsa19sb2FkX2x1 dHM7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQorCQkJLyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGdsa19nZXRf Y29uZmlnOyAqLworCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fCBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKSB7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBi cm9hZHdlbGxfbG9hZF9sdXRzOwotCQllbHNlCisJCQkvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRf Y29uZmlnID0gYnJvYWR3ZWxsX2dldF9jb25maWc7ICovCisJCX0gZWxzZSB7CiAJCQlkZXZfcHJp di0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKKwkJCWRldl9wcml2LT5kaXNw bGF5LmdldF9jb25maWcgPSBpOXh4X2dldF9jb25maWc7CisJCX0KIAogCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KQogCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY29tbWl0ID0gc2ts X2NvbG9yX2NvbW1pdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA5NjNi NGJkLi4xNjVkNzk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC04MjEy LDYgKzgyMTIsMTEgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAKIAlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZp Zyk7CiAKKwkvKgorCSAqIFRPRE86IFlldCB0byBpbXBsZW1lbnQgZm9yIGxlZ2FjeSBwbGF0Zm9y bXMKKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKKwkgKi8KKwogCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKIAkJcGlwZV9jb25maWctPmRvdWJsZV93aWRlID0g dG1wICYgUElQRUNPTkZfRE9VQkxFX1dJREU7CiAKQEAgLTkyODQsNiArOTI4OSwxMSBAQCBzdGF0 aWMgYm9vbCBpcm9ubGFrZV9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAKIAlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7CiAKKwkvKgorCSAq IFRPRE86IFlldCB0byBpbXBsZW1lbnQgZm9yIGxlZ2FjeSBwbGF0Zm9ybXMKKwkgKiBpbnRlbF9j b2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKKwkgKi8KKwogCWlmIChJOTE1X1JFQUQoUENI X1RSQU5TQ09ORihjcnRjLT5waXBlKSkgJiBUUkFOU19FTkFCTEUpIHsKIAkJc3RydWN0IGludGVs X3NoYXJlZF9kcGxsICpwbGw7CiAJCWVudW0gaW50ZWxfZHBsbF9pZCBwbGxfaWQ7CkBAIC05OTMy LDYgKzk5NDIsOCBAQCBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAkJaTl4eF9nZXRfcGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25m aWcpOwogCX0KIAorCWludGVsX2NvbG9yX2dldF9jb25maWcocGlwZV9jb25maWcpOworCiAJcG93 ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwog CWlmIChpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9k b21haW4pKSB7CiAJCVdBUk5fT04ocG93ZXJfZG9tYWluX21hc2sgJiBCSVRfVUxMKHBvd2VyX2Rv bWFpbikpOwpAQCAtMTE5OTAsNiArMTIwMDIsMzQgQEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5h YmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIGZhbHNlOwog fQogCitzdGF0aWMgYm9vbCBpbnRlbF9jb21wYXJlX2Jsb2Ioc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iMSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IyKQor eworCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpzd19sdXQgPSBibG9iMS0+ZGF0YTsKKwlzdHJ1Y3Qg ZHJtX2NvbG9yX2x1dCAqaHdfbHV0ID0gYmxvYjItPmRhdGE7CisJaW50IHN3X2x1dF9zaXplLCBo d19sdXRfc2l6ZTsKKwlpbnQgaTsKKworCXN3X2x1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9zaXpl KGJsb2IxKTsKKwlod19sdXRfc2l6ZSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iMik7CisKKwlp ZiAoc3dfbHV0X3NpemUgIT0gaHdfbHV0X3NpemUpIHsKKwkJRFJNX0RFQlVHX0tNUygiSW52YWxp ZCBMVVQgc2l6ZTsgZ290ICVkLCBleHBlY3RlZCAlZFxuIiwgaHdfbHV0X3NpemUsIHN3X2x1dF9z aXplKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBzd19sdXRfc2l6 ZTsgaSsrKSB7CisJCWlmIChod19sdXRbaV0ucmVkICE9IHN3X2x1dFtpXS5yZWQgfHwKKwkJICAg IGh3X2x1dFtpXS5ibHVlICE9IHN3X2x1dFtpXS5ibHVlIHx8CisJCSAgICBod19sdXRbaV0uZ3Jl ZW4gIT0gc3dfbHV0W2ldLmdyZWVuKSB7CisJCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIExVVCB2 YWx1ZTsgc3dfbHV0IHZhbHVlIGRvZXNuJ3QgbWF0Y2ggaHdfbHV0IHZhbHVlXG4iKTsKKwkJCXJl dHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbAog aW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKQEAgLTEy MTQ4LDYgKzEyMTg4LDE0IEBAIHN0YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0gXAogfSB3aGlsZSAoMCkKIAorI2RlZmluZSBQ SVBFX0NPTkZfQ0hFQ0tfQkxPQihuYW1lKSBkbyB7IFwKKwlpZiAoIWludGVsX2NvbXBhcmVfYmxv YihjdXJyZW50X2NvbmZpZy0+bmFtZSwgcGlwZV9jb25maWctPm5hbWUpKSB7IFwKKwkJcGlwZV9j b25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnkobmFtZSksIFwKKwkJCQkiaHdfc3RhdGUgZG9l c24ndCBtYXRjaCBzd19zdGF0ZVxuIik7IFwKKwkJcmV0ID0gZmFsc2U7IFwKKwl9IFwKK30gd2hp bGUgKDApCisKICNkZWZpbmUgUElQRV9DT05GX1FVSVJLKHF1aXJrKSBcCiAJKChjdXJyZW50X2Nv bmZpZy0+cXVpcmtzIHwgcGlwZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQogCkBAIC0xMjI4 Nyw2ICsxMjMzNSw4IEBAIHN0YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoc3BkKTsK IAlQSVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKGhkbWkpOwogCisJUElQRV9DT05GX0NIRUNLX0JM T0IoYmFzZS5nYW1tYV9sdXQpOworCiAjdW5kZWYgUElQRV9DT05GX0NIRUNLX1gKICN1bmRlZiBQ SVBFX0NPTkZfQ0hFQ0tfSQogI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19CT09MCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCmluZGV4IDQwZWJjOTQuLmE2YWNkOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCkBAIC0yNTEyLDYgKzI1MTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwogaW50 IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsK IHZvaWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKK3ZvaWQgaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAKIC8qIGludGVsX2xzcGNvbi5j ICovCiBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0KTsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw=