From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v5 19/22] drm/i915: BDW: Pipe level Gamma correction Date: Tue, 13 Oct 2015 18:09:54 +0530 Message-ID: <1444739997-24831-20-git-send-email-shashank.sharma@intel.com> References: <1444739997-24831-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: <1444739997-24831-1-git-send-email-shashank.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: 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, kausalmalladi@gmail.com, daniel.vetter@intel.com, =gary.k.smith@intel.com List-Id: dri-devel@lists.freedesktop.org QkRXL1NLTC9CWFQgcGxhdGZvcm1zIHN1cHBvcnQgdmFyaW91cyBHYW1tYSBjb3JyZWN0aW9uIG1v ZGVzCndoaWNoIGFyZToKMS4gTGVnYWN5IDgtYml0IG1vZGUKMi4gMTAtYml0IG1vZGUKMy4gU3Bs aXQgbW9kZQo0LiAxMi1iaXQgbW9kZQoKVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CjEu IEFkZHMgdGhlIGNvcmUgZnVuY3Rpb24gdG8gcHJvZ3JhbSBHYW1tYSBjb3JyZWN0aW9uIHZhbHVl cwogICBmb3IgQkRXL1NLTC9CWFQgcGxhdGZvcm1zCjIuIEFkZHMgR2FtbWEgY29ycmVjdGlvbiBt YWNyb3MvZGVmaW5lcwoKU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5z aGFybWFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBLYXVzYWwgTWFsbGFkaSA8a2F1c2FsbWFs bGFkaUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAg ICAgICAgIHwgIDI1ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdl ci5jIHwgMjg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggfCAgIDYgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMTQg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRl eCBjMzk1YjYzLi4xM2UyNjhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 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 ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwppbmRleCBm ZTk1NzYyLi5jZjg1YmMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j b2xvcl9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFu YWdlci5jCkBAIC0yNyw2ICsyNywyODkgQEAKIAogI2luY2x1ZGUgImludGVsX2NvbG9yX21hbmFn 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 CisJbnVtX3NhbXBsZXMgPSBnYW1tYV9kYXRhLT5udW1fc2FtcGxlczsKKworCXBhbF9wcmVjX2lu ZGV4ID0gX1BSRUNfUEFMX0lOREVYKHBpcGUpOworCXBhbF9wcmVjX2RhdGEgPSBfUFJFQ19QQUxf REFUQShwaXBlKTsKKworCWNvcnJlY3Rpb25fdmFsdWVzID0gKHN0cnVjdCBkcm1fcjMyZzMyYjMy ICopJmdhbW1hX2RhdGEtPmx1dDsKKwlpbmRleCA9IEk5MTVfUkVBRChwYWxfcHJlY19pbmRleCk7 CisKKwlzd2l0Y2ggKG51bV9zYW1wbGVzKSB7CisJY2FzZSBHQU1NQV9ESVNBQkxFX1ZBTFM6CisK KwkJLyogRGlzYWJsZSBHYW1tYSBmdW5jdGlvbmFsaXR5IG9uIFBpcGUgKi8KKwkJRFJNX0RFQlVH X0RSSVZFUigiRGlzYWJsaW5nIGdhbW1hIG9uIFBpcGUgJWNcbiIsCisJCQlwaXBlX25hbWUocGlw ZSkpOworCQltb2RlID0gSTkxNV9SRUFEKEdBTU1BX01PREUocGlwZSkpOworCQlpZiAoKG1vZGUg JiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0gR0FNTUFfTU9ERV9NT0RFXzEyQklUKQorCQkJYmR3 X3Jlc2V0X2dhbW1hKGRldl9wcml2LCBwaXBlKTsKKwkJc3RhdGUtPnBhbGV0dGVfYWZ0ZXJfY3Rt X2Jsb2IgPSBOVUxMOworCQl3b3JkID0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7CisJCWJyZWFrOwor CisJY2FzZSBCRFdfOEJJVF9HQU1NQV9NQVhfVkFMUzoKKworCQkvKiBMZWdhY3kgcGFsZXR0ZSAq LworCQliZHdfd3JpdGVfOGJpdF9nYW1tYV9sZWdhY3koZGV2LCBjb3JyZWN0aW9uX3ZhbHVlcywK KwkJCQlMR0NfUEFMRVRURShwaXBlLCAwKSk7CisJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfOEJJ VDsKKwkJYnJlYWs7CisKKwljYXNlIEJEV19TUExJVEdBTU1BX01BWF9WQUxTOgorCisJCWluZGV4 IHw9IEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVCB8IEJEV19JTkRFWF9TUExJVF9NT0RFOworCQlJ OTE1X1dSSVRFKHBhbF9wcmVjX2luZGV4LCBpbmRleCk7CisJCWJkd193cml0ZV8xMGJpdF9nYW1t YV9wcmVjaXNpb24oZGV2LCBjb3JyZWN0aW9uX3ZhbHVlcywKKwkJCXBhbF9wcmVjX2RhdGEsIEJE V19TUExJVEdBTU1BX01BWF9WQUxTKTsKKwkJd29yZCA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsK KwkJYnJlYWs7CisKKwljYXNlIEJEV18xMkJJVF9HQU1NQV9NQVhfVkFMUzoKKworCQlpbmRleCB8 PSBCRFdfSU5ERVhfQVVUT19JTkNSRU1FTlQ7CisJCWluZGV4ICY9IH5CRFdfSU5ERVhfU1BMSVRf TU9ERTsKKwkJSTkxNV9XUklURShwYWxfcHJlY19pbmRleCwgaW5kZXgpOworCQliZHdfd3JpdGVf MTJiaXRfZ2FtbWFfcHJlY2lzaW9uKGRldiwgY29ycmVjdGlvbl92YWx1ZXMsCisJCQlwYWxfcHJl Y19kYXRhLCBwaXBlKTsKKwkJd29yZCA9IEdBTU1BX01PREVfTU9ERV8xMkJJVDsKKwkJYnJlYWs7 CisKKwljYXNlIEJEV18xMEJJVF9HQU1NQV9NQVhfVkFMUzoKKwkJaW5kZXggfD0gQkRXX0lOREVY X0FVVE9fSU5DUkVNRU5UOworCQlpbmRleCAmPSB+QkRXX0lOREVYX1NQTElUX01PREU7CisJCUk5 MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsKKwkJYmR3X3dyaXRlXzEwYml0X2dhbW1h X3ByZWNpc2lvbihkZXYsIGNvcnJlY3Rpb25fdmFsdWVzLAorCQkJcGFsX3ByZWNfZGF0YSwgQkRX XzEwQklUX0dBTU1BX01BWF9WQUxTKTsKKwkJd29yZCA9IEdBTU1BX01PREVfTU9ERV8xMEJJVDsK KwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoIkludmFsaWQgbnVtYmVyIG9mIHNh bXBsZXNcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBTZXQgZ2FtbWEgbW9kZSBv biBwaXBlIGNvbnRyb2wgcmVnICovCisJbW9kZSA9IEk5MTVfUkVBRChHQU1NQV9NT0RFKHBpcGUp KTsKKwltb2RlICY9IH5HQU1NQV9NT0RFX01PREVfTUFTSzsKKwlJOTE1X1dSSVRFKEdBTU1BX01P REUocGlwZSksIG1vZGUgfCB3b3JkKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJHYW1tYSBhcHBsaWVk IG9uIHBpcGUgJWNcbiIsCisJCXBpcGVfbmFtZShwaXBlKSk7CisJcmV0dXJuIDA7Cit9CisKIHN0 YXRpYyBzMzIgY2h2X3ByZXBhcmVfY3NjX2NvZWZmKHM2NCBjc2NfdmFsdWUpCiB7CiAJczMyIGNz Y19pbnRfdmFsdWU7CkBAIC0zMDQsNiArNTg3LDggQEAgdm9pZCBpbnRlbF9jb2xvcl9tYW5hZ2Vy X2NydGNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCS8qIEdhbW1hIGNvcnJlY3Rp b24gaXMgcGxhdGZvcm0gc3BlY2lmaWMgKi8KIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJ CXJldCA9IGNodl9zZXRfZ2FtbWEoZGV2LCBibG9iLCBjcnRjKTsKKwkJZWxzZSBpZiAoSVNfQlJP QURXRUxMKGRldikgfHwgSVNfR0VOOShkZXYpKQorCQkJcmV0ID0gYmR3X3NldF9nYW1tYShkZXYs IGJsb2IsIGNydGMpOwogCiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoInNldCBHYW1tYSBjb3Jy ZWN0aW9uIGZhaWxlZFxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb2xvcl9tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5h Z2VyLmgKaW5kZXggMjcxMjQ2YS4uNmM3Y2IwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yX21hbmFnZXIuaApAQCAtOTIsMyArOTIsOSBAQAogCiAvKiBHYW1tYSBvbiBCRFcg Ki8KICNkZWZpbmUgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMgICAgICAgICAgICAgICAgNTEyCisj ZGVmaW5lIEJEV184QklUX0dBTU1BX01BWF9WQUxTCQkyNTYKKyNkZWZpbmUgQkRXXzEwQklUX0dB TU1BX01BWF9WQUxTCQkxMDI0CisjZGVmaW5lIEJEV18xMkJJVF9HQU1NQV9NQVhfVkFMUwkJNTEz CisjZGVmaW5lIEJEV19NQVhfR0FNTUEgICAgICAgICAgICAgICAgICAgICAgICAgKCgxIDw8IDI0 KSAtIDEpCisjZGVmaW5lIEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVCAgICAgICAgICAgICAgICgx IDw8IDE1KQorI2RlZmluZSBCRFdfSU5ERVhfU1BMSVRfTU9ERSAgICAgICAgICAgICAgICAgICAo MSA8PCAzMSkKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=