From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH 18/23] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Mon, 30 Jul 2018 19:12:58 -0700 Message-ID: <1533003183-22793-19-git-send-email-manasi.d.navare@intel.com> References: <1533003183-22793-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D2D8F89AA6 for ; Tue, 31 Jul 2018 02:10:38 +0000 (UTC) In-Reply-To: <1533003183-22793-1-git-send-email-manasi.d.navare@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 List-Id: intel-gfx@lists.freedesktop.org QWZ0ZXIgZW5jb2Rlci0+cHJlX2VuYWJsZSgpIGhvb2ssIGFmdGVyIGxpbmsgdHJhaW5pbmcgc2Vx dWVuY2UgaXMKY29tcGxldGVkLCBQUFMgcmVnaXN0ZXJzIGZvciBEU0MgZW5jb2RlciBhcmUgY29u ZmlndXJlZCB1c2luZyB0aGUKRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50ZWxfY3J0Y19zdGF0 ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwpyb3V0aW5lIGluIHRoZSBzb3VyY2UuIERTQyBlbmFi bGluZyByb3V0aW5lIGlzIGNhbGxlZCBhZnRlcgplbmNvZGVyLT5wcmVfZW5hYmxlKCkgYmVmb3Jl IGVuYmFsaW5nIHRoZSBwaXBlIGFuZCBhZnRlcgpjb21wcmVzc2lvbiBpcyBlbmFibGVkIG9uIHRo ZSBzaW5rLgoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNj OiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNo YSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyAg ICB8IDQxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCA0MjUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDMzNGE1 ZGIuLjBmZmM5YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzQyNSw2ICszNDI1LDgg QEAgZXh0ZXJuIHZvaWQgaW50ZWxfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGludGVsX3NldF9ycHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpOwogZXh0ZXJuIGJvb2wgaW50ZWxfc2V0X21lbW9y eV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgIGJvb2wgZW5h YmxlKTsKK2V4dGVybiB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsK IAogaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggMjg2Y2FlMi4uZmY0NzI4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwpAQCAtNTQxMCw2ICs1NDEwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29k ZXJzX3ByZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWlmIChlbmNvZGVyLT5w cmVfZW5hYmxlKQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBj b25uX3N0YXRlKTsKKworCQkvKgorCQkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBEaXNwbGF5IFN0 cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCisJCSAqIGlmIGVuYWJsZWQgaW4gaW50ZWxf Y3J0Y19zdGF0ZS4KKwkJICovCisJCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0 ZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5kZXggZjJjNTdlNC4uN2Q1 NDk5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtNTg2LDMgKzU4Niw0MjAgQEAg aW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAogCiAJcmV0dXJuIDA7CiB9CisKK3N0YXRpYyB2b2lkIGludGVsX2NvbmZpZ3VyZV9wcHNfZm9y X2RzY19lbmNvZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJc3Ry dWN0IGRybV9kc2NfY29uZmlnICp2ZHNjX2NmZyA9ICZjcnRjX3N0YXRlLT5kcF9kc2NfY2ZnOwor CWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwl1MzIgcHBzX3ZhbCA9IDA7CisJdTMyIHJj X2J1Zl90aHJlc2hfZHdvcmRbNF07CisJdTMyIHJjX3JhbmdlX3BhcmFtc19kd29yZFs4XTsKKwl1 OCBudW1fdmRzY19pbnN0YW5jZXMgPSAwOworCWludCBpID0gMDsKKworCS8qIFBvcHVsYXRlIFBJ Q1RVUkVfUEFSQU1FVEVSX1NFVF8wIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSBEU0NfVkVSX01B SiB8IHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA8PAorCQlEU0NfVkVSX01JTl9TSElGVCB8 CisJCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPDwgRFNDX0JQQ19TSElGVCB8CisJCXZk c2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhfU0hJRlQ7CisJaWYg KHZkc2NfY2ZnLT5ibG9ja19wcmVkX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfQkxPQ0tfUFJF RElDVElPTjsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ19CTE9DS19QUkVESUNUSU9OOworCWlm ICh2ZHNjX2NmZy0+Y29udmVydF9yZ2IpCisJCXBwc192YWwgfD0gRFNDX0NPTE9SX1NQQUNFX0NP TlZFUlNJT047CisJZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lP TjsKKwlpZiAodmRzY19jZmctPmVuYWJsZTQyMikKKwkJcHBzX3ZhbCB8PSBEU0NfNDIyX0VOQUJM RTsKKwllbHNlCisJCXBwc192YWwgJj0gfkRTQ180MjJfRU5BQkxFOworCWlmICh2ZHNjX2NmZy0+ dmJyX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfVkJSX0VOQUJMRTsKKwllbHNlCisJCXBwc192 YWwgJj0gfkRTQ19WQlJfRU5BQkxFOworCisJRFJNX0lORk8oIlBQUzAgPSAweCUwOHhcbiIsIHBw c192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkx NV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwkJLyoKKwkJ ICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNv bmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFs KTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF8wKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMChwaXBl KSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19CUFAo dmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKKwlEUk1fSU5GTygiUFBTMSA9IDB4JTA4eFxuIiwg cHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192YWwpOworCQkvKgor CQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNl Y29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192 YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzEocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xKHBp cGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1F VEVSX1NFVF8yIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1BJ Q19IRUlHSFQodmRzY19jZmctPnBpY19oZWlnaHQpIHwKKwkJRFNDX1BJQ19XSURUSCh2ZHNjX2Nm Zy0+cGljX3dpZHRoKTsKKwlEUk1fSU5GTygiUFBTMiA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJ aWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERT Q0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZE U0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBW RFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJ OTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOworCX0gZWxz ZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSks IHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJ OTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLAorCQkJCSAg IHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zIHJl Z2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NMSUNFX0hFSUdIVCh2 ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KSB8CisJCURTQ19TTElDRV9XSURUSCh2ZHNjX2NmZy0+c2xp Y2Vfd2lkdGgpOworCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAo ZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MK KwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7CisJfSBlbHNlIHsK KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwgcHBz X3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksCisJCQkJICAgcHBz X3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzQgcmVnaXN0 ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfSU5JVElBTF9YTUlUX0RFTEFZ KHZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXkpIHwKKwkJRFNDX0lOSVRJQUxfREVDX0RFTEFZ KHZkc2NfY2ZnLT5pbml0aWFsX2RlY19kZWxheSk7CisJRFJNX0lORk8oIlBQUzQgPSAweCUwOHhc biIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsK KwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwkJ LyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZv ciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBw cHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF80KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf NChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUSVJFX1BB UkFNRVRFUl9TRVRfNSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERT Q19TQ0FMRV9JTkNfSU5UKHZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKKwkJ RFNDX1NDQUxFX0RFQ19JTlQodmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCk7CisJ RFJNX0lORk8oIlBQUzUgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF81LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUg bmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRF KElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisK KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiByZWdpc3RlcnMgKi8KKwlwcHNf dmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1NDQUxFX1ZBTFVFKHZkc2NfY2ZnLT5p bml0aWFsX3NjYWxlX3ZhbHVlKSB8CisJCURTQ19GSVJTVF9MSU5FX0JQR19PRkZTRVQodmRzY19j ZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldCkgfAorCQlEU0NfRkxBVE5FU1NfTUlOX1FQKHZkc2Nf Y2ZnLT5mbGF0bmVzc19taW5fcXApIHwKKwkJRFNDX0ZMQVRORVNTX01BWF9RUCh2ZHNjX2NmZy0+ ZmxhdG5lc3NfbWF4X3FwKTsKKwlEUk1fSU5GTygiUFBTNiA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7 CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRF KERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAy IFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkg KiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJ CQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192YWwpOworCX0g ZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYocGlw ZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJ CQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLAorCQkJ CSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF83 IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NMSUNFX0JQR19P RkZTRVQodmRzY19jZmctPnNsaWNlX2JwZ19vZmZzZXQpIHwKKwkJRFNDX05GTF9CUEdfT0ZGU0VU KHZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCk7CisJRFJNX0lORk8oIlBQUzcgPSAweCUwOHhcbiIs IHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJ STkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwkJLyoK KwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBz ZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNf dmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF83KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhw aXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFN RVRFUl9TRVRfOCByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19G SU5BTF9PRkZTRVQodmRzY19jZmctPmZpbmFsX29mZnNldCkgfAorCQlEU0NfSU5JVElBTF9PRkZT RVQodmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTOCA9IDB4JTA4eFxu IiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewor CQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsIHBwc192YWwpOworCQkv KgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9y IHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsIHBw c192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzgocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84 KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFS QU1FVEVSX1NFVF85IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFND X1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwKKwkJRFNDX1JDX0VER0Vf RkFDVE9SKERTQ19SQ19FREdFX0ZBQ1RPUl9DT05TVCk7CisJRFJNX0lORk8oIlBQUzkgPSAweCUw OHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAp IHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF85LCBwcHNfdmFsKTsK KwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBT IGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJh bXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF85 LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF85KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJh bXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfOShwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJF X1BBUkFNRVRFUl9TRVRfMTAgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8 PSBEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMCh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDAp IHwKKwkJRFNDX1JDX1FVQU5UX0lOQ19MSU1JVDEodmRzY19jZmctPnJjX3F1YW50X2luY3JfbGlt aXQxKSB8CisJCURTQ19SQ19UQVJHRVRfT0ZGX0hJR0goRFNDX1JDX1RHVF9PRkZTRVRfSElfQ09O U1QpIHwKKwkJRFNDX1JDX1RBUkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZGU0VUX0xPX0NPTlNU KTsKKwlEUk1fSU5GTygiUFBTMTAgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5j ZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICov CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo RFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5 MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFs KTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksCisJCQkJICAgcHBzX3Zh bCk7CisJfQorCisJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9USFJFU0ggcmVnaXN0ZXJzICovCisJ bWVtc2V0KHJjX2J1Zl90aHJlc2hfZHdvcmQsIDAsIHNpemVvZihyY19idWZfdGhyZXNoX2R3b3Jk KSk7CisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7IGkrKykgeworCQly Y19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRzY19jZmctPnJjX2J1Zl90aHJlc2hb aV0gPDwKKwkJCQkJCSAgQklUU19QRVJfQllURSAqIChpJTQpKTsKKwkJRFJNX0lORk8oIiBSQ19C VUZfVEhSRVNIJWQgPSAweCUwOHhcbiIsIGksCisJCQkgcmNfYnVmX3RocmVzaF9kd29yZFtpLzRd KTsKKwl9CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1 X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wLCByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJ STkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJjX2J1Zl90aHJlc2hfZHdvcmRb MV0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xLCByY19idWZfdGhyZXNoX2R3 b3JkWzJdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMV9VRFcsIHJjX2J1Zl90 aHJlc2hfZHdvcmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp IHsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzAsCisJCQkJICAgcmNfYnVmX3Ro cmVzaF9kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VEVywK KwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19C VUZfVEhSRVNIXzEsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCQlJOTE1X1dS SVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xX1VEVywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3Jk WzNdKTsKKwkJfQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVT SF8wKHBpcGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hf ZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwK KwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JD X0JVRl9USFJFU0hfMV9VRFcocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsK KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRF KElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3 b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBl KSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0p OworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAorCQkJ CSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQl9CisJfQorCisJLyogUG9wdWxhdGUgdGhl IFJDX1JBTkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCisJbWVtc2V0KHJjX3JhbmdlX3BhcmFt c19kd29yZCwgMCwgc2l6ZW9mKHJjX3JhbmdlX3BhcmFtc19kd29yZCkpOworCWZvciAoaSA9IDA7 IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQlyY19yYW5nZV9wYXJhbXNfZHdvcmRb aS8yXSB8PSAodTMyKSgoKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBnX29m ZnNldCA8PAorCQkJCQkJICAgICAgUkNfQlBHX09GRlNFVF9TSElGVCkgfAorCQkJCQkJICAgICAo dmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKKwkJCQkJCSAgICAg IFJDX01BWF9RUF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19jZmctPnJjX3JhbmdlX3BhcmFt c1tpXS5yYW5nZV9taW5fcXAgPDwKKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8IDE2 ICogKGklMikpOworCQlEUk1fSU5GTygiIFJDX1JBTkdFX1BBUkFNXyVkID0gMHglMDh4XG4iLCBp LAorCQkJIHJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdKTsKKwl9CisJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFS QU1FVEVSU18wLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKKwkJSTkxNV9XUklU RShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18xLAorCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdF X1BBUkFNRVRFUlNfMV9VRFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9V RFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOworCQlJOTE1X1dSSVRFKERTQ0Ff UkNfUkFOR0VfUEFSQU1FVEVSU18zLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsK KwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcsCisJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzAsCisJCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5H RV9QQVJBTUVURVJTXzBfVURXLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7CisJ CQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xLAorCQkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVS U18xX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOworCQkJSTkxNV9XUklU RShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbNF0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcsCisJ CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19S QU5HRV9QQVJBTUVURVJTXzMsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKKwkJ CUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXLAorCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFs3XSk7CisJCX0KKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFswXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VE VyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzJdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJT XzFfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzIocGlwZSksCisJCQkgICByY19yYW5n ZV9wYXJhbXNfZHdvcmRbNF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFN RVRFUlNfMl9VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKKwkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0Vf UEFSQU1FVEVSU18zX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7 CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkgeworCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1F VEVSU18wX1VEVyhwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQkJ STkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCisJCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFO R0VfUEFSQU1FVEVSU18xX1VEVyhwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb M10pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzIocGlwZSks CisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbNV0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJT XzMocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKKwkJCUk5MTVfV1JJ VEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVyhwaXBlKSwKKwkJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQl9CisJfQorCisJLyogUG9wdWxhdGUgUGljdHVyZSBw YXJhbWV0ZXIgc2V0IDE2ICovCisJcHBzX3ZhbCA9IDA7CisJbnVtX3Zkc2NfaW5zdGFuY2VzID0g KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSA/IDIgOiAxOworCXBwc192YWwgfD0g RFNDX1NMSUNFX0NIVU5LX1NJWkUodmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUpIHwKKwkJRFND X1NMSUNFX1BFUl9MSU5FKCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFuY2Vz KSAvCisJCQkJICAgdmRzY19jZmctPnNsaWNlX3dpZHRoKTsKKwlEUk1fSU5GTygiUFBTMTYgPSAw eCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3Zh bCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJl IFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9T RVRfMTYsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVS RV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfMTYocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorfQorCit2b2lkIGludGVs X2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCisJaWYgKCFjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSkKKwkJcmV0dXJuOworCisJaW50ZWxfY29uZmln dXJlX3Bwc19mb3JfZHNjX2VuY29kZXIoZW5jb2RlciwgY3J0Y19zdGF0ZSk7CisKKwlyZXR1cm47 Cit9Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==