From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v5 20/28] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Fri, 5 Oct 2018 16:22:58 -0700 Message-ID: <20181005232306.31133-21-manasi.d.navare@intel.com> References: <20181005232306.31133-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: <20181005232306.31133-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: intel-gfx@lists.freedesktop.org QWZ0ZXIgZW5jb2Rlci0+cHJlX2VuYWJsZSgpIGhvb2ssIGFmdGVyIGxpbmsgdHJhaW5pbmcgc2Vx dWVuY2UgaXMKY29tcGxldGVkLCBQUFMgcmVnaXN0ZXJzIGZvciBEU0MgZW5jb2RlciBhcmUgY29u ZmlndXJlZCB1c2luZyB0aGUKRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50ZWxfY3J0Y19zdGF0 ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwpyb3V0aW5lIGluIHRoZSBzb3VyY2UuIERTQyBlbmFi bGluZyByb3V0aW5lIGlzIGNhbGxlZCBhZnRlcgplbmNvZGVyLT5wcmVfZW5hYmxlKCkgYmVmb3Jl IGVuYmFsaW5nIHRoZSBwaXBlIGFuZCBhZnRlcgpjb21wcmVzc2lvbiBpcyBlbmFibGVkIG9uIHRo ZSBzaW5rLgoKdjM6CiogQ29uZmlndXJlIFBpY193aWR0aC8yIGZvciBlYWNoIFZEU0MgZW5naW5l IHdoZW4gdHdvIFZEU0MgZW5naW5lcyBwZXIgcGlwZQphcmUgdXNlZCAoTWFuYXNpKQoqIEFkZCBE U0Mgc2xpY2Vfcm93X3Blcl9mcmFtZSBpbiBQUFMxNiAoTWFuYXNpKQoKdjI6CiogRW5hYmxlIFBH MiBwb3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDIgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Zkc2MuYyAgICB8IDQxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgNDI2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCA5M2U1N2IyNzFkM2IuLmI0OTk4NWY1ZDA4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0zNTA2LDYgKzM1MDYsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ycHNfbWFya19pbnRl cmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkgICAgICAgYm9vbCBp bnRlcmFjdGl2ZSk7CiBleHRlcm4gYm9vbCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgYm9vbCBlbmFibGUpOworZXh0ZXJuIHZv aWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCiBpbnQgaTkxNV9yZWdf cmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJc3RydWN0 IGRybV9maWxlICpmaWxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA0 ZWJmN2M4MzA4NWMuLmY3Y2I0MTc3NWM1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwpAQCAtNTQ4MCw2ICs1NDgwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3By ZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWlmIChlbmNvZGVyLT5wcmVfZW5h YmxlKQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0 YXRlKTsKKworCQkvKgorCQkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBEaXNwbGF5IFN0cmVhbSBD b21wcmVzc2lvbiBpbiB0aGUgc291cmNlCisJCSAqIGlmIGVuYWJsZWQgaW4gaW50ZWxfY3J0Y19z dGF0ZS4KKwkJICovCisJCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7CiAJ fQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5kZXggNTk0MTk2YTlkMGY0Li4xZjJi NWRjODJmMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKQEAgLTU4MCwzICs1ODAsNDIx IEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKIAogCXJldHVybiAwOwogfQorCitzdGF0aWMgdm9pZCBpbnRlbF9jb25maWd1cmVfcHBz X2Zvcl9kc2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwor CXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0Y19zdGF0ZS0+ZHBfZHNjX2Nm ZzsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJdTMyIHBwc192YWwgPSAwOworCXUz MiByY19idWZfdGhyZXNoX2R3b3JkWzRdOworCXUzMiByY19yYW5nZV9wYXJhbXNfZHdvcmRbOF07 CisJdTggbnVtX3Zkc2NfaW5zdGFuY2VzID0gKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KSA/IDIgOiAxOworCWludCBpID0gMDsKKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1F VEVSX1NFVF8wIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2Zn LT5kc2NfdmVyc2lvbl9taW5vciA8PAorCQlEU0NfVkVSX01JTl9TSElGVCB8CisJCXZkc2NfY2Zn LT5iaXRzX3Blcl9jb21wb25lbnQgPDwgRFNDX0JQQ19TSElGVCB8CisJCXZkc2NfY2ZnLT5saW5l X2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhfU0hJRlQ7CisJaWYgKHZkc2NfY2ZnLT5i bG9ja19wcmVkX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfQkxPQ0tfUFJFRElDVElPTjsKKwll bHNlCisJCXBwc192YWwgJj0gfkRTQ19CTE9DS19QUkVESUNUSU9OOworCWlmICh2ZHNjX2NmZy0+ Y29udmVydF9yZ2IpCisJCXBwc192YWwgfD0gRFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJT047CisJ ZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lPTjsKKwlpZiAodmRz Y19jZmctPmVuYWJsZTQyMikKKwkJcHBzX3ZhbCB8PSBEU0NfNDIyX0VOQUJMRTsKKwllbHNlCisJ CXBwc192YWwgJj0gfkRTQ180MjJfRU5BQkxFOworCWlmICh2ZHNjX2NmZy0+dmJyX2VuYWJsZSkK KwkJcHBzX3ZhbCB8PSBEU0NfVkJSX0VOQUJMRTsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ19W QlJfRU5BQkxFOworCisJRFJNX0lORk8oIlBQUzAgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NB X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFND IGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRT QworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkx NV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwl9IGVsc2Ug eworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wKHBpcGUpLCBw cHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkx NV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMChwaXBlKSwKKwkJCQkgICBw cHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdp c3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19CUFAodmRzY19jZmctPmJp dHNfcGVyX3BpeGVsKTsKKwlEUk1fSU5GTygiUFBTMSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJ aWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERT Q0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZE U0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBW RFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJ OTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192YWwpOworCX0gZWxz ZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSks IHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJ OTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xKHBpcGUpLAorCQkJCSAg IHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yIHJl Z2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1BJQ19IRUlHSFQodmRz Y19jZmctPnBpY19oZWlnaHQpIHwKKwkJRFNDX1BJQ19XSURUSCh2ZHNjX2NmZy0+cGljX3dpZHRo IC8gbnVtX3Zkc2NfaW5zdGFuY2VzKTsKKwlEUk1fSU5GTygiUFBTMiA9IDB4JTA4eFxuIiwgcHBz X3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1 X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOworCQkvKgorCQkg KiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29u ZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwp OworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VU XzIocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUp LAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVS X1NFVF8zIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NMSUNF X0hFSUdIVCh2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KSB8CisJCURTQ19TTElDRV9XSURUSCh2ZHNj X2NmZy0+c2xpY2Vfd2lkdGgpOworCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBwcHNfdmFs KTsKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJ VEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElm IDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJ CSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7CisJ fSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhw aXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksCisJ CQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VU XzQgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfSU5JVElBTF9Y TUlUX0RFTEFZKHZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXkpIHwKKwkJRFNDX0lOSVRJQUxf REVDX0RFTEFZKHZkc2NfY2ZnLT5pbml0aWFsX2RlY19kZWxheSk7CisJRFJNX0lORk8oIlBQUzQg PSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNf dmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1 cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF80LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfNChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQ SUNUVVJFX1BBUkFNRVRFUl9TRVRfNSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNf dmFsIHw9IERTQ19TQ0FMRV9JTkNfSU5UKHZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2 YWwpIHwKKwkJRFNDX1NDQUxFX0RFQ19JTlQodmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9pbnRl cnZhbCk7CisJRFJNX0lORk8oIlBQUzUgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3Rh bmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkg Ki8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLCBwcHNfdmFs KTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwKKwkJCQkgICBwcHNfdmFs KTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiByZWdpc3RlcnMg Ki8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1NDQUxFX1ZBTFVFKHZk c2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlKSB8CisJCURTQ19GSVJTVF9MSU5FX0JQR19PRkZT RVQodmRzY19jZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldCkgfAorCQlEU0NfRkxBVE5FU1NfTUlO X1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19taW5fcXApIHwKKwkJRFNDX0ZMQVRORVNTX01BWF9RUCh2 ZHNjX2NmZy0+ZmxhdG5lc3NfbWF4X3FwKTsKKwlEUk1fSU5GTygiUFBTNiA9IDB4JTA4eFxuIiwg cHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192YWwpOworCQkvKgor CQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNl Y29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192 YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzYocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBp cGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1F VEVSX1NFVF83IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NM SUNFX0JQR19PRkZTRVQodmRzY19jZmctPnNsaWNlX2JwZ19vZmZzZXQpIHwKKwkJRFNDX05GTF9C UEdfT0ZGU0VUKHZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCk7CisJRFJNX0lORk8oIlBQUzcgPSAw eCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFs KTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUg UFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF83LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF83KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfNyhwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNU VVJFX1BBUkFNRVRFUl9TRVRfOCByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFs IHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19jZmctPmZpbmFsX29mZnNldCkgfAorCQlEU0NfSU5J VElBTF9PRkZTRVQodmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTOCA9 IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVU X0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsIHBwc192 YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3Vy ZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJf U0VUXzgsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVS RV9QQVJBTUVURVJfU0VUXzgocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF84KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJ Q1RVUkVfUEFSQU1FVEVSX1NFVF85IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192 YWwgfD0gRFNDX1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwKKwkJRFND X1JDX0VER0VfRkFDVE9SKERTQ19SQ19FREdFX0ZBQ1RPUl9DT05TVCk7CisJRFJNX0lORk8oIlBQ UzkgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF85LCBw cHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25m aWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF85LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF85KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfOShwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0 ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJ cHBzX3ZhbCB8PSBEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMCh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5j cl9saW1pdDApIHwKKwkJRFNDX1JDX1FVQU5UX0lOQ19MSU1JVDEodmRzY19jZmctPnJjX3F1YW50 X2luY3JfbGltaXQxKSB8CisJCURTQ19SQ19UQVJHRVRfT0ZGX0hJR0goRFNDX1JDX1RHVF9PRkZT RVRfSElfQ09OU1QpIHwKKwkJRFNDX1JDX1RBUkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZGU0VU X0xPX0NPTlNUKTsKKwlEUk1fSU5GTygiUFBTMTAgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NB X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRT QyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZE U0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAsIHBwc192YWwpOworCX0gZWxz ZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUp LCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJ STkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksCisJCQkJ ICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9USFJFU0ggcmVnaXN0 ZXJzICovCisJbWVtc2V0KHJjX2J1Zl90aHJlc2hfZHdvcmQsIDAsIHNpemVvZihyY19idWZfdGhy ZXNoX2R3b3JkKSk7CisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7IGkr KykgeworCQlyY19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRzY19jZmctPnJjX2J1 Zl90aHJlc2hbaV0gPDwKKwkJCQkJCSAgQklUU19QRVJfQllURSAqIChpICUgNCkpOworCQlEUk1f SU5GTygiIFJDX0JVRl9USFJFU0glZCA9IDB4JTA4eFxuIiwgaSwKKwkJCSByY19idWZfdGhyZXNo X2R3b3JkW2kvNF0pOworCX0KKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQ KSB7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzAsIHJjX2J1Zl90aHJlc2hfZHdv cmRbMF0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wX1VEVywgcmNfYnVmX3Ro cmVzaF9kd29yZFsxXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzEsIHJjX2J1 Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xX1VE VywgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1z LmRzY19zcGxpdCkgeworCQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9USFJFU0hfMCwKKwkJCQkg ICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhS RVNIXzBfVURXLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQkJSTkxNV9XUklU RShEU0NDX1JDX0JVRl9USFJFU0hfMSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsK KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzFfVURXLAorCQkJCSAgIHJjX2J1Zl90 aHJlc2hfZHdvcmRbM10pOworCQl9CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19CVUZfVEhSRVNIXzAocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJ STkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAorCQkJICAgcmNf YnVmX3RocmVzaF9kd29yZFsxXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVT SF8xKHBpcGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8xX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hf ZHdvcmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wKHBpcGUpLAorCQkJCSAgIHJjX2J1 Zl90aHJlc2hfZHdvcmRbMF0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNI XzBfVURXKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQkJSTkxNV9X UklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzEocGlwZSksCisJCQkJICAgcmNfYnVmX3RocmVz aF9kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMV9VRFco cGlwZSksCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7CisJCX0KKwl9CisKKwkvKiBQ b3B1bGF0ZSB0aGUgUkNfUkFOR0VfUEFSQU1FVEVSUyByZWdpc3RlcnMgKi8KKwltZW1zZXQocmNf cmFuZ2VfcGFyYW1zX2R3b3JkLCAwLCBzaXplb2YocmNfcmFuZ2VfcGFyYW1zX2R3b3JkKSk7CisJ Zm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUzsgaSsrKSB7CisJCXJjX3JhbmdlX3Bh cmFtc19kd29yZFtpLzJdIHw9ICh1MzIpKCgodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5y YW5nZV9icGdfb2Zmc2V0IDw8CisJCQkJCQkgICAgICBSQ19CUEdfT0ZGU0VUX1NISUZUKSB8CisJ CQkJCQkgICAgICh2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21heF9xcCA8PAor CQkJCQkJICAgICAgUkNfTUFYX1FQX1NISUZUKSB8CisJCQkJCQkgICAgICh2ZHNjX2NmZy0+cmNf cmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21pbl9xcCA8PAorCQkJCQkJICAgICAgUkNfTUlOX1FQX1NI SUZUKSkgPDwgMTYgKiAoaSAlIDIpKTsKKwkJRFJNX0lORk8oIiBSQ19SQU5HRV9QQVJBTV8lZCA9 IDB4JTA4eFxuIiwgaSwKKwkJCSByY19yYW5nZV9wYXJhbXNfZHdvcmRbaS8yXSk7CisJfQorCWlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NB X1JDX1JBTkdFX1BBUkFNRVRFUlNfMCwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7 CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAorCQkJICAgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFN RVRFUlNfMSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUo RFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzNdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9Q QVJBTUVURVJTXzJfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkx NV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMywKKwkJCSAgIHJjX3JhbmdlX3BhcmFt c19kd29yZFs2XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURX LAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1F VEVSU18wLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRF KERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMV0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JB TkdFX1BBUkFNRVRFUlNfMV9VRFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsK KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzIsCisJCQkJICAgcmNfcmFu Z2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVU RVJTXzJfVURXLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCQlJOTE1X1dS SVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFs2XSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywK KwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQl9CisJfSBlbHNlIHsKKwkJSTkx NV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbMF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BB UkFNRVRFUlNfMF9VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOwor CQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMShwaXBlKSwKKwkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFO R0VfUEFSQU1FVEVSU18xX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsz XSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAor CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19SQU5HRV9QQVJBTUVURVJTXzJfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzVdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzMocGlw ZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbN10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAorCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JD X1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBp cGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzNdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1F VEVSU18yKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCQlJOTE1 X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcocGlwZSksCisJCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFO R0VfUEFSQU1FVEVSU18zKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7 CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSks CisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJfQorCX0KKworCS8qIFBvcHVs YXRlIFBpY3R1cmUgcGFyYW1ldGVyIHNldCAxNiAqLworCXBwc192YWwgPSAwOworCXBwc192YWwg fD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUodmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUpIHwKKwkJ RFNDX1NMSUNFX1BFUl9MSU5FKCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFu Y2VzKSAvCisJCQkJICAgdmRzY19jZmctPnNsaWNlX3dpZHRoKSB8CisJCURTQ19TTElDRV9ST1df UEVSX0ZSQU1FKHZkc2NfY2ZnLT5waWNfaGVpZ2h0IC8KKwkJCQkJdmRzY19jZmctPnNsaWNlX2hl aWdodCk7CisJRFJNX0lORk8oIlBQUzE2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoZW5j b2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMTYsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5z dGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJ CSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dS SVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsKKwl9IGVsc2Ugewor CQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwgcHBz X3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLAorCQkJCSAgIHBw c192YWwpOworCX0KK30KKwordm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKK3sKKworCWlmICghY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUp CisJCXJldHVybjsKKworCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKGVuY29k ZXIsIGNydGNfc3RhdGUpOworCisJcmV0dXJuOworfQotLSAKMi4xOC4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK