From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 6/8] drm/i915: Move generic link training code to a separate file Date: Tue, 8 Sep 2015 15:27:57 +0300 Message-ID: <1441715280-11623-7-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1441715280-11623-1-git-send-email-ander.conselvan.de.oliveira@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 ESMTP id 2F8916E631 for ; Tue, 8 Sep 2015 05:28:46 -0700 (PDT) In-Reply-To: <1441715280-11623-1-git-send-email-ander.conselvan.de.oliveira@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 Cc: jani.nikula@intel.com, Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org Tm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBqdXN0IG1vdmluZyBjb2RlIGFyb3VuZC4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgICAgIHwgMzI4ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5p bmcuYyB8IDMzNiArKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDE2ICsrCiA0IGZpbGVzIGNoYW5nZWQsIDM2 MiBpbnNlcnRpb25zKCspLCAzMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQppbmRleCA0NGQyOTBhLi4wODUxZGUwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTc3 LDYgKzc3LDcgQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBcCiAJICBkdm9fdGZwNDEwLm8gXAog CSAgaW50ZWxfY3J0Lm8gXAogCSAgaW50ZWxfZGRpLm8gXAorCSAgaW50ZWxfZHBfbGlua190cmFp bmluZy5vIFwKIAkgIGludGVsX2RwX21zdC5vIFwKIAkgIGludGVsX2RwLm8gXAogCSAgaW50ZWxf ZHNpLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggZDVjMWIwYS4uNTc3ODA1OSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xMTg4LDcgKzExODgsNyBAQCBpbnRlbF9kcF9zaW5r X3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGNvbnN0IGludCAqKnNpbmtfcmF0ZXMp CiAJcmV0dXJuIChpbnRlbF9kcF9tYXhfbGlua19idyhpbnRlbF9kcCkgPj4gMykgKyAxOwogfQog Ci1zdGF0aWMgYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3VwcG9ydHNfaGJyMihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQorYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3VwcG9ydHNfaGJyMihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogewogCS8qIFdhRGlzYWJsZUhCUjI6c2tsICovCiAJaWYgKElTX1NLWUxB S0UoZGV2KSAmJiBJTlRFTF9SRVZJRChkZXYpIDw9IFNLTF9SRVZJRF9CMCkKQEAgLTEzNjQsOCAr MTM2NCw4IEBAIGludCBpbnRlbF9kcF9yYXRlX3NlbGVjdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgcmF0ZSkKIAlyZXR1cm4gcmF0ZV90b19pbmRleChyYXRlLCBpbnRlbF9kcC0+c2lu a19yYXRlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2RwX2NvbXB1dGVfcmF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcG9ydF9jbG9jaywKLQkJCQkgIHVpbnQ4X3QgKmxpbmtf YncsIHVpbnQ4X3QgKnJhdGVfc2VsZWN0KQordm9pZCBpbnRlbF9kcF9jb21wdXRlX3JhdGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRfY2xvY2ssCisJCQkgICB1aW50OF90ICps aW5rX2J3LCB1aW50OF90ICpyYXRlX3NlbGVjdCkKIHsKIAlpZiAoaW50ZWxfZHAtPm51bV9zaW5r X3JhdGVzKSB7CiAJCSpsaW5rX2J3ID0gMDsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIGludGVsX2Rw X2RwY2RfcmVhZF93YWtlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHVuc2lnbmVkIGludCBvZmZz ZXQsCiAgKiBGZXRjaCBBVVggQ0ggcmVnaXN0ZXJzIDB4MjAyIC0gMHgyMDcgd2hpY2ggY29udGFp bgogICogbGluayBzdGF0dXMgaW5mb3JtYXRpb24KICAqLwotc3RhdGljIGJvb2wKK2Jvb2wKIGlu dGVsX2RwX2dldF9saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90 IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKQogewogCXJldHVybiBpbnRlbF9kcF9k cGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKQEAgLTMwNTUsNyArMzA1NSw3IEBAIGludGVs X2RwX2dldF9saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IGxp bmtfc3RhdHVzW0RQX0xJTktfCiB9CiAKIC8qIFRoZXNlIGFyZSBzb3VyY2Utc3BlY2lmaWMgdmFs dWVzLiAqLwotc3RhdGljIHVpbnQ4X3QKK3VpbnQ4X3QKIGludGVsX2RwX3ZvbHRhZ2VfbWF4KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2RwX3RvX2RldihpbnRlbF9kcCk7CkBAIC0zMDc4LDcgKzMwNzgsNyBAQCBpbnRlbF9kcF92 b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlyZXR1cm4gRFBfVFJBSU5f Vk9MVEFHRV9TV0lOR19MRVZFTF8yOwogfQogCi1zdGF0aWMgdWludDhfdAordWludDhfdAogaW50 ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90 IHZvbHRhZ2Vfc3dpbmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3Rv X2RldihpbnRlbF9kcCk7CkBAIC0zNDI1LDM4ICszNDI1LDYgQEAgc3RhdGljIHVpbnQzMl90IGNo dl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB2b2lkCi1pbnRlbF9nZXRfYWRqdXN0X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCi0JCSAgICAgICBjb25zdCB1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RB VFVTX1NJWkVdKQotewotCXVpbnQ4X3QgdiA9IDA7Ci0JdWludDhfdCBwID0gMDsKLQlpbnQgbGFu ZTsKLQl1aW50OF90IHZvbHRhZ2VfbWF4OwotCXVpbnQ4X3QgcHJlZW1waF9tYXg7Ci0KLQlmb3Ig KGxhbmUgPSAwOyBsYW5lIDwgaW50ZWxfZHAtPmxhbmVfY291bnQ7IGxhbmUrKykgewotCQl1aW50 OF90IHRoaXNfdiA9IGRybV9kcF9nZXRfYWRqdXN0X3JlcXVlc3Rfdm9sdGFnZShsaW5rX3N0YXR1 cywgbGFuZSk7Ci0JCXVpbnQ4X3QgdGhpc19wID0gZHJtX2RwX2dldF9hZGp1c3RfcmVxdWVzdF9w cmVfZW1waGFzaXMobGlua19zdGF0dXMsIGxhbmUpOwotCi0JCWlmICh0aGlzX3YgPiB2KQotCQkJ diA9IHRoaXNfdjsKLQkJaWYgKHRoaXNfcCA+IHApCi0JCQlwID0gdGhpc19wOwotCX0KLQotCXZv bHRhZ2VfbWF4ID0gaW50ZWxfZHBfdm9sdGFnZV9tYXgoaW50ZWxfZHApOwotCWlmICh2ID49IHZv bHRhZ2VfbWF4KQotCQl2ID0gdm9sdGFnZV9tYXggfCBEUF9UUkFJTl9NQVhfU1dJTkdfUkVBQ0hF RDsKLQotCXByZWVtcGhfbWF4ID0gaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChpbnRlbF9kcCwg dik7Ci0JaWYgKHAgPj0gcHJlZW1waF9tYXgpCi0JCXAgPSBwcmVlbXBoX21heCB8IERQX1RSQUlO X01BWF9QUkVfRU1QSEFTSVNfUkVBQ0hFRDsKLQotCWZvciAobGFuZSA9IDA7IGxhbmUgPCA0OyBs YW5lKyspCi0JCWludGVsX2RwLT50cmFpbl9zZXRbbGFuZV0gPSB2IHwgcDsKLX0KLQogc3RhdGlj IHVpbnQzMl90CiBnZW40X3NpZ25hbF9sZXZlbHModWludDhfdCB0cmFpbl9zZXQpCiB7CkBAIC0z NTk4LDcgKzM1NjYsNyBAQCBpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCB1aW50MzJfdCAqRFApCiAJKkRQID0gKCpEUCAmIH5tYXNrKSB8IHNpZ25h bF9sZXZlbHM7CiB9CiAKLXN0YXRpYyB2b2lkCit2b2lkCiBpbnRlbF9kcF9wcm9ncmFtX2xpbmtf dHJhaW5pbmdfcGF0dGVybihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJCSAgICAgICB1 aW50OF90IGRwX3RyYWluX3BhdCkKIHsKQEAgLTM2MTIsMzMgKzM1ODAsNyBAQCBpbnRlbF9kcF9w cm9ncmFtX2xpbmtfdHJhaW5pbmdfcGF0dGVybihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CVBPU1RJTkdfUkVBRChpbnRlbF9kcC0+b3V0cHV0X3JlZyk7CiB9CiAKLXN0YXRpYyBib29sCi1p bnRlbF9kcF9zZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAotCQkJdWlu dDhfdCBkcF90cmFpbl9wYXQpCi17Ci0JdWludDhfdCBidWZbc2l6ZW9mKGludGVsX2RwLT50cmFp bl9zZXQpICsgMV07Ci0JaW50IHJldCwgbGVuOwotCi0JaW50ZWxfZHBfcHJvZ3JhbV9saW5rX3Ry YWluaW5nX3BhdHRlcm4oaW50ZWxfZHAsIGRwX3RyYWluX3BhdCk7Ci0KLQlidWZbMF0gPSBkcF90 cmFpbl9wYXQ7Ci0JaWYgKChkcF90cmFpbl9wYXQgJiBEUF9UUkFJTklOR19QQVRURVJOX01BU0sp ID09Ci0JICAgIERQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSkgewotCQkvKiBkb24ndCB3cml0 ZSBEUF9UUkFJTklOR19MQU5FeF9TRVQgb24gZGlzYWJsZSAqLwotCQlsZW4gPSAxOwotCX0gZWxz ZSB7Ci0JCS8qIERQX1RSQUlOSU5HX0xBTkV4X1NFVCBmb2xsb3cgRFBfVFJBSU5JTkdfUEFUVEVS Tl9TRVQgKi8KLQkJbWVtY3B5KGJ1ZiArIDEsIGludGVsX2RwLT50cmFpbl9zZXQsIGludGVsX2Rw LT5sYW5lX2NvdW50KTsKLQkJbGVuID0gaW50ZWxfZHAtPmxhbmVfY291bnQgKyAxOwotCX0KLQot CXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LCBEUF9UUkFJTklOR19QQVRU RVJOX1NFVCwKLQkJCQlidWYsIGxlbik7Ci0KLQlyZXR1cm4gcmV0ID09IGxlbjsKLX0KLQotc3Rh dGljIHZvaWQKK3ZvaWQKIGludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CkBAIC0zNjUxLDMwICszNTkzLDcgQEAg aW50ZWxfZHBfdXBkYXRlX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAlQT1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwogfQogCi1zdGF0aWMgYm9vbAot aW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAotCQkJ dWludDhfdCBkcF90cmFpbl9wYXQpCi17Ci0JaWYgKCFpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlk KQotCQltZW1zZXQoaW50ZWxfZHAtPnRyYWluX3NldCwgMCwgc2l6ZW9mKGludGVsX2RwLT50cmFp bl9zZXQpKTsKLQlpbnRlbF9kcF91cGRhdGVfc2lnbmFsX2xldmVscyhpbnRlbF9kcCk7Ci0JcmV0 dXJuIGludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLCBkcF90cmFpbl9wYXQpOwotfQot Ci1zdGF0aWMgYm9vbAotaW50ZWxfZHBfdXBkYXRlX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKLXsKLQlpbnQgcmV0OwotCi0JaW50ZWxfZHBfdXBkYXRlX3NpZ25hbF9sZXZl bHMoaW50ZWxfZHApOwotCi0JcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RwLT5hdXgs IERQX1RSQUlOSU5HX0xBTkUwX1NFVCwKLQkJCQlpbnRlbF9kcC0+dHJhaW5fc2V0LCBpbnRlbF9k cC0+bGFuZV9jb3VudCk7Ci0KLQlyZXR1cm4gcmV0ID09IGludGVsX2RwLT5sYW5lX2NvdW50Owot fQotCi1zdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCit2b2lkIGludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7CkBAIC0zNzA1LDIzNSArMzYy NCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgRFAg aWRsZSBwYXR0ZXJuc1xuIik7CiB9CiAKLS8qIEVuYWJsZSBjb3JyZXNwb25kaW5nIHBvcnQgYW5k IHN0YXJ0IHRyYWluaW5nIHBhdHRlcm4gMSAqLwotc3RhdGljIGJvb2wKLWludGVsX2RwX2xpbmtf dHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKLXsKLQlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5i YXNlLmJhc2U7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKLQlpbnQg aTsKLQl1aW50OF90IHZvbHRhZ2U7Ci0JaW50IHZvbHRhZ2VfdHJpZXMsIGxvb3BfdHJpZXM7Ci0J dWludDhfdCBsaW5rX2NvbmZpZ1syXTsKLQl1aW50OF90IGxpbmtfYncsIHJhdGVfc2VsZWN0Owot CXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07Ci0KLQlpZiAoSEFTX0RE SShkZXYpKQotCQlpbnRlbF9kZGlfcHJlcGFyZV9saW5rX3JldHJhaW4oZW5jb2Rlcik7Ci0KLQlp bnRlbF9kcF9jb21wdXRlX3JhdGUoaW50ZWxfZHAsIGludGVsX2RwLT5saW5rX3JhdGUsCi0JCQkg ICAgICAmbGlua19idywgJnJhdGVfc2VsZWN0KTsKLQotCS8qIFdyaXRlIHRoZSBsaW5rIGNvbmZp Z3VyYXRpb24gZGF0YSAqLwotCWxpbmtfY29uZmlnWzBdID0gbGlua19idzsKLQlsaW5rX2NvbmZp Z1sxXSA9IGludGVsX2RwLT5sYW5lX2NvdW50OwotCWlmIChkcm1fZHBfZW5oYW5jZWRfZnJhbWVf Y2FwKGludGVsX2RwLT5kcGNkKSkKLQkJbGlua19jb25maWdbMV0gfD0gRFBfTEFORV9DT1VOVF9F TkhBTkNFRF9GUkFNRV9FTjsKLQlkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBf TElOS19CV19TRVQsIGxpbmtfY29uZmlnLCAyKTsKLQlpZiAoaW50ZWxfZHAtPm51bV9zaW5rX3Jh dGVzKQotCQlkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfTElOS19SQVRFX1NF VCwKLQkJCQkgICZyYXRlX3NlbGVjdCwgMSk7Ci0KLQlsaW5rX2NvbmZpZ1swXSA9IDA7Ci0JbGlu a19jb25maWdbMV0gPSBEUF9TRVRfQU5TSV84QjEwQjsKLQlkcm1fZHBfZHBjZF93cml0ZSgmaW50 ZWxfZHAtPmF1eCwgRFBfRE9XTlNQUkVBRF9DVFJMLCBsaW5rX2NvbmZpZywgMik7Ci0KLQlpbnRl bF9kcC0+RFAgfD0gRFBfUE9SVF9FTjsKLQotCS8qIGNsb2NrIHJlY292ZXJ5ICovCi0JaWYgKCFp bnRlbF9kcF9yZXNldF9saW5rX3RyYWluKGludGVsX2RwLAotCQkJCSAgICAgICBEUF9UUkFJTklO R19QQVRURVJOXzEgfAotCQkJCSAgICAgICBEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpIHsK LQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOwotCQlyZXR1 cm4gZmFsc2U7Ci0JfQotCi0Jdm9sdGFnZSA9IDB4ZmY7Ci0Jdm9sdGFnZV90cmllcyA9IDA7Ci0J bG9vcF90cmllcyA9IDA7Ci0JZm9yICg7OykgewotCQlkcm1fZHBfbGlua190cmFpbl9jbG9ja19y ZWNvdmVyeV9kZWxheShpbnRlbF9kcC0+ZHBjZCk7Ci0JCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtf c3RhdHVzKGludGVsX2RwLCBsaW5rX3N0YXR1cykpIHsKLQkJCURSTV9FUlJPUigiZmFpbGVkIHRv IGdldCBsaW5rIHN0YXR1c1xuIik7Ci0JCQlicmVhazsKLQkJfQotCi0JCWlmIChkcm1fZHBfY2xv Y2tfcmVjb3Zlcnlfb2sobGlua19zdGF0dXMsIGludGVsX2RwLT5sYW5lX2NvdW50KSkgewotCQkJ RFJNX0RFQlVHX0tNUygiY2xvY2sgcmVjb3ZlcnkgT0tcbiIpOwotCQkJYnJlYWs7Ci0JCX0KLQot CQkvKgotCQkgKiBpZiB3ZSB1c2VkIHByZXZpb3VzbHkgdHJhaW5lZCB2b2x0YWdlIGFuZCBwcmUt ZW1waGFzaXMgdmFsdWVzCi0JCSAqIGFuZCB3ZSBkb24ndCBnZXQgY2xvY2sgcmVjb3ZlcnksIHJl c2V0IGxpbmsgdHJhaW5pbmcgdmFsdWVzCi0JCSAqLwotCQlpZiAoaW50ZWxfZHAtPnRyYWluX3Nl dF92YWxpZCkgewotCQkJRFJNX0RFQlVHX0tNUygiY2xvY2sgcmVjb3Zlcnkgbm90IG9rLCByZXNl dCIpOwotCQkJLyogY2xlYXIgdGhlIGZsYWcgYXMgd2UgYXJlIG5vdCByZXVzaW5nIHRyYWluIHNl dCAqLwotCQkJaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCA9IGZhbHNlOwotCQkJaWYgKCFpbnRl bF9kcF9yZXNldF9saW5rX3RyYWluKGludGVsX2RwLAotCQkJCQkJICAgICAgIERQX1RSQUlOSU5H X1BBVFRFUk5fMSB8Ci0JCQkJCQkgICAgICAgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7 Ci0JCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOwotCQkJ CXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJLyogQ2hlY2sgdG8g c2VlIGlmIHdlJ3ZlIHRyaWVkIHRoZSBtYXggdm9sdGFnZSAqLwotCQlmb3IgKGkgPSAwOyBpIDwg aW50ZWxfZHAtPmxhbmVfY291bnQ7IGkrKykKLQkJCWlmICgoaW50ZWxfZHAtPnRyYWluX3NldFtp XSAmIERQX1RSQUlOX01BWF9TV0lOR19SRUFDSEVEKSA9PSAwKQotCQkJCWJyZWFrOwotCQlpZiAo aSA9PSBpbnRlbF9kcC0+bGFuZV9jb3VudCkgewotCQkJKytsb29wX3RyaWVzOwotCQkJaWYgKGxv b3BfdHJpZXMgPT0gNSkgewotCQkJCURSTV9FUlJPUigidG9vIG1hbnkgZnVsbCByZXRyaWVzLCBn aXZlIHVwXG4iKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJCWludGVsX2RwX3Jlc2V0X2xpbmtfdHJh aW4oaW50ZWxfZHAsCi0JCQkJCQkgIERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8Ci0JCQkJCQkgIERQ X0xJTktfU0NSQU1CTElOR19ESVNBQkxFKTsKLQkJCXZvbHRhZ2VfdHJpZXMgPSAwOwotCQkJY29u dGludWU7Ci0JCX0KLQotCQkvKiBDaGVjayB0byBzZWUgaWYgd2UndmUgdHJpZWQgdGhlIHNhbWUg dm9sdGFnZSA1IHRpbWVzICovCi0JCWlmICgoaW50ZWxfZHAtPnRyYWluX3NldFswXSAmIERQX1RS QUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgPT0gdm9sdGFnZSkgewotCQkJKyt2b2x0YWdlX3RyaWVz OwotCQkJaWYgKHZvbHRhZ2VfdHJpZXMgPT0gNSkgewotCQkJCURSTV9FUlJPUigidG9vIG1hbnkg dm9sdGFnZSByZXRyaWVzLCBnaXZlIHVwXG4iKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfSBlbHNl Ci0JCQl2b2x0YWdlX3RyaWVzID0gMDsKLQkJdm9sdGFnZSA9IGludGVsX2RwLT50cmFpbl9zZXRb MF0gJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0s7Ci0KLQkJLyogVXBkYXRlIHRyYWluaW5n IHNldCBhcyByZXF1ZXN0ZWQgYnkgdGFyZ2V0ICovCi0JCWludGVsX2dldF9hZGp1c3RfdHJhaW4o aW50ZWxfZHAsIGxpbmtfc3RhdHVzKTsKLQkJaWYgKCFpbnRlbF9kcF91cGRhdGVfbGlua190cmFp bihpbnRlbF9kcCkpIHsKLQkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHVwZGF0ZSBsaW5rIHRyYWlu aW5nXG4iKTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JcmV0dXJuIGRybV9kcF9jbG9ja19yZWNv dmVyeV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpOwotfQotCi1zdGF0aWMg Ym9vbAotaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQotewotCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBkaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKLQlib29sIGNoYW5uZWxfZXEgPSBmYWxzZTsKLQlp bnQgdHJpZXMsIGNyX3RyaWVzOwotCXVpbnQzMl90IHRyYWluaW5nX3BhdHRlcm4gPSBEUF9UUkFJ TklOR19QQVRURVJOXzI7Ci0KLQkvKgotCSAqIFRyYWluaW5nIFBhdHRlcm4gMyBmb3IgSEJSMiBv ciAxLjIgZGV2aWNlcyB0aGF0IHN1cHBvcnQgaXQuCi0JICoKLQkgKiBJbnRlbCBwbGF0Zm9ybXMg dGhhdCBzdXBwb3J0IEhCUjIgYWxzbyBzdXBwb3J0IFRQUzMuIFRQUzMgc3VwcG9ydCBpcwotCSAq IGFsc28gbWFuZGF0b3J5IGZvciBkb3duc3RyZWFtIGRldmljZXMgdGhhdCBzdXBwb3J0IEhCUjIu Ci0JICoKLQkgKiBEdWUgdG8gV2FEaXNhYmxlSEJSMiBTS0wgPCBCMCBpcyB0aGUgb25seSBleGNl cHRpb24gd2hlcmUgVFBTMyBpcwotCSAqIHN1cHBvcnRlZCBidXQgc3RpbGwgbm90IGVuYWJsZWQu Ci0JICovCi0JaWYgKGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19oYnIyKGRldikgJiYKLQkgICAg ZHJtX2RwX3RwczNfc3VwcG9ydGVkKGludGVsX2RwLT5kcGNkKSkKLQkJdHJhaW5pbmdfcGF0dGVy biA9IERQX1RSQUlOSU5HX1BBVFRFUk5fMzsKLQllbHNlIGlmIChpbnRlbF9kcC0+bGlua19yYXRl ID09IDU0MDAwMCkKLQkJRFJNX0VSUk9SKCI1LjQgR2JwcyBsaW5rIHJhdGUgd2l0aG91dCBIQlIy L1RQUzMgc3VwcG9ydFxuIik7Ci0KLQkvKiBjaGFubmVsIGVxdWFsaXphdGlvbiAqLwotCWlmICgh aW50ZWxfZHBfc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsCi0JCQkJICAgICB0cmFpbmluZ19wYXR0 ZXJuIHwKLQkJCQkgICAgIERQX0xJTktfU0NSQU1CTElOR19ESVNBQkxFKSkgewotCQlEUk1fRVJS T1IoImZhaWxlZCB0byBzdGFydCBjaGFubmVsIGVxdWFsaXphdGlvblxuIik7Ci0JCXJldHVybiBm YWxzZTsKLQl9Ci0KLQl0cmllcyA9IDA7Ci0JY3JfdHJpZXMgPSAwOwotCWNoYW5uZWxfZXEgPSBm YWxzZTsKLQlmb3IgKDs7KSB7Ci0JCXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNf U0laRV07Ci0KLQkJaWYgKGNyX3RyaWVzID4gNSkgewotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g dHJhaW4gRFAsIGFib3J0aW5nXG4iKTsKLQkJCWJyZWFrOwotCQl9Ci0KLQkJZHJtX2RwX2xpbmtf dHJhaW5fY2hhbm5lbF9lcV9kZWxheShpbnRlbF9kcC0+ZHBjZCk7Ci0JCWlmICghaW50ZWxfZHBf Z2V0X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5rX3N0YXR1cykpIHsKLQkJCURSTV9FUlJPUigi ZmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Ci0JCQlicmVhazsKLQkJfQotCi0JCS8qIE1h a2Ugc3VyZSBjbG9jayBpcyBzdGlsbCBvayAqLwotCQlpZiAoIWRybV9kcF9jbG9ja19yZWNvdmVy eV9vayhsaW5rX3N0YXR1cywKLQkJCQkJICAgICAgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7Ci0J CQlpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkID0gZmFsc2U7Ci0JCQlpbnRlbF9kcF9saW5rX3Ry YWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKLQkJCWludGVsX2RwX3NldF9saW5rX3Ry YWluKGludGVsX2RwLAotCQkJCQkJdHJhaW5pbmdfcGF0dGVybiB8Ci0JCQkJCQlEUF9MSU5LX1ND UkFNQkxJTkdfRElTQUJMRSk7Ci0JCQljcl90cmllcysrOwotCQkJY29udGludWU7Ci0JCX0KLQot CQlpZiAoZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsCi0JCQkJCSBpbnRlbF9kcC0+ bGFuZV9jb3VudCkpIHsKLQkJCWNoYW5uZWxfZXEgPSB0cnVlOwotCQkJYnJlYWs7Ci0JCX0KLQot CQkvKiBUcnkgNSB0aW1lcywgdGhlbiB0cnkgY2xvY2sgcmVjb3ZlcnkgaWYgdGhhdCBmYWlscyAq LwotCQlpZiAodHJpZXMgPiA1KSB7Ci0JCQlpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkID0gZmFs c2U7Ci0JCQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsK LQkJCWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLAotCQkJCQkJdHJhaW5pbmdfcGF0 dGVybiB8Ci0JCQkJCQlEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSk7Ci0JCQl0cmllcyA9IDA7 Ci0JCQljcl90cmllcysrOwotCQkJY29udGludWU7Ci0JCX0KLQotCQkvKiBVcGRhdGUgdHJhaW5p bmcgc2V0IGFzIHJlcXVlc3RlZCBieSB0YXJnZXQgKi8KLQkJaW50ZWxfZ2V0X2FkanVzdF90cmFp bihpbnRlbF9kcCwgbGlua19zdGF0dXMpOwotCQlpZiAoIWludGVsX2RwX3VwZGF0ZV9saW5rX3Ry YWluKGludGVsX2RwKSkgewotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gdXBkYXRlIGxpbmsgdHJh aW5pbmdcbiIpOwotCQkJYnJlYWs7Ci0JCX0KLQkJKyt0cmllczsKLQl9Ci0KLQlpbnRlbF9kcF9z ZXRfaWRsZV9saW5rX3RyYWluKGludGVsX2RwKTsKLQotCWlmIChjaGFubmVsX2VxKSB7Ci0JCWlu dGVsX2RwLT50cmFpbl9zZXRfdmFsaWQgPSB0cnVlOwotCQlEUk1fREVCVUdfS01TKCJDaGFubmVs IEVRIGRvbmUuIERQIFRyYWluaW5nIHN1Y2Nlc3NmdWxcbiIpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9 IGVsc2UgewotCQlyZXR1cm4gZmFsc2U7Ci0JfQotfQotCi12b2lkIGludGVsX2RwX3N0b3BfbGlu a190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQotewotCWludGVsX2RwX3NldF9saW5r X3RyYWluKGludGVsX2RwLAotCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Ci19Ci0K LXZvaWQKLWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKLXsKLQl1aW50MzJfdCBEUCA9IGludGVsX2RwLT5EUDsKLQotCWlmICghaW50ZWxfZHBfbGlu a190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkgfHwKLQkgICAgIWludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApKQotCQlpbnRlbF9kcC0+ RFAgPSBEUDsKLX0KLQogc3RhdGljIHZvaWQKIGludGVsX2RwX2xpbmtfZG93bihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfbGlua190cmFpbmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlu a190cmFpbmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzM2NiYmIK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3Ry YWluaW5nLmMKQEAgLTAsMCArMSwzMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAwOC0yMDE1 IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNP RlRXQVJFLgorICovCisKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKworc3RhdGljIHZvaWQKK2lu dGVsX2dldF9hZGp1c3RfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJICAgICAg IGNvbnN0IHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pCit7CisJdWlu dDhfdCB2ID0gMDsKKwl1aW50OF90IHAgPSAwOworCWludCBsYW5lOworCXVpbnQ4X3Qgdm9sdGFn ZV9tYXg7CisJdWludDhfdCBwcmVlbXBoX21heDsKKworCWZvciAobGFuZSA9IDA7IGxhbmUgPCBp bnRlbF9kcC0+bGFuZV9jb3VudDsgbGFuZSsrKSB7CisJCXVpbnQ4X3QgdGhpc192ID0gZHJtX2Rw X2dldF9hZGp1c3RfcmVxdWVzdF92b2x0YWdlKGxpbmtfc3RhdHVzLCBsYW5lKTsKKwkJdWludDhf dCB0aGlzX3AgPSBkcm1fZHBfZ2V0X2FkanVzdF9yZXF1ZXN0X3ByZV9lbXBoYXNpcyhsaW5rX3N0 YXR1cywgbGFuZSk7CisKKwkJaWYgKHRoaXNfdiA+IHYpCisJCQl2ID0gdGhpc192OworCQlpZiAo dGhpc19wID4gcCkKKwkJCXAgPSB0aGlzX3A7CisJfQorCisJdm9sdGFnZV9tYXggPSBpbnRlbF9k cF92b2x0YWdlX21heChpbnRlbF9kcCk7CisJaWYgKHYgPj0gdm9sdGFnZV9tYXgpCisJCXYgPSB2 b2x0YWdlX21heCB8IERQX1RSQUlOX01BWF9TV0lOR19SRUFDSEVEOworCisJcHJlZW1waF9tYXgg PSBpbnRlbF9kcF9wcmVfZW1waGFzaXNfbWF4KGludGVsX2RwLCB2KTsKKwlpZiAocCA+PSBwcmVl bXBoX21heCkKKwkJcCA9IHByZWVtcGhfbWF4IHwgRFBfVFJBSU5fTUFYX1BSRV9FTVBIQVNJU19S RUFDSEVEOworCisJZm9yIChsYW5lID0gMDsgbGFuZSA8IDQ7IGxhbmUrKykKKwkJaW50ZWxfZHAt PnRyYWluX3NldFtsYW5lXSA9IHYgfCBwOworfQorCitzdGF0aWMgYm9vbAoraW50ZWxfZHBfc2V0 X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCXVpbnQ4X3QgZHBfdHJh aW5fcGF0KQoreworCXVpbnQ4X3QgYnVmW3NpemVvZihpbnRlbF9kcC0+dHJhaW5fc2V0KSArIDFd OworCWludCByZXQsIGxlbjsKKworCWludGVsX2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0 ZXJuKGludGVsX2RwLCBkcF90cmFpbl9wYXQpOworCisJYnVmWzBdID0gZHBfdHJhaW5fcGF0Owor CWlmICgoZHBfdHJhaW5fcGF0ICYgRFBfVFJBSU5JTkdfUEFUVEVSTl9NQVNLKSA9PQorCSAgICBE UF9UUkFJTklOR19QQVRURVJOX0RJU0FCTEUpIHsKKwkJLyogZG9uJ3Qgd3JpdGUgRFBfVFJBSU5J TkdfTEFORXhfU0VUIG9uIGRpc2FibGUgKi8KKwkJbGVuID0gMTsKKwl9IGVsc2UgeworCQkvKiBE UF9UUkFJTklOR19MQU5FeF9TRVQgZm9sbG93IERQX1RSQUlOSU5HX1BBVFRFUk5fU0VUICovCisJ CW1lbWNweShidWYgKyAxLCBpbnRlbF9kcC0+dHJhaW5fc2V0LCBpbnRlbF9kcC0+bGFuZV9jb3Vu dCk7CisJCWxlbiA9IGludGVsX2RwLT5sYW5lX2NvdW50ICsgMTsKKwl9CisKKwlyZXQgPSBkcm1f ZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVQsCisJ CQkJYnVmLCBsZW4pOworCisJcmV0dXJuIHJldCA9PSBsZW47Cit9CisKK3N0YXRpYyBib29sCitp bnRlbF9kcF9yZXNldF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQl1 aW50OF90IGRwX3RyYWluX3BhdCkKK3sKKwlpZiAoIWludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQp CisJCW1lbXNldChpbnRlbF9kcC0+dHJhaW5fc2V0LCAwLCBzaXplb2YoaW50ZWxfZHAtPnRyYWlu X3NldCkpOworCWludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2ZWxzKGludGVsX2RwKTsKKwlyZXR1 cm4gaW50ZWxfZHBfc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsIGRwX3RyYWluX3BhdCk7Cit9CisK K3N0YXRpYyBib29sCitpbnRlbF9kcF91cGRhdGVfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQoreworCWludCByZXQ7CisKKwlpbnRlbF9kcF91cGRhdGVfc2lnbmFsX2xldmVs cyhpbnRlbF9kcCk7CisKKwlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwg RFBfVFJBSU5JTkdfTEFORTBfU0VULAorCQkJCWludGVsX2RwLT50cmFpbl9zZXQsIGludGVsX2Rw LT5sYW5lX2NvdW50KTsKKworCXJldHVybiByZXQgPT0gaW50ZWxfZHAtPmxhbmVfY291bnQ7Cit9 CisKKy8qIEVuYWJsZSBjb3JyZXNwb25kaW5nIHBvcnQgYW5kIHN0YXJ0IHRyYWluaW5nIHBhdHRl cm4gMSAqLworc3RhdGljIGJvb2wKK2ludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zl cnkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2U7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKKwlpbnQgaTsKKwl1aW50OF90IHZvbHRhZ2U7 CisJaW50IHZvbHRhZ2VfdHJpZXMsIGxvb3BfdHJpZXM7CisJdWludDhfdCBsaW5rX2NvbmZpZ1sy XTsKKwl1aW50OF90IGxpbmtfYncsIHJhdGVfc2VsZWN0OworCXVpbnQ4X3QgbGlua19zdGF0dXNb RFBfTElOS19TVEFUVVNfU0laRV07CisKKwlpZiAoSEFTX0RESShkZXYpKQorCQlpbnRlbF9kZGlf cHJlcGFyZV9saW5rX3JldHJhaW4oZW5jb2Rlcik7CisKKwlpbnRlbF9kcF9jb21wdXRlX3JhdGUo aW50ZWxfZHAsIGludGVsX2RwLT5saW5rX3JhdGUsCisJCQkgICAgICAmbGlua19idywgJnJhdGVf c2VsZWN0KTsKKworCS8qIFdyaXRlIHRoZSBsaW5rIGNvbmZpZ3VyYXRpb24gZGF0YSAqLworCWxp bmtfY29uZmlnWzBdID0gbGlua19idzsKKwlsaW5rX2NvbmZpZ1sxXSA9IGludGVsX2RwLT5sYW5l X2NvdW50OworCWlmIChkcm1fZHBfZW5oYW5jZWRfZnJhbWVfY2FwKGludGVsX2RwLT5kcGNkKSkK KwkJbGlua19jb25maWdbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9GUkFNRV9FTjsKKwlk cm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfTElOS19CV19TRVQsIGxpbmtfY29u ZmlnLCAyKTsKKwlpZiAoaW50ZWxfZHAtPm51bV9zaW5rX3JhdGVzKQorCQlkcm1fZHBfZHBjZF93 cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfTElOS19SQVRFX1NFVCwKKwkJCQkgICZyYXRlX3NlbGVj dCwgMSk7CisKKwlsaW5rX2NvbmZpZ1swXSA9IDA7CisJbGlua19jb25maWdbMV0gPSBEUF9TRVRf QU5TSV84QjEwQjsKKwlkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfRE9XTlNQ UkVBRF9DVFJMLCBsaW5rX2NvbmZpZywgMik7CisKKwlpbnRlbF9kcC0+RFAgfD0gRFBfUE9SVF9F TjsKKworCS8qIGNsb2NrIHJlY292ZXJ5ICovCisJaWYgKCFpbnRlbF9kcF9yZXNldF9saW5rX3Ry YWluKGludGVsX2RwLAorCQkJCSAgICAgICBEUF9UUkFJTklOR19QQVRURVJOXzEgfAorCQkJCSAg ICAgICBEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQg dG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJdm9s dGFnZSA9IDB4ZmY7CisJdm9sdGFnZV90cmllcyA9IDA7CisJbG9vcF90cmllcyA9IDA7CisJZm9y ICg7OykgeworCQlkcm1fZHBfbGlua190cmFpbl9jbG9ja19yZWNvdmVyeV9kZWxheShpbnRlbF9k cC0+ZHBjZCk7CisJCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5r X3N0YXR1cykpIHsKKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7 CisJCQlicmVhazsKKwkJfQorCisJCWlmIChkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2sobGlua19z dGF0dXMsIGludGVsX2RwLT5sYW5lX2NvdW50KSkgeworCQkJRFJNX0RFQlVHX0tNUygiY2xvY2sg cmVjb3ZlcnkgT0tcbiIpOworCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBpZiB3ZSB1c2Vk IHByZXZpb3VzbHkgdHJhaW5lZCB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMgdmFsdWVzCisJCSAq IGFuZCB3ZSBkb24ndCBnZXQgY2xvY2sgcmVjb3ZlcnksIHJlc2V0IGxpbmsgdHJhaW5pbmcgdmFs dWVzCisJCSAqLworCQlpZiAoaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCkgeworCQkJRFJNX0RF QlVHX0tNUygiY2xvY2sgcmVjb3Zlcnkgbm90IG9rLCByZXNldCIpOworCQkJLyogY2xlYXIgdGhl IGZsYWcgYXMgd2UgYXJlIG5vdCByZXVzaW5nIHRyYWluIHNldCAqLworCQkJaW50ZWxfZHAtPnRy YWluX3NldF92YWxpZCA9IGZhbHNlOworCQkJaWYgKCFpbnRlbF9kcF9yZXNldF9saW5rX3RyYWlu KGludGVsX2RwLAorCQkJCQkJICAgICAgIERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8CisJCQkJCQkg ICAgICAgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7CisJCQkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0K KwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogQ2hlY2sgdG8gc2VlIGlmIHdlJ3ZlIHRyaWVkIHRo ZSBtYXggdm9sdGFnZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfZHAtPmxhbmVfY291bnQ7 IGkrKykKKwkJCWlmICgoaW50ZWxfZHAtPnRyYWluX3NldFtpXSAmIERQX1RSQUlOX01BWF9TV0lO R19SRUFDSEVEKSA9PSAwKQorCQkJCWJyZWFrOworCQlpZiAoaSA9PSBpbnRlbF9kcC0+bGFuZV9j b3VudCkgeworCQkJKytsb29wX3RyaWVzOworCQkJaWYgKGxvb3BfdHJpZXMgPT0gNSkgeworCQkJ CURSTV9FUlJPUigidG9vIG1hbnkgZnVsbCByZXRyaWVzLCBnaXZlIHVwXG4iKTsKKwkJCQlicmVh azsKKwkJCX0KKwkJCWludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsCisJCQkJCQkg IERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8CisJCQkJCQkgIERQX0xJTktfU0NSQU1CTElOR19ESVNB QkxFKTsKKwkJCXZvbHRhZ2VfdHJpZXMgPSAwOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBD aGVjayB0byBzZWUgaWYgd2UndmUgdHJpZWQgdGhlIHNhbWUgdm9sdGFnZSA1IHRpbWVzICovCisJ CWlmICgoaW50ZWxfZHAtPnRyYWluX3NldFswXSAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFT SykgPT0gdm9sdGFnZSkgeworCQkJKyt2b2x0YWdlX3RyaWVzOworCQkJaWYgKHZvbHRhZ2VfdHJp ZXMgPT0gNSkgeworCQkJCURSTV9FUlJPUigidG9vIG1hbnkgdm9sdGFnZSByZXRyaWVzLCBnaXZl IHVwXG4iKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfSBlbHNlCisJCQl2b2x0YWdlX3RyaWVzID0g MDsKKwkJdm9sdGFnZSA9IGludGVsX2RwLT50cmFpbl9zZXRbMF0gJiBEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX01BU0s7CisKKwkJLyogVXBkYXRlIHRyYWluaW5nIHNldCBhcyByZXF1ZXN0ZWQgYnkg dGFyZ2V0ICovCisJCWludGVsX2dldF9hZGp1c3RfdHJhaW4oaW50ZWxfZHAsIGxpbmtfc3RhdHVz KTsKKwkJaWYgKCFpbnRlbF9kcF91cGRhdGVfbGlua190cmFpbihpbnRlbF9kcCkpIHsKKwkJCURS TV9FUlJPUigiZmFpbGVkIHRvIHVwZGF0ZSBsaW5rIHRyYWluaW5nXG4iKTsKKwkJCWJyZWFrOwor CQl9CisJfQorCisJcmV0dXJuIGRybV9kcF9jbG9ja19yZWNvdmVyeV9vayhsaW5rX3N0YXR1cywg aW50ZWxfZHAtPmxhbmVfY291bnQpOworfQorCitzdGF0aWMgYm9vbAoraW50ZWxfZHBfbGlua190 cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQor eworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkaWdfcG9ydC0+YmFzZS5iYXNl LmRldjsKKwlib29sIGNoYW5uZWxfZXEgPSBmYWxzZTsKKwlpbnQgdHJpZXMsIGNyX3RyaWVzOwor CXVpbnQzMl90IHRyYWluaW5nX3BhdHRlcm4gPSBEUF9UUkFJTklOR19QQVRURVJOXzI7CisKKwkv KgorCSAqIFRyYWluaW5nIFBhdHRlcm4gMyBmb3IgSEJSMiBvciAxLjIgZGV2aWNlcyB0aGF0IHN1 cHBvcnQgaXQuCisJICoKKwkgKiBJbnRlbCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IEhCUjIgYWxz byBzdXBwb3J0IFRQUzMuIFRQUzMgc3VwcG9ydCBpcworCSAqIGFsc28gbWFuZGF0b3J5IGZvciBk b3duc3RyZWFtIGRldmljZXMgdGhhdCBzdXBwb3J0IEhCUjIuCisJICoKKwkgKiBEdWUgdG8gV2FE aXNhYmxlSEJSMiBTS0wgPCBCMCBpcyB0aGUgb25seSBleGNlcHRpb24gd2hlcmUgVFBTMyBpcwor CSAqIHN1cHBvcnRlZCBidXQgc3RpbGwgbm90IGVuYWJsZWQuCisJICovCisJaWYgKGludGVsX2Rw X3NvdXJjZV9zdXBwb3J0c19oYnIyKGRldikgJiYKKwkgICAgZHJtX2RwX3RwczNfc3VwcG9ydGVk KGludGVsX2RwLT5kcGNkKSkKKwkJdHJhaW5pbmdfcGF0dGVybiA9IERQX1RSQUlOSU5HX1BBVFRF Uk5fMzsKKwllbHNlIGlmIChpbnRlbF9kcC0+bGlua19yYXRlID09IDU0MDAwMCkKKwkJRFJNX0VS Uk9SKCI1LjQgR2JwcyBsaW5rIHJhdGUgd2l0aG91dCBIQlIyL1RQUzMgc3VwcG9ydFxuIik7CisK KwkvKiBjaGFubmVsIGVxdWFsaXphdGlvbiAqLworCWlmICghaW50ZWxfZHBfc2V0X2xpbmtfdHJh aW4oaW50ZWxfZHAsCisJCQkJICAgICB0cmFpbmluZ19wYXR0ZXJuIHwKKwkJCQkgICAgIERQX0xJ TktfU0NSQU1CTElOR19ESVNBQkxFKSkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBzdGFydCBj aGFubmVsIGVxdWFsaXphdGlvblxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwl0cmllcyA9 IDA7CisJY3JfdHJpZXMgPSAwOworCWNoYW5uZWxfZXEgPSBmYWxzZTsKKwlmb3IgKDs7KSB7CisJ CXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07CisKKwkJaWYgKGNyX3Ry aWVzID4gNSkgeworCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gdHJhaW4gRFAsIGFib3J0aW5nXG4i KTsKKwkJCWJyZWFrOworCQl9CisKKwkJZHJtX2RwX2xpbmtfdHJhaW5fY2hhbm5lbF9lcV9kZWxh eShpbnRlbF9kcC0+ZHBjZCk7CisJCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKGludGVs X2RwLCBsaW5rX3N0YXR1cykpIHsKKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBsaW5rIHN0 YXR1c1xuIik7CisJCQlicmVhazsKKwkJfQorCisJCS8qIE1ha2Ugc3VyZSBjbG9jayBpcyBzdGls bCBvayAqLworCQlpZiAoIWRybV9kcF9jbG9ja19yZWNvdmVyeV9vayhsaW5rX3N0YXR1cywKKwkJ CQkJICAgICAgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7CisJCQlpbnRlbF9kcC0+dHJhaW5fc2V0 X3ZhbGlkID0gZmFsc2U7CisJCQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5 KGludGVsX2RwKTsKKwkJCWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLAorCQkJCQkJ dHJhaW5pbmdfcGF0dGVybiB8CisJCQkJCQlEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSk7CisJ CQljcl90cmllcysrOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoZHJtX2RwX2NoYW5uZWxf ZXFfb2sobGlua19zdGF0dXMsCisJCQkJCSBpbnRlbF9kcC0+bGFuZV9jb3VudCkpIHsKKwkJCWNo YW5uZWxfZXEgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBUcnkgNSB0aW1lcywgdGhl biB0cnkgY2xvY2sgcmVjb3ZlcnkgaWYgdGhhdCBmYWlscyAqLworCQlpZiAodHJpZXMgPiA1KSB7 CisJCQlpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkID0gZmFsc2U7CisJCQlpbnRlbF9kcF9saW5r X3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKKwkJCWludGVsX2RwX3NldF9saW5r X3RyYWluKGludGVsX2RwLAorCQkJCQkJdHJhaW5pbmdfcGF0dGVybiB8CisJCQkJCQlEUF9MSU5L X1NDUkFNQkxJTkdfRElTQUJMRSk7CisJCQl0cmllcyA9IDA7CisJCQljcl90cmllcysrOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKiBVcGRhdGUgdHJhaW5pbmcgc2V0IGFzIHJlcXVlc3RlZCBi eSB0YXJnZXQgKi8KKwkJaW50ZWxfZ2V0X2FkanVzdF90cmFpbihpbnRlbF9kcCwgbGlua19zdGF0 dXMpOworCQlpZiAoIWludGVsX2RwX3VwZGF0ZV9saW5rX3RyYWluKGludGVsX2RwKSkgeworCQkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gdXBkYXRlIGxpbmsgdHJhaW5pbmdcbiIpOworCQkJYnJlYWs7 CisJCX0KKwkJKyt0cmllczsKKwl9CisKKwlpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKGlu dGVsX2RwKTsKKworCWlmIChjaGFubmVsX2VxKSB7CisJCWludGVsX2RwLT50cmFpbl9zZXRfdmFs aWQgPSB0cnVlOworCQlEUk1fREVCVUdfS01TKCJDaGFubmVsIEVRIGRvbmUuIERQIFRyYWluaW5n IHN1Y2Nlc3NmdWxcbiIpOworCQlyZXR1cm4gdHJ1ZTsKKwl9IGVsc2UgeworCQlyZXR1cm4gZmFs c2U7CisJfQorfQorCit2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQoreworCWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLAorCQkJ CURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cit9CisKK3ZvaWQKK2ludGVsX2RwX3N0YXJ0 X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3sKKwl1aW50MzJfdCBEUCA9 IGludGVsX2RwLT5EUDsKKworCWlmICghaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNv dmVyeShpbnRlbF9kcCkgfHwKKwkgICAgIWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9l cXVhbGl6YXRpb24oaW50ZWxfZHApKQorCQlpbnRlbF9kcC0+RFAgPSBEUDsKK30KKworCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDZiYWM3OWIuLjI5YWU0YmIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCkBAIC0xMjEwLDYgKzEyMTAsMjIgQEAgdm9pZCBpbnRlbF9lZHBfZHJyc19p bnZhbGlkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB2b2lkIGludGVsX2VkcF9kcnJzX2Zs dXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwog dm9pZCBoc3dfZHBfc2V0X2RkaV9wbGxfc2VsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7CiAKK3ZvaWQKK2ludGVsX2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0ZXJu KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJICAgICAgIHVpbnQ4X3QgZHBfdHJhaW5f cGF0KTsKK3ZvaWQKK2ludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwordm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApOwordWludDhfdAoraW50ZWxfZHBfdm9sdGFnZV9tYXgoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCk7Cit1aW50OF90CitpbnRlbF9kcF9wcmVfZW1waGFzaXNfbWF4 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZyk7Cit2b2lk IGludGVsX2RwX2NvbXB1dGVfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcG9y dF9jbG9jaywKKwkJCSAgIHVpbnQ4X3QgKmxpbmtfYncsIHVpbnQ4X3QgKnJhdGVfc2VsZWN0KTsK K2Jvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Citib29sCitpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7CisKIC8qIGlu dGVsX2RwX21zdC5jICovCiBpbnQgaW50ZWxfZHBfbXN0X2VuY29kZXJfaW5pdChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgaW50IGNvbm5faWQpOwogdm9pZCBpbnRl bF9kcF9tc3RfZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0KTsKLS0gCjIuNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=