From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uma Shankar Subject: [v4 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Wed, 12 Jun 2019 12:15:00 +0530 Message-ID: <1560321900-18318-5-git-send-email-uma.shankar@intel.com> References: <1560321900-18318-1-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0BEC8922A for ; Wed, 12 Jun 2019 06:20:18 +0000 (UTC) In-Reply-To: <1560321900-18318-1-git-send-email-uma.shankar@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 Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgoKSUNMIGlu dHJvZHVjZXMgYSBuZXcgZ2FtbWEgY29ycmVjdGlvbiBtb2RlIGluIGRpc3BsYXkgZW5naW5lLCBj YWxsZWQKbXVsdGktc2VnbWVudGVkLWdhbW1hIG1vZGUuIFRoaXMgbW9kZSBhbGxvd3MgdXNlcnMg dG8gcHJvZ3JhbSB0aGUKZGFya2VyIHJlZ2lvbiBvZiB0aGUgZ2FtbWEgY3VydmUgd2l0aCBzdWVw cmZpbmUgcHJlY2lzaW9uLiBBbgpleGFtcGxlIHVzZSBjYXNlIGZvciB0aGlzIGlzIEhEUiBjdXJ2 ZXMgKGxpa2UgUFEgU1QtMjA4NCkuCgpJZiB3ZSBwbG90IGEgZ2FtbWEgY29ycmVjdGlvbiBjdXJ2 ZSBmcm9tIHZhbHVlIHJhbmdlIGJldHdlZW4gMC4wIHRvIDEuMCwKSUNMJ3MgbXVsdGktc2VnbWVu dCBoYXMgMyBkaWZmZXJlbnQgc2VjdGlvbnM6Ci0gc3VwZXJmaW5lIHNlZ21lbnQ6IDkgdmFsdWVz LCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4ICogMjU2KQotIGZpbmUgc2VnbWVudDogMjU3IHZh bHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEvKDEyOCkKLSBjb3Jhc2Ugc2VnbWVudDogMjU3IHZh bHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEKClRoaXMgcGF0Y2g6Ci0gQ2hhbmdlcyBnYW1tYSBM VVRzIHNpemUgZm9yIElDTC9HRU4xMSB0byAyNjIxNDQgZW50cmllcyAoOCAqIDEyOCAqIDI1Niks CiAgc28gdGhhdCB1c2Vyc3BhY2UgY2FuIHByb2dyYW0gd2l0aCBoaWdoZXN0IHByZWNpc2lvbiBz dXBwb3J0ZWQuCi0gQ2hhbmdlcyBkZWZhdWx0IGdhbW1hIG1vZGUgKG5vbi1sZWdhY3kpIHRvIG11 bHRpLXNlZ21lbnRlZC1nYW1tYSBtb2RlLgotIEFkZHMgZnVuY3Rpb25zIHRvIHByb2dyYW0vZGV0 ZWN0IG11bHRpLXNlZ21lbnQgZ2FtbWEuCgpWMjogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBm cm9tIFZpbGxlCiAgICAtIHNlcGFyYXRlIGZ1bmN0aW9uIGZvciBzdXBlcmZpbmUgYW5kIGZpbmUg c2VnbWVudHMuCiAgICAtIHJlbW92ZSBlbnVtIGZvciBzZWdtZW50cy4KICAgIC0gcmV1c2UgbGFz dCBlbnRyeSBvZiB0aGUgTFVUIGFzIGdjX21heCB2YWx1ZS4KICAgIC0gcmVwbGFjZSBpZigpIC4u Li5jb25kIHdpdGggc3dpdGNoLi4uY2FzZSBpbiBpY2xfbG9hZF9sdXRzLgogICAgLSBhZGQgYW4g ZW50cnkgdmFyaWFibGUsIGluc3RlYWQgb2YgJ3dvcmQnCgpWMzogQWRkcmVzc2VkIHJldmlldyBj b21tZW50cyBmcm9tIFZpbGxlCiAgICAtIGV4dHJhIG5ld2xpbmUKICAgIC0gcy9lbnRyeS9jb2xv ci8KICAgIC0gcmVtb3ZlIExVVCBzaXplIGNoZWNrcwogICAgLSBwcm9ncmFtIGlsa19sdXRfMTJw NF9sZHcgdmFsdWUgYmVmb3JlIGlsa19sdXRfMTJwNF91ZHcKICAgIC0gQ2hhbmdlIHRoZSBjb21t ZW50cyBpbiBkZXNjcmlwdGlvbiBvZiBmaW5lIGFuZCBjb2Fyc2Ugc2VnbWVudHMsCiAgICAgIGFu ZCB0cnkgdG8gbWFrZSBtb3JlIHNlbnNlLgogICAgLSB1c2UgOCAqIDEyOCBpbnN0ZWFkIG9mIDEw MjQKICAgIC0gYWRkIDEgZW50cnkgaW4gTFVUIGZvciBHQ01BWAoKVjQ6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudHMgZnJvbSBWaWxsZQogICAgLSBSZW1vdmUgdW51c2VkIG1hY3JvCiAgICAtIG1p c3Npbmcgc2hpZnQgZW50cnkgaW4gYmx1ZQogICAgLSBwaWNrIGNvcnJlY3QgZW50cnkgZm9yIEdD TUFYCiAgICAtIEFkZGVkIFZpbGxlJ3MgUi1CCk5vdGU6IFRlc3RlZCBhbmQgY29uZmlybWVkIHRo ZSBwcm9ncmFtbWluZyBzZXF1ZW5jZSBvZiBvZGQvZXZlbgpyZWdpc3RlcnMgaW4gdGhlIEhXLiBU aGUgY29ycmVjdCBzZXF1ZW5jZSBzaG91bGQgYmU6CglpbGtfbHV0XzEycDRfdWR3CglpbGtfbHV0 XzEycDRfbGR3Cgp2NTogQWRkcmVzc2VkIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzIGFuZCByZW5h bWVkIG9kZC9ldmVuIHJlZ2lzdGVyCmhlbHBlcnMgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGgg dGhlIHZhbHVlcy4KCkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgpDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpSZXZp ZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K U3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyAgICB8ICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyB8IDEyNiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCmluZGV4IDQ4MmYxZDAuLmVkNmIxZjYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwpAQCAtNzQ3LDcgKzc0Nyw3IEBACiAJR0VOKDExKSwg XAogCS5kZGJfc2l6ZSA9IDIwNDgsIFwKIAkuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMSwgXAot CS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAzMywgLmdhbW1hX2x1dF9zaXplID0gMTAy NCB9CisJLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDMzLCAuZ2FtbWFfbHV0X3NpemUg PSAyNjIxNDUgfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVs X2ljZWxha2VfMTFfaW5mbyA9IHsKIAlHRU4xMV9GRUFUVVJFUywKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb2xvci5jCmluZGV4IDQ2NDQzYWUuLjIzYTg0ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29sb3IuYwpAQCAtNDEsNiArNDEsNyBAQAogI2RlZmluZSBDVE1fQ09FRkZfQUJTKGNvZWZmKQkJ KChjb2VmZikgJiAoQ1RNX0NPRUZGX1NJR04gLSAxKSkKIAogI2RlZmluZSBMRUdBQ1lfTFVUX0xF TkdUSAkJMjU2CisKIC8qCiAgKiBFeHRyYWN0IHRoZSBDU0MgY29lZmZpY2llbnQgZnJvbSBhIENU TSBjb2VmZmljaWVudCAoaW4gVTMyLjMyIGZpeGVkIHBvaW50CiAgKiBmb3JtYXQpLiBUaGlzIG1h Y3JvIHRha2VzIHRoZSBjb2VmZmljaWVudCB3ZSB3YW50IHRyYW5zZm9ybWVkIGFuZCB0aGUKQEAg LTc2Nyw2ICs3NjgsMTE2IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJfQogfQogCisvKiBpbGsrICIxMi40IiBp bnRlcnBvbGF0ZWQgZm9ybWF0IChoaWdoIDEwIGJpdHMpICovCitzdGF0aWMgdTMyIGlsa19sdXRf MTJwNF91ZHcoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQoreworCXJldHVybiAo Y29sb3ItPnJlZCA+PiA2KSA8PCAyMCB8IChjb2xvci0+Z3JlZW4gPj4gNikgPDwgMTAgfAorCQko Y29sb3ItPmJsdWUgPj4gNik7Cit9CisKKy8qIGlsaysgIjEyLjQiIGludGVycG9sYXRlZCBmb3Jt YXQgKGxvdyA2IGJpdHMpICovCitzdGF0aWMgdTMyIGlsa19sdXRfMTJwNF9sZHcoY29uc3Qgc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQoreworCXJldHVybiAoY29sb3ItPnJlZCAmIDB4M2Yp IDw8IDI0IHwgKGNvbG9yLT5ncmVlbiAmIDB4M2YpIDw8IDE0IHwKKwkJKGNvbG9yLT5ibHVlICYg MHgzZikgPDwgNDsKK30KKworc3RhdGljIHZvaWQKK2ljbF9sb2FkX2djbWF4KGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJt X2NvbG9yX2x1dCAqY29sb3IpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CisJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOworCisJLyogRml4bWU6IExVVCBlbnRyaWVzIGFyZSAxNiBiaXQgb25seSwgc28g d2UgY2FuIHByb2cgMHhGRkZGIG1heCAqLworCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBp cGUsIDApLCBjb2xvci0+cmVkKTsKKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAx KSwgY29sb3ItPmdyZWVuKTsKKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAyKSwg Y29sb3ItPmJsdWUpOworfQorCitzdGF0aWMgdm9pZAoraWNsX3Byb2dyYW1fZ2FtbWFfc3VwZXJm aW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7 CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0g Y3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dCA9IGJsb2ItPmRhdGE7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOworCXUzMiBp OworCisJLyoKKwkgKiBFdmVyeSBlbnRyeSBpbiB0aGUgbXVsdGktc2VnbWVudCBMVVQgaXMgY29y cmVzcG9uZGluZyB0byBhIHN1cGVyZmluZQorCSAqIHNlZ21lbnQgc3RlcCB3aGljaCBpcyAxLyg4 ICogMTI4ICogMjU2KS4KKwkgKgorCSAqIFN1cGVyZmluZSBzZWdtZW50IGhhcyA5IGVudHJpZXMs IGNvcnJlc3BvbmRpbmcgdG8gdmFsdWVzCisJICogMCwgMS8oOCAqIDEyOCAqIDI1NiksIDIvKDgg KiAxMjggKiAyNTYpIC4uLi4gOC8oOCAqIDEyOCAqIDI1NikuCisJICovCisJSTkxNV9XUklURShQ UkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsK KworCWZvciAoaSA9IDA7IGkgPCA5OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9s dXQgKmVudHJ5ID0gJmx1dFtpXTsKKworCQlJOTE1X1dSSVRFKFBSRUNfUEFMX01VTFRJX1NFR19E QVRBKHBpcGUpLAorCQkJICAgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOworCQlJOTE1X1dSSVRF KFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAorCQkJICAgaWxrX2x1dF8xMnA0X3Vkdyhl bnRyeSkpOworCX0KK30KKworc3RhdGljIHZvaWQKK2ljbF9wcm9ncmFtX2dhbW1hX211bHRpX3Nl Z21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0 Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5i YXNlLmRldik7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9 IGJsb2ItPmRhdGE7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5OworCWVudW0g cGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwl1MzIgaTsKKworCS8qCisJICoKKwkgKiBQcm9ncmFt IEZpbmUgc2VnbWVudCAobGV0J3MgY2FsbCBpdCBzZWcyKS4uLgorCSAqCisJICogRmluZSBzZWdt ZW50J3Mgc3RlcCBpcyAxLygxMjggKiAyNTYpIGllIDEvKDEyOCAqIDI1NiksICAyLygxMjgqMjU2 KQorCSAqIC4uLiAyNTYvKDEyOCoyNTYpLiBTbyBpbiBvcmRlciB0byBwcm9ncmFtIGZpbmUgc2Vn bWVudCBvZiBMVVQgd2UKKwkgKiBuZWVkIHRvIHBpY2sgZXZlcnkgOCd0aCBlbnRyeSBpbiBMVVQs IGFuZCBwcm9ncmFtIDI1NiBpbmRleGVzLgorCSAqCisJICogUEFMX1BSRUNfSU5ERVhbMF0gYW5k IFBBTF9QUkVDX0lOREVYWzFdIG1hcCB0byBzZWcyWzFdLAorCSAqIHdpdGggc2VnMlswXSBiZWlu ZyB1bnVzZWQgYnkgdGhlIGhhcmR3YXJlLgorCSAqLworCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5E RVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKKwlmb3IgKGkgPSAxOyBpIDwgMjU3 OyBpKyspIHsKKwkJZW50cnkgPSAmbHV0W2kgKiA4XTsKKwkJSTkxNV9XUklURShQUkVDX1BBTF9E QVRBKHBpcGUpLCBpbGtfbHV0XzEycDRfbGR3KGVudHJ5KSk7CisJCUk5MTVfV1JJVEUoUFJFQ19Q QUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOworCX0KKworCS8qCisJICog UHJvZ3JhbSBDb2Fyc2Ugc2VnbWVudCAobGV0J3MgY2FsbCBpdCBzZWczKS4uLgorCSAqCisJICog Q29hcnNlIHNlZ21lbnQncyBzdGFydHMgZnJvbSBpbmRleCAwIGFuZCBpdCdzIHN0ZXAgaXMgMS8y NTYgaWUgMCwKKwkgKiAxLzI1NiwgMi8yNTYgLi4uMjU2LzI1Ni4gQXMgcGVyIHRoZSBkZXNjcmlw dGlvbiBvZiBlYWNoIGVudHJ5IGluIExVVAorCSAqIGFib3ZlLCB3ZSBuZWVkIHRvIHBpY2sgZXZl cnkgKDggKiAxMjgpdGggZW50cnkgaW4gTFVULCBhbmQKKwkgKiBwcm9ncmFtIDI1NiBvZiB0aG9z ZS4KKwkgKgorCSAqIFNwZWMgaXMgbm90IHZlcnkgY2xlYXIgYWJvdXQgaWYgZW50cmllcyBzZWcz WzBdIGFuZCBzZWczWzFdIGFyZQorCSAqIGJlaW5nIHVzZWQgb3Igbm90LCBidXQgd2Ugc3RpbGwg bmVlZCB0byBwcm9ncmFtIHRoZXNlIHRvIGFkdmFuY2UKKwkgKiB0aGUgaW5kZXguCisJICovCisJ Zm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJCWVudHJ5ID0gJmx1dFtpICogOCAqIDEyOF07 CisJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X2xkdyhlbnRy eSkpOworCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTJwNF91ZHco ZW50cnkpKTsKKwl9CisKKwkvKiBUaGUgbGFzdCBlbnRyeSBpbiB0aGUgTFVUIGlzIHRvIGJlIHBy b2dyYW1tZWQgaW4gR0NNQVggKi8KKwllbnRyeSA9ICZsdXRbMjU2ICogOCAqIDEyOF07CisJaWNs X2xvYWRfZ2NtYXgoY3J0Y19zdGF0ZSwgZW50cnkpOworCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNy dGMpOworfQorCiBzdGF0aWMgdm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7CkBAIC03NzUsMTAgKzg4 NiwxNyBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KQog CQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0YXRlKTsKIAotCWlmICgoY3J0Y19zdGF0ZS0+ Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQotCSAgICBHQU1NQV9NT0RFX01P REVfOEJJVCkgeworCXN3aXRjaCAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVf TU9ERV9NQVNLKSB7CisJY2FzZSBHQU1NQV9NT0RFX01PREVfOEJJVDoKIAkJaTl4eF9sb2FkX2x1 dHMoY3J0Y19zdGF0ZSk7Ci0JfSBlbHNlIHsKKwkJYnJlYWs7CisKKwljYXNlIEdBTU1BX01PREVf TU9ERV8xMkJJVF9NVUxUSV9TRUdNRU5URUQ6CisJCWljbF9wcm9ncmFtX2dhbW1hX3N1cGVyZmlu ZV9zZWdtZW50KGNydGNfc3RhdGUpOworCQlpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50 KGNydGNfc3RhdGUpOworCQlicmVhazsKKworCWRlZmF1bHQ6CiAJCWJkd19sb2FkX2x1dF8xMChj cnRjLCBnYW1tYV9sdXQsIFBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsKIAkJaXZiX2xvYWRfbHV0 X2V4dF9tYXgoY3J0Yyk7CiAJfQpAQCAtMTIxOSw3ICsxMzM3LDcgQEAgc3RhdGljIHUzMiBpY2xf Z2FtbWFfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkg ICAgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCiAJCWdhbW1hX21vZGUg fD0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7CiAJZWxzZQotCQlnYW1tYV9tb2RlIHw9IEdBTU1BX01P REVfTU9ERV8xMEJJVDsKKwkJZ2FtbWFfbW9kZSB8PSBHQU1NQV9NT0RFX01PREVfMTJCSVRfTVVM VElfU0VHTUVOVEVEOwogCiAJcmV0dXJuIGdhbW1hX21vZGU7CiB9Ci0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4