From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 5/5] drm/i915: Implement color management on chv Date: Fri, 26 Feb 2016 17:05:02 +0000 Message-ID: <1456506302-640-6-git-send-email-lionel.g.landwerlin@intel.com> References: <1456506302-640-1-git-send-email-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456506302-640-1-git-send-email-lionel.g.landwerlin@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, dri-devel@lists.freedesktop.org Cc: Kumar@freedesktop.org, kausalmalladi@gmail.com List-Id: dri-devel@lists.freedesktop.org UGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsgU2hhcm1hLgoKdjI6 IFVwZGF0ZSBjb250cmlidXRvcnMKCnYzOiBSZWZhY3RvciBkZWdhbW1hL2dhbW1hIExVVHMgbG9h ZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCgp2NDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoKU2ln bmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBLdW1hciwgS2lyYW4gUyA8a2lyYW4ucy5rdW1hckBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEthdXNhbCBNYWxsYWRpIDxrYXVzYWxtYWxsYWRpQGdtYWlsLmNvbT4KU2ln bmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwu Y29tPgpSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgIHwgICAzICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAgMzEgKysrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jIHwgMTMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggMzgwN2I3My4uOGEyYWFhNyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCkBAIC02OCw2ICs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Ry aXZlciBkcml2ZXI7CiAKICNkZWZpbmUgQkRXX0NPTE9SUyBcCiAJLmNvbG9yID0geyAuZGVnYW1t YV9sdXRfc2l6ZSA9IDUxMiwgLmdhbW1hX2x1dF9zaXplID0gNTEyIH0KKyNkZWZpbmUgQ0hWX0NP TE9SUyBcCisJLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDY1LCAuZ2FtbWFfbHV0X3Np emUgPSAyNTcgfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVs X2k4MzBfaW5mbyA9IHsKIAkuZ2VuID0gMiwgLmlzX21vYmlsZSA9IDEsIC5jdXJzb3JfbmVlZHNf cGh5c2ljYWwgPSAxLCAubnVtX3BpcGVzID0gMiwKQEAgLTMyNSw2ICszMjcsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsK IAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZMVl9ESVNQTEFZX0JBU0UsCiAJR0VOX0NIVl9QSVBF T0ZGU0VUUywKIAlDVVJTT1JfT0ZGU0VUUywKKwlDSFZfQ09MT1JTLAogfTsKIAogc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9za3lsYWtlX2luZm8gPSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAppbmRleCA3NmE5ZTQ5Li5lYTU5OWE5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKQEAgLTc2NzMsNiArNzY3MywzNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxz IHsKICNkZWZpbmUgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsIF9Q QUxfUFJFQ19HQ19NQVhfQSwgX1BBTF9QUkVDX0dDX01BWF9CKSArIChpKSAqIDQpCiAjZGVmaW5l IFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUocGlwZSwgX1BBTF9QUkVD X0VYVF9HQ19NQVhfQSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQikgKyAoaSkgKiA0KQogCisvKiBw aXBlIENTQyAmIGRlZ2FtbWEvZ2FtbWEgTFVUcyBvbiBDSFYgKi8KKyNkZWZpbmUgX0NHTV9QSVBF X0FfQ1NDX0NPRUZGMDEJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY3OTAwKQorI2RlZmluZSBfQ0dN X1BJUEVfQV9DU0NfQ09FRkYyMwkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njc5MDQpCisjZGVmaW5l IF9DR01fUElQRV9BX0NTQ19DT0VGRjQ1CShWTFZfRElTUExBWV9CQVNFICsgMHg2NzkwOCkKKyNk ZWZpbmUgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGNjcJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY3OTBD KQorI2RlZmluZSBfQ0dNX1BJUEVfQV9DU0NfQ09FRkY4CShWTFZfRElTUExBWV9CQVNFICsgMHg2 NzkxMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0FfREVHQU1NQQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4 NjYwMDApCisjZGVmaW5lIF9DR01fUElQRV9BX0dBTU1BCShWTFZfRElTUExBWV9CQVNFICsgMHg2 NzAwMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0FfTU9ERQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjdB MDApCisjZGVmaW5lICAgQ0dNX1BJUEVfTU9ERV9HQU1NQQkoMSA8PCAyKQorI2RlZmluZSAgIENH TV9QSVBFX01PREVfQ1NDCSgxIDw8IDEpCisjZGVmaW5lICAgQ0dNX1BJUEVfTU9ERV9ERUdBTU1B CSgxIDw8IDApCisKKyNkZWZpbmUgX0NHTV9QSVBFX0JfQ1NDX0NPRUZGMDEJKFZMVl9ESVNQTEFZ X0JBU0UgKyAweDY5OTAwKQorI2RlZmluZSBfQ0dNX1BJUEVfQl9DU0NfQ09FRkYyMwkoVkxWX0RJ U1BMQVlfQkFTRSArIDB4Njk5MDQpCisjZGVmaW5lIF9DR01fUElQRV9CX0NTQ19DT0VGRjQ1CShW TFZfRElTUExBWV9CQVNFICsgMHg2OTkwOCkKKyNkZWZpbmUgX0NHTV9QSVBFX0JfQ1NDX0NPRUZG NjcJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY5OTBDKQorI2RlZmluZSBfQ0dNX1BJUEVfQl9DU0Nf Q09FRkY4CShWTFZfRElTUExBWV9CQVNFICsgMHg2OTkxMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0Jf REVHQU1NQQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjgwMDApCisjZGVmaW5lIF9DR01fUElQRV9C X0dBTU1BCShWTFZfRElTUExBWV9CQVNFICsgMHg2OTAwMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0Jf TU9ERQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjlBMDApCisKKyNkZWZpbmUgQ0dNX1BJUEVfQ1ND X0NPRUZGMDEocGlwZSkJX01NSU9fUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9DU0NfQ09FRkYwMSwg X0NHTV9QSVBFX0JfQ1NDX0NPRUZGMDEpCisjZGVmaW5lIENHTV9QSVBFX0NTQ19DT0VGRjIzKHBp cGUpCV9NTUlPX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGMjMsIF9DR01fUElQRV9C X0NTQ19DT0VGRjIzKQorI2RlZmluZSBDR01fUElQRV9DU0NfQ09FRkY0NShwaXBlKQlfTU1JT19Q SVBFKHBpcGUsIF9DR01fUElQRV9BX0NTQ19DT0VGRjQ1LCBfQ0dNX1BJUEVfQl9DU0NfQ09FRkY0 NSkKKyNkZWZpbmUgQ0dNX1BJUEVfQ1NDX0NPRUZGNjcocGlwZSkJX01NSU9fUElQRShwaXBlLCBf Q0dNX1BJUEVfQV9DU0NfQ09FRkY2NywgX0NHTV9QSVBFX0JfQ1NDX0NPRUZGNjcpCisjZGVmaW5l IENHTV9QSVBFX0NTQ19DT0VGRjgocGlwZSkJX01NSU9fUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9D U0NfQ09FRkY4LCBfQ0dNX1BJUEVfQl9DU0NfQ09FRkY4KQorI2RlZmluZSBDR01fUElQRV9ERUdB TU1BKHBpcGUsIGksIHcpCV9NTUlPKF9QSVBFKHBpcGUsIF9DR01fUElQRV9BX0RFR0FNTUEsIF9D R01fUElQRV9CX0RFR0FNTUEpICsgKGkpICogOCArICh3KSAqIDQpCisjZGVmaW5lIENHTV9QSVBF X0dBTU1BKHBpcGUsIGksIHcpCV9NTUlPKF9QSVBFKHBpcGUsIF9DR01fUElQRV9BX0dBTU1BLCBf Q0dNX1BJUEVfQl9HQU1NQSkgKyAoaSkgKiA4ICsgKHcpICogNCkKKyNkZWZpbmUgQ0dNX1BJUEVf TU9ERShwaXBlKQkJX01NSU9fUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9NT0RFLCBfQ0dNX1BJUEVf Ql9NT0RFKQorCiAvKiBNSVBJIERTSSByZWdpc3RlcnMgKi8KIAogI2RlZmluZSBfTUlQSV9QT1JU KHBvcnQsIGEsIGMpCV9QT1JUMyhwb3J0LCBhLCAwLCBjKQkvKiBwb3J0cyBBIGFuZCBDIG9ubHkg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCmluZGV4IGM2MzQwZDguLmFhMGIyMGQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwpAQCAtMjksNiArMjksNyBAQAogI2RlZmluZSBD VE1fQ09FRkZfMV8wCSgxVUxMIDw8IDMyKQogI2RlZmluZSBDVE1fQ09FRkZfMl8wCShDVE1fQ09F RkZfMV8wIDw8IDEpCiAjZGVmaW5lIENUTV9DT0VGRl80XzAJKENUTV9DT0VGRl8yXzAgPDwgMSkK KyNkZWZpbmUgQ1RNX0NPRUZGXzhfMAkoQ1RNX0NPRUZGXzRfMCA8PCAxKQogI2RlZmluZSBDVE1f Q09FRkZfMF81CShDVE1fQ09FRkZfMV8wID4+IDEpCiAjZGVmaW5lIENUTV9DT0VGRl8wXzI1CShD VE1fQ09FRkZfMF81ID4+IDEpCiAjZGVmaW5lIENUTV9DT0VGRl8wXzEyNQkoQ1RNX0NPRUZGXzBf MjUgPj4gMSkKQEAgLTE5OSw2ICsyMDAsNTggQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2NzY19t YXRyaXgoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCX0KIH0KIAorLyoKKyAqIFNldCB1cCB0aGUg cGlwZSBDU0MgdW5pdCBvbiBDaGVycnlWaWV3LgorICovCitzdGF0aWMgdm9pZCBjaGVycnl2aWV3 X2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlID0g Y3J0Yy0+c3RhdGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwlpbnQgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7CisJdWlu dDMyX3QgbW9kZTsKKworCWlmIChzdGF0ZS0+Y3RtKSB7CisJCXN0cnVjdCBkcm1fY29sb3JfY3Rt ICpjdG0gPQorCQkJKHN0cnVjdCBkcm1fY29sb3JfY3RtICopIHN0YXRlLT5jdG0tPmRhdGE7CisJ CXVpbnQxNl90IGNvZWZmc1s5XSA9IHsgMCwgfTsKKwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoY29lZmZzKTsgaSsrKSB7CisJCQl1aW50NjRfdCBhYnNfY29lZmYgPQor CQkJCSgoMVVMTCA8PCA2MykgLSAxKSAmIGN0bS0+bWF0cml4W2ldOworCisJCQkvKiBSb3VuZCBj b2VmZmljaWVudC4gKi8KKwkJCWFic19jb2VmZiArPSAxIDw8ICgzMiAtIDEzKTsKKwkJCS8qIENs YW1wIHRvIGhhcmR3YXJlIGxpbWl0cy4gKi8KKwkJCWFic19jb2VmZiA9IGNsYW1wX3ZhbChhYnNf Y29lZmYsIDAsIENUTV9DT0VGRl84XzAgLSAxKTsKKworCQkJLyogV3JpdGUgY29lZmZpY2llbnRz IGluIFMzLjEyIGZvcm1hdC4gKi8KKwkJCWlmIChjdG0tPm1hdHJpeFtpXSAmICgxVUxMIDw8IDYz KSkKKwkJCQljb2VmZnNbaV0gPSAxIDw8IDE1OworCQkJY29lZmZzW2ldIHw9ICgoYWJzX2NvZWZm ID4+IDMyKSAmIDcpIDw8IDEyOworCQkJY29lZmZzW2ldIHw9IChhYnNfY29lZmYgPj4gMjApICYg MHhmZmY7CisJCX0KKworCQlJOTE1X1dSSVRFKENHTV9QSVBFX0NTQ19DT0VGRjAxKHBpcGUpLAor CQkJICAgY29lZmZzWzFdIDw8IDE2IHwgY29lZmZzWzBdKTsKKwkJSTkxNV9XUklURShDR01fUElQ RV9DU0NfQ09FRkYyMyhwaXBlKSwKKwkJCSAgIGNvZWZmc1szXSA8PCAxNiB8IGNvZWZmc1syXSk7 CisJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1NDX0NPRUZGNDUocGlwZSksCisJCQkgICBjb2VmZnNb NV0gPDwgMTYgfCBjb2VmZnNbNF0pOworCQlJOTE1X1dSSVRFKENHTV9QSVBFX0NTQ19DT0VGRjY3 KHBpcGUpLAorCQkJICAgY29lZmZzWzddIDw8IDE2IHwgY29lZmZzWzZdKTsKKwkJSTkxNV9XUklU RShDR01fUElQRV9DU0NfQ09FRkY4KHBpcGUpLCBjb2VmZnNbOF0pOworCX0KKworCW1vZGUgPSAo c3RhdGUtPmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCk7CisJaWYgKCFjcnRjX3N0YXRlX2lz X2xlZ2FjeShzdGF0ZSkpIHsKKwkJbW9kZSB8PSAoc3RhdGUtPmRlZ2FtbWFfbHV0ID8gQ0dNX1BJ UEVfTU9ERV9ERUdBTU1BIDogMCkgfAorCQkJKHN0YXRlLT5nYW1tYV9sdXQgPyBDR01fUElQRV9N T0RFX0dBTU1BIDogMCk7CisJfQorCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShwaXBlKSwgbW9k ZSk7Cit9CisKIHZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTIwOSwxMCArMjYy LDEwIEBAIHZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9 CiAKIC8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQy4g Ki8KLXN0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0 YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK KwkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iKQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSA9 IGNydGMtPnN0YXRlOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKQEAgLTIyNSw5 ICsyNzgsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJCQlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUpOwogCX0KIAotCWlmIChz dGF0ZS0+Z2FtbWFfbHV0KSB7Ci0JCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPQotCQkJKHN0 cnVjdCBkcm1fY29sb3JfbHV0ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7CisJaWYgKGJsb2Ip IHsKKwkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IChzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAq KSBibG9iLT5kYXRhOwogCQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKIAkJCXVpbnQzMl90 IHdvcmQgPQogCQkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgOCkgPDwgMTYp IHwKQEAgLTI1MSw2ICszMDMsMTEgQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogCX0KIH0KIAorc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQoreworCWk5eHhfbG9hZF9sdXRzX2ludGVybmFsKGNydGMsIGNy dGMtPnN0YXRlLT5nYW1tYV9sdXQpOworfQorCiAvKiBMb2FkcyB0aGUgbGVnYWN5IHBhbGV0dGUv Z2FtbWEgdW5pdCBmb3IgdGhlIENSVEMgb24gSGFzd2VsbC4gKi8KIHN0YXRpYyB2b2lkIGhhc3dl bGxfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKQEAgLTM2Myw2ICs0MjAsNjcg QEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7CiB9CiAKKy8qIExvYWRzIHRo ZSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIENoZXJyeVZpZXcuICovCitzdGF0 aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqc3RhdGUgPSBjcnRjLT5zdGF0ZTsKKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMo Y3J0YyktPnBpcGU7CisJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsKKwl1aW50MzJfdCBpLCBs dXRfc2l6ZTsKKwl1aW50MzJfdCB3b3JkMCwgd29yZDE7CisKKwlpZiAoY3J0Y19zdGF0ZV9pc19s ZWdhY3koc3RhdGUpKSB7CisJCS8qIFR1cm4gb2ZmIGRlZ2FtbWEvZ2FtbWEgb24gQ0dNIGJsb2Nr LiAqLworCQlJOTE1X1dSSVRFKENHTV9QSVBFX01PREUocGlwZSksCisJCQkgICAoc3RhdGUtPmN0 bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCkpOworCQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChj cnRjLCBzdGF0ZS0+Z2FtbWFfbHV0KTsKKwkJcmV0dXJuOworCX0KKworCWlmIChzdGF0ZS0+ZGVn YW1tYV9sdXQpIHsKKwkJbHV0ID0gKHN0cnVjdCBkcm1fY29sb3JfbHV0ICopIHN0YXRlLT5kZWdh bW1hX2x1dC0+ZGF0YTsKKwkJbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldiktPmNvbG9yLmRlZ2Ft bWFfbHV0X3NpemU7CisJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CisJCQkvKiBX cml0ZSBMVVQgaW4gVTAuMTQgZm9ybWF0LiAqLworCQkJd29yZDAgPQorCQkJKGRybV9jb2xvcl9s dXRfZXh0cmFjdChsdXRbaV0uZ3JlZW4sIDE0KSA8PCAxNikgfAorCQkJZHJtX2NvbG9yX2x1dF9l eHRyYWN0KGx1dFtpXS5ibHVlLCAxNCk7CisJCQl3b3JkMSA9IGRybV9jb2xvcl9sdXRfZXh0cmFj dChsdXRbaV0ucmVkLCAxNCk7CisKKwkJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfREVHQU1NQShwaXBl LCBpLCAwKSwgd29yZDApOworCQkJSTkxNV9XUklURShDR01fUElQRV9ERUdBTU1BKHBpcGUsIGks IDEpLCB3b3JkMSk7CisJCX0KKwl9CisKKwlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgeworCQlsdXQg PSAoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKKwkJbHV0 X3NpemUgPSBJTlRFTF9JTkZPKGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOworCQlmb3IgKGkg PSAwOyBpIDwgbHV0X3NpemU7IGkrKykgeworCQkJLyogV3JpdGUgTFVUIGluIFUwLjEwIGZvcm1h dC4gKi8KKwkJCXdvcmQwID0KKwkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmdyZWVu LCAxMCkgPDwgMTYpIHwKKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTAp OworCQkJd29yZDEgPSBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTApOworCisJ CQlJOTE1X1dSSVRFKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDApLCB3b3JkMCk7CisJCQlJOTE1 X1dSSVRFKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDEpLCB3b3JkMSk7CisJCX0KKwl9CisKKwlJ OTE1X1dSSVRFKENHTV9QSVBFX01PREUocGlwZSksCisJCSAgIChzdGF0ZS0+Y3RtID8gQ0dNX1BJ UEVfTU9ERV9DU0MgOiAwKSB8CisJCSAgIChzdGF0ZS0+ZGVnYW1tYV9sdXQgPyBDR01fUElQRV9N T0RFX0RFR0FNTUEgOiAwKSB8CisJCSAgIChzdGF0ZS0+Z2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9E RV9HQU1NQSA6IDApKTsKKworCS8qCisJICogQWxzbyBwcm9ncmFtIGEgbGluZWFyIExVVCBpbiB0 aGUgbGVnYWN5IGJsb2NrIChiZWhpbmQgdGhlCisJICogQ0dNIGJsb2NrKS4KKwkgKi8KKwlpOXh4 X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjLCBOVUxMKTsKK30KKwogdm9pZCBpbnRlbF9jb2xvcl9s b2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5kZXY7CkBAIC00MTUsNyArNTMzLDEwIEBAIHZvaWQgaW50ZWxfY29sb3JfaW5p dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXpl KGNydGMsIDI1Nik7CiAKLQlpZiAoSVNfSEFTV0VMTChkZXYpKSB7CisJaWYgKElTX0NIRVJSWVZJ RVcoZGV2KSkgeworCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBjaGVycnl2 aWV3X2xvYWRfY3NjX21hdHJpeDsKKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gY2hl cnJ5dmlld19sb2FkX2x1dHM7CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikpIHsKIAkJZGV2 X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4ID0gaTl4eF9sb2FkX2NzY19tYXRyaXg7CiAJ CWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGhhc3dlbGxfbG9hZF9sdXRzOwogCX0gZWxz ZSBpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8Ci0tIAoyLjcuMAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==