From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v4 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Thu, 9 May 2019 01:05:26 +0530 Message-ID: <20190508193526.28374-5-shashank.sharma@intel.com> References: <20190508193526.28374-1-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C1368898BC for ; Wed, 8 May 2019 19:38:14 +0000 (UTC) In-Reply-To: <20190508193526.28374-1-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: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org SUNMIGludHJvZHVjZXMgYSBuZXcgZ2FtbWEgY29ycmVjdGlvbiBtb2RlIGluIGRpc3BsYXkgZW5n aW5lLCBjYWxsZWQKbXVsdGktc2VnbWVudGVkLWdhbW1hIG1vZGUuIFRoaXMgbW9kZSBhbGxvd3Mg dXNlcnMgdG8gcHJvZ3JhbSB0aGUKZGFya2VyIHJlZ2lvbiBvZiB0aGUgZ2FtbWEgY3VydmUgd2l0 aCBzdWVwcmZpbmUgcHJlY2lzaW9uLiBBbgpleGFtcGxlIHVzZSBjYXNlIGZvciB0aGlzIGlzIEhE UiBjdXJ2ZXMgKGxpa2UgUFEgU1QtMjA4NCkuCgpJZiB3ZSBwbG90IGEgZ2FtbWEgY29ycmVjdGlv biBjdXJ2ZSBmcm9tIHZhbHVlIHJhbmdlIGJldHdlZW4gMC4wIHRvIDEuMCwKSUNMJ3MgbXVsdGkt c2VnbWVudCBoYXMgMyBkaWZmZXJlbnQgc2VjdGlvbnM6Ci0gc3VwZXJmaW5lIHNlZ21lbnQ6IDkg dmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4ICogMjU2KQotIGZpbmUgc2VnbWVudDog MjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEvKDEyOCkKLSBjb3Jhc2Ugc2VnbWVudDog MjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEKClRoaXMgcGF0Y2g6Ci0gQ2hhbmdlcyBn YW1tYSBMVVRzIHNpemUgZm9yIElDTC9HRU4xMSB0byAyNjIxNDQgZW50cmllcyAoOCAqIDEyOCAq IDI1NiksCiAgc28gdGhhdCB1c2Vyc3BhY2UgY2FuIHByb2dyYW0gd2l0aCBoaWdoZXN0IHByZWNp c2lvbiBzdXBwb3J0ZWQuCi0gQ2hhbmdlcyBkZWZhdWx0IGdhbW1hIG1vZGUgKG5vbi1sZWdhY3kp IHRvIG11bHRpLXNlZ21lbnRlZC1nYW1tYSBtb2RlLgotIEFkZHMgZnVuY3Rpb25zIHRvIHByb2dy YW0vZGV0ZWN0IG11bHRpLXNlZ21lbnQgZ2FtbWEuCgpWMjogQWRkcmVzc2VkIHJldmlldyBjb21t ZW50cyBmcm9tIFZpbGxlCiAgICAtIHNlcGFyYXRlIGZ1bmN0aW9uIGZvciBzdXBlcmZpbmUgYW5k IGZpbmUgc2VnbWVudHMuCiAgICAtIHJlbW92ZSBlbnVtIGZvciBzZWdtZW50cy4KICAgIC0gcmV1 c2UgbGFzdCBlbnRyeSBvZiB0aGUgTFVUIGFzIGdjX21heCB2YWx1ZS4KICAgIC0gcmVwbGFjZSBp ZigpIC4uLi5jb25kIHdpdGggc3dpdGNoLi4uY2FzZSBpbiBpY2xfbG9hZF9sdXRzLgogICAgLSBh ZGQgYW4gZW50cnkgdmFyaWFibGUsIGluc3RlYWQgb2YgJ3dvcmQnCgpWMzogQWRkcmVzc2VkIHJl dmlldyBjb21tZW50cyBmcm9tIFZpbGxlCiAgICAtIGV4dHJhIG5ld2xpbmUKICAgIC0gcy9lbnRy eS9jb2xvci8KICAgIC0gcmVtb3ZlIExVVCBzaXplIGNoZWNrcwogICAgLSBwcm9ncmFtIGlsa19s dXRfMTJwNF9sZHcgdmFsdWUgYmVmb3JlIGlsa19sdXRfMTJwNF91ZHcKICAgIC0gQ2hhbmdlIHRo ZSBjb21tZW50cyBpbiBkZXNjcmlwdGlvbiBvZiBmaW5lIGFuZCBjb2Fyc2Ugc2VnbWVudHMsCiAg ICAgIGFuZCB0cnkgdG8gbWFrZSBtb3JlIHNlbnNlLgogICAgLSB1c2UgOCAqIDEyOCBpbnN0ZWFk IG9mIDEwMjQKICAgIC0gYWRkIDEgZW50cnkgaW4gTFVUIGZvciBHQ01BWAoKVjQ6IEFkZHJlc3Nl ZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZQogICAgLSBSZW1vdmUgdW51c2VkIG1hY3JvCiAg ICAtIG1pc3Npbmcgc2hpZnQgZW50cnkgaW4gYmx1ZQogICAgLSBwaWNrIGNvcnJlY3QgZW50cnkg Zm9yIEdDTUFYCiAgICAtIEFkZGVkIFZpbGxlJ3MgUi1CCk5vdGU6IFRlc3RlZCBhbmQgY29uZmly bWVkIHRoZSBwcm9ncmFtbWluZyBzZXF1ZW5jZSBvZiBvZGQvZXZlbgpyZWdpc3RlcnMgaW4gdGhl IEhXLiBUaGUgY29ycmVjdCBzZXF1ZW5jZSBzaG91bGQgYmU6CglpbGtfbHV0XzEycDRfdWR3Cglp bGtfbHV0XzEycDRfbGR3CgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoK UmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+ClN1Z2dlc3RlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFA aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgfCAgIDIgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgfCAxMjYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKaW5kZXggZDdjMDdhOTQ3NDk3Li4yNDMwNTIz OGI0ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2Fubm9ubGFrZV9pbmZvID0g ewogCUdFTigxMSksIFwKIAkuZGRiX3NpemUgPSAyMDQ4LCBcCiAJLmhhc19sb2dpY2FsX3Jpbmdf ZWxzcSA9IDEsIFwKLQkuY29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gMzMsIC5nYW1tYV9s dXRfc2l6ZSA9IDEwMjQgfQorCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAzMywgLmdh bW1hX2x1dF9zaXplID0gMjYyMTQ1IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZp Y2VfaW5mbyBpbnRlbF9pY2VsYWtlXzExX2luZm8gPSB7CiAJR0VOMTFfRkVBVFVSRVMsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwppbmRleCA2YzM0MWJlYTUxNGMuLjIyY2NiZWFjYmVlMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCkBAIC00MSw2ICs0MSw3IEBACiAjZGVmaW5l IENUTV9DT0VGRl9BQlMoY29lZmYpCQkoKGNvZWZmKSAmIChDVE1fQ09FRkZfU0lHTiAtIDEpKQog CiAjZGVmaW5lIExFR0FDWV9MVVRfTEVOR1RICQkyNTYKKwogLyoKICAqIEV4dHJhY3QgdGhlIENT QyBjb2VmZmljaWVudCBmcm9tIGEgQ1RNIGNvZWZmaWNpZW50IChpbiBVMzIuMzIgZml4ZWQgcG9p bnQKICAqIGZvcm1hdCkuIFRoaXMgbWFjcm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50IHdlIHdhbnQg dHJhbnNmb3JtZWQgYW5kIHRoZQpAQCAtNzY3LDYgKzc2OCwxMTYgQEAgc3RhdGljIHZvaWQgZ2xr X2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAl9 CiB9CiAKKy8qIGlsaysgIjEyLjQiIGludGVycG9sYXRlZCBmb3JtYXQgKGhpZ2ggMTAgYml0cykg Ki8KK3N0YXRpYyB1MzIgaWxrX2x1dF8xMnA0X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCAqY29sb3IpCit7CisJcmV0dXJuIChjb2xvci0+cmVkID4+IDYpIDw8IDIwIHwgKGNvbG9yLT5n cmVlbiA+PiA2KSA8PCAxMCB8CisJCShjb2xvci0+Ymx1ZSA+PiA2KTsKK30KKworLyogaWxrKyAi MTIuNCIgaW50ZXJwb2xhdGVkIGZvcm1hdCAobG93IDYgYml0cykgKi8KK3N0YXRpYyB1MzIgaWxr X2x1dF8xMnA0X3Vkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCit7CisJcmV0 dXJuIChjb2xvci0+cmVkICYgMHgzZikgPDwgMjQgfCAoY29sb3ItPmdyZWVuICYgMHgzZikgPDwg MTQgfAorCQkoY29sb3ItPmJsdWUgJiAweDNmIDw8IDQpOworfQorCitzdGF0aWMgdm9pZAoraWNs X2xvYWRfZ2NtYXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJ ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKK3sKKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisKKwkvKiBGaXhtZTogTFVUIGVudHJp ZXMgYXJlIDE2IGJpdCBvbmx5LCBzbyB3ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCisJSTkxNV9X UklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMCksIGNvbG9yLT5yZWQpOworCUk5MTVfV1JJVEUo UFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCBjb2xvci0+Z3JlZW4pOworCUk5MTVfV1JJVEUoUFJF Q19QQUxfR0NfTUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitp Y2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKKwljb25zdCBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25z dCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKKwllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7CisJdTMyIGk7CisKKwkvKgorCSAqIEV2ZXJ5IGVudHJ5IGluIHRoZSBt dWx0aS1zZWdtZW50IExVVCBpcyBjb3JyZXNwb25kaW5nIHRvIGEgc3VwZXJmaW5lCisJICogc2Vn bWVudCBzdGVwIHdoaWNoIGlzIDEvKDggKiAxMjggKiAyNTYpLgorCSAqCisJICogU3VwZXJmaW5l IHNlZ21lbnQgaGFzIDkgZW50cmllcywgY29ycmVzcG9uZGluZyB0byB2YWx1ZXMKKwkgKiAwLCAx Lyg4ICogMTI4ICogMjU2KSwgMi8oOCAqIDEyOCAqIDI1NikgLi4uLiA4Lyg4ICogMTI4ICogMjU2 KS4KKwkgKi8KKwlJOTE1X1dSSVRFKFBSRUNfUEFMX01VTFRJX1NFR19JTkRFWChwaXBlKSwgUEFM X1BSRUNfQVVUT19JTkNSRU1FTlQpOworCisJZm9yIChpID0gMDsgaSA8IDk7IGkrKykgeworCQlj b25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnkgPSAmbHV0W2ldOworCisJCUk5MTVfV1JJ VEUoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCisJCQkgICBpbGtfbHV0XzEycDRfdWR3 KGVudHJ5KSk7CisJCUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCisJ CQkgICBpbGtfbHV0XzEycDRfbGR3KGVudHJ5KSk7CisJfQorfQorCitzdGF0aWMgdm9pZAoraWNs X3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1 Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCAqZW50cnk7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOworCXUzMiBpOwor CisJLyoKKwkgKgorCSAqIFByb2dyYW0gRmluZSBzZWdtZW50IChsZXQncyBjYWxsIGl0IHNlZzIp Li4uCisJICoKKwkgKiBGaW5lIHNlZ21lbnQncyBzdGVwIGlzIDEvKDEyOCAqIDI1NikgaWUgMS8o MTI4ICogMjU2KSwgIDIvKDEyOCoyNTYpCisJICogLi4uIDI1Ni8oMTI4KjI1NikuIFNvIGluIG9y ZGVyIHRvIHByb2dyYW0gZmluZSBzZWdtZW50IG9mIExVVCB3ZQorCSAqIG5lZWQgdG8gcGljayBl dmVyeSA4J3RoIGVudHJ5IGluIExVVCwgYW5kIHByb2dyYW0gMjU2IGluZGV4ZXMuCisJICoKKwkg KiBQQUxfUFJFQ19JTkRFWFswXSBhbmQgUEFMX1BSRUNfSU5ERVhbMV0gbWFwIHRvIHNlZzJbMV0s CisJICogd2l0aCBzZWcyWzBdIGJlaW5nIHVudXNlZCBieSB0aGUgaGFyZHdhcmUuCisJICovCisJ STkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQp OworCWZvciAoaSA9IDE7IGkgPCAyNTc7IGkrKykgeworCQllbnRyeSA9ICZsdXRbaSAqIDhdOwor CQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTJwNF91ZHcoZW50cnkp KTsKKwkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0XzEycDRfbGR3KGVu dHJ5KSk7CisJfQorCisJLyoKKwkgKiBQcm9ncmFtIENvYXJzZSBzZWdtZW50IChsZXQncyBjYWxs IGl0IHNlZzMpLi4uCisJICoKKwkgKiBDb2Fyc2Ugc2VnbWVudCdzIHN0YXJ0cyBmcm9tIGluZGV4 IDAgYW5kIGl0J3Mgc3RlcCBpcyAxLzI1NiBpZSAwLAorCSAqIDEvMjU2LCAyLzI1NiAuLi4yNTYv MjU2LiBBcyBwZXIgdGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggZW50cnkgaW4gTFVUCisJICogYWJv dmUsIHdlIG5lZWQgdG8gcGljayBldmVyeSAoOCAqIDEyOCl0aCBlbnRyeSBpbiBMVVQsIGFuZAor CSAqIHByb2dyYW0gMjU2IG9mIHRob3NlLgorCSAqCisJICogU3BlYyBpcyBub3QgdmVyeSBjbGVh ciBhYm91dCBpZiBlbnRyaWVzIHNlZzNbMF0gYW5kIHNlZzNbMV0gYXJlCisJICogYmVpbmcgdXNl ZCBvciBub3QsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHByb2dyYW0gdGhlc2UgdG8gYWR2YW5jZQor CSAqIHRoZSBpbmRleC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwkJZW50 cnkgPSAmbHV0W2kgKiA4ICogMTI4XTsKKwkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUp LCBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7CisJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShw aXBlKSwgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOworCX0KKworCS8qIFRoZSBsYXN0IGVudHJ5 IGluIHRoZSBMVVQgaXMgdG8gYmUgcHJvZ3JhbW1lZCBpbiBHQ01BWCAqLworCWVudHJ5ID0gJmx1 dFsyNTYgKiA4ICogMTI4XTsKKwlpY2xfbG9hZF9nY21heChjcnRjX3N0YXRlLCBlbnRyeSk7CisJ aXZiX2xvYWRfbHV0X2V4dF9tYXgoY3J0Yyk7Cit9CisKIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1 dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJY29uc3Qg c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdh bW1hX2x1dDsKQEAgLTc3NSwxMCArODg2LDE3IEBAIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1dHMo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJaWYgKGNydGNfc3Rh dGUtPmJhc2UuZGVnYW1tYV9sdXQpCiAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUp OwogCi0JaWYgKChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0sp ID09Ci0JICAgIEdBTU1BX01PREVfTU9ERV84QklUKSB7CisJc3dpdGNoIChjcnRjX3N0YXRlLT5n YW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0spIHsKKwljYXNlIEdBTU1BX01PREVfTU9E RV84QklUOgogCQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsKLQl9IGVsc2UgeworCQlicmVh azsKKworCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEyQklUX01VTFRJX1NFR01FTlRFRDoKKwkJaWNs X3Byb2dyYW1fZ2FtbWFfc3VwZXJmaW5lX3NlZ21lbnQoY3J0Y19zdGF0ZSk7CisJCWljbF9wcm9n cmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY3J0Y19zdGF0ZSk7CisJCWJyZWFrOworCisJZGVmYXVs dDoKIAkJYmR3X2xvYWRfbHV0XzEwKGNydGMsIGdhbW1hX2x1dCwgUEFMX1BSRUNfSU5ERVhfVkFM VUUoMCkpOwogCQlpdmJfbG9hZF9sdXRfZXh0X21heChjcnRjKTsKIAl9CkBAIC0xMjA5LDcgKzEz MjcsNyBAQCBzdGF0aWMgdTMyIGljbF9nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCSAgICBjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRj X3N0YXRlKSkKIAkJZ2FtbWFfbW9kZSB8PSBHQU1NQV9NT0RFX01PREVfOEJJVDsKIAllbHNlCi0J CWdhbW1hX21vZGUgfD0gR0FNTUFfTU9ERV9NT0RFXzEwQklUOworCQlnYW1tYV9tb2RlIHw9IEdB TU1BX01PREVfTU9ERV8xMkJJVF9NVUxUSV9TRUdNRU5URUQ7CiAKIAlyZXR1cm4gZ2FtbWFfbW9k ZTsKIH0KLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4