From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v6 19/23] drm/i915: BDW: Pipe level Gamma correction Date: Fri, 16 Oct 2015 19:59:07 +0530 Message-ID: <1445005751-14918-20-git-send-email-shashank.sharma@intel.com> References: <1445005751-14918-1-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1445005751-14918-1-git-send-email-shashank.sharma@intel.com> 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, intel-gfx@lists.freedesktop.org, emil.l.velikov@gmail.com, matthew.d.roper@intel.com, robert.bradford@intel.com, jim.bish@intel.com Cc: annie.j.matheson@intel.com, avinash.reddy.palleti@intel.com, indranil.mukherjee@intel.com, kausalmalladi@gmail.com, gary.k.smith@intel.com, daniel.vetter@intel.com, kiran.s.kumar@intel.com List-Id: dri-devel@lists.freedesktop.org QkRXL1NLTC9CWFQgcGxhdGZvcm1zIHN1cHBvcnQgdmFyaW91cyBHYW1tYSBjb3JyZWN0aW9uIG1v ZGVzCndoaWNoIGFyZToKMS4gTGVnYWN5IDgtYml0IG1vZGUKMi4gMTAtYml0IG1vZGUKMy4gU3Bs aXQgbW9kZQo0LiAxMi1iaXQgbW9kZQoKVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CjEu IEFkZHMgdGhlIGNvcmUgZnVuY3Rpb24gdG8gcHJvZ3JhbSBHYW1tYSBjb3JyZWN0aW9uIHZhbHVl cwogICBmb3IgQkRXL1NLTC9CWFQgcGxhdGZvcm1zCjIuIEFkZHMgR2FtbWEgY29ycmVjdGlvbiBt YWNyb3MvZGVmaW5lcwoKU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5z aGFybWFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBLYXVzYWwgTWFsbGFkaSA8a2F1c2FsbWFs bGFkaUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAg ICAgICAgIHwgIDI1ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdl ci5jIHwgMjgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggfCAgIDYgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMTAg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRl eCAzZGI0MmY0Li4zOWZiYWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTU2ODUsMTEg KzU2ODUsMTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAvKiBsZWdhY3kgcGFsZXR0 ZSAqLwogI2RlZmluZSBfTEdDX1BBTEVUVEVfQSAgICAgICAgICAgMHg0YTAwMAogI2RlZmluZSBf TEdDX1BBTEVUVEVfQiAgICAgICAgICAgMHg0YTgwMAotI2RlZmluZSBMR0NfUEFMRVRURShwaXBl LCBpKSAoX1BJUEUocGlwZSwgX0xHQ19QQUxFVFRFX0EsIF9MR0NfUEFMRVRURV9CKSArIChpKSAq IDQpCisjZGVmaW5lIF9MR0NfUEFMRVRURV9DICAgICAgICAgICAweDRiMDAwCisjZGVmaW5lIExH Q19QQUxFVFRFKHBpcGUsIGkpIChfUElQRTMocGlwZSwgX0xHQ19QQUxFVFRFX0EsIF9MR0NfUEFM RVRURV9CLCBcCisJCQkgX0xHQ19QQUxFVFRFX0MpICsgKGkpICogNCkKIAogI2RlZmluZSBfR0FN TUFfTU9ERV9BCQkweDRhNDgwCiAjZGVmaW5lIF9HQU1NQV9NT0RFX0IJCTB4NGFjODAKLSNkZWZp bmUgR0FNTUFfTU9ERShwaXBlKSBfUElQRShwaXBlLCBfR0FNTUFfTU9ERV9BLCBfR0FNTUFfTU9E RV9CKQorI2RlZmluZSBfR0FNTUFfTU9ERV9DCQkweDRiNDgwCisjZGVmaW5lIEdBTU1BX01PREUo cGlwZSkgXAorCV9QSVBFMyhwaXBlLCBfR0FNTUFfTU9ERV9BLCBfR0FNTUFfTU9ERV9CLCBfR0FN TUFfTU9ERV9DKQogI2RlZmluZSBHQU1NQV9NT0RFX01PREVfTUFTSwkoMyA8PCAwKQogI2RlZmlu ZSBHQU1NQV9NT0RFX01PREVfOEJJVAkoMCA8PCAwKQogI2RlZmluZSBHQU1NQV9NT0RFX01PREVf MTBCSVQJKDEgPDwgMCkKQEAgLTgxNzIsNiArODE3NiwyMyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKICNkZWZpbmUgX1BJUEVfQ1NDX0JBU0UocGlwZSkgXAogCShfUElQRTMocGlwZSwg UElQRUFfQ0dNX0NTQywgUElQRUJfQ0dNX0NTQywgUElQRUNfQ0dNX0NTQykpCiAKKy8qIEJEVyBn YW1tYSBjb3JyZWN0aW9uICovCisjZGVmaW5lIFBBTF9QUkVDX0lOREVYX0EgICAgICAgICAgICAg ICAgICAgICAgIDB4NEE0MDAKKyNkZWZpbmUgUEFMX1BSRUNfSU5ERVhfQiAgICAgICAgICAgICAg ICAgICAgICAgMHg0QUMwMAorI2RlZmluZSBQQUxfUFJFQ19JTkRFWF9DICAgICAgICAgICAgICAg ICAgICAgICAweDRCNDAwCisjZGVmaW5lIFBBTF9QUkVDX0RBVEFfQSAgICAgICAgICAgICAgICAg ICAgICAgIDB4NEE0MDQKKyNkZWZpbmUgUEFMX1BSRUNfREFUQV9CICAgICAgICAgICAgICAgICAg ICAgICAgMHg0QUMwNAorI2RlZmluZSBQQUxfUFJFQ19EQVRBX0MgICAgICAgICAgICAgICAgICAg ICAgICAweDRCNDA0CisjZGVmaW5lIFBBTF9QUkVDX0dDTUFYX0EJCQkweDRBNDEwCisjZGVmaW5l IFBBTF9QUkVDX0dDTUFYX0IJCQkweDRBQzEwCisjZGVmaW5lIFBBTF9QUkVDX0dDTUFYX0MJCQkw eDRCNDEwCisKKyNkZWZpbmUgX1BSRUNfUEFMX0lOREVYKHBpcGUpIFwKKwkoX1BJUEUzKHBpcGUs IFBBTF9QUkVDX0lOREVYX0EsIFBBTF9QUkVDX0lOREVYX0IsIFBBTF9QUkVDX0lOREVYX0MpKQor I2RlZmluZSBfUFJFQ19QQUxfREFUQShwaXBlKSBcCisJKF9QSVBFMyhwaXBlLCBQQUxfUFJFQ19E QVRBX0EsIFBBTF9QUkVDX0RBVEFfQiwgUEFMX1BSRUNfREFUQV9DKSkKKyNkZWZpbmUgX1BSRUNf UEFMX0dDTUFYKHBpcGUpIFwKKwkoX1BJUEUzKHBpcGUsIFBBTF9QUkVDX0dDTUFYX0EsIFBBTF9Q UkVDX0dDTUFYX0IsIFBBTF9QUkVDX0dDTUFYX0MpKQogCiAKICNlbmRpZiAvKiBfSTkxNV9SRUdf SF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFn ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwppbmRleCA2 YjU5NTMxLi40NGY5OWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j b2xvcl9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFu YWdlci5jCkBAIC0yNyw2ICsyNywyODUgQEAKIAogI2luY2x1ZGUgImludGVsX2NvbG9yX21hbmFn ZXIuaCIKIAorc3RhdGljIHZvaWQgYmR3X3dyaXRlXzhiaXRfZ2FtbWFfbGVnYWN5KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCisJc3RydWN0IGRybV9yMzJnMzJiMzIgKmNvcnJlY3Rpb25fdmFsdWVz LCB1MzIgcGFsZXR0ZSkKK3sKKwl1MTYgYmx1ZV9mcmFjdCwgZ3JlZW5fZnJhY3QsIHJlZF9mcmFj dDsKKwl1MzIgYmx1ZSwgZ3JlZW4sIHJlZDsKKwl1MzIgY291bnQgPSAwOworCXUzMiB3b3JkID0g MDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCisJd2hpbGUgKGNvdW50IDwgQkRXXzhCSVRfR0FNTUFfTUFYX1ZBTFMpIHsKKwkJYmx1ZSA9 IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5iMzI7CisJCWdyZWVuID0gY29ycmVjdGlvbl92YWx1 ZXNbY291bnRdLmczMjsKKwkJcmVkID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIzMjsKKwor CQkvKgorCQkqIE1heGltdW0gcG9zc2libGUgZ2FtbWEgY29ycmVjdGlvbiB2YWx1ZSBzdXBwb3J0 ZWQKKwkJKiBmb3IgQkRXIGlzIDB4RkZGRkZGRkYsIHNvIGNsYW1wIHRoZSB2YWx1ZXMgYWNjb3Jk aW5nbHkKKwkJKi8KKwkJaWYgKGJsdWUgPj0gQkRXX01BWF9HQU1NQSkKKwkJCWJsdWUgPSBCRFdf TUFYX0dBTU1BOworCQlpZiAoZ3JlZW4gPj0gQkRXX01BWF9HQU1NQSkKKwkJCWdyZWVuID0gQkRX X01BWF9HQU1NQTsKKwkJaWYgKHJlZCA+PSBCRFdfTUFYX0dBTU1BKQorCQkJcmVkID0gQkRXX01B WF9HQU1NQTsKKworCQlibHVlX2ZyYWN0ID0gR0VUX0JJVFMoYmx1ZSwgMTYsIDgpOworCQlncmVl bl9mcmFjdCA9IEdFVF9CSVRTKGdyZWVuLCAxNiwgOCk7CisJCXJlZF9mcmFjdCA9IEdFVF9CSVRT KHJlZCwgMTYsIDgpOworCisJCS8qIEJsdWUgKDc6MCkgR3JlZW4gKDE1OjgpIGFuZCBSZWQgKDIz OjE2KSAqLworCQlTRVRfQklUUyh3b3JkLCBibHVlX2ZyYWN0LCAwLCA4KTsKKwkJU0VUX0JJVFMo d29yZCwgZ3JlZW5fZnJhY3QsIDgsIDgpOworCQlTRVRfQklUUyh3b3JkLCBibHVlX2ZyYWN0LCAx NiwgOCk7CisJCUk5MTVfV1JJVEUocGFsZXR0ZSwgd29yZCk7CisJCXBhbGV0dGUgKz0gNDsKKwkJ Y291bnQrKzsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJkd193cml0ZV8xMGJpdF9nYW1tYV9wcmVj aXNpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZHJtX3IzMmczMmIzMiAqY29y cmVjdGlvbl92YWx1ZXMsIHUzMiBwYWxfcHJlY19kYXRhLAorCQkJdTMyIG5vX29mX2NvZWZmKQor eworCXUxNiBibHVlX2ZyYWN0LCBncmVlbl9mcmFjdCwgcmVkX2ZyYWN0OworCXUzMiB3b3JkID0g MDsKKwl1MzIgY291bnQgPSAwOworCXUzMiBibHVlLCBncmVlbiwgcmVkOworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwl3aGlsZSAoY291 bnQgPCBub19vZl9jb2VmZikgeworCisJCWJsdWUgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0u YjMyOworCQlncmVlbiA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5nMzI7CisJCXJlZCA9IGNv cnJlY3Rpb25fdmFsdWVzW2NvdW50XS5yMzI7CisKKwkJLyoKKwkJKiBNYXhpbXVtIHBvc3NpYmxl IGdhbW1hIGNvcnJlY3Rpb24gdmFsdWUgc3VwcG9ydGVkCisJCSogZm9yIEJEVyBpcyAweEZGRkZG RkZGLCBzbyBjbGFtcCB0aGUgdmFsdWVzIGFjY29yZGluZ2x5CisJCSovCisJCWlmIChibHVlID49 IEJEV19NQVhfR0FNTUEpCisJCQlibHVlID0gQkRXX01BWF9HQU1NQTsKKwkJaWYgKGdyZWVuID49 IEJEV19NQVhfR0FNTUEpCisJCQlncmVlbiA9IEJEV19NQVhfR0FNTUE7CisJCWlmIChyZWQgPj0g QkRXX01BWF9HQU1NQSkKKwkJCXJlZCA9IEJEV19NQVhfR0FNTUE7CisKKwkJLyoKKwkJKiBHYW1t YSBjb3JyZWN0aW9uIHZhbHVlcyBhcmUgc2VudCBpbiA4LjI0IGZvcm1hdAorCQkqIHdpdGggOCBp bnQgYW5kIDI0IGZyYWN0aW9uIGJpdHMuIEJEVyAxMCBiaXQgZ2FtbWEKKwkJKiB1bml0IGV4cGVj dHMgY29ycmVjdGlvbiByZWdpc3RlcnMgdG8gYmUgcHJvZ3JhbW1lZCBpbgorCQkqIDAuMTAgZm9y bWF0LCB3aXRoIDAgaW50IGFuZCAxNiBmcmFjdGlvbiBiaXRzLiBTbyB0YWtlCisJCSogTVNCIDEw IGJpdCB2YWx1ZXMoYml0cyAyMy0xNCkgZnJvbSB0aGUgZnJhY3Rpb24gcGFydCBhbmQKKwkJKiBw cmVwYXJlIHRoZSBjb3JyZWN0aW9uIHJlZ2lzdGVycy4KKwkJKi8KKwkJYmx1ZV9mcmFjdCA9IEdF VF9CSVRTKGJsdWUsIDE0LCAxMCk7CisJCWdyZWVuX2ZyYWN0ID0gR0VUX0JJVFMoZ3JlZW4sIDE0 LCAxMCk7CisJCXJlZF9mcmFjdCA9IEdFVF9CSVRTKHJlZCwgMTQsIDEwKTsKKworCQkvKiBBcnJh bmdlOiBSZWQgKDI5OjIwKSBHcmVlbiAoMTk6MTApIGFuZCBCbHVlICg5OjApICovCisJCVNFVF9C SVRTKHdvcmQsIHJlZF9mcmFjdCwgMjAsIDEwKTsKKwkJU0VUX0JJVFMod29yZCwgZ3JlZW5fZnJh Y3QsIDEwLCAxMCk7CisJCVNFVF9CSVRTKHdvcmQsIGJsdWVfZnJhY3QsIDAsIDEwKTsKKwkJSTkx NV9XUklURShwYWxfcHJlY19kYXRhLCB3b3JkKTsKKwkJY291bnQrKzsKKwl9CisJRFJNX0RFQlVH X0RSSVZFUigiR2FtbWEgY29ycmVjdGlvbiBwcm9ncmFtbWVkXG4iKTsKK30KKworc3RhdGljIHZv aWQgYmR3X3dyaXRlXzEyYml0X2dhbW1hX3ByZWNpc2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCXN0cnVjdCBkcm1fcjMyZzMyYjMyICpjb3JyZWN0aW9uX3ZhbHVlcywgdTMyIHBhbF9wcmVj X2RhdGEsCisJCWVudW0gcGlwZSBwaXBlKQoreworCXVpbnQxNl90IGJsdWVfZnJhY3QsIGdyZWVu X2ZyYWN0LCByZWRfZnJhY3Q7CisJdWludDMyX3QgZ2NtYXg7CisJdWludDMyX3Qgd29yZCA9IDA7 CisJdWludDMyX3QgY291bnQgPSAwOworCXVpbnQzMl90IGdjbWF4X3JlZzsKKwl1MzIgYmx1ZSwg Z3JlZW4sIHJlZDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOworCisJLyogUHJvZ3JhbSBmaXJzdCA1MTIgdmFsdWVzIGluIHByZWNpc2lvbiBw YWxldHRlICovCisJd2hpbGUgKGNvdW50IDwgQkRXXzEyQklUX0dBTU1BX01BWF9WQUxTIC0gMSkg eworCisJCWJsdWUgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uYjMyOworCQlncmVlbiA9IGNv cnJlY3Rpb25fdmFsdWVzW2NvdW50XS5nMzI7CisJCXJlZCA9IGNvcnJlY3Rpb25fdmFsdWVzW2Nv dW50XS5yMzI7CisKKwkJLyoKKwkJKiBNYXhpbXVtIHBvc3NpYmxlIGdhbW1hIGNvcnJlY3Rpb24g dmFsdWUgc3VwcG9ydGVkCisJCSogZm9yIEJEVyBpcyAweEZGRkZGRkZGLCBzbyBjbGFtcCB0aGUg dmFsdWVzIGFjY29yZGluZ2x5CisJCSovCisJCWlmIChibHVlID49IEJEV19NQVhfR0FNTUEpCisJ CQlibHVlID0gQkRXX01BWF9HQU1NQTsKKwkJaWYgKGdyZWVuID49IEJEV19NQVhfR0FNTUEpCisJ CQlncmVlbiA9IEJEV19NQVhfR0FNTUE7CisJCWlmIChyZWQgPj0gQkRXX01BWF9HQU1NQSkKKwkJ CXJlZCA9IEJEV19NQVhfR0FNTUE7CisKKwkJLyoKKwkJKiBGcmFtZXdvcmsncyBnZW5lcmFsIGdh bW1hIGZvcm1hdCBpcyA4LjI0ICg4IGludCAxNiBmcmFjdGlvbikKKwkJKiBCRFcgUGxhdGZvcm0n cyBzdXBwb3J0ZWQgZ2FtbWEgZm9ybWF0IGlzIDE2IGJpdCBjb3JyZWN0aW9uCisJCSogdmFsdWVz IGluIDAuMTYgZm9ybWF0LiBTbyBleHRyYWN0IGhpZ2hlciAxNiBmcmFjdGlvbiBiaXRzCisJCSog ZnJvbSA4LjI0IGdhbW1hIGNvcnJlY3Rpb24gdmFsdWVzLgorCQkqLworCQlyZWRfZnJhY3QgPSBH RVRfQklUUyhyZWQsIDgsIDE2KTsKKwkJZ3JlZW5fZnJhY3QgPSBHRVRfQklUUyhncmVlbiwgOCwg MTYpOworCQlibHVlX2ZyYWN0ID0gR0VUX0JJVFMoYmx1ZSwgOCwgMTYpOworCisJCS8qCisJCSog RnJvbSB0aGUgYnNwZWM6CisJCSogRm9yIDEyIGJpdCBnYW1tYSBjb3JyZWN0aW9uLCBwcm9ncmFt IHByZWNpc2lvbiBwYWxldHRlCisJCSogd2l0aCAxNiBiaXRzIHBlciBjb2xvciBpbiBhIDAuMTYg Zm9ybWF0IHdpdGggMCBpbnRlZ2VyIGFuZAorCQkqIDE2IGZyYWN0aW9uYWwgYml0cyAodXBwZXIg MTAgYml0cyBpbiBvZGQgaW5kZXhlcywgbG93ZXIgNgorCQkqIGJpdHMgaW4gZXZlbiBpbmRleGVz KQorCQkqLworCisJCS8qIEV2ZW4gaW5kZXg6IExvd2VyIDYgYml0cyBmcm9tIGNvcnJlY3Rpb24g c2hvdWxkIGdvIGFzIE1TQiAqLworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhyZWRfZnJhY3Qs IDAsIDYpLCAyNCwgNik7CisJCVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKGdyZWVuX2ZyYWN0LCAw LCA2KSwgMTQsIDYpOworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhibHVlX2ZyYWN0LCAwLCA2 KSwgNCwgNik7CisJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7CisKKwkJd29yZCA9 IDB4MDsKKwkJLyogT2RkIGluZGV4OiBVcHBlciAxMCBiaXRzIG9mIGNvcnJlY3Rpb24gc2hvdWxk IGdvIGFzIE1TQiAqLworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhyZWRfZnJhY3QsIDYsIDEw KSwgMjAsIDEwKTsKKwkJU0VUX0JJVFMod29yZCwgR0VUX0JJVFMoZ3JlZW5fZnJhY3QsIDYsIDEw KSwgMTAsIDEwKTsKKwkJU0VUX0JJVFMod29yZCwgR0VUX0JJVFMoYmx1ZV9mcmFjdCwgNiwgMTAp LCAwLCAxMCk7CisKKwkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB3b3JkKTsKKwkJY291bnQr KzsKKwl9CisKKwkvKiBOb3cgcHJvZ3JhbSB0aGUgNTEzdGggdmFsdWUgaW4gR0NNQVggcmVncyAq LworCXdvcmQgPSAwOworCWdjbWF4X3JlZyA9IF9QUkVDX1BBTF9HQ01BWChwaXBlKTsKKwlnY21h eCA9IG1pbl90KHUzMiwgR0VUX0JJVFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIzMiwgOCwg MTcpLAorCQkJCUJEV19NQVhfR0FNTUEpOworCVNFVF9CSVRTKHdvcmQsIGdjbWF4LCAwLCAxNyk7 CisJSTkxNV9XUklURShnY21heF9yZWcsIHdvcmQpOworCWdjbWF4X3JlZyArPSA0OworCisJd29y ZCA9IDA7CisJZ2NtYXggPSBtaW5fdCh1MzIsIEdFVF9CSVRTKGNvcnJlY3Rpb25fdmFsdWVzW2Nv dW50XS5nMzIsIDgsIDE3KSwKKwkJCQlCRFdfTUFYX0dBTU1BKTsKKwlTRVRfQklUUyh3b3JkLCBn Y21heCwgMCwgMTcpOworCUk5MTVfV1JJVEUoZ2NtYXhfcmVnLCB3b3JkKTsKKwlnY21heF9yZWcg Kz0gNDsKKworCXdvcmQgPSAwOworCWdjbWF4ID0gbWluX3QodTMyLCBHRVRfQklUUyhjb3JyZWN0 aW9uX3ZhbHVlc1tjb3VudF0uYjMyLCA4LCAxNyksCisJCQkJQkRXX01BWF9HQU1NQSk7CisJU0VU X0JJVFMod29yZCwgZ2NtYXgsIDAsIDE3KTsKKwlJOTE1X1dSSVRFKGdjbWF4X3JlZywgd29yZCk7 Cit9CisKKy8qIEFwcGx5IHVuaXR5IGdhbW1hIGZvciBnYW1tYSByZXNldCAqLworc3RhdGljIHZv aWQgYmR3X3Jlc2V0X2dhbW1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CWVudW0gcGlwZSBwaXBlKQoreworCXUxNiBjb3VudCA9IDA7CisJdTMyIHZhbDsKKwl1MzIgcGFs X3ByZWNfZGF0YSA9IExHQ19QQUxFVFRFKHBpcGUsIDApOworCisJRFJNX0RFQlVHX0RSSVZFUigi XG4iKTsKKworCS8qIFJlc2V0IHRoZSBwYWxldHRlIGZvciB1bml0IGdhbW1hICovCisJd2hpbGUg KGNvdW50IDwgQkRXXzhCSVRfR0FNTUFfTUFYX1ZBTFMpIHsKKwkJLyogUmVkICgyMzoxNikgR3Jl ZW4gKDE1OjgpIGFuZCBCbHVlICg3OjApICovCisJCXZhbCA9IChjb3VudCA8PCAxNikgfCAoY291 bnQgPDwgOCkgfCBjb3VudDsKKwkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB2YWwpOworCQlw YWxfcHJlY19kYXRhICs9IDQ7CisJCWNvdW50Kys7CisJfQorfQorCitzdGF0aWMgaW50IGJkd19z ZXRfZ2FtbWEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpibG9iLAorCQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCWVudW0gcGlwZSBwaXBlOwor CWludCBudW1fc2FtcGxlczsKKwl1MzIgbW9kZSwgcGFsX3ByZWNfaW5kZXgsIHBhbF9wcmVjX2Rh dGEsIGluZGV4OworCXUzMiB3b3JkID0gMDsKKwlzdHJ1Y3QgZHJtX3BhbGV0dGUgKmdhbW1hX2Rh dGE7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSA9IGNydGMtPnN0YXRlOworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0 IGRybV9yMzJnMzJiMzIgKmNvcnJlY3Rpb25fdmFsdWVzID0gTlVMTDsKKworCWlmIChXQVJOX09O KCFibG9iKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlnYW1tYV9kYXRhID0gKHN0cnVjdCBkcm1f cGFsZXR0ZSAqKWJsb2ItPmRhdGE7CisJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7 CisJbnVtX3NhbXBsZXMgPSBibG9iLT5sZW5ndGggLyBzaXplb2Yoc3RydWN0IGRybV9yMzJnMzJi MzIpOworCisJcGFsX3ByZWNfaW5kZXggPSBfUFJFQ19QQUxfSU5ERVgocGlwZSk7CisJcGFsX3By ZWNfZGF0YSA9IF9QUkVDX1BBTF9EQVRBKHBpcGUpOworCisJY29ycmVjdGlvbl92YWx1ZXMgPSAo c3RydWN0IGRybV9yMzJnMzJiMzIgKikmZ2FtbWFfZGF0YS0+bHV0OworCWluZGV4ID0gSTkxNV9S RUFEKHBhbF9wcmVjX2luZGV4KTsKKworCXN3aXRjaCAobnVtX3NhbXBsZXMpIHsKKwljYXNlIEdB TU1BX0RJU0FCTEVfVkFMUzoKKwkJLyogRGlzYWJsZSBHYW1tYSBmdW5jdGlvbmFsaXR5IG9uIFBp cGUgKi8KKwkJRFJNX0RFQlVHX0RSSVZFUigiRGlzYWJsaW5nIGdhbW1hIG9uIFBpcGUgJWNcbiIs CisJCQlwaXBlX25hbWUocGlwZSkpOworCQltb2RlID0gSTkxNV9SRUFEKEdBTU1BX01PREUocGlw ZSkpOworCQlpZiAoKG1vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0gR0FNTUFfTU9ERV9N T0RFXzEyQklUKQorCQkJYmR3X3Jlc2V0X2dhbW1hKGRldl9wcml2LCBwaXBlKTsKKwkJc3RhdGUt PnBhbGV0dGVfYWZ0ZXJfY3RtX2Jsb2IgPSBOVUxMOworCQl3b3JkID0gR0FNTUFfTU9ERV9NT0RF XzhCSVQ7CisJCWJyZWFrOworCisJY2FzZSBCRFdfOEJJVF9HQU1NQV9NQVhfVkFMUzoKKwkJLyog TGVnYWN5IHBhbGV0dGUgKi8KKwkJYmR3X3dyaXRlXzhiaXRfZ2FtbWFfbGVnYWN5KGRldiwgY29y cmVjdGlvbl92YWx1ZXMsCisJCQkJTEdDX1BBTEVUVEUocGlwZSwgMCkpOworCQl3b3JkID0gR0FN TUFfTU9ERV9NT0RFXzhCSVQ7CisJCWJyZWFrOworCisJY2FzZSBCRFdfU1BMSVRHQU1NQV9NQVhf VkFMUzoKKwkJaW5kZXggfD0gQkRXX0lOREVYX0FVVE9fSU5DUkVNRU5UIHwgQkRXX0lOREVYX1NQ TElUX01PREU7CisJCUk5MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsKKwkJYmR3X3dy aXRlXzEwYml0X2dhbW1hX3ByZWNpc2lvbihkZXYsIGNvcnJlY3Rpb25fdmFsdWVzLAorCQkJcGFs X3ByZWNfZGF0YSwgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMpOworCQl3b3JkID0gR0FNTUFfTU9E RV9NT0RFX1NQTElUOworCQlicmVhazsKKworCWNhc2UgQkRXXzEyQklUX0dBTU1BX01BWF9WQUxT OgorCQlpbmRleCB8PSBCRFdfSU5ERVhfQVVUT19JTkNSRU1FTlQ7CisJCWluZGV4ICY9IH5CRFdf SU5ERVhfU1BMSVRfTU9ERTsKKwkJSTkxNV9XUklURShwYWxfcHJlY19pbmRleCwgaW5kZXgpOwor CQliZHdfd3JpdGVfMTJiaXRfZ2FtbWFfcHJlY2lzaW9uKGRldiwgY29ycmVjdGlvbl92YWx1ZXMs CisJCQlwYWxfcHJlY19kYXRhLCBwaXBlKTsKKwkJd29yZCA9IEdBTU1BX01PREVfTU9ERV8xMkJJ VDsKKwkJYnJlYWs7CisKKwljYXNlIEJEV18xMEJJVF9HQU1NQV9NQVhfVkFMUzoKKwkJaW5kZXgg fD0gQkRXX0lOREVYX0FVVE9fSU5DUkVNRU5UOworCQlpbmRleCAmPSB+QkRXX0lOREVYX1NQTElU X01PREU7CisJCUk5MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsKKwkJYmR3X3dyaXRl XzEwYml0X2dhbW1hX3ByZWNpc2lvbihkZXYsIGNvcnJlY3Rpb25fdmFsdWVzLAorCQkJcGFsX3By ZWNfZGF0YSwgQkRXXzEwQklUX0dBTU1BX01BWF9WQUxTKTsKKwkJd29yZCA9IEdBTU1BX01PREVf TU9ERV8xMEJJVDsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoIkludmFsaWQg bnVtYmVyIG9mIHNhbXBsZXNcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBTZXQg Z2FtbWEgbW9kZSBvbiBwaXBlIGNvbnRyb2wgcmVnICovCisJbW9kZSA9IEk5MTVfUkVBRChHQU1N QV9NT0RFKHBpcGUpKTsKKwltb2RlICY9IH5HQU1NQV9NT0RFX01PREVfTUFTSzsKKwlJOTE1X1dS SVRFKEdBTU1BX01PREUocGlwZSksIG1vZGUgfCB3b3JkKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJH YW1tYSBhcHBsaWVkIG9uIHBpcGUgJWNcbiIsCisJCXBpcGVfbmFtZShwaXBlKSk7CisJcmV0dXJu IDA7Cit9CisKIHN0YXRpYyBzMzIgY2h2X3ByZXBhcmVfY3NjX2NvZWZmKHM2NCBjc2NfdmFsdWUp CiB7CiAJczMyIGNzY19pbnRfdmFsdWU7CkBAIC0zMDMsNiArNTgyLDggQEAgdm9pZCBpbnRlbF9j b2xvcl9tYW5hZ2VyX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCS8qIEdh bW1hIGNvcnJlY3Rpb24gaXMgcGxhdGZvcm0gc3BlY2lmaWMgKi8KIAkJaWYgKElTX0NIRVJSWVZJ RVcoZGV2KSkKIAkJCXJldCA9IGNodl9zZXRfZ2FtbWEoZGV2LCBibG9iLCBjcnRjKTsKKwkJZWxz ZSBpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSVNfR0VOOShkZXYpKQorCQkJcmV0ID0gYmR3X3Nl dF9nYW1tYShkZXYsIGJsb2IsIGNydGMpOwogCiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoInNl dCBHYW1tYSBjb3JyZWN0aW9uIGZhaWxlZFxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb2xvcl9tYW5hZ2VyLmgKaW5kZXggMjcxMjQ2YS4uNmM3Y2IwOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaApAQCAtOTIsMyArOTIsOSBAQAogCiAvKiBH YW1tYSBvbiBCRFcgKi8KICNkZWZpbmUgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMgICAgICAgICAg ICAgICAgNTEyCisjZGVmaW5lIEJEV184QklUX0dBTU1BX01BWF9WQUxTCQkyNTYKKyNkZWZpbmUg QkRXXzEwQklUX0dBTU1BX01BWF9WQUxTCQkxMDI0CisjZGVmaW5lIEJEV18xMkJJVF9HQU1NQV9N QVhfVkFMUwkJNTEzCisjZGVmaW5lIEJEV19NQVhfR0FNTUEgICAgICAgICAgICAgICAgICAgICAg ICAgKCgxIDw8IDI0KSAtIDEpCisjZGVmaW5lIEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVCAgICAg ICAgICAgICAgICgxIDw8IDE1KQorI2RlZmluZSBCRFdfSU5ERVhfU1BMSVRfTU9ERSAgICAgICAg ICAgICAgICAgICAoMSA8PCAzMSkKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=