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: Tue, 23 Feb 2016 14:39:12 +0000 Message-ID: <1456238352-2478-6-git-send-email-lionel.g.landwerlin@intel.com> References: <1456238352-2478-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: <1456238352-2478-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: dri-devel@lists.freedesktop.org UGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsgU2hhcm1hLgoKdjI6 IFVwZGF0ZSBjb250cmlidXRvcnMKCnYzOiBSZWZhY3RvciBkZWdhbW1hL2dhbW1hIExVVHMgbG9h ZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCgp2NDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoKU2ln bmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IEt1bWFyLCBLaXJhbiBTIDxraXJhbi5zLmt1bWFyQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogS2F1c2FsIE1hbGxhZGkgPGthdXNhbG1hbGxhZGlAZ21haWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgfCAgIDMgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAzMSArKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgfCAxMzMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCAzODA3YjczLi44YTJhYWE3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTY4LDYgKzY4LDggQEAgc3RhdGljIHN0cnVjdCBk cm1fZHJpdmVyIGRyaXZlcjsKIAogI2RlZmluZSBCRFdfQ09MT1JTIFwKIAkuY29sb3IgPSB7IC5k ZWdhbW1hX2x1dF9zaXplID0gNTEyLCAuZ2FtbWFfbHV0X3NpemUgPSA1MTIgfQorI2RlZmluZSBD SFZfQ09MT1JTIFwKKwkuY29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gNjUsIC5nYW1tYV9s dXRfc2l6ZSA9IDI1NyB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g aW50ZWxfaTgzMF9pbmZvID0gewogCS5nZW4gPSAyLCAuaXNfbW9iaWxlID0gMSwgLmN1cnNvcl9u ZWVkc19waHlzaWNhbCA9IDEsIC5udW1fcGlwZXMgPSAyLApAQCAtMzI1LDYgKzMyNyw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2hlcnJ5dmlld19pbmZv ID0gewogCS5kaXNwbGF5X21taW9fb2Zmc2V0ID0gVkxWX0RJU1BMQVlfQkFTRSwKIAlHRU5fQ0hW X1BJUEVPRkZTRVRTLAogCUNVUlNPUl9PRkZTRVRTLAorCUNIVl9DT0xPUlMsCiB9OwogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3NreWxha2VfaW5mbyA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDhjZTc2ZDcuLmVmZmQ3OWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaApAQCAtNzY3Miw2ICs3NjcyLDM3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJf d2VsbHMgewogI2RlZmluZSBQUkVDX1BBTF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUocGlw ZSwgX1BBTF9QUkVDX0dDX01BWF9BLCBfUEFMX1BSRUNfR0NfTUFYX0IpICsgKGkpICogNCkKICNk ZWZpbmUgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFM X1BSRUNfRVhUX0dDX01BWF9BLCBfUEFMX1BSRUNfRVhUX0dDX01BWF9CKSArIChpKSAqIDQpCiAK Ky8qIHBpcGUgQ1NDICYgZGVnYW1tYS9nYW1tYSBMVVRzIG9uIENIViAqLworI2RlZmluZSBfQ0dN X1BJUEVfQV9DU0NfQ09FRkYwMQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njc5MDApCisjZGVmaW5l IF9DR01fUElQRV9BX0NTQ19DT0VGRjIzCShWTFZfRElTUExBWV9CQVNFICsgMHg2NzkwNCkKKyNk ZWZpbmUgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGNDUJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY3OTA4 KQorI2RlZmluZSBfQ0dNX1BJUEVfQV9DU0NfQ09FRkY2NwkoVkxWX0RJU1BMQVlfQkFTRSArIDB4 Njc5MEMpCisjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19DT0VGRjgJKFZMVl9ESVNQTEFZX0JBU0Ug KyAweDY3OTEwKQorI2RlZmluZSBfQ0dNX1BJUEVfQV9ERUdBTU1BCShWTFZfRElTUExBWV9CQVNF ICsgMHg2NjAwMCkKKyNkZWZpbmUgX0NHTV9QSVBFX0FfR0FNTUEJKFZMVl9ESVNQTEFZX0JBU0Ug KyAweDY3MDAwKQorI2RlZmluZSBfQ0dNX1BJUEVfQV9NT0RFCShWTFZfRElTUExBWV9CQVNFICsg MHg2N0EwMCkKKyNkZWZpbmUgICBDR01fUElQRV9NT0RFX0dBTU1BCSgxIDw8IDIpCisjZGVmaW5l ICAgQ0dNX1BJUEVfTU9ERV9DU0MJKDEgPDwgMSkKKyNkZWZpbmUgICBDR01fUElQRV9NT0RFX0RF R0FNTUEJKDEgPDwgMCkKKworI2RlZmluZSBfQ0dNX1BJUEVfQl9DU0NfQ09FRkYwMQkoVkxWX0RJ U1BMQVlfQkFTRSArIDB4Njk5MDApCisjZGVmaW5lIF9DR01fUElQRV9CX0NTQ19DT0VGRjIzCShW TFZfRElTUExBWV9CQVNFICsgMHg2OTkwNCkKKyNkZWZpbmUgX0NHTV9QSVBFX0JfQ1NDX0NPRUZG NDUJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY5OTA4KQorI2RlZmluZSBfQ0dNX1BJUEVfQl9DU0Nf Q09FRkY2NwkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njk5MEMpCisjZGVmaW5lIF9DR01fUElQRV9C X0NTQ19DT0VGRjgJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY5OTEwKQorI2RlZmluZSBfQ0dNX1BJ UEVfQl9ERUdBTU1BCShWTFZfRElTUExBWV9CQVNFICsgMHg2ODAwMCkKKyNkZWZpbmUgX0NHTV9Q SVBFX0JfR0FNTUEJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY5MDAwKQorI2RlZmluZSBfQ0dNX1BJ UEVfQl9NT0RFCShWTFZfRElTUExBWV9CQVNFICsgMHg2OUEwMCkKKworI2RlZmluZSBDR01fUElQ RV9DU0NfQ09FRkYwMShwaXBlKQlfTU1JT19QSVBFKHBpcGUsIF9DR01fUElQRV9BX0NTQ19DT0VG RjAxLCBfQ0dNX1BJUEVfQl9DU0NfQ09FRkYwMSkKKyNkZWZpbmUgQ0dNX1BJUEVfQ1NDX0NPRUZG MjMocGlwZSkJX01NSU9fUElQRShwaXBlLCBfQ0dNX1BJUEVfQV9DU0NfQ09FRkYyMywgX0NHTV9Q SVBFX0JfQ1NDX0NPRUZGMjMpCisjZGVmaW5lIENHTV9QSVBFX0NTQ19DT0VGRjQ1KHBpcGUpCV9N TUlPX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGNDUsIF9DR01fUElQRV9CX0NTQ19D T0VGRjQ1KQorI2RlZmluZSBDR01fUElQRV9DU0NfQ09FRkY2NyhwaXBlKQlfTU1JT19QSVBFKHBp cGUsIF9DR01fUElQRV9BX0NTQ19DT0VGRjY3LCBfQ0dNX1BJUEVfQl9DU0NfQ09FRkY2NykKKyNk ZWZpbmUgQ0dNX1BJUEVfQ1NDX0NPRUZGOChwaXBlKQlfTU1JT19QSVBFKHBpcGUsIF9DR01fUElQ RV9BX0NTQ19DT0VGRjgsIF9DR01fUElQRV9CX0NTQ19DT0VGRjgpCisjZGVmaW5lIENHTV9QSVBF X0RFR0FNTUEocGlwZSwgaSwgdykJX01NSU8oX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfREVHQU1N QSwgX0NHTV9QSVBFX0JfREVHQU1NQSkgKyAoaSkgKiA4ICsgKHcpICogNCkKKyNkZWZpbmUgQ0dN X1BJUEVfR0FNTUEocGlwZSwgaSwgdykJX01NSU8oX1BJUEUocGlwZSwgX0NHTV9QSVBFX0FfR0FN TUEsIF9DR01fUElQRV9CX0dBTU1BKSArIChpKSAqIDggKyAodykgKiA0KQorI2RlZmluZSBDR01f UElQRV9NT0RFKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9DR01fUElQRV9BX01PREUsIF9DR01f UElQRV9CX01PREUpCisKIC8qIE1JUEkgRFNJIHJlZ2lzdGVycyAqLwogCiAjZGVmaW5lIF9NSVBJ X1BPUlQocG9ydCwgYSwgYykJX1BPUlQzKHBvcnQsIGEsIDAsIGMpCS8qIHBvcnRzIEEgYW5kIEMg b25seSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKaW5kZXggOTdhMDQ3Yi4uNjk5OWZk MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVm aW5lIENUTV9DT0VGRl8xXzAJKDFVTEwgPDwgMzIpCiAjZGVmaW5lIENUTV9DT0VGRl8yXzAJKENU TV9DT0VGRl8xXzAgPDwgMSkKICNkZWZpbmUgQ1RNX0NPRUZGXzRfMAkoQ1RNX0NPRUZGXzJfMCA8 PCAxKQorI2RlZmluZSBDVE1fQ09FRkZfOF8wCShDVE1fQ09FRkZfNF8wIDw8IDEpCiAjZGVmaW5l IENUTV9DT0VGRl8wXzUJKENUTV9DT0VGRl8xXzAgPj4gMSkKICNkZWZpbmUgQ1RNX0NPRUZGXzBf MjUJKENUTV9DT0VGRl8wXzUgPj4gMSkKICNkZWZpbmUgQ1RNX0NPRUZGXzBfMTI1CShDVE1fQ09F RkZfMF8yNSA+PiAxKQpAQCAtMTk5LDYgKzIwMCw1OCBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRf Y3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJfQogfQogCisvKgorICogU2V0IHVw IHRoZSBwaXBlIENTQyB1bml0IG9uIENoZXJyeVZpZXcuCisgKi8KK3N0YXRpYyB2b2lkIGNoZXJy eXZpZXdfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3Rh dGUgPSBjcnRjLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOworCWludCBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsK Kwl1aW50MzJfdCBtb2RlOworCisJaWYgKHN0YXRlLT5jdG0pIHsKKwkJc3RydWN0IGRybV9jb2xv cl9jdG0gKmN0bSA9CisJCQkoc3RydWN0IGRybV9jb2xvcl9jdG0gKikgc3RhdGUtPmN0bS0+ZGF0 YTsKKwkJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9OworCQlpbnQgaTsKKworCQlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShjb2VmZnMpOyBpKyspIHsKKwkJCXVpbnQ2NF90IGFic19jb2Vm ZiA9CisJCQkJKCgxVUxMIDw8IDYzKSAtIDEpICYgY3RtLT5tYXRyaXhbaV07CisKKwkJCS8qIFJv dW5kIGNvZWZmaWNpZW50LiAqLworCQkJYWJzX2NvZWZmICs9IDEgPDwgKDMyIC0gMTMpOworCQkJ LyogQ2xhbXAgdG8gaGFyZHdhcmUgbGltaXRzLiAqLworCQkJYWJzX2NvZWZmID0gY2xhbXBfdmFs KGFic19jb2VmZiwgMCwgQ1RNX0NPRUZGXzhfMCAtIDEpOworCisJCQkvKiBXcml0ZSBjb2VmZmlj aWVudHMgaW4gUzMuMTIgZm9ybWF0LiAqLworCQkJaWYgKGN0bS0+bWF0cml4W2ldICYgKDFVTEwg PDwgNjMpKQorCQkJCWNvZWZmc1tpXSA9IDEgPDwgMTU7CisJCQljb2VmZnNbaV0gfD0gKChhYnNf Y29lZmYgPj4gMzIpICYgNykgPDwgMTI7CisJCQljb2VmZnNbaV0gfD0gKGFic19jb2VmZiA+PiAy MCkgJiAweGZmZjsKKwkJfQorCisJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1NDX0NPRUZGMDEocGlw ZSksCisJCQkgICBjb2VmZnNbMV0gPDwgMTYgfCBjb2VmZnNbMF0pOworCQlJOTE1X1dSSVRFKENH TV9QSVBFX0NTQ19DT0VGRjIzKHBpcGUpLAorCQkJICAgY29lZmZzWzNdIDw8IDE2IHwgY29lZmZz WzJdKTsKKwkJSTkxNV9XUklURShDR01fUElQRV9DU0NfQ09FRkY0NShwaXBlKSwKKwkJCSAgIGNv ZWZmc1s1XSA8PCAxNiB8IGNvZWZmc1s0XSk7CisJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1NDX0NP RUZGNjcocGlwZSksCisJCQkgICBjb2VmZnNbN10gPDwgMTYgfCBjb2VmZnNbNl0pOworCQlJOTE1 X1dSSVRFKENHTV9QSVBFX0NTQ19DT0VGRjgocGlwZSksIGNvZWZmc1s4XSk7CisJfQorCisJbW9k ZSA9IChzdGF0ZS0+Y3RtID8gQ0dNX1BJUEVfTU9ERV9DU0MgOiAwKTsKKwlpZiAoIWNydGNfc3Rh dGVfaXNfbGVnYWN5KHN0YXRlKSkgeworCQltb2RlIHw9IChzdGF0ZS0+ZGVnYW1tYV9sdXQgPyBD R01fUElQRV9NT0RFX0RFR0FNTUEgOiAwKSB8CisJCQkoc3RhdGUtPmdhbW1hX2x1dCA/IENHTV9Q SVBFX01PREVfR0FNTUEgOiAwKTsKKwl9CisJSTkxNV9XUklURShDR01fUElQRV9NT0RFKHBpcGUp LCBtb2RlKTsKK30KKwogdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwpAQCAtMjA5LDEw ICsyNjIsMTAgQEAgdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIH0KIAogLyogTG9hZHMgdGhlIGxlZ2FjeSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBD UlRDLiAqLwotc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRj KQorc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpj cnRjLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCiB7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0 YXRlID0gY3J0Yy0+c3RhdGU7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwpAQCAt MjI1LDkgKzI3OCw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAkJCWFzc2VydF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7CiAJfQogCi0J aWYgKHN0YXRlLT5nYW1tYV9sdXQpIHsKLQkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9Ci0J CQkoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKKwlpZiAo YmxvYikgeworCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gKHN0cnVjdCBkcm1fY29sb3Jf bHV0ICopIGJsb2ItPmRhdGE7CiAJCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewogCQkJdWlu dDMyX3Qgd29yZCA9CiAJCQkJKGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCA4KSA8 PCAxNikgfApAQCAtMjUxLDYgKzMwMywxMSBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJfQogfQogCitzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0 cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0 YywgY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dCk7Cit9CisKIC8qIExvYWRzIHRoZSBsZWdhY3kgcGFs ZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBIYXN3ZWxsLiAqLwogc3RhdGljIHZvaWQg aGFzd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewpAQCAtMzYzLDYgKzQy MCw2NyBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCAwKTsKIH0KIAorLyogTG9h ZHMgdGhlIHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENSVEMgb24gQ2hlcnJ5Vmlldy4gKi8K K3N0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK K3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9jcnRj X3N0YXRlICpzdGF0ZSA9IGNydGMtPnN0YXRlOworCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZTsKKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0OworCXVpbnQzMl90 IGksIGx1dF9zaXplOworCXVpbnQzMl90IHdvcmQwLCB3b3JkMTsKKworCWlmIChjcnRjX3N0YXRl X2lzX2xlZ2FjeShzdGF0ZSkpIHsKKwkJLyogVHVybiBvZmYgZGVnYW1tYS9nYW1tYSBvbiBDR00g YmxvY2suICovCisJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShwaXBlKSwKKwkJCSAgIChzdGF0 ZS0+Y3RtID8gQ0dNX1BJUEVfTU9ERV9DU0MgOiAwKSk7CisJCWk5eHhfbG9hZF9sdXRzX2ludGVy bmFsKGNydGMsIHN0YXRlLT5nYW1tYV9sdXQpOworCQlyZXR1cm47CisJfQorCisJaWYgKHN0YXRl LT5kZWdhbW1hX2x1dCkgeworCQlsdXQgPSAoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3RhdGUt PmRlZ2FtbWFfbHV0LT5kYXRhOworCQlsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2KS0+Y29sb3Iu ZGVnYW1tYV9sdXRfc2l6ZTsKKwkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKKwkJ CS8qIFdyaXRlIExVVCBpbiBVMC4xNCBmb3JtYXQuICovCisJCQl3b3JkMCA9CisJCQkoZHJtX2Nv bG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwgMTQpIDw8IDE2KSB8CisJCQlkcm1fY29sb3Jf bHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDE0KTsKKwkJCXdvcmQxID0gZHJtX2NvbG9yX2x1dF9l eHRyYWN0KGx1dFtpXS5yZWQsIDE0KTsKKworCQkJSTkxNV9XUklURShDR01fUElQRV9ERUdBTU1B KHBpcGUsIGksIDApLCB3b3JkMCk7CisJCQlJOTE1X1dSSVRFKENHTV9QSVBFX0RFR0FNTUEocGlw ZSwgaSwgMSksIHdvcmQxKTsKKwkJfQorCX0KKworCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KSB7CisJ CWx1dCA9IChzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqKSBzdGF0ZS0+Z2FtbWFfbHV0LT5kYXRhOwor CQlsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7CisJCWZv ciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CisJCQkvKiBXcml0ZSBMVVQgaW4gVTAuMTAg Zm9ybWF0LiAqLworCQkJd29yZDAgPQorCQkJKGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0u Z3JlZW4sIDEwKSA8PCAxNikgfAorCQkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ibHVl LCAxMCk7CisJCQl3b3JkMSA9IGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxMCk7 CisKKwkJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfR0FNTUEocGlwZSwgaSwgMCksIHdvcmQwKTsKKwkJ CUk5MTVfV1JJVEUoQ0dNX1BJUEVfR0FNTUEocGlwZSwgaSwgMSksIHdvcmQxKTsKKwkJfQorCX0K KworCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShwaXBlKSwKKwkJICAgKHN0YXRlLT5jdG0gPyBD R01fUElQRV9NT0RFX0NTQyA6IDApIHwKKwkJICAgKHN0YXRlLT5kZWdhbW1hX2x1dCA/IENHTV9Q SVBFX01PREVfREVHQU1NQSA6IDApIHwKKwkJICAgKHN0YXRlLT5nYW1tYV9sdXQgPyBDR01fUElQ RV9NT0RFX0dBTU1BIDogMCkpOworCisJLyoKKwkgKiBBbHNvIHByb2dyYW0gYSBsaW5lYXIgTFVU IGluIHRoZSBsZWdhY3kgYmxvY2sgKGJlaGluZCB0aGUKKwkgKiBDR00gYmxvY2spLgorCSAqLwor CWk5eHhfbG9hZF9sdXRzX2ludGVybmFsKGNydGMsIE5VTEwpOworfQorCiB2b2lkIGludGVsX2Nv bG9yX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTQxOCw3ICs1MzYsMTAgQEAgdm9pZCBpbnRlbF9jb2xv cl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCWRybV9tb2RlX2NydGNfc2V0X2dhbW1h X3NpemUoY3J0YywgMjU2KTsKIAotCWlmIChJU19IQVNXRUxMKGRldikpIHsKKwlpZiAoSVNfQ0hF UlJZVklFVyhkZXYpKSB7CisJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCA9IGNo ZXJyeXZpZXdfbG9hZF9jc2NfbWF0cml4OworCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMg PSBjaGVycnl2aWV3X2xvYWRfbHV0czsKKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSkgewog CQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBpOXh4X2xvYWRfY3NjX21hdHJp eDsKIAkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaGFzd2VsbF9sb2FkX2x1dHM7CiAJ CWludGVsX2NydGNfc3RhdGUtPmdhbW1hX21vZGUgPQotLSAKMi43LjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=