From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 41/45] drm/amd/display: verify lane status before exiting verify link cap Date: Tue, 11 Dec 2018 17:57:47 -0500 Message-ID: <1544569071-7114-42-git-send-email-sunpeng.li@amd.com> References: <1544569071-7114-1-git-send-email-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1544569071-7114-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: sunpeng.li-5C7GfCeVMHo@public.gmane.org, Wenjing Liu RnJvbTogV2VuamluZyBMaXUgPFdlbmppbmcuTGl1QGFtZC5jb20+Cgpbd2h5XQpEUCBMTCBDVFMx LjQgNC4zLjIuMSB0ZXN0IGZhaWx1cmUuCgpbaG93XQpUaGUgZmFpbHVyZSBpcyBjYXVzZWQgYnkg bm90IGhhbmRsaW5nIERQIGxpbmsgbG9zcwpocGQgc2hvcnQgcHVzbGUgZHVyaW5nIHNldCBtb2Rl LiBUaGUgY2hhbmdlIGlzIHRvIHJlYWQgbGluayBzdGF0dXMKYmVmb3JlIHNldCBtb2RlIGxpbmsg dHJhaW5pbmcuIElmIGxpbmsgaXMgbG9zdCwgcmUtdmVyaWZ5IGxpbmsgY2Fwcy4KU2lnbmVkLW9m Zi1ieTogV2VuamluZyBMaXUgPFdlbmppbmcuTGl1QGFtZC5jb20+ClJldmlld2VkLWJ5OiBKdW4g TGVpIDxKdW4uTGVpQGFtZC5jb20+CkFja2VkLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2RwLmMg ICB8IDI0MyArKysrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9jb3JlL2RjX2xpbmtfaHdzcy5jIHwgICAzICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyNyBp bnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kcC5jCmluZGV4IDU2YTA2YmIuLmU5NzlhZDEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmtfZHAu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2RwLmMK QEAgLTEwODksNiArMTA4OSwxMjEgQEAgc3RhdGljIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGdl dF9tYXhfbGlua19jYXAoc3RydWN0IGRjX2xpbmsgKmxpbmspCiAJcmV0dXJuIG1heF9saW5rX2Nh cDsKIH0KIAorc3RhdGljIGVudW0gZGNfc3RhdHVzIHJlYWRfaHBkX3J4X2lycV9kYXRhKAorCXN0 cnVjdCBkY19saW5rICpsaW5rLAorCXVuaW9uIGhwZF9pcnFfZGF0YSAqaXJxX2RhdGEpCit7CisJ c3RhdGljIGVudW0gZGNfc3RhdHVzIHJldHZhbDsKKworCS8qIFRoZSBIVyByZWFkcyAxNiBieXRl cyBmcm9tIDIwMGggb24gSFBELAorCSAqIGJ1dCBpZiB3ZSBnZXQgYW4gQVVYX0RFRkVSLCB0aGUg SFcgY2Fubm90IHJldHJ5CisJICogYW5kIHRoaXMgY2F1c2VzIHRoZSBDVFMgdGVzdHMgNC4zLjIu MSAtIDMuMi40IHRvCisJICogZmFpbCwgc28gd2Ugbm93IGV4cGxpY2l0bHkgcmVhZCA2IGJ5dGVz IHdoaWNoIGlzCisJICogdGhlIHJlcSBmcm9tIHRoZSBhYm92ZSBtZW50aW9uZWQgdGVzdCBjYXNl cy4KKwkgKgorCSAqIEZvciBEUCAxLjQgd2UgbmVlZCB0byByZWFkIHRob3NlIGZyb20gMjAwMmgg cmFuZ2UuCisJICovCisJaWYgKGxpbmstPmRwY2RfY2Fwcy5kcGNkX3Jldi5yYXcgPCBEUENEX1JF Vl8xNCkKKwkJcmV0dmFsID0gY29yZV9saW5rX3JlYWRfZHBjZCgKKwkJCWxpbmssCisJCQlEUF9T SU5LX0NPVU5ULAorCQkJaXJxX2RhdGEtPnJhdywKKwkJCXNpemVvZih1bmlvbiBocGRfaXJxX2Rh dGEpKTsKKwllbHNlIHsKKwkJLyogUmVhZCAxNCBieXRlcyBpbiBhIHNpbmdsZSByZWFkIGFuZCB0 aGVuIGNvcHkgb25seSB0aGUgcmVxdWlyZWQgZmllbGRzLgorCQkgKiBUaGlzIGlzIG1vcmUgZWZm aWNpZW50IHRoYW4gZG9pbmcgaXQgaW4gdHdvIHNlcGFyYXRlIEFVWCByZWFkcy4gKi8KKworCQl1 aW50OF90IHRtcFtEUF9TSU5LX1NUQVRVU19FU0kgLSBEUF9TSU5LX0NPVU5UX0VTSSArIDFdOwor CisJCXJldHZhbCA9IGNvcmVfbGlua19yZWFkX2RwY2QoCisJCQlsaW5rLAorCQkJRFBfU0lOS19D T1VOVF9FU0ksCisJCQl0bXAsCisJCQlzaXplb2YodG1wKSk7CisKKwkJaWYgKHJldHZhbCAhPSBE Q19PSykKKwkJCXJldHVybiByZXR2YWw7CisKKwkJaXJxX2RhdGEtPmJ5dGVzLnNpbmtfY250LnJh dyA9IHRtcFtEUF9TSU5LX0NPVU5UX0VTSSAtIERQX1NJTktfQ09VTlRfRVNJXTsKKwkJaXJxX2Rh dGEtPmJ5dGVzLmRldmljZV9zZXJ2aWNlX2lycS5yYXcgPSB0bXBbRFBfREVWSUNFX1NFUlZJQ0Vf SVJRX1ZFQ1RPUl9FU0kwIC0gRFBfU0lOS19DT1VOVF9FU0ldOworCQlpcnFfZGF0YS0+Ynl0ZXMu bGFuZTAxX3N0YXR1cy5yYXcgPSB0bXBbRFBfTEFORTBfMV9TVEFUVVNfRVNJIC0gRFBfU0lOS19D T1VOVF9FU0ldOworCQlpcnFfZGF0YS0+Ynl0ZXMubGFuZTIzX3N0YXR1cy5yYXcgPSB0bXBbRFBf TEFORTJfM19TVEFUVVNfRVNJIC0gRFBfU0lOS19DT1VOVF9FU0ldOworCQlpcnFfZGF0YS0+Ynl0 ZXMubGFuZV9zdGF0dXNfdXBkYXRlZC5yYXcgPSB0bXBbRFBfTEFORV9BTElHTl9TVEFUVVNfVVBE QVRFRF9FU0kgLSBEUF9TSU5LX0NPVU5UX0VTSV07CisJCWlycV9kYXRhLT5ieXRlcy5zaW5rX3N0 YXR1cy5yYXcgPSB0bXBbRFBfU0lOS19TVEFUVVNfRVNJIC0gRFBfU0lOS19DT1VOVF9FU0ldOwor CX0KKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBib29sIGhwZF9yeF9pcnFfY2hlY2tf bGlua19sb3NzX3N0YXR1cygKKwlzdHJ1Y3QgZGNfbGluayAqbGluaywKKwl1bmlvbiBocGRfaXJx X2RhdGEgKmhwZF9pcnFfZHBjZF9kYXRhKQoreworCXVpbnQ4X3QgaXJxX3JlZ19yeF9wb3dlcl9z dGF0ZSA9IDA7CisJZW51bSBkY19zdGF0dXMgZHBjZF9yZXN1bHQgPSBEQ19FUlJPUl9VTkVYUEVD VEVEOworCXVuaW9uIGxhbmVfc3RhdHVzIGxhbmVfc3RhdHVzOworCXVpbnQzMl90IGxhbmU7CisJ Ym9vbCBzaW5rX3N0YXR1c19jaGFuZ2VkOworCWJvb2wgcmV0dXJuX2NvZGU7CisKKwlzaW5rX3N0 YXR1c19jaGFuZ2VkID0gZmFsc2U7CisJcmV0dXJuX2NvZGUgPSBmYWxzZTsKKworCWlmIChsaW5r LT5jdXJfbGlua19zZXR0aW5ncy5sYW5lX2NvdW50ID09IDApCisJCXJldHVybiByZXR1cm5fY29k ZTsKKworCS8qMS4gQ2hlY2sgdGhhdCBMaW5rIFN0YXR1cyBjaGFuZ2VkLCBiZWZvcmUgcmUtdHJh aW5pbmcuKi8KKworCS8qcGFyc2UgbGFuZSBzdGF0dXMqLworCWZvciAobGFuZSA9IDA7IGxhbmUg PCBsaW5rLT5jdXJfbGlua19zZXR0aW5ncy5sYW5lX2NvdW50OyBsYW5lKyspIHsKKwkJLyogY2hl Y2sgc3RhdHVzIG9mIGxhbmVzIDAsMQorCQkgKiBjaGFuZ2VkIERwY2RBZGRyZXNzX0xhbmUwMVN0 YXR1cyAoMHgyMDIpCisJCSAqLworCQlsYW5lX3N0YXR1cy5yYXcgPSBnZXRfbmliYmxlX2F0X2lu ZGV4KAorCQkJJmhwZF9pcnFfZHBjZF9kYXRhLT5ieXRlcy5sYW5lMDFfc3RhdHVzLnJhdywKKwkJ CWxhbmUpOworCisJCWlmICghbGFuZV9zdGF0dXMuYml0cy5DSEFOTkVMX0VRX0RPTkVfMCB8fAor CQkJIWxhbmVfc3RhdHVzLmJpdHMuQ1JfRE9ORV8wIHx8CisJCQkhbGFuZV9zdGF0dXMuYml0cy5T WU1CT0xfTE9DS0VEXzApIHsKKwkJCS8qIGlmIG9uZSBvZiB0aGUgY2hhbm5lbCBlcXVhbGl6YXRp b24sIGNsb2NrCisJCQkgKiByZWNvdmVyeSBvciBzeW1ib2wgbG9jayBpcyBkcm9wcGVkCisJCQkg KiBjb25zaWRlciBpdCBhcyAobGluayBoYXMgYmVlbgorCQkJICogZHJvcHBlZCkgZHAgc2luayBz dGF0dXMgaGFzIGNoYW5nZWQKKwkJCSAqLworCQkJc2lua19zdGF0dXNfY2hhbmdlZCA9IHRydWU7 CisJCQlicmVhazsKKwkJfQorCX0KKworCS8qIENoZWNrIGludGVybGFuZSBhbGlnbi4qLworCWlm IChzaW5rX3N0YXR1c19jaGFuZ2VkIHx8CisJCSFocGRfaXJxX2RwY2RfZGF0YS0+Ynl0ZXMubGFu ZV9zdGF0dXNfdXBkYXRlZC5iaXRzLklOVEVSTEFORV9BTElHTl9ET05FKSB7CisKKwkJRENfTE9H X0hXX0hQRF9JUlEoIiVzOiBMaW5rIFN0YXR1cyBjaGFuZ2VkLlxuIiwgX19mdW5jX18pOworCisJ CXJldHVybl9jb2RlID0gdHJ1ZTsKKworCQkvKjIuIENoZWNrIHRoYXQgd2UgY2FuIGhhbmRsZSBp bnRlcnJ1cHQ6IE5vdCBpbiBGUyBET1MsCisJCSAqICBOb3QgaW4gIkRpc3BsYXkgVGltZW91dCIg c3RhdGUsIExpbmsgaXMgdHJhaW5lZC4KKwkJICovCisJCWRwY2RfcmVzdWx0ID0gY29yZV9saW5r X3JlYWRfZHBjZChsaW5rLAorCQkJRFBfU0VUX1BPV0VSLAorCQkJJmlycV9yZWdfcnhfcG93ZXJf c3RhdGUsCisJCQlzaXplb2YoaXJxX3JlZ19yeF9wb3dlcl9zdGF0ZSkpOworCisJCWlmIChkcGNk X3Jlc3VsdCAhPSBEQ19PSykgeworCQkJRENfTE9HX0hXX0hQRF9JUlEoIiVzOiBEUENEIHJlYWQg ZmFpbGVkIHRvIG9idGFpbiBwb3dlciBzdGF0ZS5cbiIsCisJCQkJX19mdW5jX18pOworCQl9IGVs c2UgeworCQkJaWYgKGlycV9yZWdfcnhfcG93ZXJfc3RhdGUgIT0gRFBfU0VUX1BPV0VSX0QwKQor CQkJCXJldHVybl9jb2RlID0gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0dXJuX2NvZGU7 Cit9CisKIGJvb2wgZHBfdmVyaWZ5X2xpbmtfY2FwKAogCXN0cnVjdCBkY19saW5rICpsaW5rLAog CXN0cnVjdCBkY19saW5rX3NldHRpbmdzICprbm93bl9saW1pdF9saW5rX3NldHRpbmcsCkBAIC0x MTA0LDEyICsxMjE5LDE0IEBAIGJvb2wgZHBfdmVyaWZ5X2xpbmtfY2FwKAogCXN0cnVjdCBjbG9j a19zb3VyY2UgKmRwX2NzOwogCWVudW0gY2xvY2tfc291cmNlX2lkIGRwX2NzX2lkID0gQ0xPQ0tf U09VUkNFX0lEX0VYVEVSTkFMOwogCWVudW0gbGlua190cmFpbmluZ19yZXN1bHQgc3RhdHVzOwor CXVuaW9uIGhwZF9pcnFfZGF0YSBpcnFfZGF0YTsKIAogCWlmIChsaW5rLT5kYy0+ZGVidWcuc2tp cF9kZXRlY3Rpb25fbGlua190cmFpbmluZykgewogCQlsaW5rLT52ZXJpZmllZF9saW5rX2NhcCA9 ICprbm93bl9saW1pdF9saW5rX3NldHRpbmc7CiAJCXJldHVybiB0cnVlOwogCX0KIAorCW1lbXNl dCgmaXJxX2RhdGEsIDAsIHNpemVvZihpcnFfZGF0YSkpOwogCXN1Y2Nlc3MgPSBmYWxzZTsKIAlz a2lwX2xpbmtfdHJhaW5pbmcgPSBmYWxzZTsKIApAQCAtMTE2OCw5ICsxMjg1LDE1IEBAIGJvb2wg ZHBfdmVyaWZ5X2xpbmtfY2FwKAogCQkJCSgqZmFpbF9jb3VudCkrKzsKIAkJfQogCi0JCWlmIChz dWNjZXNzKQorCQlpZiAoc3VjY2VzcykgewogCQkJbGluay0+dmVyaWZpZWRfbGlua19jYXAgPSAq Y3VyOwotCisJCQl1ZGVsYXkoMTAwMCk7CisJCQlpZiAocmVhZF9ocGRfcnhfaXJxX2RhdGEobGlu aywgJmlycV9kYXRhKSA9PSBEQ19PSykKKwkJCQlpZiAoaHBkX3J4X2lycV9jaGVja19saW5rX2xv c3Nfc3RhdHVzKAorCQkJCQkJbGluaywKKwkJCQkJCSZpcnFfZGF0YSkpCisJCQkJCSgqZmFpbF9j b3VudCkrKzsKKwkJfQogCQkvKiBhbHdheXMgZGlzYWJsZSB0aGUgbGluayBiZWZvcmUgdHJ5aW5n IGFub3RoZXIKIAkJICogc2V0dGluZyBvciBiZWZvcmUgcmV0dXJuaW5nIHdlJ2xsIGVuYWJsZSBp dCBsYXRlcgogCQkgKiBiYXNlZCBvbiB0aGUgYWN0dWFsIG1vZGUgd2UncmUgZHJpdmluZwpAQCAt MTU3MiwxMjIgKzE2OTUsNiBAQCB2b2lkIGRlY2lkZV9saW5rX3NldHRpbmdzKHN0cnVjdCBkY19z dHJlYW1fc3RhdGUgKnN0cmVhbSwKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKipTaG9y dCBQdWxzZSBJUlEqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBib29sIGhw ZF9yeF9pcnFfY2hlY2tfbGlua19sb3NzX3N0YXR1cygKLQlzdHJ1Y3QgZGNfbGluayAqbGluaywK LQl1bmlvbiBocGRfaXJxX2RhdGEgKmhwZF9pcnFfZHBjZF9kYXRhKQotewotCXVpbnQ4X3QgaXJx X3JlZ19yeF9wb3dlcl9zdGF0ZSA9IDA7Ci0JZW51bSBkY19zdGF0dXMgZHBjZF9yZXN1bHQgPSBE Q19FUlJPUl9VTkVYUEVDVEVEOwotCXVuaW9uIGxhbmVfc3RhdHVzIGxhbmVfc3RhdHVzOwotCXVp bnQzMl90IGxhbmU7Ci0JYm9vbCBzaW5rX3N0YXR1c19jaGFuZ2VkOwotCWJvb2wgcmV0dXJuX2Nv ZGU7Ci0KLQlzaW5rX3N0YXR1c19jaGFuZ2VkID0gZmFsc2U7Ci0JcmV0dXJuX2NvZGUgPSBmYWxz ZTsKLQotCWlmIChsaW5rLT5jdXJfbGlua19zZXR0aW5ncy5sYW5lX2NvdW50ID09IDApCi0JCXJl dHVybiByZXR1cm5fY29kZTsKLQotCS8qMS4gQ2hlY2sgdGhhdCBMaW5rIFN0YXR1cyBjaGFuZ2Vk LCBiZWZvcmUgcmUtdHJhaW5pbmcuKi8KLQotCS8qcGFyc2UgbGFuZSBzdGF0dXMqLwotCWZvciAo bGFuZSA9IDA7IGxhbmUgPCBsaW5rLT5jdXJfbGlua19zZXR0aW5ncy5sYW5lX2NvdW50OyBsYW5l KyspIHsKLQkJLyogY2hlY2sgc3RhdHVzIG9mIGxhbmVzIDAsMQotCQkgKiBjaGFuZ2VkIERwY2RB ZGRyZXNzX0xhbmUwMVN0YXR1cyAoMHgyMDIpCi0JCSAqLwotCQlsYW5lX3N0YXR1cy5yYXcgPSBn ZXRfbmliYmxlX2F0X2luZGV4KAotCQkJJmhwZF9pcnFfZHBjZF9kYXRhLT5ieXRlcy5sYW5lMDFf c3RhdHVzLnJhdywKLQkJCWxhbmUpOwotCi0JCWlmICghbGFuZV9zdGF0dXMuYml0cy5DSEFOTkVM X0VRX0RPTkVfMCB8fAotCQkJIWxhbmVfc3RhdHVzLmJpdHMuQ1JfRE9ORV8wIHx8Ci0JCQkhbGFu ZV9zdGF0dXMuYml0cy5TWU1CT0xfTE9DS0VEXzApIHsKLQkJCS8qIGlmIG9uZSBvZiB0aGUgY2hh bm5lbCBlcXVhbGl6YXRpb24sIGNsb2NrCi0JCQkgKiByZWNvdmVyeSBvciBzeW1ib2wgbG9jayBp cyBkcm9wcGVkCi0JCQkgKiBjb25zaWRlciBpdCBhcyAobGluayBoYXMgYmVlbgotCQkJICogZHJv cHBlZCkgZHAgc2luayBzdGF0dXMgaGFzIGNoYW5nZWQKLQkJCSAqLwotCQkJc2lua19zdGF0dXNf Y2hhbmdlZCA9IHRydWU7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCS8qIENoZWNrIGludGVybGFu ZSBhbGlnbi4qLwotCWlmIChzaW5rX3N0YXR1c19jaGFuZ2VkIHx8Ci0JCSFocGRfaXJxX2RwY2Rf ZGF0YS0+Ynl0ZXMubGFuZV9zdGF0dXNfdXBkYXRlZC5iaXRzLklOVEVSTEFORV9BTElHTl9ET05F KSB7Ci0KLQkJRENfTE9HX0hXX0hQRF9JUlEoIiVzOiBMaW5rIFN0YXR1cyBjaGFuZ2VkLlxuIiwg X19mdW5jX18pOwotCi0JCXJldHVybl9jb2RlID0gdHJ1ZTsKLQotCQkvKjIuIENoZWNrIHRoYXQg d2UgY2FuIGhhbmRsZSBpbnRlcnJ1cHQ6IE5vdCBpbiBGUyBET1MsCi0JCSAqICBOb3QgaW4gIkRp c3BsYXkgVGltZW91dCIgc3RhdGUsIExpbmsgaXMgdHJhaW5lZC4KLQkJICovCi0JCWRwY2RfcmVz dWx0ID0gY29yZV9saW5rX3JlYWRfZHBjZChsaW5rLAotCQkJRFBfU0VUX1BPV0VSLAotCQkJJmly cV9yZWdfcnhfcG93ZXJfc3RhdGUsCi0JCQlzaXplb2YoaXJxX3JlZ19yeF9wb3dlcl9zdGF0ZSkp OwotCi0JCWlmIChkcGNkX3Jlc3VsdCAhPSBEQ19PSykgewotCQkJRENfTE9HX0hXX0hQRF9JUlEo IiVzOiBEUENEIHJlYWQgZmFpbGVkIHRvIG9idGFpbiBwb3dlciBzdGF0ZS5cbiIsCi0JCQkJX19m dW5jX18pOwotCQl9IGVsc2UgewotCQkJaWYgKGlycV9yZWdfcnhfcG93ZXJfc3RhdGUgIT0gRFBf U0VUX1BPV0VSX0QwKQotCQkJCXJldHVybl9jb2RlID0gZmFsc2U7Ci0JCX0KLQl9Ci0KLQlyZXR1 cm4gcmV0dXJuX2NvZGU7Ci19Ci0KLXN0YXRpYyBlbnVtIGRjX3N0YXR1cyByZWFkX2hwZF9yeF9p cnFfZGF0YSgKLQlzdHJ1Y3QgZGNfbGluayAqbGluaywKLQl1bmlvbiBocGRfaXJxX2RhdGEgKmly cV9kYXRhKQotewotCXN0YXRpYyBlbnVtIGRjX3N0YXR1cyByZXR2YWw7Ci0KLQkvKiBUaGUgSFcg cmVhZHMgMTYgYnl0ZXMgZnJvbSAyMDBoIG9uIEhQRCwKLQkgKiBidXQgaWYgd2UgZ2V0IGFuIEFV WF9ERUZFUiwgdGhlIEhXIGNhbm5vdCByZXRyeQotCSAqIGFuZCB0aGlzIGNhdXNlcyB0aGUgQ1RT IHRlc3RzIDQuMy4yLjEgLSAzLjIuNCB0bwotCSAqIGZhaWwsIHNvIHdlIG5vdyBleHBsaWNpdGx5 IHJlYWQgNiBieXRlcyB3aGljaCBpcwotCSAqIHRoZSByZXEgZnJvbSB0aGUgYWJvdmUgbWVudGlv bmVkIHRlc3QgY2FzZXMuCi0JICoKLQkgKiBGb3IgRFAgMS40IHdlIG5lZWQgdG8gcmVhZCB0aG9z ZSBmcm9tIDIwMDJoIHJhbmdlLgotCSAqLwotCWlmIChsaW5rLT5kcGNkX2NhcHMuZHBjZF9yZXYu cmF3IDwgRFBDRF9SRVZfMTQpCi0JCXJldHZhbCA9IGNvcmVfbGlua19yZWFkX2RwY2QoCi0JCQls aW5rLAotCQkJRFBfU0lOS19DT1VOVCwKLQkJCWlycV9kYXRhLT5yYXcsCi0JCQlzaXplb2YodW5p b24gaHBkX2lycV9kYXRhKSk7Ci0JZWxzZSB7Ci0JCS8qIFJlYWQgMTQgYnl0ZXMgaW4gYSBzaW5n bGUgcmVhZCBhbmQgdGhlbiBjb3B5IG9ubHkgdGhlIHJlcXVpcmVkIGZpZWxkcy4KLQkJICogVGhp cyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGRvaW5nIGl0IGluIHR3byBzZXBhcmF0ZSBBVVggcmVh ZHMuICovCi0KLQkJdWludDhfdCB0bXBbRFBfU0lOS19TVEFUVVNfRVNJIC0gRFBfU0lOS19DT1VO VF9FU0kgKyAxXTsKLQotCQlyZXR2YWwgPSBjb3JlX2xpbmtfcmVhZF9kcGNkKAotCQkJbGluaywK LQkJCURQX1NJTktfQ09VTlRfRVNJLAotCQkJdG1wLAotCQkJc2l6ZW9mKHRtcCkpOwotCi0JCWlm IChyZXR2YWwgIT0gRENfT0spCi0JCQlyZXR1cm4gcmV0dmFsOwotCi0JCWlycV9kYXRhLT5ieXRl cy5zaW5rX2NudC5yYXcgPSB0bXBbRFBfU0lOS19DT1VOVF9FU0kgLSBEUF9TSU5LX0NPVU5UX0VT SV07Ci0JCWlycV9kYXRhLT5ieXRlcy5kZXZpY2Vfc2VydmljZV9pcnEucmF3ID0gdG1wW0RQX0RF VklDRV9TRVJWSUNFX0lSUV9WRUNUT1JfRVNJMCAtIERQX1NJTktfQ09VTlRfRVNJXTsKLQkJaXJx X2RhdGEtPmJ5dGVzLmxhbmUwMV9zdGF0dXMucmF3ID0gdG1wW0RQX0xBTkUwXzFfU1RBVFVTX0VT SSAtIERQX1NJTktfQ09VTlRfRVNJXTsKLQkJaXJxX2RhdGEtPmJ5dGVzLmxhbmUyM19zdGF0dXMu cmF3ID0gdG1wW0RQX0xBTkUyXzNfU1RBVFVTX0VTSSAtIERQX1NJTktfQ09VTlRfRVNJXTsKLQkJ aXJxX2RhdGEtPmJ5dGVzLmxhbmVfc3RhdHVzX3VwZGF0ZWQucmF3ID0gdG1wW0RQX0xBTkVfQUxJ R05fU1RBVFVTX1VQREFURURfRVNJIC0gRFBfU0lOS19DT1VOVF9FU0ldOwotCQlpcnFfZGF0YS0+ Ynl0ZXMuc2lua19zdGF0dXMucmF3ID0gdG1wW0RQX1NJTktfU1RBVFVTX0VTSSAtIERQX1NJTktf Q09VTlRfRVNJXTsKLQl9Ci0KLQlyZXR1cm4gcmV0dmFsOwotfQotCiBzdGF0aWMgYm9vbCBhbGxv d19ocGRfcnhfaXJxKGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKQogewogCS8qCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2h3c3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmtfaHdzcy5jCmluZGV4 IGY5NmZhYjMuLjE2ZDQ0MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9jb3JlL2RjX2xpbmtfaHdzcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9jb3JlL2RjX2xpbmtfaHdzcy5jCkBAIC05NSw2ICs5NSw3IEBAIHZvaWQgZHBfZW5hYmxl X2xpbmtfcGh5KAogCQkJCQkJbGlua19zZXR0aW5ncywKIAkJCQkJCWNsb2NrX3NvdXJjZSk7CiAJ fQorCWxpbmstPmN1cl9saW5rX3NldHRpbmdzID0gKmxpbmtfc2V0dGluZ3M7CiAKIAlkcF9yZWNl aXZlcl9wb3dlcl9jdHJsKGxpbmssIHRydWUpOwogfQpAQCAtMzA0LDYgKzMwNSw3IEBAIHZvaWQg ZHBfcmV0cmFpbl9saW5rX2RwX3Rlc3Qoc3RydWN0IGRjX2xpbmsgKmxpbmssCiAJCQkJCQlsaW5r LT5saW5rX2VuYywKIAkJCQkJCWxpbmtfc2V0dGluZywKIAkJCQkJCXBpcGVzW2ldLmNsb2NrX3Nv dXJjZS0+aWQpOworCQkJbGluay0+Y3VyX2xpbmtfc2V0dGluZ3MgPSAqbGlua19zZXR0aW5nOwog CiAJCQlkcF9yZWNlaXZlcl9wb3dlcl9jdHJsKGxpbmssIHRydWUpOwogCkBAIC0zMTMsNyArMzE1 LDYgQEAgdm9pZCBkcF9yZXRyYWluX2xpbmtfZHBfdGVzdChzdHJ1Y3QgZGNfbGluayAqbGluaywK IAkJCQkJc2tpcF92aWRlb19wYXR0ZXJuLAogCQkJCQlMSU5LX1RSQUlOSU5HX0FUVEVNUFRTKTsK IAotCQkJbGluay0+Y3VyX2xpbmtfc2V0dGluZ3MgPSAqbGlua19zZXR0aW5nOwogCiAJCQlsaW5r LT5kYy0+aHdzcy5lbmFibGVfc3RyZWFtKCZwaXBlc1tpXSk7CiAKLS0gCjIuNy40CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcg bGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK