From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [CI 13/19] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Fri, 2 Nov 2018 20:49:26 -0700 Message-ID: <20181103034932.26493-13-manasi.d.navare@intel.com> References: <20181103034932.26493-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id ABF526E652 for ; Sat, 3 Nov 2018 03:47:15 +0000 (UTC) In-Reply-To: <20181103034932.26493-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 ZSBzaW5rLgoKdjY6CmludGVsX2RzY19lbmFibGUgdG8gYmUgcGFydCBvZiBwcmVfZW5hYmxlIGhv b2sgKFZpbGxlKQp2NToKKiBtYWtlIGNydGNfc3RhdGUgY29uc3QgKFZpbGxlKQp2NDoKKiBVc2Ug Y3B1X3RyYW5zY29kZXIgaW5zdGVhZCBvZiBlbmNvZGVyLT50eXBlIGZvciB1c2luZyBFRFAgdHJh bnNjb2RlcgpEU0MgcmVnaXN0ZXJzKFZpbGxlKQoqIEtlZXAgYWxsIFBTUyByZWdzIHRvZ2V0aGVy IChBbnVzaGEpCgp2MzoKKiBDb25maWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdp bmUgd2hlbiB0d28gVkRTQyBlbmdpbmVzIHBlciBwaXBlCmFyZSB1c2VkIChNYW5hc2kpCiogQWRk IERTQyBzbGljZV9yb3dfcGVyX2ZyYW1lIGluIFBQUzE2IChNYW5hc2kpCgp2MjoKKiBFbmFibGUg UEcyIHBvd2VyIHdlbGwgZm9yIFZEU0Mgb24gZURQCgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlr dWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgpDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwu Y29tPgpSZXZpZXdlZC1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMiArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Zkc2MuYyAgICB8IDQxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMg Y2hhbmdlZCwgNDI4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA5 OTRmOWJmY2Q0ODMuLmQwZTU0NDBkMTRjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0z NDg1LDYgKzM0ODUsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ycHNfbWFya19pbnRlcmFjdGl2ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkgICAgICAgYm9vbCBpbnRlcmFjdGl2 ZSk7CiBleHRlcm4gYm9vbCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQkJCSAgYm9vbCBlbmFibGUpOworZXh0ZXJuIHZvaWQgaW50ZWxf ZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCiBpbnQgaTkxNV9yZWdfcmVh ZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJc3RydWN0IGRy bV9maWxlICpmaWxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggYWYxMmMxNWVkOTRm Li5iYmEwODMyMmFmYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0yOTYyLDYgKzI5 NjIsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAKIAlpZiAoIWlzX21zdCkKIAkJaW50ZWxfZGRpX2VuYWJsZV9w aXBlX2Nsb2NrKGNydGNfc3RhdGUpOworCisJLyoKKwkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBE aXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCisJICogaWYgZW5hYmxlZCBp biBpbnRlbF9jcnRjX3N0YXRlLgorCSAqLworCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0 Y19zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKaW5kZXggNmNjNjRjMTMyYzhjLi4wMGVmODI1ZGNiZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTU0MTcsNiArNTQxNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Vu Y29kZXJzX3ByZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCWlmIChlbmNvZGVy LT5wcmVfZW5hYmxlKQogCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRl LCBjb25uX3N0YXRlKTsKKwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCmluZGV4 IGE3NmY3OGI5YzBlZS4uMGVhYTY5Nzc4MTYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5j CkBAIC01ODAsMyArNTgwLDQyMiBAQCBpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAKIAlyZXR1cm4gMDsKIH0KKworc3RhdGljIHZvaWQg aW50ZWxfY29uZmlndXJlX3Bwc19mb3JfZHNjX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwljb25zdCBzdHJ1Y3QgZHJtX2RzY19jb25maWcgKnZk c2NfY2ZnID0gJmNydGNfc3RhdGUtPmRwX2RzY19jZmc7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNw dV90cmFuc2NvZGVyOworCXUzMiBwcHNfdmFsID0gMDsKKwl1MzIgcmNfYnVmX3RocmVzaF9kd29y ZFs0XTsKKwl1MzIgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzhdOworCXU4IG51bV92ZHNjX2luc3Rh bmNlcyA9IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkgPyAyIDogMTsKKwlpbnQg aSA9IDA7CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCByZWdpc3RlcnMg Ki8KKwlwcHNfdmFsID0gRFNDX1ZFUl9NQUogfCB2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25fbWlub3Ig PDwKKwkJRFNDX1ZFUl9NSU5fU0hJRlQgfAorCQl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50 IDw8IERTQ19CUENfU0hJRlQgfAorCQl2ZHNjX2NmZy0+bGluZV9idWZfZGVwdGggPDwgRFNDX0xJ TkVfQlVGX0RFUFRIX1NISUZUOworCWlmICh2ZHNjX2NmZy0+YmxvY2tfcHJlZF9lbmFibGUpCisJ CXBwc192YWwgfD0gRFNDX0JMT0NLX1BSRURJQ1RJT047CisJZWxzZQorCQlwcHNfdmFsICY9IH5E U0NfQkxPQ0tfUFJFRElDVElPTjsKKwlpZiAodmRzY19jZmctPmNvbnZlcnRfcmdiKQorCQlwcHNf dmFsIHw9IERTQ19DT0xPUl9TUEFDRV9DT05WRVJTSU9OOworCWVsc2UKKwkJcHBzX3ZhbCAmPSB+ RFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJT047CisJaWYgKHZkc2NfY2ZnLT5lbmFibGU0MjIpCisJ CXBwc192YWwgfD0gRFNDXzQyMl9FTkFCTEU7CisJZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfNDIy X0VOQUJMRTsKKwlpZiAodmRzY19jZmctPnZicl9lbmFibGUpCisJCXBwc192YWwgfD0gRFNDX1ZC Ul9FTkFCTEU7CisJZWxzZQorCQlwcHNfdmFsICY9IH5EU0NfVkJSX0VOQUJMRTsKKworCURSTV9J TkZPKCJQUFMwID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0g VFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF8wLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVk LCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF8wLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMChwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQ b3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0g MDsKKwlwcHNfdmFsIHw9IERTQ19CUFAodmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKKwlEUk1f SU5GTygiUFBTMSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09 IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9T RVRfMSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRl ZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xf RFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElD VFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyog UG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzIgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9 IDA7CisJcHBzX3ZhbCB8PSBEU0NfUElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hlaWdodCkgfAor CQlEU0NfUElDX1dJRFRIKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMp OworCURSTV9JTkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMg YXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFND Q19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMihwaXBlKSwgcHBzX3ZhbCk7CisJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJ fQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVnaXN0ZXJzICovCisJ cHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGlj ZV9oZWlnaHQpIHwKKwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGljZV93aWR0aCk7CisJ RFJNX0lORk8oIlBQUzMgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2Rl ciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzMsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBu ZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElD VFVSRV9QQVJBTUVURVJfU0VUXzMsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192YWwpOworCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0Mx X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zKHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKwor CS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLworCXBwc192 YWwgPSAwOworCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfWE1JVF9ERUxBWSh2ZHNjX2NmZy0+aW5p dGlhbF94bWl0X2RlbGF5KSB8CisJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2ZHNjX2NmZy0+aW5p dGlhbF9kZWNfZGVsYXkpOworCURSTV9JTkZPKCJQUFM0ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsK KwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShE U0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBW RFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICog VkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJ STkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKKwl9IGVs c2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUp LCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJ STkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChwaXBlKSwKKwkJCQkg ICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNSBy ZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TQ0FMRV9JTkNfSU5U KHZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKKwkJRFNDX1NDQUxFX0RFQ19J TlQodmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCk7CisJRFJNX0lORk8oIlBQUzUg PSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVS X0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUsIHBwc192 YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3Vy ZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJf U0VUXzUsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVS RV9QQVJBTUVURVJfU0VUXzUocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF81KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJ Q1RVUkVfUEFSQU1FVEVSX1NFVF82IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192 YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFs dWUpIHwKKwkJRFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNjX2NmZy0+Zmlyc3RfbGluZV9i cGdfb2Zmc2V0KSB8CisJCURTQ19GTEFUTkVTU19NSU5fUVAodmRzY19jZmctPmZsYXRuZXNzX21p bl9xcCkgfAorCQlEU0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXAp OworCURSTV9JTkZPKCJQUFM2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5z Y29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBh cmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dS SVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLCBwcHNfdmFsKTsKKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xf RFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9 CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyByZWdpc3RlcnMgKi8KKwlw cHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5z bGljZV9icGdfb2Zmc2V0KSB8CisJCURTQ19ORkxfQlBHX09GRlNFVCh2ZHNjX2NmZy0+bmZsX2Jw Z19vZmZzZXQpOworCURSTV9JTkZPKCJQUFM3ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAo Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGlu c3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQwor CQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9X UklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83LCBwcHNfdmFsKTsKKwl9IGVsc2Ugewor CQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLCBwcHNf dmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9X UklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwKKwkJCQkgICBwcHNf dmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCByZWdpc3Rl cnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19j ZmctPmZpbmFsX29mZnNldCkgfAorCQlEU0NfSU5JVElBTF9PRkZTRVQodmRzY19jZmctPmluaXRp YWxfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTOCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYg KGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MK KwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsK KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOChwaXBlKSwgcHBz X3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgocGlwZSksCisJCQkJICAgcHBz X3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzkgcmVnaXN0 ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfUkNfTU9ERUxfU0laRShEU0Nf UkNfTU9ERUxfU0laRV9DT05TVCkgfAorCQlEU0NfUkNfRURHRV9GQUNUT1IoRFNDX1JDX0VER0Vf RkFDVE9SX0NPTlNUKTsKKwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJ aWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFND QV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRT QyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZE U0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7CisJfSBlbHNl IHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBlKSwg cHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzkocGlwZSksCisJCQkJICAg cHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwIHJl Z2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1JDX1FVQU5UX0lOQ19M SU1JVDAodmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwKSB8CisJCURTQ19SQ19RVUFOVF9J TkNfTElNSVQxKHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSkgfAorCQlEU0NfUkNfVEFS R0VUX09GRl9ISUdIKERTQ19SQ19UR1RfT0ZGU0VUX0hJX0NPTlNUKSB8CisJCURTQ19SQ19UQVJH RVRfT0ZGX0xPVyhEU0NfUkNfVEdUX09GRlNFVF9MT19DT05TVCk7CisJRFJNX0lORk8oIlBQUzEw ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RF Ul9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBz X3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmln dXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMTAsIHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElD VFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMTAocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxh dGUgUGljdHVyZSBwYXJhbWV0ZXIgc2V0IDE2ICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8 PSBEU0NfU0xJQ0VfQ0hVTktfU0laRSh2ZHNjX2NmZy0+c2xpY2VfY2h1bmtfc2l6ZSkgfAorCQlE U0NfU0xJQ0VfUEVSX0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5j ZXMpIC8KKwkJCQkgICB2ZHNjX2NmZy0+c2xpY2Vfd2lkdGgpIHwKKwkJRFNDX1NMSUNFX1JPV19Q RVJfRlJBTUUodmRzY19jZmctPnBpY19oZWlnaHQgLworCQkJCQl2ZHNjX2NmZy0+c2xpY2VfaGVp Z2h0KTsKKwlEUk1fSU5GTygiUFBTMTYgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlmIChjcHVf dHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVS RV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3Rh bmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkg Ki8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJ STkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYocGlwZSksIHBwc192 YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dS SVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwKKwkJCQkgICBwcHNf dmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSB0aGUgUkNfQlVGX1RIUkVTSCByZWdpc3RlcnMgKi8K KwltZW1zZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdv cmQpKTsKKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7CisJ CXJjX2J1Zl90aHJlc2hfZHdvcmRbaS80XSB8PSAodTMyKSh2ZHNjX2NmZy0+cmNfYnVmX3RocmVz aFtpXSA8PAorCQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0KSk7CisJCURSTV9JTkZPKCIg UkNfQlVGX1RIUkVTSCVkID0gMHglMDh4XG4iLCBpLAorCQkJIHJjX2J1Zl90aHJlc2hfZHdvcmRb aS80XSk7CisJfQorCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wLCByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsK KwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJjX2J1Zl90aHJlc2hfZHdv cmRbMV0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xLCByY19idWZfdGhyZXNo X2R3b3JkWzJdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMV9VRFcsIHJjX2J1 Zl90aHJlc2hfZHdvcmRbM10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpIHsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzAsCisJCQkJICAgcmNfYnVm X3RocmVzaF9kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VE VywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19S Q19CVUZfVEhSRVNIXzEsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCQlJOTE1 X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xX1VEVywKKwkJCQkgICByY19idWZfdGhyZXNoX2R3 b3JkWzNdKTsKKwkJfQorCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RI UkVTSF8wKHBpcGUpLAorCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCUk5MTVfV1JJ VEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJl c2hfZHdvcmRbMV0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBl KSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1JDX0JVRl9USFJFU0hfMV9VRFcocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNd KTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dS SVRFKElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNo X2R3b3JkWzBdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhw aXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRb Ml0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAor CQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOworCQl9CisJfQorCisJLyogUG9wdWxhdGUg dGhlIFJDX1JBTkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCisJbWVtc2V0KHJjX3JhbmdlX3Bh cmFtc19kd29yZCwgMCwgc2l6ZW9mKHJjX3JhbmdlX3BhcmFtc19kd29yZCkpOworCWZvciAoaSA9 IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQlyY19yYW5nZV9wYXJhbXNfZHdv cmRbaS8yXSB8PSAodTMyKSgoKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBn X29mZnNldCA8PAorCQkJCQkJICAgICAgUkNfQlBHX09GRlNFVF9TSElGVCkgfAorCQkJCQkJICAg ICAodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKKwkJCQkJCSAg ICAgIFJDX01BWF9RUF9TSElGVCkgfAorCQkJCQkJICAgICAodmRzY19jZmctPnJjX3JhbmdlX3Bh cmFtc1tpXS5yYW5nZV9taW5fcXAgPDwKKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8 IDE2ICogKGkgJSAyKSk7CisJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQgPSAweCUwOHhc biIsIGksCisJCQkgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kvMl0pOworCX0KKwlpZiAoY3B1X3Ry YW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdF X1BBUkFNRVRFUlNfMCwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCUk5MTVf V1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzFdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwK KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19S QU5HRV9QQVJBTUVURVJTXzFfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsK KwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMiwKKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs0XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJT XzJfVURXLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKKwkJSTkxNV9XUklURShE U0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2 XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXLAorCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wLAor CQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNf UkFOR0VfUEFSQU1FVEVSU18wX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0p OworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKKwkJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFN RVRFUlNfMV9VRFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKKwkJCUk5MTVf V1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzIsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzRdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURX LAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCQlJOTE1X1dSSVRFKERTQ0Nf UkNfUkFOR0VfUEFSQU1FVEVSU18zLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7 CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKKwkJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOworCQl9CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJ Q0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzAocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbMF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNf MF9VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOworCQlJOTE1X1dS SVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMShwaXBlKSwKKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1F VEVSU18xX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCUk5 MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAorCQkJICAgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9Q QVJBTUVURVJTXzJfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsK KwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzMocGlwZSksCisJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JB TkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb N10pOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAorCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BB UkFNRVRFUlNfMF9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAorCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JD X1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzNdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBp cGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcocGlwZSksCisJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzVdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1F VEVSU18zKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7CisJCQlJOTE1 X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCisJCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJfQorCX0KK30KKwordm9pZCBpbnRlbF9kc2Nf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKworCWlmICghY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCisJCXJldHVybjsKKworCWludGVsX2NvbmZp Z3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOworCisJcmV0dXJu OworfQotLSAKMi4xOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK