From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v7 13/19] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Thu, 1 Nov 2018 23:46:53 -0700 Message-ID: <20181102064659.8991-14-manasi.d.navare@intel.com> References: <20181102064659.8991-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: <20181102064659.8991-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 ZSBzaW5rLgoKdjU6CiogbWFrZSBjcnRjX3N0YXRlIGNvbnN0IChWaWxsZSkKdjQ6CiogVXNlIGNw dV90cmFuc2NvZGVyIGluc3RlYWQgb2YgZW5jb2Rlci0+dHlwZSBmb3IgdXNpbmcgRURQIHRyYW5z Y29kZXIKRFNDIHJlZ2lzdGVycyhWaWxsZSkKKiBLZWVwIGFsbCBQU1MgcmVncyB0b2dldGhlciAo QW51c2hhKQoKdjM6CiogQ29uZmlndXJlIFBpY193aWR0aC8yIGZvciBlYWNoIFZEU0MgZW5naW5l IHdoZW4gdHdvIFZEU0MgZW5naW5lcyBwZXIgcGlwZQphcmUgdXNlZCAoTWFuYXNpKQoqIEFkZCBE U0Mgc2xpY2Vfcm93X3Blcl9mcmFtZSBpbiBQUFMxNiAoTWFuYXNpKQoKdjI6CiogRW5hYmxlIFBH MiBwb3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNv bT4KUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDIgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Zkc2MuYyAgICB8IDQxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgNDI3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCBkNzc5N2E0MWM2NDguLmYzNDdkMGQ3YjllYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0zNDg1LDYgKzM0ODUsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ycHNfbWFya19pbnRl cmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkgICAgICAgYm9vbCBp bnRlcmFjdGl2ZSk7CiBleHRlcm4gYm9vbCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgYm9vbCBlbmFibGUpOworZXh0ZXJuIHZv aWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCiBpbnQgaTkx NV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJ c3RydWN0IGRybV9maWxlICpmaWxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpp bmRleCA0NzdlNTNjMzczNTMuLjJlOTZlMjAwNDgzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwpAQCAtNTQxNyw2ICs1NDE3LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29k ZXJzX3ByZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWlmIChlbmNvZGVyLT5w cmVfZW5hYmxlKQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBj b25uX3N0YXRlKTsKKworCQkvKgorCQkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBEaXNwbGF5IFN0 cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCisJCSAqIGlmIGVuYWJsZWQgaW4gaW50ZWxf Y3J0Y19zdGF0ZS4KKwkJICovCisJCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0 ZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5kZXggYjkzY2IzMjAyNmZh Li45ZjgwYTg2Zjk1ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zk c2MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKQEAgLTU4MCwzICs1 ODAsNDIyIEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKIAogCXJldHVybiAwOwogfQorCitzdGF0aWMgdm9pZCBpbnRlbF9jb25maWd1 cmVfcHBzX2Zvcl9kc2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJ CQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0 Y19zdGF0ZS0+ZHBfZHNjX2NmZzsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJZW51 bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7 CisJdTMyIHBwc192YWwgPSAwOworCXUzMiByY19idWZfdGhyZXNoX2R3b3JkWzRdOworCXUzMiBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbOF07CisJdTggbnVtX3Zkc2NfaW5zdGFuY2VzID0gKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSA/IDIgOiAxOworCWludCBpID0gMDsKKworCS8q IFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wIHJlZ2lzdGVycyAqLworCXBwc192YWwg PSBEU0NfVkVSX01BSiB8IHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA8PAorCQlEU0NfVkVS X01JTl9TSElGVCB8CisJCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPDwgRFNDX0JQQ19T SElGVCB8CisJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhf U0hJRlQ7CisJaWYgKHZkc2NfY2ZnLT5ibG9ja19wcmVkX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBE U0NfQkxPQ0tfUFJFRElDVElPTjsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ19CTE9DS19QUkVE SUNUSU9OOworCWlmICh2ZHNjX2NmZy0+Y29udmVydF9yZ2IpCisJCXBwc192YWwgfD0gRFNDX0NP TE9SX1NQQUNFX0NPTlZFUlNJT047CisJZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfQ09MT1JfU1BB Q0VfQ09OVkVSU0lPTjsKKwlpZiAodmRzY19jZmctPmVuYWJsZTQyMikKKwkJcHBzX3ZhbCB8PSBE U0NfNDIyX0VOQUJMRTsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ180MjJfRU5BQkxFOworCWlm ICh2ZHNjX2NmZy0+dmJyX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfVkJSX0VOQUJMRTsKKwll bHNlCisJCXBwc192YWwgJj0gfkRTQ19WQlJfRU5BQkxFOworCisJRFJNX0lORk8oIlBQUzAgPSAw eCUwOHhcbiIsIHBwc192YWwpOworCSBpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9F RFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFs KTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUg UFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF8wLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNU VVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFs IHw9IERTQ19CUFAodmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKKwlEUk1fSU5GTygiUFBTMSA9 IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJf RURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3Zh bCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJl IFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9T RVRfMSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMShwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzEocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElD VFVSRV9QQVJBTUVURVJfU0VUXzIgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3Zh bCB8PSBEU0NfUElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hlaWdodCkgfAorCQlEU0NfUElDX1dJ RFRIKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMpOworCURSTV9JTkZP KCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRF TF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf MiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwg Y29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFND MF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMihwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVS RV9QQVJBTUVURVJfU0VUXzIocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9w dWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7 CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQpIHwK KwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGljZV93aWR0aCk7CisJRFJNX0lORk8oIlBQ UzMgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NP REVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMsIHBw c192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZp Z3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzMsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElD VFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF8zKHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRl IFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBw c192YWwgfD0gRFNDX0lOSVRJQUxfWE1JVF9ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2Rl bGF5KSB8CisJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF9kZWNfZGVs YXkpOworCURSTV9JTkZPKCJQUFM0ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3Ry YW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNl cyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8K KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShE U0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLCBwcHNfdmFsKTsK KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJ Q0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsK Kwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNSByZWdpc3RlcnMgKi8K KwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TQ0FMRV9JTkNfSU5UKHZkc2NfY2ZnLT5z Y2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKKwkJRFNDX1NDQUxFX0RFQ19JTlQodmRzY19jZmct PnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCk7CisJRFJNX0lORk8oIlBQUzUgPSAweCUwOHhcbiIs IHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUsIHBwc192YWwpOworCQkvKgor CQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNl Y29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUsIHBwc192 YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzUocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBp cGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1F VEVSX1NFVF82IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX0lO SVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUpIHwKKwkJRFND X0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0KSB8 CisJCURTQ19GTEFUTkVTU19NSU5fUVAodmRzY19jZmctPmZsYXRuZXNzX21pbl9xcCkgfAorCQlE U0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXApOworCURSTV9JTkZP KCJQUFM2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJB TlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82 LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBj b25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3Rh dGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3Rh dGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfNihwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1 bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsK KwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5zbGljZV9icGdfb2Zm c2V0KSB8CisJCURTQ19ORkxfQlBHX09GRlNFVCh2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQpOwor CURSTV9JTkZPKCJQUFM3ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29k ZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF83LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUg bmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRF KElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisK KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCByZWdpc3RlcnMgKi8KKwlwcHNf dmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19jZmctPmZpbmFsX29m ZnNldCkgfAorCQlEU0NfSU5JVElBTF9PRkZTRVQodmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsK KwlEUk1fSU5GTygiUFBTOCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2Nv ZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJl IG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklU RShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOChwaXBlKSwgcHBzX3ZhbCk7CisJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQor CisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzkgcmVnaXN0ZXJzICovCisJcHBz X3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUkNfTU9ERUxfU0laRShEU0NfUkNfTU9ERUxfU0la RV9DT05TVCkgfAorCQlEU0NfUkNfRURHRV9GQUNUT1IoRFNDX1JDX0VER0VfRkFDVE9SX0NPTlNU KTsKKwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFu c2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMg YXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFND Q19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBlKSwgcHBzX3ZhbCk7CisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzkocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJ fQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwIHJlZ2lzdGVycyAqLwor CXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1JDX1FVQU5UX0lOQ19MSU1JVDAodmRzY19j ZmctPnJjX3F1YW50X2luY3JfbGltaXQwKSB8CisJCURTQ19SQ19RVUFOVF9JTkNfTElNSVQxKHZk c2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSkgfAorCQlEU0NfUkNfVEFSR0VUX09GRl9ISUdI KERTQ19SQ19UR1RfT0ZGU0VUX0hJX0NPTlNUKSB8CisJCURTQ19SQ19UQVJHRVRfT0ZGX0xPVyhE U0NfUkNfVEdUX09GRlNFVF9MT19DT05TVCk7CisJRFJNX0lORk8oIlBQUzEwID0gMHglMDh4XG4i LCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJ STkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7CisJCS8q CisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Ig c2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAsIHBw c192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf MTAocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUGljdHVyZSBw YXJhbWV0ZXIgc2V0IDE2ICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0Vf Q0hVTktfU0laRSh2ZHNjX2NmZy0+c2xpY2VfY2h1bmtfc2l6ZSkgfAorCQlEU0NfU0xJQ0VfUEVS X0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMpIC8KKwkJCQkg ICB2ZHNjX2NmZy0+c2xpY2Vfd2lkdGgpIHwKKwkJRFNDX1NMSUNFX1JPV19QRVJfRlJBTUUodmRz Y19jZmctPnBpY19oZWlnaHQgLworCQkJCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KTsKKwlEUk1f SU5GTygiUFBTMTYgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9 PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJf U0VUXzE2LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVl ZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNy dGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJ Q0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYocGlwZSksIHBwc192YWwpOworCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0Mx X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisK KwkvKiBQb3B1bGF0ZSB0aGUgUkNfQlVGX1RIUkVTSCByZWdpc3RlcnMgKi8KKwltZW1zZXQocmNf YnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdvcmQpKTsKKwlmb3Ig KGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7CisJCXJjX2J1Zl90aHJl c2hfZHdvcmRbaS80XSB8PSAodTMyKSh2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA8PAorCQkJ CQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0KSk7CisJCURSTV9JTkZPKCIgUkNfQlVGX1RIUkVT SCVkID0gMHglMDh4XG4iLCBpLAorCQkJIHJjX2J1Zl90aHJlc2hfZHdvcmRbaS80XSk7CisJfQor CWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERT Q0FfUkNfQlVGX1RIUkVTSF8wLCByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJSTkxNV9XUklU RShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xLCByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsK KwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMV9VRFcsIHJjX2J1Zl90aHJlc2hfZHdv cmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5 MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzAsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29y ZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VEVywKKwkJCQkgICBy Y19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNI XzEsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKERTQ0Nf UkNfQlVGX1RIUkVTSF8xX1VEVywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJ fQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wKHBpcGUp LAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBf UkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0p OworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwKKwkJCSAgIHJj X2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJF U0hfMV9VRFcocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJaWYgKGNy dGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKElDTF9EU0Mx X1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCQkg ICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVG X1RIUkVTSF8xKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQkJSTkx NV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAorCQkJCSAgIHJjX2J1 Zl90aHJlc2hfZHdvcmRbM10pOworCQl9CisJfQorCisJLyogUG9wdWxhdGUgdGhlIFJDX1JBTkdF X1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCisJbWVtc2V0KHJjX3JhbmdlX3BhcmFtc19kd29yZCwg MCwgc2l6ZW9mKHJjX3JhbmdlX3BhcmFtc19kd29yZCkpOworCWZvciAoaSA9IDA7IGkgPCBEU0Nf TlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQlyY19yYW5nZV9wYXJhbXNfZHdvcmRbaS8yXSB8PSAo dTMyKSgoKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBnX29mZnNldCA8PAor CQkJCQkJICAgICAgUkNfQlBHX09GRlNFVF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19jZmct PnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKKwkJCQkJCSAgICAgIFJDX01BWF9R UF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5n ZV9taW5fcXAgPDwKKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8IDE2ICogKGkgJSAy KSk7CisJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQgPSAweCUwOHhcbiIsIGksCisJCQkg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kvMl0pOworCX0KKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0g VFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNf MCwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9S Q19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFd KTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVU RVJTXzFfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJSTkxNV9XUklU RShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFs0XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAorCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdF X1BBUkFNRVRFUlNfMywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCUk5MTVf V1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzddKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7 CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wLAorCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1F VEVSU18wX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQkJSTkxNV9X UklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcs CisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19S Q19SQU5HRV9QQVJBTUVURVJTXzIsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsK KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAorCQkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFS QU1FVEVSU18zLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCQlJOTE1X1dS SVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbN10pOworCQl9CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19S QU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0p OworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcocGlwZSks CisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1JDX1JBTkdFX1BBUkFNRVRFUlNfMShwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFsyXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVyhw aXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzJf VURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkxNV9XUklU RShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzMocGlwZSksCisJCQkgICByY19yYW5nZV9w YXJhbXNfZHdvcmRbNl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRF UlNfM19VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFswXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9V RFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJ VEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAorCQkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFN RVRFUlNfMV9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAorCQkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JB TkdFX1BBUkFNRVRFUlNfMl9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzVdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18zKHBpcGUp LAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzddKTsKKwkJfQorCX0KK30KKwordm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKworCWlmICghY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5j b21wcmVzc2lvbl9lbmFibGUpCisJCXJldHVybjsKKworCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9y X2RzY19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOworCisJcmV0dXJuOworfQotLSAKMi4x OC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK