From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v6 20/28] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Wed, 24 Oct 2018 15:28:32 -0700 Message-ID: <20181024222840.25683-21-manasi.d.navare@intel.com> References: <20181024222840.25683-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181024222840.25683-1-manasi.d.navare@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: Manasi Navare , Anusha Srivatsa List-Id: dri-devel@lists.freedesktop.org QWZ0ZXIgZW5jb2Rlci0+cHJlX2VuYWJsZSgpIGhvb2ssIGFmdGVyIGxpbmsgdHJhaW5pbmcgc2Vx dWVuY2UgaXMKY29tcGxldGVkLCBQUFMgcmVnaXN0ZXJzIGZvciBEU0MgZW5jb2RlciBhcmUgY29u ZmlndXJlZCB1c2luZyB0aGUKRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50ZWxfY3J0Y19zdGF0 ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwpyb3V0aW5lIGluIHRoZSBzb3VyY2UuIERTQyBlbmFi bGluZyByb3V0aW5lIGlzIGNhbGxlZCBhZnRlcgplbmNvZGVyLT5wcmVfZW5hYmxlKCkgYmVmb3Jl IGVuYmFsaW5nIHRoZSBwaXBlIGFuZCBhZnRlcgpjb21wcmVzc2lvbiBpcyBlbmFibGVkIG9uIHRo ZSBzaW5rLgoKdjQ6CiogVXNlIGNwdV90cmFuc2NvZGVyIGluc3RlYWQgb2YgZW5jb2Rlci0+dHlw ZSBmb3IgdXNpbmcgRURQIHRyYW5zY29kZXIKRFNDIHJlZ2lzdGVycyhWaWxsZSkKKiBLZWVwIGFs bCBQU1MgcmVncyB0b2dldGhlciAoQW51c2hhKQoKdjM6CiogQ29uZmlndXJlIFBpY193aWR0aC8y IGZvciBlYWNoIFZEU0MgZW5naW5lIHdoZW4gdHdvIFZEU0MgZW5naW5lcyBwZXIgcGlwZQphcmUg dXNlZCAoTWFuYXNpKQoqIEFkZCBEU0Mgc2xpY2Vfcm93X3Blcl9mcmFtZSBpbiBQUFMxNiAoTWFu YXNpKQoKdjI6CiogRW5hYmxlIFBHMiBwb3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAoKQ2M6IEph bmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxh IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51 c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFu YXNpLmQubmF2YXJlQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51 c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg ICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyAgICB8IDQxOSArKysrKysr KysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDI3IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0NWZkNzg5NDcyMmIuLjE2ZTZiYjk4ZWIxYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zNDg3LDYgKzM0ODcsOCBAQCBleHRlcm4gdm9p ZCBpbnRlbF9ycHNfbWFya19pbnRlcmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAkJCQkgICAgICAgYm9vbCBpbnRlcmFjdGl2ZSk7CiBleHRlcm4gYm9vbCBpbnRlbF9zZXRf bWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgYm9v bCBlbmFibGUpOworZXh0ZXJuIHZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKKwkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpOwogCiBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCQkJc3RydWN0IGRybV9maWxlICpmaWxlKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwppbmRleCAxODczN2JkODJiNjguLjAyM2E5YmFlZjEwMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNTQzMyw2ICs1NDMzLDEyIEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJ CWlmIChlbmNvZGVyLT5wcmVfZW5hYmxlKQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVy LCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKKworCQkvKgorCQkgKiBFbmFibGUgYW5kIENvbmZp Z3VyZSBEaXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCisJCSAqIGlmIGVu YWJsZWQgaW4gaW50ZWxfY3J0Y19zdGF0ZS4KKwkJICovCisJCWludGVsX2RzY19lbmFibGUoZW5j b2RlciwgY3J0Y19zdGF0ZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5k ZXggZTYxNjhhMTg5OWUxLi5iMGZjNzE2YmJiZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Zkc2MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNj LmMKQEAgLTU4MCwzICs1ODAsNDIyIEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAogCXJldHVybiAwOwogfQorCitzdGF0aWMgdm9p ZCBpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQor eworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOworCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAm Y3J0Y19zdGF0ZS0+ZHBfZHNjX2NmZzsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJ ZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29k ZXI7CisJdTMyIHBwc192YWwgPSAwOworCXUzMiByY19idWZfdGhyZXNoX2R3b3JkWzRdOworCXUz MiByY19yYW5nZV9wYXJhbXNfZHdvcmRbOF07CisJdTggbnVtX3Zkc2NfaW5zdGFuY2VzID0gKGNy dGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSA/IDIgOiAxOworCWludCBpID0gMDsKKwor CS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wIHJlZ2lzdGVycyAqLworCXBwc192 YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA8PAorCQlEU0Nf VkVSX01JTl9TSElGVCB8CisJCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPDwgRFNDX0JQ Q19TSElGVCB8CisJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQ VEhfU0hJRlQ7CisJaWYgKHZkc2NfY2ZnLT5ibG9ja19wcmVkX2VuYWJsZSkKKwkJcHBzX3ZhbCB8 PSBEU0NfQkxPQ0tfUFJFRElDVElPTjsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ19CTE9DS19Q UkVESUNUSU9OOworCWlmICh2ZHNjX2NmZy0+Y29udmVydF9yZ2IpCisJCXBwc192YWwgfD0gRFND X0NPTE9SX1NQQUNFX0NPTlZFUlNJT047CisJZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfQ09MT1Jf U1BBQ0VfQ09OVkVSU0lPTjsKKwlpZiAodmRzY19jZmctPmVuYWJsZTQyMikKKwkJcHBzX3ZhbCB8 PSBEU0NfNDIyX0VOQUJMRTsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ180MjJfRU5BQkxFOwor CWlmICh2ZHNjX2NmZy0+dmJyX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfVkJSX0VOQUJMRTsK KwllbHNlCisJCXBwc192YWwgJj0gfkRTQ19WQlJfRU5BQkxFOworCisJRFJNX0lORk8oIlBQUzAg PSAweCUwOHhcbiIsIHBwc192YWwpOworCSBpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RF Ul9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNf dmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1 cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF8wLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfMChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQ SUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNf dmFsIHw9IERTQ19CUFAodmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKKwlEUk1fSU5GTygiUFBT MSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09E RVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBz X3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmln dXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJB TUVURVJfU0VUXzEocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUg UElDVFVSRV9QQVJBTUVURVJfU0VUXzIgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBz X3ZhbCB8PSBEU0NfUElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hlaWdodCkgfAorCQlEU0NfUElD X1dJRFRIKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMpOworCURSTV9J TkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJ TlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfMiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRl ZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xf RFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMihwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElD VFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyog UG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9 IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQp IHwKKwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGljZV93aWR0aCk7CisJRFJNX0lORk8o IlBQUzMgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFO U0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMs IHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNv bmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJB TUVURVJfU0VUXzMsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBf UElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF8zKHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVs YXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOwor CXBwc192YWwgfD0gRFNDX0lOSVRJQUxfWE1JVF9ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF94bWl0 X2RlbGF5KSB8CisJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF9kZWNf ZGVsYXkpOworCURSTV9JTkZPKCJQUFM0ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1 X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3Rh bmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkg Ki8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLCBwcHNfdmFs KTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChwaXBlKSwKKwkJCQkgICBwcHNfdmFs KTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNSByZWdpc3RlcnMg Ki8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TQ0FMRV9JTkNfSU5UKHZkc2NfY2Zn LT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKKwkJRFNDX1NDQUxFX0RFQ19JTlQodmRzY19j ZmctPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCk7CisJRFJNX0lORk8oIlBQUzUgPSAweCUwOHhc biIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewor CQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUsIHBwc192YWwpOworCQkv KgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9y IHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUsIHBw c192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzUocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81 KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFS QU1FVEVSX1NFVF82IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFND X0lOSVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUpIHwKKwkJ RFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0 KSB8CisJCURTQ19GTEFUTkVTU19NSU5fUVAodmRzY19jZmctPmZsYXRuZXNzX21pbl9xcCkgfAor CQlEU0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXApOworCURSTV9J TkZPKCJQUFM2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0g VFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF82LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVk LCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQ b3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0g MDsKKwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5zbGljZV9icGdf b2Zmc2V0KSB8CisJCURTQ19ORkxfQlBHX09GRlNFVCh2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQp OworCURSTV9JTkZPKCJQUFM3ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5z Y29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBh cmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dS SVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLCBwcHNfdmFsKTsKKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xf RFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9 CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCByZWdpc3RlcnMgKi8KKwlw cHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19jZmctPmZpbmFs X29mZnNldCkgfAorCQlEU0NfSU5JVElBTF9PRkZTRVQodmRzY19jZmctPmluaXRpYWxfb2Zmc2V0 KTsKKwlEUk1fSU5GTygiUFBTOCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFu c2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMg YXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFND Q19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOChwaXBlKSwgcHBzX3ZhbCk7CisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJ fQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzkgcmVnaXN0ZXJzICovCisJ cHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUkNfTU9ERUxfU0laRShEU0NfUkNfTU9ERUxf U0laRV9DT05TVCkgfAorCQlEU0NfUkNfRURHRV9GQUNUT1IoRFNDX1JDX0VER0VfRkFDVE9SX0NP TlNUKTsKKwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90 cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5j ZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICov CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo RFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkx NV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBlKSwgcHBzX3ZhbCk7 CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo SUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzkocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7 CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwIHJlZ2lzdGVycyAq LworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1JDX1FVQU5UX0lOQ19MSU1JVDAodmRz Y19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwKSB8CisJCURTQ19SQ19RVUFOVF9JTkNfTElNSVQx KHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSkgfAorCQlEU0NfUkNfVEFSR0VUX09GRl9I SUdIKERTQ19SQ19UR1RfT0ZGU0VUX0hJX0NPTlNUKSB8CisJCURTQ19SQ19UQVJHRVRfT0ZGX0xP VyhEU0NfUkNfVEdUX09GRlNFVF9MT19DT05TVCk7CisJRFJNX0lORk8oIlBQUzEwID0gMHglMDh4 XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsK KwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7CisJ CS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBm b3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1z LmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAs IHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJB TUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJh bXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfMTAocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUGljdHVy ZSBwYXJhbWV0ZXIgc2V0IDE2ICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJ Q0VfQ0hVTktfU0laRSh2ZHNjX2NmZy0+c2xpY2VfY2h1bmtfc2l6ZSkgfAorCQlEU0NfU0xJQ0Vf UEVSX0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMpIC8KKwkJ CQkgICB2ZHNjX2NmZy0+c2xpY2Vfd2lkdGgpIHwKKwkJRFNDX1NMSUNFX1JPV19QRVJfRlJBTUUo dmRzY19jZmctPnBpY19oZWlnaHQgLworCQkJCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KTsKKwlE Uk1fSU5GTygiUFBTMTYgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2Rl ciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzE2LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUg bmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklU RShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYocGlwZSksIHBwc192YWwpOworCQlp ZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9 CisKKwkvKiBQb3B1bGF0ZSB0aGUgUkNfQlVGX1RIUkVTSCByZWdpc3RlcnMgKi8KKwltZW1zZXQo cmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdvcmQpKTsKKwlm b3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7CisJCXJjX2J1Zl90 aHJlc2hfZHdvcmRbaS80XSB8PSAodTMyKSh2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA8PAor CQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0KSk7CisJCURSTV9JTkZPKCIgUkNfQlVGX1RI UkVTSCVkID0gMHglMDh4XG4iLCBpLAorCQkJIHJjX2J1Zl90aHJlc2hfZHdvcmRbaS80XSk7CisJ fQorCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRF KERTQ0FfUkNfQlVGX1RIUkVTSF8wLCByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJSTkxNV9X UklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOwor CQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xLCByY19idWZfdGhyZXNoX2R3b3JkWzJd KTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMV9VRFcsIHJjX2J1Zl90aHJlc2hf ZHdvcmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJ CUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzAsCisJCQkJICAgcmNfYnVmX3RocmVzaF9k d29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VEVywKKwkJCQkg ICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhS RVNIXzEsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKERT Q0NfUkNfQlVGX1RIUkVTSF8xX1VEVywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsK KwkJfQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wKHBp cGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RT QzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRb MV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwKKwkJCSAg IHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9U SFJFU0hfMV9VRFcocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBd KTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJ CQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNf QlVGX1RIUkVTSF8xKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQkJ STkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAorCQkJCSAgIHJj X2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQl9CisJfQorCisJLyogUG9wdWxhdGUgdGhlIFJDX1JB TkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCisJbWVtc2V0KHJjX3JhbmdlX3BhcmFtc19kd29y ZCwgMCwgc2l6ZW9mKHJjX3JhbmdlX3BhcmFtc19kd29yZCkpOworCWZvciAoaSA9IDA7IGkgPCBE U0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQlyY19yYW5nZV9wYXJhbXNfZHdvcmRbaS8yXSB8 PSAodTMyKSgoKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBnX29mZnNldCA8 PAorCQkJCQkJICAgICAgUkNfQlBHX09GRlNFVF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19j ZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKKwkJCQkJCSAgICAgIFJDX01B WF9RUF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5y YW5nZV9taW5fcXAgPDwKKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8IDE2ICogKGkg JSAyKSk7CisJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQgPSAweCUwOHhcbiIsIGksCisJ CQkgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kvMl0pOworCX0KKwlpZiAoY3B1X3RyYW5zY29kZXIg PT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRF UlNfMCwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoRFND QV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzFdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJB TUVURVJTXzFfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJSTkxNV9X UklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFs0XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAor CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JB TkdFX1BBUkFNRVRFUlNfMywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCUk5 MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXLAorCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzddKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0 KSB7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wLAorCQkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFS QU1FVEVSU18wX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQkJSTkx NV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9V RFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJCUk5MTVfV1JJVEUoRFND Q19SQ19SQU5HRV9QQVJBTUVURVJTXzIsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRd KTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAorCQkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0Vf UEFSQU1FVEVSU18zLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCQlJOTE1 X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKKwkJCQkgICByY19yYW5nZV9w YXJhbXNfZHdvcmRbN10pOworCQl9CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19SQU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb MF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcocGlw ZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMShwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFsyXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VE VyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJT XzJfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzMocGlwZSksCisJCQkgICByY19yYW5n ZV9wYXJhbXNfZHdvcmRbNl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFN RVRFUlNfM19VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQlp ZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFt c19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNf MF9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAorCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BB UkFNRVRFUlNfMV9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAorCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JD X1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzVdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18zKHBp cGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzddKTsKKwkJfQorCX0KK30KKwordm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKworCWlmICghY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21w cmVzc2lvbl9lbmFibGUpCisJCXJldHVybjsKKworCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2Rz Y19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOworCisJcmV0dXJuOworfQotLSAKMi4xOC4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK