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, 19 Feb 2016 15:39:22 +0000 Message-ID: <1455896362-27819-6-git-send-email-lionel.g.landwerlin@intel.com> References: <1455896362-27819-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: <1455896362-27819-1-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Kumar@freedesktop.org, kausalmalladi@gmail.com, kiran.s.kumar@intel.com List-Id: intel-gfx@lists.freedesktop.org UGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsgU2hhcm1hLgoKdjI6 IFVwZGF0ZSBjb250cmlidXRvcnMKCnYzOiBSZWZhY3RvciBkZWdhbW1hL2dhbW1hIExVVHMgbG9h ZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEg PHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2Vy bGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogS3VtYXIs IEtpcmFuIFMgPGtpcmFuLnMua3VtYXJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBLYXVzYWwg TWFsbGFkaSA8a2F1c2FsbWFsbGFkaUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o ICAgIHwgIDMxICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyB8 IDEzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5n ZWQsIDE2NCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCmluZGV4IDM4MDdiNzMuLjhhMmFhYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAt NjgsNiArNjgsOCBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyOwogCiAjZGVmaW5l IEJEV19DT0xPUlMgXAogCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSA1MTIsIC5nYW1t YV9sdXRfc2l6ZSA9IDUxMiB9CisjZGVmaW5lIENIVl9DT0xPUlMgXAorCS5jb2xvciA9IHsgLmRl Z2FtbWFfbHV0X3NpemUgPSA2NSwgLmdhbW1hX2x1dF9zaXplID0gMjU3IH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pODMwX2luZm8gPSB7CiAJLmdlbiA9 IDIsIC5pc19tb2JpbGUgPSAxLCAuY3Vyc29yX25lZWRzX3BoeXNpY2FsID0gMSwgLm51bV9waXBl cyA9IDIsCkBAIC0zMjUsNiArMzI3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZp Y2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7CiAJLmRpc3BsYXlfbW1pb19vZmZzZXQg PSBWTFZfRElTUExBWV9CQVNFLAogCUdFTl9DSFZfUElQRU9GRlNFVFMsCiAJQ1VSU09SX09GRlNF VFMsCisJQ0hWX0NPTE9SUywKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNl X2luZm8gaW50ZWxfc2t5bGFrZV9pbmZvID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXgg OGNlNzZkNy4uZWZmZDc5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03NjcyLDYgKzc2 NzIsMzcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIFBSRUNfUEFMX0dD X01BWChwaXBlLCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFMX1BSRUNfR0NfTUFYX0EsIF9QQUxf UFJFQ19HQ19NQVhfQikgKyAoaSkgKiA0KQogI2RlZmluZSBQUkVDX1BBTF9FWFRfR0NfTUFYKHBp cGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0EsIF9QQUxfUFJF Q19FWFRfR0NfTUFYX0IpICsgKGkpICogNCkKIAorLyogcGlwZSBDU0MgJiBkZWdhbW1hL2dhbW1h IExVVHMgb24gQ0hWICovCisjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19DT0VGRjAxCShWTFZfRElT UExBWV9CQVNFICsgMHg2NzkwMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGMjMJKFZM Vl9ESVNQTEFZX0JBU0UgKyAweDY3OTA0KQorI2RlZmluZSBfQ0dNX1BJUEVfQV9DU0NfQ09FRkY0 NQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njc5MDgpCisjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19D T0VGRjY3CShWTFZfRElTUExBWV9CQVNFICsgMHg2NzkwQykKKyNkZWZpbmUgX0NHTV9QSVBFX0Ff Q1NDX0NPRUZGOAkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njc5MTApCisjZGVmaW5lIF9DR01fUElQ RV9BX0RFR0FNTUEJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY2MDAwKQorI2RlZmluZSBfQ0dNX1BJ UEVfQV9HQU1NQQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjcwMDApCisjZGVmaW5lIF9DR01fUElQ RV9BX01PREUJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY3QTAwKQorI2RlZmluZSAgIENHTV9QSVBF X01PREVfR0FNTUEJKDEgPDwgMikKKyNkZWZpbmUgICBDR01fUElQRV9NT0RFX0NTQwkoMSA8PCAx KQorI2RlZmluZSAgIENHTV9QSVBFX01PREVfREVHQU1NQQkoMSA8PCAwKQorCisjZGVmaW5lIF9D R01fUElQRV9CX0NTQ19DT0VGRjAxCShWTFZfRElTUExBWV9CQVNFICsgMHg2OTkwMCkKKyNkZWZp bmUgX0NHTV9QSVBFX0JfQ1NDX0NPRUZGMjMJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY5OTA0KQor I2RlZmluZSBfQ0dNX1BJUEVfQl9DU0NfQ09FRkY0NQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njk5 MDgpCisjZGVmaW5lIF9DR01fUElQRV9CX0NTQ19DT0VGRjY3CShWTFZfRElTUExBWV9CQVNFICsg MHg2OTkwQykKKyNkZWZpbmUgX0NHTV9QSVBFX0JfQ1NDX0NPRUZGOAkoVkxWX0RJU1BMQVlfQkFT RSArIDB4Njk5MTApCisjZGVmaW5lIF9DR01fUElQRV9CX0RFR0FNTUEJKFZMVl9ESVNQTEFZX0JB U0UgKyAweDY4MDAwKQorI2RlZmluZSBfQ0dNX1BJUEVfQl9HQU1NQQkoVkxWX0RJU1BMQVlfQkFT RSArIDB4NjkwMDApCisjZGVmaW5lIF9DR01fUElQRV9CX01PREUJKFZMVl9ESVNQTEFZX0JBU0Ug KyAweDY5QTAwKQorCisjZGVmaW5lIENHTV9QSVBFX0NTQ19DT0VGRjAxKHBpcGUpCV9NTUlPX1BJ UEUocGlwZSwgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGMDEsIF9DR01fUElQRV9CX0NTQ19DT0VGRjAx KQorI2RlZmluZSBDR01fUElQRV9DU0NfQ09FRkYyMyhwaXBlKQlfTU1JT19QSVBFKHBpcGUsIF9D R01fUElQRV9BX0NTQ19DT0VGRjIzLCBfQ0dNX1BJUEVfQl9DU0NfQ09FRkYyMykKKyNkZWZpbmUg Q0dNX1BJUEVfQ1NDX0NPRUZGNDUocGlwZSkJX01NSU9fUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9D U0NfQ09FRkY0NSwgX0NHTV9QSVBFX0JfQ1NDX0NPRUZGNDUpCisjZGVmaW5lIENHTV9QSVBFX0NT Q19DT0VGRjY3KHBpcGUpCV9NTUlPX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGNjcs IF9DR01fUElQRV9CX0NTQ19DT0VGRjY3KQorI2RlZmluZSBDR01fUElQRV9DU0NfQ09FRkY4KHBp cGUpCV9NTUlPX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGOCwgX0NHTV9QSVBFX0Jf Q1NDX0NPRUZGOCkKKyNkZWZpbmUgQ0dNX1BJUEVfREVHQU1NQShwaXBlLCBpLCB3KQlfTU1JTyhf UElQRShwaXBlLCBfQ0dNX1BJUEVfQV9ERUdBTU1BLCBfQ0dNX1BJUEVfQl9ERUdBTU1BKSArIChp KSAqIDggKyAodykgKiA0KQorI2RlZmluZSBDR01fUElQRV9HQU1NQShwaXBlLCBpLCB3KQlfTU1J TyhfUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9HQU1NQSwgX0NHTV9QSVBFX0JfR0FNTUEpICsgKGkp ICogOCArICh3KSAqIDQpCisjZGVmaW5lIENHTV9QSVBFX01PREUocGlwZSkJCV9NTUlPX1BJUEUo cGlwZSwgX0NHTV9QSVBFX0FfTU9ERSwgX0NHTV9QSVBFX0JfTU9ERSkKKwogLyogTUlQSSBEU0kg cmVnaXN0ZXJzICovCiAKICNkZWZpbmUgX01JUElfUE9SVChwb3J0LCBhLCBjKQlfUE9SVDMocG9y dCwgYSwgMCwgYykJLyogcG9ydHMgQSBhbmQgQyBvbmx5ICovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29sb3IuYwppbmRleCAxNWQ4NmY2Li4zMzQzNDE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bG9yLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgQ1RNX0NPRUZGXzFfMAkoMVVMTCA8PCAz MikKICNkZWZpbmUgQ1RNX0NPRUZGXzJfMAkoQ1RNX0NPRUZGXzFfMCA8PCAxKQogI2RlZmluZSBD VE1fQ09FRkZfNF8wCShDVE1fQ09FRkZfMl8wIDw8IDEpCisjZGVmaW5lIENUTV9DT0VGRl84XzAJ KENUTV9DT0VGRl80XzAgPDwgMSkKICNkZWZpbmUgQ1RNX0NPRUZGXzBfNQkoQ1RNX0NPRUZGXzFf MCA+PiAxKQogI2RlZmluZSBDVE1fQ09FRkZfMF8yNQkoQ1RNX0NPRUZGXzBfNSA+PiAxKQogI2Rl ZmluZSBDVE1fQ09FRkZfMF8xMjUJKENUTV9DT0VGRl8wXzI1ID4+IDEpCkBAIC0yMTYsNiArMjE3 LDU5IEBAIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAl9CiB9CiAKKy8qCisgKiBTZXQgdXAgdGhlIHBpcGUgQ1NDIHVuaXQgb24gQ2hlcnJ5 Vmlldy4KKyAqLworc3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2NzY19tYXRyaXgoc3RydWN0 IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSA9IGNydGMtPnN0YXRlOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCWludCBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKKwl1aW50MzJfdCBtb2RlOworCisJaWYgKHN0YXRlLT5jdG0pIHsK KwkJc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9CisJCQkoc3RydWN0IGRybV9jb2xvcl9jdG0g Kikgc3RhdGUtPmN0bS0+ZGF0YTsKKwkJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9OworCQlp bnQgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2VmZnMpOyBpKyspIHsKKwkJ CXVpbnQ2NF90IGFic19jb2VmZiA9CisJCQkJKCgxVUxMIDw8IDYzKSAtIDEpICYgY3RtLT5tYXRy aXhbaV07CisKKwkJCS8qIFJvdW5kIGNvZWZmaWNpZW50LiAqLworCQkJYWJzX2NvZWZmICs9IDEg PDwgKDMyIC0gMTMpOworCQkJLyogQ2xhbXAgdG8gaGFyZHdhcmUgbGltaXRzLiAqLworCQkJYWJz X2NvZWZmID0gY2xhbXBfdmFsKGFic19jb2VmZiwgMCwgQ1RNX0NPRUZGXzhfMCAtIDEpOworCisJ CQkvKiBXcml0ZSBjb2VmZmljaWVudHMgaW4gUzMuMTIgZm9ybWF0LiAqLworCQkJaWYgKGN0bS0+ bWF0cml4W2ldICYgKDFVTEwgPDwgNjMpKQorCQkJCWNvZWZmc1tpXSA9IDEgPDwgMTU7CisJCQlj b2VmZnNbaV0gfD0gKChhYnNfY29lZmYgPj4gMzIpICYgNykgPDwgMTI7CisJCQljb2VmZnNbaV0g fD0gKGFic19jb2VmZiA+PiAyMCkgJiAweGZmZjsKKwkJfQorCisJCUk5MTVfV1JJVEUoQ0dNX1BJ UEVfQ1NDX0NPRUZGMDEocGlwZSksCisJCQkgICBjb2VmZnNbMV0gPDwgMTYgfCBjb2VmZnNbMF0p OworCQlJOTE1X1dSSVRFKENHTV9QSVBFX0NTQ19DT0VGRjIzKHBpcGUpLAorCQkJICAgY29lZmZz WzNdIDw8IDE2IHwgY29lZmZzWzJdKTsKKwkJSTkxNV9XUklURShDR01fUElQRV9DU0NfQ09FRkY0 NShwaXBlKSwKKwkJCSAgIGNvZWZmc1s1XSA8PCAxNiB8IGNvZWZmc1s0XSk7CisJCUk5MTVfV1JJ VEUoQ0dNX1BJUEVfQ1NDX0NPRUZGNjcocGlwZSksCisJCQkgICBjb2VmZnNbN10gPDwgMTYgfCBj b2VmZnNbNl0pOworCQlJOTE1X1dSSVRFKENHTV9QSVBFX0NTQ19DT0VGRjgocGlwZSksIGNvZWZm c1s4XSk7CisJfQorCisJbW9kZSA9IChzdGF0ZS0+Y3RtID8gQ0dNX1BJUEVfTU9ERV9DU0MgOiAw KTsKKwlpZiAoIWNydGNfc3RhdGVfaXNfbGVnYWN5KHN0YXRlKSkgeworCQltb2RlIHw9IChzdGF0 ZS0+ZGVnYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0RFR0FNTUEgOiAwKSB8CisJCQkoc3RhdGUt PmdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVfR0FNTUEgOiAwKTsKKwl9CisJSTkxNV9XUklURShD R01fUElQRV9NT0RFKHBpcGUpLCBtb2RlKTsKK30KKwogdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3Nj KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+ZGV2OwpAQCAtMjI2LDEyICsyODAsMTMgQEAgdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIAogLyogTG9hZHMgdGhlIGxlZ2FjeSBwYWxldHRlL2dh bW1hIHVuaXQgZm9yIHRoZSBDUlRDLiAqLwotc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwo c3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KmJsb2IpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKnN0YXRlID0gY3J0Yy0+c3RhdGU7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQllbnVtIHBpcGUgcGlwZSA9IHRv X2ludGVsX2NydGMoY3J0YyktPnBpcGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOworCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKIAlpbnQgaTsKIAogCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikpIHsKQEAgLTI0MSw5ICsy OTYsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJCQlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUpOwogCX0KIAotCWlmIChzdGF0 ZS0+Z2FtbWFfbHV0KSB7Ci0JCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPQotCQkJKHN0cnVj dCBkcm1fY29sb3JfbHV0ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7CisJaWYgKGJsb2IpIHsK KwkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IChzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqKSBi bG9iLT5kYXRhOwogCQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKIAkJCXVpbnQzMl90IHdv cmQgPQogCQkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgOCkgPDwgMTYpIHwK QEAgLTI2Nyw2ICszMjEsMTEgQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCX0KIH0KIAorc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0 IGRybV9jcnRjICpjcnRjKQoreworCWk5eHhfbG9hZF9sdXRzX2ludGVybmFsKGNydGMsIGNydGMt PnN0YXRlLT5nYW1tYV9sdXQpOworfQorCiAvKiBMb2FkcyB0aGUgbGVnYWN5IHBhbGV0dGUvZ2Ft bWEgdW5pdCBmb3IgdGhlIENSVEMgb24gSGFzd2VsbC4gKi8KIHN0YXRpYyB2b2lkIGhhc3dlbGxf bG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKQEAgLTM3OSw2ICs0MzgsNjcgQEAg c3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ STkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7CiB9CiAKKy8qIExvYWRzIHRoZSBw YWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIENoZXJyeVZpZXcuICovCitzdGF0aWMg dm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUgPSBjcnRjLT5zdGF0ZTsKKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0 YyktPnBpcGU7CisJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsKKwl1aW50MzJfdCBpLCBsdXRf c2l6ZTsKKwl1aW50MzJfdCB3b3JkMCwgd29yZDE7CisKKwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdh Y3koc3RhdGUpKSB7CisJCS8qIFR1cm4gb2ZmIGRlZ2FtbWEvZ2FtbWEgb24gQ0dNIGJsb2NrLiAq LworCQlJOTE1X1dSSVRFKENHTV9QSVBFX01PREUocGlwZSksCisJCQkgICAoc3RhdGUtPmN0bSA/ IENHTV9QSVBFX01PREVfQ1NDIDogMCkpOworCQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRj LCBzdGF0ZS0+Z2FtbWFfbHV0KTsKKwkJcmV0dXJuOworCX0KKworCWlmIChzdGF0ZS0+ZGVnYW1t YV9sdXQpIHsKKwkJbHV0ID0gKHN0cnVjdCBkcm1fY29sb3JfbHV0ICopIHN0YXRlLT5kZWdhbW1h X2x1dC0+ZGF0YTsKKwkJbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldiktPmNvbG9yLmRlZ2FtbWFf bHV0X3NpemU7CisJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CisJCQkvKiBXcml0 ZSBMVVQgaW4gVTAuMTQgZm9ybWF0LiAqLworCQkJd29yZDAgPQorCQkJKGRybV9jb2xvcl9sdXRf ZXh0cmFjdChsdXRbaV0uZ3JlZW4sIDE0KSA8PCAxNikgfAorCQkJZHJtX2NvbG9yX2x1dF9leHRy YWN0KGx1dFtpXS5ibHVlLCAxNCk7CisJCQl3b3JkMSA9IGRybV9jb2xvcl9sdXRfZXh0cmFjdChs dXRbaV0ucmVkLCAxNCk7CisKKwkJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfREVHQU1NQShwaXBlLCBp LCAwKSwgd29yZDApOworCQkJSTkxNV9XUklURShDR01fUElQRV9ERUdBTU1BKHBpcGUsIGksIDEp LCB3b3JkMSk7CisJCX0KKwl9CisKKwlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgeworCQlsdXQgPSAo c3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKKwkJbHV0X3Np emUgPSBJTlRFTF9JTkZPKGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOworCQlmb3IgKGkgPSAw OyBpIDwgbHV0X3NpemU7IGkrKykgeworCQkJLyogV3JpdGUgTFVUIGluIFUwLjEwIGZvcm1hdC4g Ki8KKwkJCXdvcmQwID0KKwkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmdyZWVuLCAx MCkgPDwgMTYpIHwKKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTApOwor CQkJd29yZDEgPSBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTApOworCisJCQlJ OTE1X1dSSVRFKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDApLCB3b3JkMCk7CisJCQlJOTE1X1dS SVRFKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDEpLCB3b3JkMSk7CisJCX0KKwl9CisKKwlJOTE1 X1dSSVRFKENHTV9QSVBFX01PREUocGlwZSksCisJCSAgIChzdGF0ZS0+Y3RtID8gQ0dNX1BJUEVf TU9ERV9DU0MgOiAwKSB8CisJCSAgIChzdGF0ZS0+ZGVnYW1tYV9sdXQgPyBDR01fUElQRV9NT0RF X0RFR0FNTUEgOiAwKSB8CisJCSAgIChzdGF0ZS0+Z2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9ERV9H QU1NQSA6IDApKTsKKworCS8qCisJICogQWxzbyBwcm9ncmFtIGEgbGluZWFyIExVVCBpbiB0aGUg bGVnYWN5IGJsb2NrIChiZWhpbmQgdGhlCisJICogQ0dNIGJsb2NrKS4KKwkgKi8KKwlpOXh4X2xv YWRfbHV0c19pbnRlcm5hbChjcnRjLCBOVUxMKTsKK30KKwogdm9pZCBpbnRlbF9jb2xvcl9sb2Fk X2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7CkBAIC00MzEsNyArNTUxLDEwIEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKGNy dGMsIDI1Nik7CiAKLQlpZiAoSVNfSEFTV0VMTChkZXYpKSB7CisJaWYgKElTX0NIRVJSWVZJRVco ZGV2KSkgeworCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBjaGVycnl2aWV3 X2xvYWRfY3NjX21hdHJpeDsKKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gY2hlcnJ5 dmlld19sb2FkX2x1dHM7CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikpIHsKIAkJZGV2X3By aXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4ID0gaTl4eF9sb2FkX2NzY19tYXRyaXg7CiAJCWRl dl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGhhc3dlbGxfbG9hZF9sdXRzOwogCX0gZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8Ci0tIAoyLjcuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==