From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v10 14/23] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Tue, 20 Nov 2018 10:37:27 -0800 Message-ID: <20181120183736.28054-15-manasi.d.navare@intel.com> References: <20181120183736.28054-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181120183736.28054-1-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Manasi Navare , Anusha Srivatsa List-Id: dri-devel@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 bF9kZGkuYyAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIHwgNDEw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0MTQgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDhmYmY0NWNkM2ViOC4uZGJh YmU1NGIwYWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTM0OTAsNiArMzQ5MCw4IEBA IGV4dGVybiB2b2lkIGludGVsX3Jwc19tYXJrX2ludGVyYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCQkJCSAgICAgICBib29sIGludGVyYWN0aXZlKTsKIGV4dGVybiBib29s IGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJICBib29sIGVuYWJsZSk7CitleHRlcm4gdm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAKIGludCBpOTE1X3JlZ19yZWFkX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwppbmRleCBjN2Q0MTdlNjI2MmYuLjA0NDIwMzUwNGEzZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTMxNDQsNiArMzE0NCw4IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAogCiAJaWYgKCFpc19tc3QpCiAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhjcnRjX3N0 YXRlKTsKKworCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7CiB9CiAKIHN0 YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5kZXggYjY0NGY2OWYxYzkzLi4w ZTcyNTIwYWJkZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2Mu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKQEAgLTU3NywzICs1Nzcs NDEzIEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKIAogCXJldHVybiBpbnRlbF9jb21wdXRlX3JjX3BhcmFtZXRlcnModmRzY19jZmcp OwogfQorCitzdGF0aWMgdm9pZCBpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2Rlcihz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCWNvbnN0IHN0cnVj dCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0Y19zdGF0ZS0+ZHBfZHNjX2NmZzsKKwll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7CisJdTMyIHBwc192YWwgPSAwOworCXUz MiByY19idWZfdGhyZXNoX2R3b3JkWzRdOworCXUzMiByY19yYW5nZV9wYXJhbXNfZHdvcmRbOF07 CisJdTggbnVtX3Zkc2NfaW5zdGFuY2VzID0gKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KSA/IDIgOiAxOworCWludCBpID0gMDsKKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1F VEVSX1NFVF8wIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2Zn LT5kc2NfdmVyc2lvbl9taW5vciA8PAorCQlEU0NfVkVSX01JTl9TSElGVCB8CisJCXZkc2NfY2Zn LT5iaXRzX3Blcl9jb21wb25lbnQgPDwgRFNDX0JQQ19TSElGVCB8CisJCXZkc2NfY2ZnLT5saW5l X2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhfU0hJRlQ7CisJaWYgKHZkc2NfY2ZnLT5i bG9ja19wcmVkX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0NfQkxPQ0tfUFJFRElDVElPTjsKKwlp ZiAodmRzY19jZmctPmNvbnZlcnRfcmdiKQorCQlwcHNfdmFsIHw9IERTQ19DT0xPUl9TUEFDRV9D T05WRVJTSU9OOworCWlmICh2ZHNjX2NmZy0+ZW5hYmxlNDIyKQorCQlwcHNfdmFsIHw9IERTQ180 MjJfRU5BQkxFOworCWlmICh2ZHNjX2NmZy0+dmJyX2VuYWJsZSkKKwkJcHBzX3ZhbCB8PSBEU0Nf VkJSX0VOQUJMRTsKKwlEUk1fSU5GTygiUFBTMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYg KGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJCSAqIFZEU0MK KwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsK KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMChwaXBlKSwgcHBz X3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAocGlwZSksCisJCQkJICAgcHBz X3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzEgcmVnaXN0 ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfQlBQKHZkc2NfY2ZnLT5iaXRz X3Blcl9waXhlbCk7CisJRFJNX0lORk8oIlBQUzEgPSAweCUwOHhcbiIsIHBwc192YWwpOworCWlm IChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKERTQ0Ff UElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0Mg aW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFND CisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1 X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEsIHBwc192YWwpOworCX0gZWxzZSB7 CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksIHBw c192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1 X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xKHBpcGUpLAorCQkJCSAgIHBw c192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yIHJlZ2lz dGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1BJQ19IRUlHSFQodmRzY19j ZmctPnBpY19oZWlnaHQpIHwKKwkJRFNDX1BJQ19XSURUSCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8g bnVtX3Zkc2NfaW5zdGFuY2VzKTsKKwlEUk1fSU5GTygiUFBTMiA9IDB4JTA4eFxuIiwgcHBzX3Zh bCk7CisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlJOTE1X1dS SVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOworCQkvKgorCQkgKiBJ ZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAor CQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp CisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOwor CX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIo cGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLAor CQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NF VF8zIHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NMSUNFX0hF SUdIVCh2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KSB8CisJCURTQ19TTElDRV9XSURUSCh2ZHNjX2Nm Zy0+c2xpY2Vfd2lkdGgpOworCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBwcHNfdmFsKTsK KwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShE U0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zLCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBW RFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICog VkRTQworCQkgKi8KKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJ STkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zLCBwcHNfdmFsKTsKKwl9IGVs c2UgeworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zKHBpcGUp LCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJ STkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwKKwkJCQkg ICBwcHNfdmFsKTsKKwl9CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNCBy ZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1hNSVRf REVMQVkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSkgfAorCQlEU0NfSU5JVElBTF9ERUNf REVMQVkodmRzY19jZmctPmluaXRpYWxfZGVjX2RlbGF5KTsKKwlEUk1fSU5GTygiUFBTNCA9IDB4 JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQ KSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNCwgcHBzX3ZhbCk7 CisJCS8qCisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQ UyBmb3Igc2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFy YW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRf NCwgcHBzX3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfNChwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFy YW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJf U0VUXzQocGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVS RV9QQVJBTUVURVJfU0VUXzUgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8 PSBEU0NfU0NBTEVfSU5DX0lOVCh2ZHNjX2NmZy0+c2NhbGVfaW5jcmVtZW50X2ludGVydmFsKSB8 CisJCURTQ19TQ0FMRV9ERUNfSU5UKHZkc2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwp OworCURSTV9JTkZPKCJQUFM1ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5z Y29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKKwkJLyoKKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBh cmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKKwkJICogVkRTQworCQkgKi8KKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1X1dS SVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLCBwcHNfdmFsKTsKKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xf RFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwKKwkJCQkgICBwcHNfdmFsKTsKKwl9 CisKKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiByZWdpc3RlcnMgKi8KKwlw cHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1NDQUxFX1ZBTFVFKHZkc2NfY2Zn LT5pbml0aWFsX3NjYWxlX3ZhbHVlKSB8CisJCURTQ19GSVJTVF9MSU5FX0JQR19PRkZTRVQodmRz Y19jZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldCkgfAorCQlEU0NfRkxBVE5FU1NfTUlOX1FQKHZk c2NfY2ZnLT5mbGF0bmVzc19taW5fcXApIHwKKwkJRFNDX0ZMQVRORVNTX01BWF9RUCh2ZHNjX2Nm Zy0+ZmxhdG5lc3NfbWF4X3FwKTsKKwlEUk1fSU5GTygiUFBTNiA9IDB4JTA4eFxuIiwgcHBzX3Zh bCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJ VEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiwgcHBzX3ZhbCk7CisJCS8qCisJCSAqIElm IDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCisJ CSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNiwgcHBzX3ZhbCk7CisJ fSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihw aXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYocGlwZSksCisJ CQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VU XzcgcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfQlBH X09GRlNFVCh2ZHNjX2NmZy0+c2xpY2VfYnBnX29mZnNldCkgfAorCQlEU0NfTkZMX0JQR19PRkZT RVQodmRzY19jZmctPm5mbF9icGdfb2Zmc2V0KTsKKwlEUk1fSU5GTygiUFBTNyA9IDB4JTA4eFxu IiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJ CUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7CisJCS8q CisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Ig c2Vjb25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBz X3ZhbCk7CisJfSBlbHNlIHsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfNyhwaXBlKSwgcHBzX3ZhbCk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzco cGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJB TUVURVJfU0VUXzggcmVnaXN0ZXJzICovCisJcHBzX3ZhbCA9IDA7CisJcHBzX3ZhbCB8PSBEU0Nf RklOQUxfT0ZGU0VUKHZkc2NfY2ZnLT5maW5hbF9vZmZzZXQpIHwKKwkJRFNDX0lOSVRJQUxfT0ZG U0VUKHZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCk7CisJRFJNX0lORk8oIlBQUzggPSAweCUwOHhc biIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewor CQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsIHBwc192YWwpOworCQkv KgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9y IHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsIHBw c192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzgocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84 KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFS QU1FVEVSX1NFVF85IHJlZ2lzdGVycyAqLworCXBwc192YWwgPSAwOworCXBwc192YWwgfD0gRFND X1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwKKwkJRFNDX1JDX0VER0Vf RkFDVE9SKERTQ19SQ19FREdFX0ZBQ1RPUl9DT05TVCk7CisJRFJNX0lORk8oIlBQUzkgPSAweCUw OHhcbiIsIHBwc192YWwpOworCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkg eworCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzksIHBwc192YWwpOwor CQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMg Zm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFt cy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzks IHBwc192YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJB TUVURVJfU0VUXzkocGlwZSksIHBwc192YWwpOworCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFt cy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF85KHBpcGUpLAorCQkJCSAgIHBwc192YWwpOworCX0KKworCS8qIFBvcHVsYXRlIFBJQ1RVUkVf UEFSQU1FVEVSX1NFVF8xMCByZWdpc3RlcnMgKi8KKwlwcHNfdmFsID0gMDsKKwlwcHNfdmFsIHw9 IERTQ19SQ19RVUFOVF9JTkNfTElNSVQwKHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MCkg fAorCQlEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1p dDEpIHwKKwkJRFNDX1JDX1RBUkdFVF9PRkZfSElHSChEU0NfUkNfVEdUX09GRlNFVF9ISV9DT05T VCkgfAorCQlEU0NfUkNfVEFSR0VUX09GRl9MT1coRFNDX1JDX1RHVF9PRkZTRVRfTE9fQ09OU1Qp OworCURSTV9JTkZPKCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7CisJaWYgKGNwdV90cmFu c2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMTAsIHBwc192YWwpOworCQkvKgorCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2Vz IGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAorCQkgKiBWRFNDCisJCSAqLwor CQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCisJCQlJOTE1X1dSSVRFKERT Q0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwLCBwcHNfdmFsKTsKKwl9IGVsc2UgeworCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMChwaXBlKSwgcHBzX3ZhbCk7 CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKKwkJCUk5MTVfV1JJVEUo SUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLAorCQkJCSAgIHBwc192YWwp OworCX0KKworCS8qIFBvcHVsYXRlIFBpY3R1cmUgcGFyYW1ldGVyIHNldCAxNiAqLworCXBwc192 YWwgPSAwOworCXBwc192YWwgfD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUodmRzY19jZmctPnNsaWNl X2NodW5rX3NpemUpIHwKKwkJRFNDX1NMSUNFX1BFUl9MSU5FKCh2ZHNjX2NmZy0+cGljX3dpZHRo IC8gbnVtX3Zkc2NfaW5zdGFuY2VzKSAvCisJCQkJICAgdmRzY19jZmctPnNsaWNlX3dpZHRoKSB8 CisJCURTQ19TTElDRV9ST1dfUEVSX0ZSQU1FKHZkc2NfY2ZnLT5waWNfaGVpZ2h0IC8KKwkJCQkJ dmRzY19jZmctPnNsaWNlX2hlaWdodCk7CisJRFJNX0lORk8oIlBQUzE2ID0gMHglMDh4XG4iLCBw cHNfdmFsKTsKKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKKwkJSTkx NV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7CisJCS8qCisJ CSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vj b25kCisJCSAqIFZEU0MKKwkJICovCisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYsIHBwc192 YWwpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzE2KHBpcGUpLCBwcHNfdmFsKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQorCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYo cGlwZSksCisJCQkJICAgcHBzX3ZhbCk7CisJfQorCisJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9U SFJFU0ggcmVnaXN0ZXJzICovCisJbWVtc2V0KHJjX2J1Zl90aHJlc2hfZHdvcmQsIDAsIHNpemVv ZihyY19idWZfdGhyZXNoX2R3b3JkKSk7CisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JB TkdFUyAtIDE7IGkrKykgeworCQlyY19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRz Y19jZmctPnJjX2J1Zl90aHJlc2hbaV0gPDwKKwkJCQkJCSAgQklUU19QRVJfQllURSAqIChpICUg NCkpOworCQlEUk1fSU5GTygiIFJDX0JVRl9USFJFU0glZCA9IDB4JTA4eFxuIiwgaSwKKwkJCSBy Y19idWZfdGhyZXNoX2R3b3JkW2kvNF0pOworCX0KKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJB TlNDT0RFUl9FRFApIHsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMCwgcmNfYnVm X3RocmVzaF9kd29yZFswXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzBfVURX LCByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJF U0hfMSwgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZf VEhSRVNIXzFfVURXLCByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVT SF8wLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOworCQkJSTkxNV9XUklURShEU0ND X1JDX0JVRl9USFJFU0hfMF9VRFcsCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7CisJ CQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xLAorCQkJCSAgIHJjX2J1Zl90aHJlc2hf ZHdvcmRbMl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9USFJFU0hfMV9VRFcsCisJCQkJ ICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7CisJCX0KKwl9IGVsc2UgeworCQlJOTE1X1dSSVRF KElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdv cmRbMF0pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMF9VRFcocGlwZSks CisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19CVUZfVEhSRVNIXzEocGlwZSksCisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsKKwkJ STkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAorCQkJICAgcmNf YnVmX3RocmVzaF9kd29yZFszXSk7CisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkgeworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzAocGlwZSksCisJ CQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JD X0JVRl9USFJFU0hfMF9VRFcocGlwZSksCisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7 CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX0JVRl9USFJFU0hfMShwaXBlKSwKKwkJCQkgICBy Y19idWZfdGhyZXNoX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RI UkVTSF8xX1VEVyhwaXBlKSwKKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKKwkJfQor CX0KKworCS8qIFBvcHVsYXRlIHRoZSBSQ19SQU5HRV9QQVJBTUVURVJTIHJlZ2lzdGVycyAqLwor CW1lbXNldChyY19yYW5nZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19yYW5nZV9wYXJhbXNf ZHdvcmQpKTsKKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTOyBpKyspIHsKKwkJ cmNfcmFuZ2VfcGFyYW1zX2R3b3JkW2kvMl0gfD0gKHUzMikoKCh2ZHNjX2NmZy0+cmNfcmFuZ2Vf cGFyYW1zW2ldLnJhbmdlX2JwZ19vZmZzZXQgPDwKKwkJCQkJCSAgICAgIFJDX0JQR19PRkZTRVRf U0hJRlQpIHwKKwkJCQkJCSAgICAgKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2Vf bWF4X3FwIDw8CisJCQkJCQkgICAgICBSQ19NQVhfUVBfU0hJRlQpIHwKKwkJCQkJCSAgICAgKHZk c2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwIDw8CisJCQkJCQkgICAgICBS Q19NSU5fUVBfU0hJRlQpKSA8PCAxNiAqIChpICUgMikpOworCQlEUk1fSU5GTygiIFJDX1JBTkdF X1BBUkFNXyVkID0gMHglMDh4XG4iLCBpLAorCQkJIHJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJd KTsKKwl9CisJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7CisJCUk5MTVf V1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzAsCisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMF0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVywK KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19S QU5HRV9QQVJBTUVURVJTXzEsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQlJ OTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFszXSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJT XzIsCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOworCQlJOTE1X1dSSVRFKERTQ0Ff UkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1 XSk7CisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzMsCisJCQkgICByY19y YW5nZV9wYXJhbXNfZHdvcmRbNl0pOworCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1F VEVSU18zX1VEVywKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7CisJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkgeworCQkJSTkxNV9XUklURShEU0NDX1JDX1JB TkdFX1BBUkFNRVRFUlNfMCwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOworCQkJ STkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCisJCQkJICAgcmNfcmFu Z2VfcGFyYW1zX2R3b3JkWzFdKTsKKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVU RVJTXzEsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKKwkJCUk5MTVfV1JJVEUo RFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFszXSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAorCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFO R0VfUEFSQU1FVEVSU18yX1VEVywKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOwor CQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMywKKwkJCQkgICByY19yYW5n ZV9wYXJhbXNfZHdvcmRbNl0pOworCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRF UlNfM19VRFcsCisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJfQorCX0gZWxz ZSB7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAor CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19SQU5HRV9QQVJBTUVURVJTXzBfVURXKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzFdKTsKKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlw ZSksCisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQlJOTE1X1dSSVRFKElDTF9E U0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcocGlwZSksCisJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbM10pOworCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNf MihwaXBlKSwKKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7CisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs1XSk7CisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1F VEVSU18zKHBpcGUpLAorCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKKwkJSTkxNV9X UklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXKHBpcGUpLAorCQkJICAgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KSB7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChw aXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOworCQkJSTkxNV9XUklURShJ Q0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXKHBpcGUpLAorCQkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFsxXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFN RVRFUlNfMShwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOworCQkJSTkx NV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAorCQkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7CisJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JB TkdFX1BBUkFNRVRFUlNfMihwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0p OworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXKHBpcGUp LAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7CisJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbNl0pOworCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzNf VURXKHBpcGUpLAorCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7CisJCX0KKwl9Cit9 CisKK3ZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisK KwlpZiAoIWNydGNfc3RhdGUtPmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlKQorCQlyZXR1 cm47CisKKwlpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2RlcihlbmNvZGVyLCBjcnRj X3N0YXRlKTsKKworCXJldHVybjsKK30KLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==