From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [CI v13 08/17] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Wed, 28 Nov 2018 12:26:19 -0800 Message-ID: <20181128202628.20238-8-manasi.d.navare@intel.com> References: <20181128202628.20238-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CAD656E289 for ; Wed, 28 Nov 2018 20:23:28 +0000 (UTC) In-Reply-To: <20181128202628.20238-1-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 ZSBzaW5rLgoKdjc6CiogUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnRzLCBsZWZ0b3ZlcnMgKFZp bGxlKQoqIE5vIG5lZWQgZm9yIGV4cGxpY2l0IHZhbCAmPSB+IChWaWxsZSkKdjY6CmludGVsX2Rz Y19lbmFibGUgdG8gYmUgcGFydCBvZiBwcmVfZW5hYmxlIGhvb2sgKFZpbGxlKQp2NToKKiBtYWtl IGNydGNfc3RhdGUgY29uc3QgKFZpbGxlKQp2NDoKKiBVc2UgY3B1X3RyYW5zY29kZXIgaW5zdGVh ZCBvZiBlbmNvZGVyLT50eXBlIGZvciB1c2luZyBFRFAgdHJhbnNjb2RlcgpEU0MgcmVnaXN0ZXJz KFZpbGxlKQoqIEtlZXAgYWxsIFBTUyByZWdzIHRvZ2V0aGVyIChBbnVzaGEpCgp2MzoKKiBDb25m aWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hlbiB0d28gVkRTQyBlbmdp bmVzIHBlciBwaXBlCmFyZSB1c2VkIChNYW5hc2kpCiogQWRkIERTQyBzbGljZV9yb3dfcGVyX2Zy YW1lIGluIFBQUzE2IChNYW5hc2kpCgp2MjoKKiBFbmFibGUgUEcyIHBvd2VyIHdlbGwgZm9yIFZE U0Mgb24gZURQCgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4K Q2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogQW51 c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBN YW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQW51 c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYyAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIHwgNDA3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0MTEgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDE4M2FhZTk5NjMwNS4uOWRj ODczMTkwN2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMzNDMsNiArMzM0Myw4IEBA IGV4dGVybiB2b2lkIGludGVsX3Jwc19tYXJrX2ludGVyYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCQkJCSAgICAgICBib29sIGludGVyYWN0aXZlKTsKIGV4dGVybiBib29s IGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJICBib29sIGVuYWJsZSk7Cit2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKTsKIAogaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCmluZGV4IGZhNWFkNjJjZDBkYi4uMzM5YmUxMDk4NmQ3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwpAQCAtMzE0NCw2ICszMTQ0LDggQEAgc3RhdGljIHZvaWQgaW50 ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAlp ZiAoIWlzX21zdCkKIAkJaW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2NrKGNydGNfc3RhdGUpOwor CisJaW50ZWxfZHNjX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsKIH0KIAogc3RhdGljIHZv aWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwppbmRleCAzOWJhZmY2MThlZDguLmE3NmU3N2Ez MjMxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtNTc3LDMgKzU3Nyw0MTAgQEAg aW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAogCiAJcmV0dXJuIGludGVsX2NvbXB1dGVfcmNfcGFyYW1ldGVycyh2ZHNjX2NmZyk7CiB9CisK K3N0YXRpYyB2b2lkIGludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IGRybV9k c2NfY29uZmlnICp2ZHNjX2NmZyA9ICZjcnRjX3N0YXRlLT5kcF9kc2NfY2ZnOworCWVudW0gcGlw ZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBj cnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKKwl1MzIgcHBzX3ZhbCA9IDA7CisJdTMyIHJjX2J1 Zl90aHJlc2hfZHdvcmRbNF07CisJdTMyIHJjX3JhbmdlX3BhcmFtc19kd29yZFs4XTsKKwl1OCBu dW1fdmRzY19pbnN0YW5jZXMgPSAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpID8g MiA6IDE7CisJaW50IGkgPSAwOworCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VU XzAgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IERTQ19WRVJfTUFKIHwgdmRzY19jZmctPmRzY192 ZXJzaW9uX21pbm9yIDw8CisJCURTQ19WRVJfTUlOX1NISUZUIHwKKwkJdmRzY19jZmctPmJpdHNf cGVyX2NvbXBvbmVudCA8PCBEU0NfQlBDX1NISUZUIHwKKwkJdmRzY19jZmctPmxpbmVfYnVmX2Rl cHRoIDw8IERTQ19MSU5FX0JVRl9ERVBUSF9TSElGVDsKKwlpZiAodmRzY19jZmctPmJsb2NrX3By ZWRfZW5hYmxlKQorCQlwcHNfdmFsIHw9IERTQ19CTE9DS19QUkVESUNUSU9OOworCWlmICh2ZHNj X2NmZy0+Y29udmVydF9yZ2IpCisJCXBwc192YWwgfD0gRFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJ T047CisJaWYgKHZkc2NfY2ZnLT5lbmFibGU0MjIpCisJCXBwc192YWwgfD0gRFNDXzQyMl9FTkFC TEU7CisJaWYgKHZkc2NfY2ZnLT52YnJfZW5hYmxlKQorCQlwcHNfdmFsIHw9IERTQ19WQlJfRU5B QkxFOworCURSTV9JTkZPKCJQUFMwID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3Ry YW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNl cyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8K KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShE U0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsK KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJ Q0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsK Kwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8K KwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19CUFAodmRzY19jZmctPmJpdHNfcGVyX3Bp eGVsKTsKKwlEUk1fSU5GTygiUFBTMSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90 cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5j ZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICov CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo RFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkx NV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwgcHBzX3ZhbCk7 CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo SUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7 CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzIgcmVnaXN0ZXJzICov CisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUElDX0hFSUdIVCh2ZHNjX2NmZy0+cGlj X2hlaWdodCkgfAorCQlEU0NfUElDX1dJRFRIKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRz Y19pbnN0YW5jZXMpOworCURSTV9JTkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlp ZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFND QV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRT QyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZE U0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJfSBlbHNl IHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMihwaXBlKSwg cHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCisJCQkJICAg cHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVn aXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZk c2NfY2ZnLT5zbGljZV9oZWlnaHQpIHwKKwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGlj ZV93aWR0aCk7CisJRFJNX0lORk8oIlBQUzMgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChj cHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElD VFVSRV9QQVJBTUVURVJfU0VUXzMsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5z dGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJ CSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dS SVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMsIHBwc192YWwpOworCX0gZWxzZSB7CisJ CUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192 YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dS SVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zKHBpcGUpLAorCQkJCSAgIHBwc192 YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVy cyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfWE1JVF9ERUxBWSh2 ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2RlbGF5KSB8CisJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2 ZHNjX2NmZy0+aW5pdGlhbF9kZWNfZGVsYXkpOworCURSTV9JTkZPKCJQUFM0ID0gMHglMDh4XG4i LCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJ STkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwkJLyoK KwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBz ZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNf dmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF80KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChw aXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFN RVRFUl9TRVRfNSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19T Q0FMRV9JTkNfSU5UKHZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKKwkJRFND X1NDQUxFX0RFQ19JTlQodmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCk7CisJRFJN X0lORk8oIlBQUzUgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9 PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJf U0VUXzUsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVk ZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVS RV9QQVJBTUVURVJfU0VUXzUsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8q IFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF82IHJlZ2lzdGVycyAqLworCXBwc192YWwg PSAwOworCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRp YWxfc2NhbGVfdmFsdWUpIHwKKwkJRFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNjX2NmZy0+ Zmlyc3RfbGluZV9icGdfb2Zmc2V0KSB8CisJCURTQ19GTEFUTkVTU19NSU5fUVAodmRzY19jZmct PmZsYXRuZXNzX21pbl9xcCkgfAorCQlEU0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0 bmVzc19tYXhfcXApOworCURSTV9JTkZPKCJQUFM2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlp ZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NB X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFND IGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRT QworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkx NV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwl9IGVsc2Ug eworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLCBw cHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkx NV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwKKwkJCQkgICBw cHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyByZWdp c3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VU KHZkc2NfY2ZnLT5zbGljZV9icGdfb2Zmc2V0KSB8CisJCURTQ19ORkxfQlBHX09GRlNFVCh2ZHNj X2NmZy0+bmZsX2JwZ19vZmZzZXQpOworCURSTV9JTkZPKCJQUFM3ID0gMHglMDh4XG4iLCBwcHNf dmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9X UklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwkJLyoKKwkJICog SWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQK KwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0 KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsK Kwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83 KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0 KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwK KwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9T RVRfOCByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9P RkZTRVQodmRzY19jZmctPmZpbmFsX29mZnNldCkgfAorCQlEU0NfSU5JVElBTF9PRkZTRVQodmRz Y19jZmctPmluaXRpYWxfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTOCA9IDB4JTA4eFxuIiwgcHBz X3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVf V1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJCS8qCisJCSAq IElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25k CisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7 CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf OChwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgocGlwZSks CisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJf U0VUXzkgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUkNfTU9E RUxfU0laRShEU0NfUkNfTU9ERUxfU0laRV9DT05TVCkgfAorCQlEU0NfUkNfRURHRV9GQUNUT1Io RFNDX1JDX0VER0VfRkFDVE9SX0NPTlNUKTsKKwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxuIiwg cHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5 MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJCS8qCisJ CSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vj b25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3Zh bCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfOShwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzkocGlw ZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVU RVJfU0VUXzEwIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1JD X1FVQU5UX0lOQ19MSU1JVDAodmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwKSB8CisJCURT Q19SQ19RVUFOVF9JTkNfTElNSVQxKHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSkgfAor CQlEU0NfUkNfVEFSR0VUX09GRl9ISUdIKERTQ19SQ19UR1RfT0ZGU0VUX0hJX0NPTlNUKSB8CisJ CURTQ19SQ19UQVJHRVRfT0ZGX0xPVyhEU0NfUkNfVEdUX09GRlNFVF9MT19DT05TVCk7CisJRFJN X0lORk8oIlBQUzEwID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIg PT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF8xMCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5l ZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChj cnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMTAsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQor CisJLyogUG9wdWxhdGUgUGljdHVyZSBwYXJhbWV0ZXIgc2V0IDE2ICovCisJcHBzX3ZhbCA9IDA7 CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfQ0hVTktfU0laRSh2ZHNjX2NmZy0+c2xpY2VfY2h1bmtf c2l6ZSkgfAorCQlEU0NfU0xJQ0VfUEVSX0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1f dmRzY19pbnN0YW5jZXMpIC8KKwkJCQkgICB2ZHNjX2NmZy0+c2xpY2Vfd2lkdGgpIHwKKwkJRFND X1NMSUNFX1JPV19QRVJfRlJBTUUodmRzY19jZmctPnBpY19oZWlnaHQgLworCQkJCQl2ZHNjX2Nm Zy0+c2xpY2VfaGVpZ2h0KTsKKwlEUk1fSU5GTygiUFBTMTYgPSAweCUwOHhcbiIsIHBwc192YWwp OworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRF KERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYg MiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJ ICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQor CQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7CisJ fSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYo cGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwK KwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSB0aGUgUkNfQlVGX1RIUkVTSCBy ZWdpc3RlcnMgKi8KKwltZW1zZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1 Zl90aHJlc2hfZHdvcmQpKTsKKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0g MTsgaSsrKSB7CisJCXJjX2J1Zl90aHJlc2hfZHdvcmRbaSAvIDRdIHw9ICh1MzIpKHZkc2NfY2Zn LT5yY19idWZfdGhyZXNoW2ldIDw8CisJCQkJCQkgICAgQklUU19QRVJfQllURSAqIChpICUgNCkp OworCQlEUk1fSU5GTygiIFJDX0JVRl9USFJFU0glZCA9IDB4JTA4eFxuIiwgaSwKKwkJCSByY19i dWZfdGhyZXNoX2R3b3JkW2kgLyA0XSk7CisJfQorCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFO U0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wLCByY19idWZf dGhyZXNoX2R3b3JkWzBdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcs IHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVT SF8xLCByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9U SFJFU0hfMV9VRFcsIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNI XzAsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0Nf UkNfQlVGX1RIUkVTSF8wX1VEVywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJ CUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzEsCisJCQkJICAgcmNfYnVmX3RocmVzaF9k d29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xX1VEVywKKwkJCQkg ICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJfQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wKHBpcGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29y ZFswXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwK KwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JD X0JVRl9USFJFU0hfMShwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMV9VRFcocGlwZSksCisJCQkgICByY19i dWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KSB7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJ CQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNf QlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAorCQkJCSAgIHJj X2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhS RVNIXzFfVURXKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQl9CisJ fQorCisJLyogUG9wdWxhdGUgdGhlIFJDX1JBTkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCisJ bWVtc2V0KHJjX3JhbmdlX3BhcmFtc19kd29yZCwgMCwgc2l6ZW9mKHJjX3JhbmdlX3BhcmFtc19k d29yZCkpOworCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQly Y19yYW5nZV9wYXJhbXNfZHdvcmRbaSAvIDJdIHw9ICh1MzIpKCgodmRzY19jZmctPnJjX3Jhbmdl X3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0IDw8CisJCQkJCQkJUkNfQlBHX09GRlNFVF9TSElG VCkgfAorCQkJCQkJICAgICAgICh2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21h eF9xcCA8PAorCQkJCQkJCVJDX01BWF9RUF9TSElGVCkgfAorCQkJCQkJICAgICAgICh2ZHNjX2Nm Zy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21pbl9xcCA8PAorCQkJCQkJCVJDX01JTl9RUF9T SElGVCkpIDw8IDE2ICogKGkgJSAyKSk7CisJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQg PSAweCUwOHhcbiIsIGksCisJCQkgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kgLyAyXSk7CisJfQor CWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERT Q0FfUkNfUkFOR0VfUEFSQU1FVEVSU18wLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBd KTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCisJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFS QU1FVEVSU18xLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJSTkxNV9XUklU RShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbM10pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAorCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdF X1BBUkFNRVRFUlNfMl9VRFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18zLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzZdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19V RFcsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJB TUVURVJTXzAsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJ VEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFt c19kd29yZFsxXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xLAor CQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNf UkFOR0VfUEFSQU1FVEVSU18xX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10p OworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbNF0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFN RVRFUlNfMl9VRFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJCUk5MTVf V1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzMsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzZdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURX LAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7CisJCX0KKwl9IGVsc2UgeworCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKKwkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0Vf UEFSQU1FVEVSU18wX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7 CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAorCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19S QU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzNdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzIocGlwZSks CisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbNV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhw aXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3Bh cmFtc19kd29yZFs3XSk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkg eworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJ CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFf UkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVyhwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMV0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzEo cGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUo SUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVyhwaXBlKSwKKwkJCQkgICByY19yYW5n ZV9wYXJhbXNfZHdvcmRbM10pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJB TUVURVJTXzIocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKKwkJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19S QU5HRV9QQVJBTUVURVJTXzMocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZd KTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVyhwaXBl KSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQl9CisJfQorfQorCit2b2lk IGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWlmICghY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCisJCXJldHVybjsKKworCWlu dGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOwor fQotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK