From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915: Cache the error string Date: Wed, 18 Jul 2018 11:36:50 +0100 Message-ID: <20180718103650.18423-1-chris@chris-wilson.co.uk> References: <20180718102916.8505-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 328416EAAD for ; Wed, 18 Jul 2018 10:37:07 +0000 (UTC) In-Reply-To: <20180718102916.8505-1-chris@chris-wilson.co.uk> 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 Q3VycmVudGx5LCB3ZSBjb252ZXJ0IHRoZSBlcnJvciBzdGF0ZSBpbnRvIGEgc3RyaW5nIGV2ZXJ5 IHRpbWUgd2UgcmVhZApmcm9tIHN5c2ZzIChhbmQgc3lzZnMgcmVhZHMgaW4gcGFnZSBzaXplICg0 S2lCKSBjaHVua3MpLiBXZSBkbyB0cnkgdG8Kd2luZG93IHRoZSBzdHJpbmcgYW5kIG9ubHkgY2Fw dHVyZSB0aGUgcG9ydGlvbiB0aGF0IGlzIGJlaW5nIHJlYWQsIGJ1dAp0aGF0IG1lYW5zIHRoYXQg d2UgbXVzdCBhbHdheXMgY29udmVydCB1cCB0byB0aGUgd2luZG93IHRvIGZpbmQgdGhlCnN0YXJ0 LiBGb3IgYSB2ZXJ5IGxhcmdlIGVycm9yIHN0YXRlIGJvcmRlcmluZyBvbiBFWEVDX09CSkVDVF9D QVBUVVJFCmFidXNlLCB0aGlzIGlzIG5vdGljZWFibGUgYXMgaXQgZGVncmFkZXMgdG8gTyhOXjIp IQoKQXMgd2UgZG8gbm90IGhhdmUgYSBjb252ZW5pZW50IGhvb2sgZm9yIHN5c2ZzIG9wZW4oKSwg YW5kIHdlIHdvdWxkIGxpa2UKdG8ga2VlcCB0aGUgbGF6eSBjb252ZXJzaW9uIGludG8gYSBzdHJp bmcsIGRvIHRoZSBjb252ZXJzaW9uIG9mIHRoZQp3aG9sZSBzdHJpbmcgb24gdGhlIGZpcnN0IHJl YWQgYW5kIGtlZXAgdGhlIHN0cmluZyB1bnRpbCB0aGUgZXJyb3Igc3RhdGUKaXMgZnJlZWQuCgp2 MjogRG9uJ3QgZG91YmxlIGFkdmFuY2Ugc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIKClJlcG9ydGVk LWJ5OiBKYXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5uZXQ+ClRlc3RjYXNlOiBpZ3Qv Z2VtX2V4ZWNfY2FwdHVyZS9tYW55KgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGlu dXguaW50ZWwuY29tPgpDYzogSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtzdHJhbmQubmV0Pgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgfCAgMjIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgfCAzMDkgKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggfCAgMjYgKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgIHwgIDIwICstCiA0IGZpbGVz IGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAyMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA1NDUwOWU0NGE4NTYuLjA5NTAyODg5NDA2NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTk0NCwzMCArOTQ0LDE4IEBAIHN0YXRp YyBzc2l6ZV90IGdwdV9zdGF0ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAq dWJ1ZiwKIAkJCSAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwb3MpCiB7CiAJc3RydWN0IGk5 MTVfZ3B1X3N0YXRlICplcnJvciA9IGZpbGUtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3Jfc3RhdGVfYnVmIHN0cjsKLQlzc2l6ZV90IHJldDsKLQlsb2ZmX3QgdG1wOworCWNv bnN0IGNoYXIgKmVycm9yX3N0cjsKKwlzaXplX3QgZXJyb3JfbGVuOworCWludCByZXQ7CiAKIAlp ZiAoIWVycm9yKQogCQlyZXR1cm4gMDsKIAotCXJldCA9IGk5MTVfZXJyb3Jfc3RhdGVfYnVmX2lu aXQoJnN0ciwgZXJyb3ItPmk5MTUsIGNvdW50LCAqcG9zKTsKKwlyZXQgPSBpOTE1X2Vycm9yX3N0 YXRlX3RvX3N0cihlcnJvciwgJmVycm9yX3N0ciwgJmVycm9yX2xlbik7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIAotCXJldCA9IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKCZzdHIsIGVycm9y KTsKLQlpZiAocmV0KQotCQlnb3RvIG91dDsKLQotCXRtcCA9IDA7Ci0JcmV0ID0gc2ltcGxlX3Jl YWRfZnJvbV9idWZmZXIodWJ1ZiwgY291bnQsICZ0bXAsIHN0ci5idWYsIHN0ci5ieXRlcyk7Ci0J aWYgKHJldCA8IDApCi0JCWdvdG8gb3V0OwotCi0JKnBvcyA9IHN0ci5zdGFydCArIHJldDsKLW91 dDoKLQlpOTE1X2Vycm9yX3N0YXRlX2J1Zl9yZWxlYXNlKCZzdHIpOwotCXJldHVybiByZXQ7CisJ cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVidWYsIGNvdW50LCBwb3MsIGVycm9yX3N0 ciwgZXJyb3JfbGVuKTsKIH0KIAogc3RhdGljIGludCBncHVfc3RhdGVfcmVsZWFzZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5jCmluZGV4IDhjODFjZjNhYTE4Mi4uNGU4ZjFiYmRiYjA3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTc2LDExMiArNzYsNzggQEAgc3RhdGljIGNvbnN0 IGNoYXIgKnB1cmdlYWJsZV9mbGFnKGludCBwdXJnZWFibGUpCiAJcmV0dXJuIHB1cmdlYWJsZSA/ ICIgcHVyZ2VhYmxlIiA6ICIiOwogfQogCi1zdGF0aWMgYm9vbCBfX2k5MTVfZXJyb3Jfb2soc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZSkKK3N0YXRpYyBib29sIF9faTkxNV9lcnJv cl9ncm93KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsIHNpemVfdCBsZW4pCiB7 Ci0KLQlpZiAoIWUtPmVyciAmJiBXQVJOKGUtPmJ5dGVzID4gKGUtPnNpemUgLSAxKSwgIm92ZXJm bG93IikpIHsKLQkJZS0+ZXJyID0gLUVOT1NQQzsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWlm IChlLT5ieXRlcyA9PSBlLT5zaXplIC0gMSB8fCBlLT5lcnIpCi0JCXJldHVybiBmYWxzZTsKLQot CXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBfX2k5MTVfZXJyb3Jfc2VlayhzdHJ1Y3Qg ZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAotCQkJICAgICAgdW5zaWduZWQgbGVuKQotewot CWlmIChlLT5wb3MgKyBsZW4gPD0gZS0+c3RhcnQpIHsKLQkJZS0+cG9zICs9IGxlbjsKKwlpZiAo IWxlbikKIAkJcmV0dXJuIGZhbHNlOwotCX0KLQotCS8qIEZpcnN0IHZzbnByaW50ZiBuZWVkcyB0 byBmaXQgaW4gaXRzIGVudGlyZXR5IGZvciBtZW1tb3ZlICovCi0JaWYgKGxlbiA+PSBlLT5zaXpl KSB7Ci0JCWUtPmVyciA9IC1FSU87Ci0JCXJldHVybiBmYWxzZTsKLQl9CiAKLQlyZXR1cm4gdHJ1 ZTsKLX0KKwlpZiAoZS0+Ynl0ZXMgKyBsZW4gKyAxID4gZS0+c2l6ZSkgeworCQlzaXplX3Qgc2l6 ZSA9IFBBR0VfQUxJR04oZS0+Ynl0ZXMgKyBsZW4gKyAxKTsKKwkJY2hhciAqYnVmOwogCi1zdGF0 aWMgdm9pZCBfX2k5MTVfZXJyb3JfYWR2YW5jZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICplLAotCQkJCSB1bnNpZ25lZCBsZW4pCi17Ci0JLyogSWYgdGhpcyBpcyBmaXJzdCBwcmlu dGYgaW4gdGhpcyB3aW5kb3csIGFkanVzdCBpdCBzbyB0aGF0Ci0JICogc3RhcnQgcG9zaXRpb24g bWF0Y2hlcyBzdGFydCBvZiB0aGUgYnVmZmVyCi0JICovCisJCUdFTV9CVUdfT04oc2l6ZSA8PSBl LT5zaXplKTsKIAotCWlmIChlLT5wb3MgPCBlLT5zdGFydCkgewotCQljb25zdCBzaXplX3Qgb2Zm ID0gZS0+c3RhcnQgLSBlLT5wb3M7Ci0KLQkJLyogU2hvdWxkIG5vdCBoYXBwZW4gYnV0IGJlIHBh cmFub2lkICovCi0JCWlmIChvZmYgPiBsZW4gfHwgZS0+Ynl0ZXMpIHsKLQkJCWUtPmVyciA9IC1F SU87Ci0JCQlyZXR1cm47CisJCWJ1ZiA9IGt2bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCQlp ZiAoIWJ1ZikgeworCQkJZS0+ZXJyID0gLUVOT01FTTsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQog Ci0JCW1lbW1vdmUoZS0+YnVmLCBlLT5idWYgKyBvZmYsIGxlbiAtIG9mZik7Ci0JCWUtPmJ5dGVz ID0gbGVuIC0gb2ZmOwotCQllLT5wb3MgPSBlLT5zdGFydDsKLQkJcmV0dXJuOworCQlHRU1fQlVH X09OKGUtPmJ5dGVzID4gc2l6ZSk7CisJCW1lbWNweShidWYsIGUtPmJ1ZiwgZS0+Ynl0ZXMpOwor CQlrdmZyZWUoZS0+YnVmKTsKKworCQllLT5idWYgPSBidWY7CisJCWUtPnNpemUgPSBzaXplOwog CX0KIAotCWUtPmJ5dGVzICs9IGxlbjsKLQllLT5wb3MgKz0gbGVuOworCXJldHVybiB0cnVlOwog fQogCiBfX3ByaW50ZigyLCAwKQogc3RhdGljIHZvaWQgaTkxNV9lcnJvcl92cHJpbnRmKHN0cnVj dCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCi0JCQkgICAgICAgY29uc3QgY2hhciAqZiwg dmFfbGlzdCBhcmdzKQorCQkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQog ewotCXVuc2lnbmVkIGxlbjsKKwl2YV9saXN0IGFwOworCWludCBsZW47CiAKLQlpZiAoIV9faTkx NV9lcnJvcl9vayhlKSkKKwlpZiAoZS0+ZXJyKQogCQlyZXR1cm47CiAKLQkvKiBTZWVrIHRoZSBm aXJzdCBwcmludGYgd2hpY2ggaXMgaGl0cyBzdGFydCBwb3NpdGlvbiAqLwotCWlmIChlLT5wb3Mg PCBlLT5zdGFydCkgewotCQl2YV9saXN0IHRtcDsKLQotCQl2YV9jb3B5KHRtcCwgYXJncyk7Ci0J CWxlbiA9IHZzbnByaW50ZihOVUxMLCAwLCBmLCB0bXApOwotCQl2YV9lbmQodG1wKTsKLQotCQlp ZiAoIV9faTkxNV9lcnJvcl9zZWVrKGUsIGxlbikpCi0JCQlyZXR1cm47CisJdmFfY29weShhcCwg YXJncyk7CisJbGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgYXApOworCXZhX2VuZChhcCk7 CisJaWYgKGxlbiA8PSAwKSB7CisJCWUtPmVyciA9IGxlbjsKKwkJcmV0dXJuOwogCX0KIAotCWxl biA9IHZzbnByaW50ZihlLT5idWYgKyBlLT5ieXRlcywgZS0+c2l6ZSAtIGUtPmJ5dGVzLCBmLCBh cmdzKTsKLQlpZiAobGVuID49IGUtPnNpemUgLSBlLT5ieXRlcykKLQkJbGVuID0gZS0+c2l6ZSAt IGUtPmJ5dGVzIC0gMTsKKwlpZiAoIV9faTkxNV9lcnJvcl9ncm93KGUsIGxlbikpCisJCXJldHVy bjsKIAotCV9faTkxNV9lcnJvcl9hZHZhbmNlKGUsIGxlbik7CisJR0VNX0JVR19PTihlLT5ieXRl cyA+PSBlLT5zaXplKTsKKwlsZW4gPSB2c2NucHJpbnRmKGUtPmJ1ZiArIGUtPmJ5dGVzLCBlLT5z aXplIC0gZS0+Ynl0ZXMsIGZtdCwgYXJncyk7CisJaWYgKGxlbiA8IDApIHsKKwkJZS0+ZXJyID0g bGVuOworCQlyZXR1cm47CisJfQorCWUtPmJ5dGVzICs9IGxlbjsKIH0KIAotc3RhdGljIHZvaWQg aTkxNV9lcnJvcl9wdXRzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCi0JCQkg ICAgY29uc3QgY2hhciAqc3RyKQorc3RhdGljIHZvaWQgaTkxNV9lcnJvcl9wdXRzKHN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsIGNvbnN0IGNoYXIgKnN0cikKIHsKIAl1bnNpZ25l ZCBsZW47CiAKLQlpZiAoIV9faTkxNV9lcnJvcl9vayhlKSkKKwlpZiAoZS0+ZXJyIHx8ICFzdHIp CiAJCXJldHVybjsKIAogCWxlbiA9IHN0cmxlbihzdHIpOworCWlmICghX19pOTE1X2Vycm9yX2dy b3coZSwgbGVuKSkKKwkJcmV0dXJuOwogCi0JLyogU2VlayB0aGUgZmlyc3QgcHJpbnRmIHdoaWNo IGlzIGhpdHMgc3RhcnQgcG9zaXRpb24gKi8KLQlpZiAoZS0+cG9zIDwgZS0+c3RhcnQpIHsKLQkJ aWYgKCFfX2k5MTVfZXJyb3Jfc2VlayhlLCBsZW4pKQotCQkJcmV0dXJuOwotCX0KLQotCWlmIChs ZW4gPj0gZS0+c2l6ZSAtIGUtPmJ5dGVzKQotCQlsZW4gPSBlLT5zaXplIC0gZS0+Ynl0ZXMgLSAx OworCUdFTV9CVUdfT04oZS0+Ynl0ZXMgKyBsZW4gPiBlLT5zaXplKTsKIAltZW1jcHkoZS0+YnVm ICsgZS0+Ynl0ZXMsIHN0ciwgbGVuKTsKLQotCV9faTkxNV9lcnJvcl9hZHZhbmNlKGUsIGxlbik7 CisJZS0+Ynl0ZXMgKz0gbGVuOwogfQogCiAjZGVmaW5lIGVycl9wcmludGYoZSwgLi4uKSBpOTE1 X2Vycm9yX3ByaW50ZihlLCBfX1ZBX0FSR1NfXykKQEAgLTI1OCw2ICsyMjQsOCBAQCBzdGF0aWMg aW50IGNvbXByZXNzX3BhZ2Uoc3RydWN0IGNvbXByZXNzICpjLAogCiAJCWlmICh6bGliX2RlZmxh dGUoenN0cmVhbSwgWl9TWU5DX0ZMVVNIKSAhPSBaX09LKQogCQkJcmV0dXJuIC1FSU87CisKKwkJ dG91Y2hfbm1pX3dhdGNoZG9nKCk7CiAJfSB3aGlsZSAoenN0cmVhbS0+YXZhaWxfaW4pOwogCiAJ LyogRmFsbGJhY2sgdG8gdW5jb21wcmVzc2VkIGlmIHdlIGluY3JlYXNlIHNpemU/ICovCkBAIC02 MjMsMzMgKzU5MSw0MyBAQCBzdGF0aWMgdm9pZCBlcnJfcHJpbnRfdWMoc3RydWN0IGRybV9pOTE1 X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAlwcmludF9lcnJvcl9vYmoobSwgTlVMTCwgIkd1QyBsb2cg YnVmZmVyIiwgZXJyb3JfdWMtPmd1Y19sb2cpOwogfQogCi1pbnQgaTkxNV9lcnJvcl9zdGF0ZV90 b19zdHIoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKLQkJCSAgICBjb25zdCBz dHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQoraW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3Ry KHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCisJCQkgICAgY29uc3QgY2hhciAqKnN0ciwg c2l6ZV90ICpsZW4pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+ aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmIG07CiAJc3RydWN0IGRybV9p OTE1X2Vycm9yX29iamVjdCAqb2JqOwogCXN0cnVjdCB0aW1lc3BlYzY0IHRzOwogCWludCBpLCBq OwogCiAJaWYgKCFlcnJvcikgewotCQllcnJfcHJpbnRmKG0sICJObyBlcnJvciBzdGF0ZSBjb2xs ZWN0ZWRcbiIpOworCQkqc3RyID0gIk5vIGVycm9yIHN0YXRlIGNvbGxlY3RlZFxuIjsKKwkJKmxl biA9IHN0cmxlbigqc3RyKTsKIAkJcmV0dXJuIDA7CiAJfQogCisJKnN0ciA9IFJFQURfT05DRShl cnJvci0+YnVmKTsKKwlpZiAoKnN0cikgeworCQkqbGVuID0gZXJyb3ItPmJ5dGVzOworCQlyZXR1 cm4gMDsKKwl9CisKKwltZW1zZXQoJm0sIDAsIHNpemVvZihtKSk7CisJbS5pOTE1ID0gZXJyb3It Pmk5MTU7CisKIAlpZiAoKmVycm9yLT5lcnJvcl9tc2cpCi0JCWVycl9wcmludGYobSwgIiVzXG4i LCBlcnJvci0+ZXJyb3JfbXNnKTsKLQllcnJfcHJpbnRmKG0sICJLZXJuZWw6ICIgVVRTX1JFTEVB U0UgIlxuIik7CisJCWVycl9wcmludGYoJm0sICIlc1xuIiwgZXJyb3ItPmVycm9yX21zZyk7CisJ ZXJyX3ByaW50ZigmbSwgIktlcm5lbDogIiBVVFNfUkVMRUFTRSAiXG4iKTsKIAl0cyA9IGt0aW1l X3RvX3RpbWVzcGVjNjQoZXJyb3ItPnRpbWUpOwotCWVycl9wcmludGYobSwgIlRpbWU6ICVsbGQg cyAlbGQgdXNcbiIsCisJZXJyX3ByaW50ZigmbSwgIlRpbWU6ICVsbGQgcyAlbGQgdXNcbiIsCiAJ CSAgIChzNjQpdHMudHZfc2VjLCB0cy50dl9uc2VjIC8gTlNFQ19QRVJfVVNFQyk7CiAJdHMgPSBr dGltZV90b190aW1lc3BlYzY0KGVycm9yLT5ib290dGltZSk7Ci0JZXJyX3ByaW50ZihtLCAiQm9v dHRpbWU6ICVsbGQgcyAlbGQgdXNcbiIsCisJZXJyX3ByaW50ZigmbSwgIkJvb3R0aW1lOiAlbGxk IHMgJWxkIHVzXG4iLAogCQkgICAoczY0KXRzLnR2X3NlYywgdHMudHZfbnNlYyAvIE5TRUNfUEVS X1VTRUMpOwogCXRzID0ga3RpbWVfdG9fdGltZXNwZWM2NChlcnJvci0+dXB0aW1lKTsKLQllcnJf cHJpbnRmKG0sICJVcHRpbWU6ICVsbGQgcyAlbGQgdXNcbiIsCisJZXJyX3ByaW50ZigmbSwgIlVw dGltZTogJWxsZCBzICVsZCB1c1xuIiwKIAkJICAgKHM2NCl0cy50dl9zZWMsIHRzLnR2X25zZWMg LyBOU0VDX1BFUl9VU0VDKTsKLQllcnJfcHJpbnRmKG0sICJFcG9jaDogJWx1IGppZmZpZXMgKCV1 IEhaKVxuIiwgZXJyb3ItPmVwb2NoLCBIWik7Ci0JZXJyX3ByaW50ZihtLCAiQ2FwdHVyZTogJWx1 IGppZmZpZXM7ICVkIG1zIGFnbywgJWQgbXMgYWZ0ZXIgZXBvY2hcbiIsCisJZXJyX3ByaW50Zigm bSwgIkVwb2NoOiAlbHUgamlmZmllcyAoJXUgSFopXG4iLCBlcnJvci0+ZXBvY2gsIEhaKTsKKwll cnJfcHJpbnRmKCZtLCAiQ2FwdHVyZTogJWx1IGppZmZpZXM7ICVkIG1zIGFnbywgJWQgbXMgYWZ0 ZXIgZXBvY2hcbiIsCiAJCSAgIGVycm9yLT5jYXB0dXJlLAogCQkgICBqaWZmaWVzX3RvX21zZWNz KGppZmZpZXMgLSBlcnJvci0+Y2FwdHVyZSksCiAJCSAgIGppZmZpZXNfdG9fbXNlY3MoZXJyb3It PmNhcHR1cmUgLSBlcnJvci0+ZXBvY2gpKTsKQEAgLTY1Nyw2MyArNjM1LDYzIEBAIGludCBpOTE1 X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAog CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5lbmdpbmUpOyBpKyspIHsKIAkJaWYg KGVycm9yLT5lbmdpbmVbaV0uaGFuZ2NoZWNrX3N0YWxsZWQgJiYKIAkJICAgIGVycm9yLT5lbmdp bmVbaV0uY29udGV4dC5waWQpIHsKLQkJCWVycl9wcmludGYobSwgIkFjdGl2ZSBwcm9jZXNzIChv biByaW5nICVzKTogJXMgWyVkXSwgc2NvcmUgJWQlc1xuIiwKLQkJCQkgICBlbmdpbmVfbmFtZSht LT5pOTE1LCBpKSwKKwkJCWVycl9wcmludGYoJm0sICJBY3RpdmUgcHJvY2VzcyAob24gcmluZyAl cyk6ICVzIFslZF0sIHNjb3JlICVkJXNcbiIsCisJCQkJICAgZW5naW5lX25hbWUobS5pOTE1LCBp KSwKIAkJCQkgICBlcnJvci0+ZW5naW5lW2ldLmNvbnRleHQuY29tbSwKIAkJCQkgICBlcnJvci0+ ZW5naW5lW2ldLmNvbnRleHQucGlkLAogCQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5i YW5fc2NvcmUsCiAJCQkJICAgYmFubmFibGUoJmVycm9yLT5lbmdpbmVbaV0uY29udGV4dCkpOwog CQl9CiAJfQotCWVycl9wcmludGYobSwgIlJlc2V0IGNvdW50OiAldVxuIiwgZXJyb3ItPnJlc2V0 X2NvdW50KTsKLQllcnJfcHJpbnRmKG0sICJTdXNwZW5kIGNvdW50OiAldVxuIiwgZXJyb3ItPnN1 c3BlbmRfY291bnQpOwotCWVycl9wcmludGYobSwgIlBsYXRmb3JtOiAlc1xuIiwgaW50ZWxfcGxh dGZvcm1fbmFtZShlcnJvci0+ZGV2aWNlX2luZm8ucGxhdGZvcm0pKTsKLQllcnJfcHJpbnRfcGNp aWQobSwgZXJyb3ItPmk5MTUpOworCWVycl9wcmludGYoJm0sICJSZXNldCBjb3VudDogJXVcbiIs IGVycm9yLT5yZXNldF9jb3VudCk7CisJZXJyX3ByaW50ZigmbSwgIlN1c3BlbmQgY291bnQ6ICV1 XG4iLCBlcnJvci0+c3VzcGVuZF9jb3VudCk7CisJZXJyX3ByaW50ZigmbSwgIlBsYXRmb3JtOiAl c1xuIiwgaW50ZWxfcGxhdGZvcm1fbmFtZShlcnJvci0+ZGV2aWNlX2luZm8ucGxhdGZvcm0pKTsK KwllcnJfcHJpbnRfcGNpaWQoJm0sIG0uaTkxNSk7CiAKLQllcnJfcHJpbnRmKG0sICJJT01NVSBl bmFibGVkPzogJWRcbiIsIGVycm9yLT5pb21tdSk7CisJZXJyX3ByaW50ZigmbSwgIklPTU1VIGVu YWJsZWQ/OiAlZFxuIiwgZXJyb3ItPmlvbW11KTsKIAotCWlmIChIQVNfQ1NSKGRldl9wcml2KSkg ewotCQlzdHJ1Y3QgaW50ZWxfY3NyICpjc3IgPSAmZGV2X3ByaXYtPmNzcjsKKwlpZiAoSEFTX0NT UihtLmk5MTUpKSB7CisJCXN0cnVjdCBpbnRlbF9jc3IgKmNzciA9ICZtLmk5MTUtPmNzcjsKIAot CQllcnJfcHJpbnRmKG0sICJETUMgbG9hZGVkOiAlc1xuIiwKKwkJZXJyX3ByaW50ZigmbSwgIkRN QyBsb2FkZWQ6ICVzXG4iLAogCQkJICAgeWVzbm8oY3NyLT5kbWNfcGF5bG9hZCAhPSBOVUxMKSk7 Ci0JCWVycl9wcmludGYobSwgIkRNQyBmdyB2ZXJzaW9uOiAlZC4lZFxuIiwKKwkJZXJyX3ByaW50 ZigmbSwgIkRNQyBmdyB2ZXJzaW9uOiAlZC4lZFxuIiwKIAkJCSAgIENTUl9WRVJTSU9OX01BSk9S KGNzci0+dmVyc2lvbiksCiAJCQkgICBDU1JfVkVSU0lPTl9NSU5PUihjc3ItPnZlcnNpb24pKTsK IAl9CiAKLQllcnJfcHJpbnRmKG0sICJHVCBhd2FrZTogJXNcbiIsIHllc25vKGVycm9yLT5hd2Fr ZSkpOwotCWVycl9wcmludGYobSwgIlJQTSB3YWtlbG9jazogJXNcbiIsIHllc25vKGVycm9yLT53 YWtlbG9jaykpOwotCWVycl9wcmludGYobSwgIlBNIHN1c3BlbmRlZDogJXNcbiIsIHllc25vKGVy cm9yLT5zdXNwZW5kZWQpKTsKLQllcnJfcHJpbnRmKG0sICJFSVI6IDB4JTA4eFxuIiwgZXJyb3It PmVpcik7Ci0JZXJyX3ByaW50ZihtLCAiSUVSOiAweCUwOHhcbiIsIGVycm9yLT5pZXIpOworCWVy cl9wcmludGYoJm0sICJHVCBhd2FrZTogJXNcbiIsIHllc25vKGVycm9yLT5hd2FrZSkpOworCWVy cl9wcmludGYoJm0sICJSUE0gd2FrZWxvY2s6ICVzXG4iLCB5ZXNubyhlcnJvci0+d2FrZWxvY2sp KTsKKwllcnJfcHJpbnRmKCZtLCAiUE0gc3VzcGVuZGVkOiAlc1xuIiwgeWVzbm8oZXJyb3ItPnN1 c3BlbmRlZCkpOworCWVycl9wcmludGYoJm0sICJFSVI6IDB4JTA4eFxuIiwgZXJyb3ItPmVpcik7 CisJZXJyX3ByaW50ZigmbSwgIklFUjogMHglMDh4XG4iLCBlcnJvci0+aWVyKTsKIAlmb3IgKGkg PSAwOyBpIDwgZXJyb3ItPm5ndGllcjsgaSsrKQotCQllcnJfcHJpbnRmKG0sICJHVElFUlslZF06 IDB4JTA4eFxuIiwgaSwgZXJyb3ItPmd0aWVyW2ldKTsKLQllcnJfcHJpbnRmKG0sICJQR1RCTF9F UjogMHglMDh4XG4iLCBlcnJvci0+cGd0YmxfZXIpOwotCWVycl9wcmludGYobSwgIkZPUkNFV0FL RTogMHglMDh4XG4iLCBlcnJvci0+Zm9yY2V3YWtlKTsKLQllcnJfcHJpbnRmKG0sICJERVJSTVI6 IDB4JTA4eFxuIiwgZXJyb3ItPmRlcnJtcik7Ci0JZXJyX3ByaW50ZihtLCAiQ0NJRDogMHglMDh4 XG4iLCBlcnJvci0+Y2NpZCk7Ci0JZXJyX3ByaW50ZihtLCAiTWlzc2VkIGludGVycnVwdHM6IDB4 JTA4bHhcbiIsIGRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7CisJCWVycl9w cmludGYoJm0sICJHVElFUlslZF06IDB4JTA4eFxuIiwgaSwgZXJyb3ItPmd0aWVyW2ldKTsKKwll cnJfcHJpbnRmKCZtLCAiUEdUQkxfRVI6IDB4JTA4eFxuIiwgZXJyb3ItPnBndGJsX2VyKTsKKwll cnJfcHJpbnRmKCZtLCAiRk9SQ0VXQUtFOiAweCUwOHhcbiIsIGVycm9yLT5mb3JjZXdha2UpOwor CWVycl9wcmludGYoJm0sICJERVJSTVI6IDB4JTA4eFxuIiwgZXJyb3ItPmRlcnJtcik7CisJZXJy X3ByaW50ZigmbSwgIkNDSUQ6IDB4JTA4eFxuIiwgZXJyb3ItPmNjaWQpOworCWVycl9wcmludGYo Jm0sICJNaXNzZWQgaW50ZXJydXB0czogMHglMDhseFxuIiwgbS5pOTE1LT5ncHVfZXJyb3IubWlz c2VkX2lycV9yaW5ncyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZXJyb3ItPm5mZW5jZTsgaSsrKQot CQllcnJfcHJpbnRmKG0sICIgIGZlbmNlWyVkXSA9ICUwOGxseFxuIiwgaSwgZXJyb3ItPmZlbmNl W2ldKTsKKwkJZXJyX3ByaW50ZigmbSwgIiAgZmVuY2VbJWRdID0gJTA4bGx4XG4iLCBpLCBlcnJv ci0+ZmVuY2VbaV0pOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewotCQllcnJf cHJpbnRmKG0sICJFUlJPUjogMHglMDh4XG4iLCBlcnJvci0+ZXJyb3IpOworCWlmIChJTlRFTF9H RU4obS5pOTE1KSA+PSA2KSB7CisJCWVycl9wcmludGYoJm0sICJFUlJPUjogMHglMDh4XG4iLCBl cnJvci0+ZXJyb3IpOwogCi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCi0JCQllcnJf cHJpbnRmKG0sICJGQVVMVF9UTEJfREFUQTogMHglMDh4IDB4JTA4eFxuIiwKKwkJaWYgKElOVEVM X0dFTihtLmk5MTUpID49IDgpCisJCQllcnJfcHJpbnRmKCZtLCAiRkFVTFRfVExCX0RBVEE6IDB4 JTA4eCAweCUwOHhcbiIsCiAJCQkJICAgZXJyb3ItPmZhdWx0X2RhdGExLCBlcnJvci0+ZmF1bHRf ZGF0YTApOwogCi0JCWVycl9wcmludGYobSwgIkRPTkVfUkVHOiAweCUwOHhcbiIsIGVycm9yLT5k b25lX3JlZyk7CisJCWVycl9wcmludGYoJm0sICJET05FX1JFRzogMHglMDh4XG4iLCBlcnJvci0+ ZG9uZV9yZWcpOwogCX0KIAotCWlmIChJU19HRU43KGRldl9wcml2KSkKLQkJZXJyX3ByaW50Ziht LCAiRVJSX0lOVDogMHglMDh4XG4iLCBlcnJvci0+ZXJyX2ludCk7CisJaWYgKElTX0dFTjcobS5p OTE1KSkKKwkJZXJyX3ByaW50ZigmbSwgIkVSUl9JTlQ6IDB4JTA4eFxuIiwgZXJyb3ItPmVycl9p bnQpOwogCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7IGkrKykg ewogCQlpZiAoZXJyb3ItPmVuZ2luZVtpXS5lbmdpbmVfaWQgIT0gLTEpCi0JCQllcnJvcl9wcmlu dF9lbmdpbmUobSwgJmVycm9yLT5lbmdpbmVbaV0sIGVycm9yLT5lcG9jaCk7CisJCQllcnJvcl9w cmludF9lbmdpbmUoJm0sICZlcnJvci0+ZW5naW5lW2ldLCBlcnJvci0+ZXBvY2gpOwogCX0KIAog CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5hY3RpdmVfdm0pOyBpKyspIHsKQEAg LTczMCwxNiArNzA4LDE2IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCiAJCQlsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxl biwgc2l6ZW9mKGJ1ZiksICIlcyVzIiwKIAkJCQkJIGZpcnN0ID8gIiIgOiAiLCAiLAotCQkJCQkg ZGV2X3ByaXYtPmVuZ2luZVtqXS0+bmFtZSk7CisJCQkJCSBtLmk5MTUtPmVuZ2luZVtqXS0+bmFt ZSk7CiAJCQlmaXJzdCA9IDA7CiAJCX0KIAkJc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1 ZiksICIpIik7Ci0JCXByaW50X2Vycm9yX2J1ZmZlcnMobSwgYnVmLAorCQlwcmludF9lcnJvcl9i dWZmZXJzKCZtLCBidWYsCiAJCQkJICAgIGVycm9yLT5hY3RpdmVfYm9baV0sCiAJCQkJICAgIGVy cm9yLT5hY3RpdmVfYm9fY291bnRbaV0pOwogCX0KIAotCXByaW50X2Vycm9yX2J1ZmZlcnMobSwg IlBpbm5lZCAoZ2xvYmFsKSIsCisJcHJpbnRfZXJyb3JfYnVmZmVycygmbSwgIlBpbm5lZCAoZ2xv YmFsKSIsCiAJCQkgICAgZXJyb3ItPnBpbm5lZF9ibywKIAkJCSAgICBlcnJvci0+cGlubmVkX2Jv X2NvdW50KTsKIApAQCAtNzQ4LDExNCArNzI2LDkwIEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3Rv X3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCiAJCW9iaiA9IGVlLT5i YXRjaGJ1ZmZlcjsKIAkJaWYgKG9iaikgewotCQkJZXJyX3B1dHMobSwgZGV2X3ByaXYtPmVuZ2lu ZVtpXS0+bmFtZSk7CisJCQllcnJfcHV0cygmbSwgbS5pOTE1LT5lbmdpbmVbaV0tPm5hbWUpOwog CQkJaWYgKGVlLT5jb250ZXh0LnBpZCkKLQkJCQllcnJfcHJpbnRmKG0sICIgKHN1Ym1pdHRlZCBi eSAlcyBbJWRdLCBjdHggJWQgWyVkXSwgc2NvcmUgJWQlcykiLAorCQkJCWVycl9wcmludGYoJm0s ICIgKHN1Ym1pdHRlZCBieSAlcyBbJWRdLCBjdHggJWQgWyVkXSwgc2NvcmUgJWQlcykiLAogCQkJ CQkgICBlZS0+Y29udGV4dC5jb21tLAogCQkJCQkgICBlZS0+Y29udGV4dC5waWQsCiAJCQkJCSAg IGVlLT5jb250ZXh0LmhhbmRsZSwKIAkJCQkJICAgZWUtPmNvbnRleHQuaHdfaWQsCiAJCQkJCSAg IGVlLT5jb250ZXh0LmJhbl9zY29yZSwKIAkJCQkJICAgYmFubmFibGUoJmVlLT5jb250ZXh0KSk7 Ci0JCQllcnJfcHJpbnRmKG0sICIgLS0tIGd0dF9vZmZzZXQgPSAweCUwOHggJTA4eFxuIiwKKwkJ CWVycl9wcmludGYoJm0sICIgLS0tIGd0dF9vZmZzZXQgPSAweCUwOHggJTA4eFxuIiwKIAkJCQkg ICB1cHBlcl8zMl9iaXRzKG9iai0+Z3R0X29mZnNldCksCiAJCQkJICAgbG93ZXJfMzJfYml0cyhv YmotPmd0dF9vZmZzZXQpKTsKLQkJCXByaW50X2Vycm9yX29iaihtLCBkZXZfcHJpdi0+ZW5naW5l W2ldLCBOVUxMLCBvYmopOworCQkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtp XSwgTlVMTCwgb2JqKTsKIAkJfQogCiAJCWZvciAoaiA9IDA7IGogPCBlZS0+dXNlcl9ib19jb3Vu dDsgaisrKQotCQkJcHJpbnRfZXJyb3Jfb2JqKG0sIGRldl9wcml2LT5lbmdpbmVbaV0sCisJCQlw cmludF9lcnJvcl9vYmooJm0sIG0uaTkxNS0+ZW5naW5lW2ldLAogCQkJCQkidXNlciIsIGVlLT51 c2VyX2JvW2pdKTsKIAogCQlpZiAoZWUtPm51bV9yZXF1ZXN0cykgewotCQkJZXJyX3ByaW50Ziht LCAiJXMgLS0tICVkIHJlcXVlc3RzXG4iLAotCQkJCSAgIGRldl9wcml2LT5lbmdpbmVbaV0tPm5h bWUsCisJCQllcnJfcHJpbnRmKCZtLCAiJXMgLS0tICVkIHJlcXVlc3RzXG4iLAorCQkJCSAgIG0u aTkxNS0+ZW5naW5lW2ldLT5uYW1lLAogCQkJCSAgIGVlLT5udW1fcmVxdWVzdHMpOwogCQkJZm9y IChqID0gMDsgaiA8IGVlLT5udW1fcmVxdWVzdHM7IGorKykKLQkJCQllcnJvcl9wcmludF9yZXF1 ZXN0KG0sICIgIiwKKwkJCQllcnJvcl9wcmludF9yZXF1ZXN0KCZtLCAiICIsCiAJCQkJCQkgICAg JmVlLT5yZXF1ZXN0c1tqXSwKIAkJCQkJCSAgICBlcnJvci0+ZXBvY2gpOwogCQl9CiAKIAkJaWYg KElTX0VSUihlZS0+d2FpdGVycykpIHsKLQkJCWVycl9wcmludGYobSwgIiVzIC0tLSA/IHdhaXRl cnMgW3VuYWJsZSB0byBhY3F1aXJlIHNwaW5sb2NrXVxuIiwKLQkJCQkgICBkZXZfcHJpdi0+ZW5n aW5lW2ldLT5uYW1lKTsKKwkJCWVycl9wcmludGYoJm0sICIlcyAtLS0gPyB3YWl0ZXJzIFt1bmFi bGUgdG8gYWNxdWlyZSBzcGlubG9ja11cbiIsCisJCQkJICAgbS5pOTE1LT5lbmdpbmVbaV0tPm5h bWUpOwogCQl9IGVsc2UgaWYgKGVlLT5udW1fd2FpdGVycykgewotCQkJZXJyX3ByaW50ZihtLCAi JXMgLS0tICVkIHdhaXRlcnNcbiIsCi0JCQkJICAgZGV2X3ByaXYtPmVuZ2luZVtpXS0+bmFtZSwK KwkJCWVycl9wcmludGYoJm0sICIlcyAtLS0gJWQgd2FpdGVyc1xuIiwKKwkJCQkgICBtLmk5MTUt PmVuZ2luZVtpXS0+bmFtZSwKIAkJCQkgICBlZS0+bnVtX3dhaXRlcnMpOwogCQkJZm9yIChqID0g MDsgaiA8IGVlLT5udW1fd2FpdGVyczsgaisrKSB7Ci0JCQkJZXJyX3ByaW50ZihtLCAiIHNlcW5v IDB4JTA4eCBmb3IgJXMgWyVkXVxuIiwKKwkJCQllcnJfcHJpbnRmKCZtLCAiIHNlcW5vIDB4JTA4 eCBmb3IgJXMgWyVkXVxuIiwKIAkJCQkJICAgZWUtPndhaXRlcnNbal0uc2Vxbm8sCiAJCQkJCSAg IGVlLT53YWl0ZXJzW2pdLmNvbW0sCiAJCQkJCSAgIGVlLT53YWl0ZXJzW2pdLnBpZCk7CiAJCQl9 CiAJCX0KIAotCQlwcmludF9lcnJvcl9vYmoobSwgZGV2X3ByaXYtPmVuZ2luZVtpXSwKKwkJcHJp bnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtpXSwKIAkJCQkicmluZ2J1ZmZlciIsIGVl LT5yaW5nYnVmZmVyKTsKIAotCQlwcmludF9lcnJvcl9vYmoobSwgZGV2X3ByaXYtPmVuZ2luZVtp XSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtpXSwKIAkJCQkiSFcgU3Rh dHVzIiwgZWUtPmh3c19wYWdlKTsKIAotCQlwcmludF9lcnJvcl9vYmoobSwgZGV2X3ByaXYtPmVu Z2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtpXSwKIAkJCQki SFcgY29udGV4dCIsIGVlLT5jdHgpOwogCi0JCXByaW50X2Vycm9yX29iaihtLCBkZXZfcHJpdi0+ ZW5naW5lW2ldLAorCQlwcmludF9lcnJvcl9vYmooJm0sIG0uaTkxNS0+ZW5naW5lW2ldLAogCQkJ CSJXQSBjb250ZXh0IiwgZWUtPndhX2N0eCk7CiAKLQkJcHJpbnRfZXJyb3Jfb2JqKG0sIGRldl9w cml2LT5lbmdpbmVbaV0sCisJCXByaW50X2Vycm9yX29iaigmbSwgbS5pOTE1LT5lbmdpbmVbaV0s CiAJCQkJIldBIGJhdGNoYnVmZmVyIiwgZWUtPndhX2JhdGNoYnVmZmVyKTsKIAotCQlwcmludF9l cnJvcl9vYmoobSwgZGV2X3ByaXYtPmVuZ2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBt Lmk5MTUtPmVuZ2luZVtpXSwKIAkJCQkiTlVMTCBjb250ZXh0IiwgZWUtPmRlZmF1bHRfc3RhdGUp OwogCX0KIAogCWlmIChlcnJvci0+b3ZlcmxheSkKLQkJaW50ZWxfb3ZlcmxheV9wcmludF9lcnJv cl9zdGF0ZShtLCBlcnJvci0+b3ZlcmxheSk7CisJCWludGVsX292ZXJsYXlfcHJpbnRfZXJyb3Jf c3RhdGUoJm0sIGVycm9yLT5vdmVybGF5KTsKIAogCWlmIChlcnJvci0+ZGlzcGxheSkKLQkJaW50 ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShtLCBlcnJvci0+ZGlzcGxheSk7Ci0KLQllcnJf cHJpbnRfY2FwYWJpbGl0aWVzKG0sICZlcnJvci0+ZGV2aWNlX2luZm8sICZlcnJvci0+ZHJpdmVy X2NhcHMpOwotCWVycl9wcmludF9wYXJhbXMobSwgJmVycm9yLT5wYXJhbXMpOwotCWVycl9wcmlu dF91YyhtLCAmZXJyb3ItPnVjKTsKKwkJaW50ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZSgm bSwgZXJyb3ItPmRpc3BsYXkpOwogCi0JaWYgKG0tPmJ5dGVzID09IDAgJiYgbS0+ZXJyKQotCQly ZXR1cm4gbS0+ZXJyOwotCi0JcmV0dXJuIDA7Ci19Ci0KLWludCBpOTE1X2Vycm9yX3N0YXRlX2J1 Zl9pbml0KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmVidWYsCi0JCQkgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKLQkJCSAgICAgIHNpemVfdCBjb3VudCwgbG9m Zl90IHBvcykKLXsKLQltZW1zZXQoZWJ1ZiwgMCwgc2l6ZW9mKCplYnVmKSk7Ci0JZWJ1Zi0+aTkx NSA9IGk5MTU7CisJZXJyX3ByaW50X2NhcGFiaWxpdGllcygmbSwgJmVycm9yLT5kZXZpY2VfaW5m bywgJmVycm9yLT5kcml2ZXJfY2Fwcyk7CisJZXJyX3ByaW50X3BhcmFtcygmbSwgJmVycm9yLT5w YXJhbXMpOworCWVycl9wcmludF91YygmbSwgJmVycm9yLT51Yyk7CiAKLQkvKiBXZSBuZWVkIHRv IGhhdmUgZW5vdWdoIHJvb20gdG8gc3RvcmUgYW55IGk5MTVfZXJyb3Jfc3RhdGUgcHJpbnRmCi0J ICogc28gdGhhdCB3ZSBjYW4gbW92ZSBpdCB0byBzdGFydCBwb3NpdGlvbi4KLQkgKi8KLQllYnVm LT5zaXplID0gY291bnQgKyAxID4gUEFHRV9TSVpFID8gY291bnQgKyAxIDogUEFHRV9TSVpFOwot CWVidWYtPmJ1ZiA9IGttYWxsb2MoZWJ1Zi0+c2l6ZSwKLQkJCQlHRlBfS0VSTkVMIHwgX19HRlBf Tk9SRVRSWSB8IF9fR0ZQX05PV0FSTik7Ci0KLQlpZiAoZWJ1Zi0+YnVmID09IE5VTEwpIHsKLQkJ ZWJ1Zi0+c2l6ZSA9IFBBR0VfU0laRTsKLQkJZWJ1Zi0+YnVmID0ga21hbGxvYyhlYnVmLT5zaXpl LCBHRlBfS0VSTkVMKTsKLQl9Ci0KLQlpZiAoZWJ1Zi0+YnVmID09IE5VTEwpIHsKLQkJZWJ1Zi0+ c2l6ZSA9IDEyODsKLQkJZWJ1Zi0+YnVmID0ga21hbGxvYyhlYnVmLT5zaXplLCBHRlBfS0VSTkVM KTsKKwlpZiAobS5lcnIpIHsKKwkJa3ZmcmVlKG0uYnVmKTsKKwkJcmV0dXJuIG0uZXJyOwogCX0K IAotCWlmIChlYnVmLT5idWYgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQllYnVmLT5z dGFydCA9IHBvczsKKwllcnJvci0+Ynl0ZXMgPSBtLmJ5dGVzOworCWlmIChjbXB4Y2hnKCZlcnJv ci0+YnVmLCBOVUxMLCBtLmJ1ZikpCisJCWt2ZnJlZShtLmJ1Zik7CiAKKwkqbGVuID0gZXJyb3It PmJ5dGVzOworCSpzdHIgPSBlcnJvci0+YnVmOwogCXJldHVybiAwOwogfQogCkBAIC05MjksNiAr ODgzLDcgQEAgdm9pZCBfX2k5MTVfZ3B1X3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKmVycm9yX3Jl ZikKIAljbGVhbnVwX3BhcmFtcyhlcnJvcik7CiAJY2xlYW51cF91Y19zdGF0ZShlcnJvcik7CiAK KwlrdmZyZWUoZXJyb3ItPmJ1Zik7CiAJa2ZyZWUoZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuaAppbmRleCBmODkzYTRlOGI3ODMuLmFhNGUyZDg4OTNhMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCkBAIC05LDYgKzksNyBAQAogCiAjaW5j bHVkZSA8bGludXgva3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+CisjaW5jbHVkZSA8 bGludXgvbm1pLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KIAogI2luY2x1ZGUgPGRybS9k cm1fbW0uaD4KQEAgLTE5MSw2ICsxOTIsOSBAQCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgewogCX0g KmFjdGl2ZV9ib1tJOTE1X05VTV9FTkdJTkVTXSwgKnBpbm5lZF9ibzsKIAl1MzIgYWN0aXZlX2Jv X2NvdW50W0k5MTVfTlVNX0VOR0lORVNdLCBwaW5uZWRfYm9fY291bnQ7CiAJc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqYWN0aXZlX3ZtW0k5MTVfTlVNX0VOR0lORVNdOworCisJY29uc3QgY2hh ciAqYnVmOworCXNpemVfdCBieXRlczsKIH07CiAKIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CkBA IC0yOTcsMjkgKzMwMSwxOSBAQCBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgewogCiBzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsK LQl1bnNpZ25lZCBpbnQgYnl0ZXM7Ci0JdW5zaWduZWQgaW50IHNpemU7CisJY2hhciAqYnVmOwor CisJc2l6ZV90IGJ5dGVzOworCXNpemVfdCBzaXplOwogCWludCBlcnI7Ci0JdTggKmJ1ZjsKLQls b2ZmX3Qgc3RhcnQ7Ci0JbG9mZl90IHBvczsKIH07CiAKICNpZiBJU19FTkFCTEVEKENPTkZJR19E Uk1fSTkxNV9DQVBUVVJFX0VSUk9SKQogCiBfX3ByaW50ZigyLCAzKQogdm9pZCBpOTE1X2Vycm9y X3ByaW50ZihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLCBjb25zdCBjaGFyICpm LCAuLi4pOwotaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJv cl9zdGF0ZV9idWYgKmVzdHIsCi0JCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfZ3B1X3N0YXRlICpn cHUpOwotaW50IGk5MTVfZXJyb3Jfc3RhdGVfYnVmX2luaXQoc3RydWN0IGRybV9pOTE1X2Vycm9y X3N0YXRlX2J1ZiAqZWIsCi0JCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK LQkJCSAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90IHBvcyk7Ci0KLXN0YXRpYyBpbmxpbmUgdm9p ZAotaTkxNV9lcnJvcl9zdGF0ZV9idWZfcmVsZWFzZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGVfYnVmICplYikKLXsKLQlrZnJlZShlYi0+YnVmKTsKLX0KK2ludCBpOTE1X2Vycm9yX3N0YXRl X3RvX3N0cihzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAorCQkJICAgIGNvbnN0IGNoYXIg KipzdHIsIHNpemVfdCAqbGVuKTsKIAogc3RydWN0IGk5MTVfZ3B1X3N0YXRlICppOTE1X2NhcHR1 cmVfZ3B1X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIHZvaWQgaTkxNV9j YXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3lzZnMuYwppbmRleCBlNWU2ZjZiYjJiMDUuLmEwZDU0ZWI0ODcwMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwpAQCAtNTE2LDI3ICs1MTYsMjEgQEAgc3RhdGlj IHNzaXplX3QgZXJyb3Jfc3RhdGVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmpl Y3QgKmtvYmosCiB7CiAKIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0ga29ial90b19kZXYoa29iaik7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1 KGtkZXYpOwotCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgZXJyb3Jfc3RyOwotCXN0 cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZ3B1OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOworCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZ3B1 ID0gaTkxNV9maXJzdF9lcnJvcl9zdGF0ZShpOTE1KTsKKwljb25zdCBjaGFyICplcnJvcl9zdHI7 CisJc2l6ZV90IGVycm9yX2xlbjsKIAlzc2l6ZV90IHJldDsKIAotCXJldCA9IGk5MTVfZXJyb3Jf c3RhdGVfYnVmX2luaXQoJmVycm9yX3N0ciwgZGV2X3ByaXYsIGNvdW50LCBvZmYpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlncHUgPSBpOTE1X2ZpcnN0X2Vycm9yX3N0YXRlKGRldl9w cml2KTsKLQlyZXQgPSBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cigmZXJyb3Jfc3RyLCBncHUpOwor CXJldCA9IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKGdwdSwgJmVycm9yX3N0ciwgJmVycm9yX2xl bik7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKLQlyZXQgPSBjb3VudCA8IGVycm9yX3N0ci5i eXRlcyA/IGNvdW50IDogZXJyb3Jfc3RyLmJ5dGVzOwotCW1lbWNweShidWYsIGVycm9yX3N0ci5i dWYsIHJldCk7CisJcmV0ID0gbWluX3Qoc2l6ZV90LCBjb3VudCwgZXJyb3JfbGVuIC0gb2ZmKTsK KwltZW1jcHkoYnVmLCBlcnJvcl9zdHIgKyBvZmYsIHJldCk7CiAKIG91dDoKIAlpOTE1X2dwdV9z dGF0ZV9wdXQoZ3B1KTsKLQlpOTE1X2Vycm9yX3N0YXRlX2J1Zl9yZWxlYXNlKCZlcnJvcl9zdHIp OwotCiAJcmV0dXJuIHJldDsKIH0KIAotLSAKMi4xOC4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK