From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v3] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Mon, 6 Aug 2018 12:50:06 -0700 Message-ID: <1533585006-10478-1-git-send-email-manasi.d.navare@intel.com> References: <1533071239-28815-19-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 3F7A06E352 for ; Mon, 6 Aug 2018 19:47:29 +0000 (UTC) In-Reply-To: <1533071239-28815-19-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 ZSBzaW5rLgoKdjM6CiogQ29uZmlndXJlIFBpY193aWR0aC8yIGZvciBlYWNoIFZEU0MgZW5naW5l IHdoZW4gdHdvIFZEU0MgZW5naW5lcyBwZXIgcGlwZQphcmUgdXNlZCAoTWFuYXNpKQoKdjI6Ciog RW5hYmxlIFBHMiBwb3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAoKQ2M6IEphbmkgTmlrdWxhIDxq YW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNh QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg IDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA2ICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyAgICB8IDQyMyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDIyYzVhZDYuLmRkYTY5MGYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaApAQCAtMzQzMyw2ICszNDMzLDggQEAgZXh0ZXJuIHZvaWQgaW50ZWxfcnBzX21h cmtfaW50ZXJhY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAgICAg IGJvb2wgaW50ZXJhY3RpdmUpOwogZXh0ZXJuIGJvb2wgaW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgIGJvb2wgZW5hYmxlKTsKK2V4 dGVybiB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIAogaW50IGk5 MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ CXN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK aW5kZXggNDkzMWQ1OS4uOTRkZTRlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwpAQCAtNTQxMCw2ICs1NDEwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWlmIChlbmNvZGVyLT5wcmVfZW5hYmxl KQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRl KTsKKworCQkvKgorCQkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBEaXNwbGF5IFN0cmVhbSBDb21w cmVzc2lvbiBpbiB0aGUgc291cmNlCisJCSAqIGlmIGVuYWJsZWQgaW4gaW50ZWxfY3J0Y19zdGF0 ZS4KKwkJICovCisJCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7CiAJfQog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5kZXggMjNiYTA4My4uZTJmM2YzNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtNTgyLDMgKzU4Miw0MjYgQEAgaW50IGludGVs X2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCiAJcmV0 dXJuIDA7CiB9CisKK3N0YXRpYyB2b2lkIGludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNv ZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJc3RydWN0IGRybV9k c2NfY29uZmlnICp2ZHNjX2NmZyA9ICZjcnRjX3N0YXRlLT5kcF9kc2NfY2ZnOworCWVudW0gcGlw ZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwl1MzIgcHBzX3ZhbCA9IDA7CisJdTMyIHJjX2J1Zl90aHJl c2hfZHdvcmRbNF07CisJdTMyIHJjX3JhbmdlX3BhcmFtc19kd29yZFs4XTsKKwl1OCBudW1fdmRz Y19pbnN0YW5jZXMgPSAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpID8gMiA6IDE7 CisJaW50IGkgPSAwOworCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzAgcmVn aXN0ZXJzICovCisJcHBzX3ZhbCA9IERTQ19WRVJfTUFKIHwgdmRzY19jZmctPmRzY192ZXJzaW9u X21pbm9yIDw8CisJCURTQ19WRVJfTUlOX1NISUZUIHwKKwkJdmRzY19jZmctPmJpdHNfcGVyX2Nv bXBvbmVudCA8PCBEU0NfQlBDX1NISUZUIHwKKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoIDw8 IERTQ19MSU5FX0JVRl9ERVBUSF9TSElGVDsKKwlpZiAodmRzY19jZmctPmJsb2NrX3ByZWRfZW5h YmxlKQorCQlwcHNfdmFsIHw9IERTQ19CTE9DS19QUkVESUNUSU9OOworCWVsc2UKKwkJcHBzX3Zh bCAmPSB+RFNDX0JMT0NLX1BSRURJQ1RJT047CisJaWYgKHZkc2NfY2ZnLT5jb252ZXJ0X3JnYikK KwkJcHBzX3ZhbCB8PSBEU0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lPTjsKKwllbHNlCisJCXBwc192 YWwgJj0gfkRTQ19DT0xPUl9TUEFDRV9DT05WRVJTSU9OOworCWlmICh2ZHNjX2NmZy0+ZW5hYmxl NDIyKQorCQlwcHNfdmFsIHw9IERTQ180MjJfRU5BQkxFOworCWVsc2UKKwkJcHBzX3ZhbCAmPSB+ RFNDXzQyMl9FTkFCTEU7CisJaWYgKHZkc2NfY2ZnLT52YnJfZW5hYmxlKQorCQlwcHNfdmFsIHw9 IERTQ19WQlJfRU5BQkxFOworCWVsc2UKKwkJcHBzX3ZhbCAmPSB+RFNDX1ZCUl9FTkFCTEU7CisK KwlEUk1fSU5GTygiUFBTMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJB TUVURVJfU0VUXzAsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFy ZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlp ZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0Nf UElDVFVSRV9QQVJBTUVURVJfU0VUXzAsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJ VEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAocGlwZSksIHBwc192YWwpOworCQlp ZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wKHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0K KworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xIHJlZ2lzdGVycyAqLworCXBw c192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX0JQUCh2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwp OworCURSTV9JTkZPKCJQUFMxID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMg YXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFND Q19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwgcHBzX3ZhbCk7CisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJ fQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzIgcmVnaXN0ZXJzICovCisJ cHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hl aWdodCkgfAorCQlEU0NfUElDX1dJRFRIKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19p bnN0YW5jZXMpOworCURSTV9JTkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAo ZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MK KwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsK KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMihwaXBlKSwgcHBz X3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCisJCQkJICAgcHBz X3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVnaXN0 ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZkc2Nf Y2ZnLT5zbGljZV9oZWlnaHQpIHwKKwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGljZV93 aWR0aCk7CisJRFJNX0lORk8oIlBQUzMgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChlbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF8zLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3Rh bmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkg Ki8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zKHBpcGUpLCBwcHNfdmFs KTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwKKwkJCQkgICBwcHNfdmFs KTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNCByZWdpc3RlcnMg Ki8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1hNSVRfREVMQVkodmRz Y19jZmctPmluaXRpYWxfeG1pdF9kZWxheSkgfAorCQlEU0NfSU5JVElBTF9ERUNfREVMQVkodmRz Y19jZmctPmluaXRpYWxfZGVjX2RlbGF5KTsKKwlEUk1fSU5GTygiUFBTNCA9IDB4JTA4eFxuIiwg cHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzQsIHBwc192YWwpOworCQkvKgor CQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNl Y29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzQsIHBwc192 YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzQocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBp cGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RJUkVfUEFSQU1F VEVSX1NFVF81IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1ND QUxFX0lOQ19JTlQodmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbCkgfAorCQlEU0Nf U0NBTEVfREVDX0lOVCh2ZHNjX2NmZy0+c2NhbGVfZGVjcmVtZW50X2ludGVydmFsKTsKKwlEUk1f SU5GTygiUFBTNSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJf U0VUXzUsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVk ZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVS RV9QQVJBTUVURVJfU0VUXzUsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8q IFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF82IHJlZ2lzdGVycyAqLworCXBwc192YWwg PSAwOworCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRp YWxfc2NhbGVfdmFsdWUpIHwKKwkJRFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNjX2NmZy0+ Zmlyc3RfbGluZV9icGdfb2Zmc2V0KSB8CisJCURTQ19GTEFUTkVTU19NSU5fUVAodmRzY19jZmct PmZsYXRuZXNzX21pbl9xcCkgfAorCQlEU0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0 bmVzc19tYXhfcXApOworCURSTV9JTkZPKCJQUFM2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlp ZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFND QV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRT QyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZE U0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiwgcHBzX3ZhbCk7CisJfSBlbHNl IHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwg cHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYocGlwZSksCisJCQkJICAg cHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzcgcmVn aXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfQlBHX09GRlNF VCh2ZHNjX2NmZy0+c2xpY2VfYnBnX29mZnNldCkgfAorCQlEU0NfTkZMX0JQR19PRkZTRVQodmRz Y19jZmctPm5mbF9icGdfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTNyA9IDB4JTA4eFxuIiwgcHBz X3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1 X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcsIHBwc192YWwpOworCQkvKgorCQkg KiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29u ZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcsIHBwc192YWwp OworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VU XzcocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUp LAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVS X1NFVF84IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX0ZJTkFM X09GRlNFVCh2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0KSB8CisJCURTQ19JTklUSUFMX09GRlNFVCh2 ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOworCURSTV9JTkZPKCJQUFM4ID0gMHglMDh4XG4iLCBw cHNfdmFsKTsKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5 MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJCS8qCisJ CSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vj b25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3Zh bCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfOChwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgocGlw ZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVU RVJfU0VUXzkgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUkNf TU9ERUxfU0laRShEU0NfUkNfTU9ERUxfU0laRV9DT05TVCkgfAorCQlEU0NfUkNfRURHRV9GQUNU T1IoRFNDX1JDX0VER0VfRkFDVE9SX0NPTlNUKTsKKwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxu IiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewor CQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzksIHBwc192YWwpOworCQkv KgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9y IHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzksIHBw c192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzkocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF85 KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFS QU1FVEVSX1NFVF8xMCByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERT Q19SQ19RVUFOVF9JTkNfTElNSVQwKHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MCkgfAor CQlEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDEp IHwKKwkJRFNDX1JDX1RBUkdFVF9PRkZfSElHSChEU0NfUkNfVEdUX09GRlNFVF9ISV9DT05TVCkg fAorCQlEU0NfUkNfVEFSR0VUX09GRl9MT1coRFNDX1JDX1RHVF9PRkZTRVRfTE9fQ09OU1QpOwor CURSTV9JTkZPKCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJB TUVURVJfU0VUXzEwLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBh cmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksIHBwc192YWwpOwor CQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsK Kwl9CisKKwkvKiBQb3B1bGF0ZSB0aGUgUkNfQlVGX1RIUkVTSCByZWdpc3RlcnMgKi8KKwltZW1z ZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdvcmQpKTsK Kwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7CisJCXJjX2J1 Zl90aHJlc2hfZHdvcmRbaS80XSB8PSAodTMyKSh2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA8 PAorCQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGklNCkpOworCQlEUk1fSU5GTygiIFJDX0JVRl9U SFJFU0glZCA9IDB4JTA4eFxuIiwgaSwKKwkJCSByY19idWZfdGhyZXNoX2R3b3JkW2kvNF0pOwor CX0KKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJ VEUoRFNDQV9SQ19CVUZfVEhSRVNIXzAsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOworCQlJOTE1 X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wX1VEVywgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7 CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzEsIHJjX2J1Zl90aHJlc2hfZHdvcmRb Ml0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xX1VEVywgcmNfYnVmX3RocmVz aF9kd29yZFszXSk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkgewor CQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9USFJFU0hfMCwKKwkJCQkgICByY19idWZfdGhyZXNo X2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzBfVURXLAorCQkJ CSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9U SFJFU0hfMSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUo RFNDQ19SQ19CVUZfVEhSRVNIXzFfVURXLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10p OworCQl9CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzAo cGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJSTkxNV9XUklURShJQ0xf RFNDMF9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29y ZFsxXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAorCQkJ ICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVG X1RIUkVTSF8xX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQlp ZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUkNfQlVGX1RIUkVTSF8wKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRb MF0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAor CQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9S Q19CVUZfVEhSRVNIXzEocGlwZSksCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJ CQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMV9VRFcocGlwZSksCisJCQkJICAg cmNfYnVmX3RocmVzaF9kd29yZFszXSk7CisJCX0KKwl9CisKKwkvKiBQb3B1bGF0ZSB0aGUgUkNf UkFOR0VfUEFSQU1FVEVSUyByZWdpc3RlcnMgKi8KKwltZW1zZXQocmNfcmFuZ2VfcGFyYW1zX2R3 b3JkLCAwLCBzaXplb2YocmNfcmFuZ2VfcGFyYW1zX2R3b3JkKSk7CisJZm9yIChpID0gMDsgaSA8 IERTQ19OVU1fQlVGX1JBTkdFUzsgaSsrKSB7CisJCXJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJd IHw9ICh1MzIpKCgodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0 IDw8CisJCQkJCQkgICAgICBSQ19CUEdfT0ZGU0VUX1NISUZUKSB8CisJCQkJCQkgICAgICh2ZHNj X2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21heF9xcCA8PAorCQkJCQkJICAgICAgUkNf TUFYX1FQX1NISUZUKSB8CisJCQkJCQkgICAgICh2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ld LnJhbmdlX21pbl9xcCA8PAorCQkJCQkJICAgICAgUkNfTUlOX1FQX1NISUZUKSkgPDwgMTYgKiAo aSUyKSk7CisJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQgPSAweCUwOHhcbiIsIGksCisJ CQkgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kvMl0pOworCX0KKwlpZiAoZW5jb2Rlci0+dHlwZSA9 PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVU RVJTXzAsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOworCQlJOTE1X1dSSVRFKERT Q0FfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFsxXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzEsCisJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFS QU1FVEVSU18xX1VEVywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCUk5MTVf V1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzIsCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbNF0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywK KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19S QU5HRV9QQVJBTUVURVJTXzMsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs3XSk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkgeworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMCwKKwkJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BB UkFNRVRFUlNfMF9VRFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJCUk5 MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzEsCisJCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzFf VURXLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCQlJOTE1X1dSSVRFKERT Q0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0 XSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKKwkJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdF X1BBUkFNRVRFUlNfMywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQkJSTkx NV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcsCisJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzddKTsKKwkJfQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBf UkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzBdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXKHBp cGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJSTkxNV9XUklURShJQ0xf RFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9V RFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOworCQlJOTE1X1dSSVRF KElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMihwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3Bh cmFtc19kd29yZFs0XSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVS U18yX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCUk5MTVf V1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18zKHBpcGUpLAorCQkJICAgcmNfcmFu Z2VfcGFyYW1zX2R3b3JkWzZdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJB TUVURVJTXzNfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbMF0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJT XzBfVURXKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7CisJCQlJOTE1 X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMShwaXBlKSwKKwkJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9Q QVJBTUVURVJTXzFfVURXKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7 CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMihwaXBlKSwKKwkJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9S Q19SQU5HRV9QQVJBTUVURVJTXzJfVURXKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFs1XSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhw aXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQkJSTkxNV9XUklURShJ Q0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXKHBpcGUpLAorCQkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs3XSk7CisJCX0KKwl9CisKKwkvKiBQb3B1bGF0ZSBQaWN0dXJlIHBhcmFt ZXRlciBzZXQgMTYgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TTElDRV9DSFVO S19TSVpFKHZkc2NfY2ZnLT5zbGljZV9jaHVua19zaXplKSB8CisJCURTQ19TTElDRV9QRVJfTElO RSgodmRzY19jZmctPnBpY193aWR0aCAvIG51bV92ZHNjX2luc3RhbmNlcykgLworCQkJCSAgIHZk c2NfY2ZnLT5zbGljZV93aWR0aCk7CisJRFJNX0lORk8oIlBQUzE2ID0gMHglMDh4XG4iLCBwcHNf dmFsKTsKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVf V1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYsIHBwc192YWwpOworCQkvKgorCQkg KiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29u ZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFs KTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF8xNihwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBp cGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KK30KKwordm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmICghY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCisJCXJldHVybjsKKworCS8qIEVuYWJsZSBQ RzIgZm9yIFZEU0Mgb24gZURQKi8KKwkvKiBGSVhNRTogVXNlIFZEU0MgUG93ZXIgZG9tYWluIHdo ZW4gaXRzIGFkZGVkICovCisJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCisJCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CisKKwlpbnRl bF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2RlcihlbmNvZGVyLCBjcnRjX3N0YXRlKTsKKwor CXJldHVybjsKK30KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK