From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 07/40] drm/i915: Cache the error string Date: Wed, 19 Sep 2018 20:55:11 +0100 Message-ID: <20180919195544.1511-7-chris@chris-wilson.co.uk> References: <20180919195544.1511-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 07BA86E191 for ; Wed, 19 Sep 2018 19:56:10 +0000 (UTC) In-Reply-To: <20180919195544.1511-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 MjogRG9uJ3QgZG91YmxlIGFkdmFuY2Ugc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIKdjM6IER1ZSB0 byBleHRyZW1lIHBhaW4gb2YgbGFjayBvZiB2cmVhbGxvYywgdXNlIGEgc2NhdHRlcmxpc3QKdjQ6 IEtlZXAgdGhlIGZvcndhcmQgaXRlcmF0b3IgbG9vc2VseSBjYWNoZWQKClJlcG9ydGVkLWJ5OiBK YXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5uZXQ+ClRlc3RjYXNlOiBpZ3QvZ2VtX2V4 ZWNfY2FwdHVyZS9tYW55KgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50 ZWwuY29tPgpDYzogSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtzdHJhbmQubmV0PgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgfCAgMzIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgfCA0MDIgKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggfCAgMjggKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgfCAgMjcgKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMjczIGluc2VydGlvbnMoKyksIDIxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCmluZGV4IGI0NzQ0YTY4Y2Q4OC4uMmFjNzViYzEwYWZhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtOTQzLDMwICs5NDMsMjggQEAgc3RhdGljIGludCBp OTE1X2dlbV9mZW5jZV9yZWdzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQog c3RhdGljIHNzaXplX3QgZ3B1X3N0YXRlX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191 c2VyICp1YnVmLAogCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcykKIHsKLQlzdHJ1 Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgc3RyOworCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJy b3I7CiAJc3NpemVfdCByZXQ7Ci0JbG9mZl90IHRtcDsKKwl2b2lkICpidWY7CiAKKwllcnJvciA9 IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlpZiAoIWVycm9yKQogCQlyZXR1cm4gMDsKIAotCXJldCA9 IGk5MTVfZXJyb3Jfc3RhdGVfYnVmX2luaXQoJnN0ciwgZXJyb3ItPmk5MTUsIGNvdW50LCAqcG9z KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gaTkxNV9lcnJvcl9zdGF0ZV90 b19zdHIoJnN0ciwgZXJyb3IpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0OworCS8qIEJvdW5jZSBi dWZmZXIgcmVxdWlyZWQgYmVjYXVzZSBvZiBrZXJuZnMgX191c2VyIEFQSSBjb252ZW5pZW5jZS4g Ki8KKwlidWYgPSBrbWFsbG9jKGNvdW50LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZikKKwkJcmV0 dXJuIC1FTk9NRU07CiAKLQl0bXAgPSAwOwotCXJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVy KHVidWYsIGNvdW50LCAmdG1wLCBzdHIuYnVmLCBzdHIuYnl0ZXMpOwotCWlmIChyZXQgPCAwKQot CQlnb3RvIG91dDsKKwlyZXQgPSBpOTE1X2dwdV9zdGF0ZV9jb3B5X3RvX2J1ZmZlcihlcnJvciwg YnVmLCAqcG9zLCBjb3VudCk7CisJaWYgKHJldCA+IDApIHsKKwkJaWYgKCFjb3B5X3RvX3VzZXIo dWJ1ZiwgYnVmLCByZXQpKQorCQkJKnBvcyArPSByZXQ7CisJCWVsc2UKKwkJCXJldCA9IC1FRkFV TFQ7CisJfQogCi0JKnBvcyA9IHN0ci5zdGFydCArIHJldDsKLW91dDoKLQlpOTE1X2Vycm9yX3N0 YXRlX2J1Zl9yZWxlYXNlKCZzdHIpOworCWtmcmVlKGJ1Zik7CiAJcmV0dXJuIHJldDsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggMDhmZGY0ZGMyMDBmLi40ZDAw OTAzMjhjMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtMjgsNiAr MjgsOCBAQAogICovCiAKICNpbmNsdWRlIDxnZW5lcmF0ZWQvdXRzcmVsZWFzZS5oPgorI2luY2x1 ZGUgPGxpbnV4L25taS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CiAjaW5jbHVk ZSA8bGludXgvc3RvcF9tYWNoaW5lLmg+CiAjaW5jbHVkZSA8bGludXgvemxpYi5oPgogI2luY2x1 ZGUgPGRybS9kcm1fcHJpbnQuaD4KQEAgLTc3LDExMiArNzksMTEwIEBAIHN0YXRpYyBjb25zdCBj aGFyICpwdXJnZWFibGVfZmxhZyhpbnQgcHVyZ2VhYmxlKQogCXJldHVybiBwdXJnZWFibGUgPyAi IHB1cmdlYWJsZSIgOiAiIjsKIH0KIAotc3RhdGljIGJvb2wgX19pOTE1X2Vycm9yX29rKHN0cnVj dCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUpCitzdGF0aWMgdm9pZCBfX3NnX3NldF9idWYo c3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKKwkJCSB2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgbGVu LCBsb2ZmX3QgaXQpCiB7Ci0KLQlpZiAoIWUtPmVyciAmJiBXQVJOKGUtPmJ5dGVzID4gKGUtPnNp emUgLSAxKSwgIm92ZXJmbG93IikpIHsKLQkJZS0+ZXJyID0gLUVOT1NQQzsKLQkJcmV0dXJuIGZh bHNlOwotCX0KLQotCWlmIChlLT5ieXRlcyA9PSBlLT5zaXplIC0gMSB8fCBlLT5lcnIpCi0JCXJl dHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOworCXNnLT5wYWdlX2xpbmsgPSAodW5zaWduZWQg bG9uZyl2aXJ0X3RvX3BhZ2UoYWRkcik7CisJc2ctPm9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGFk ZHIpOworCXNnLT5sZW5ndGggPSBsZW47CisJc2ctPmRtYV9hZGRyZXNzID0gaXQ7CiB9CiAKLXN0 YXRpYyBib29sIF9faTkxNV9lcnJvcl9zZWVrKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9i dWYgKmUsCi0JCQkgICAgICB1bnNpZ25lZCBsZW4pCitzdGF0aWMgYm9vbCBfX2k5MTVfZXJyb3Jf Z3JvdyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLCBzaXplX3QgbGVuKQogewot CWlmIChlLT5wb3MgKyBsZW4gPD0gZS0+c3RhcnQpIHsKLQkJZS0+cG9zICs9IGxlbjsKKwlpZiAo IWxlbikKIAkJcmV0dXJuIGZhbHNlOwotCX0KIAotCS8qIEZpcnN0IHZzbnByaW50ZiBuZWVkcyB0 byBmaXQgaW4gaXRzIGVudGlyZXR5IGZvciBtZW1tb3ZlICovCi0JaWYgKGxlbiA+PSBlLT5zaXpl KSB7Ci0JCWUtPmVyciA9IC1FSU87Ci0JCXJldHVybiBmYWxzZTsKLQl9CisJaWYgKGUtPmJ5dGVz ICsgbGVuICsgMSA+IGUtPnNpemUpIHsKKwkJaWYgKGUtPmJ5dGVzKSB7CisJCQlfX3NnX3NldF9i dWYoZS0+Y3VyKyssIGUtPmJ1ZiwgZS0+Ynl0ZXMsIGUtPml0ZXIpOworCQkJZS0+aXRlciArPSBl LT5ieXRlczsKKwkJCWUtPmJ1ZiA9IE5VTEw7CisJCQllLT5ieXRlcyA9IDA7CisJCX0KIAotCXJl dHVybiB0cnVlOwotfQorCQlpZiAoZS0+Y3VyID09IGUtPmVuZCkgeworCQkJc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZ2w7CiAKLXN0YXRpYyB2b2lkIF9faTkxNV9lcnJvcl9hZHZhbmNlKHN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCi0JCQkJIHVuc2lnbmVkIGxlbikKLXsKLQkvKiBJ ZiB0aGlzIGlzIGZpcnN0IHByaW50ZiBpbiB0aGlzIHdpbmRvdywgYWRqdXN0IGl0IHNvIHRoYXQK LQkgKiBzdGFydCBwb3NpdGlvbiBtYXRjaGVzIHN0YXJ0IG9mIHRoZSBidWZmZXIKLQkgKi8KKwkJ CXNnbCA9ICh0eXBlb2Yoc2dsKSlfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CisJCQlpZiAo IXNnbCkgeworCQkJCWUtPmVyciA9IC1FTk9NRU07CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQog Ci0JaWYgKGUtPnBvcyA8IGUtPnN0YXJ0KSB7Ci0JCWNvbnN0IHNpemVfdCBvZmYgPSBlLT5zdGFy dCAtIGUtPnBvczsKKwkJCWlmIChlLT5jdXIpIHsKKwkJCQllLT5jdXItPm9mZnNldCA9IDA7CisJ CQkJZS0+Y3VyLT5sZW5ndGggPSAwOworCQkJCWUtPmN1ci0+cGFnZV9saW5rID0KKwkJCQkJKHVu c2lnbmVkIGxvbmcpc2dsIHwgU0dfQ0hBSU47CisJCQl9IGVsc2UgeworCQkJCWUtPnNnbCA9IHNn bDsKKwkJCX0KIAotCQkvKiBTaG91bGQgbm90IGhhcHBlbiBidXQgYmUgcGFyYW5vaWQgKi8KLQkJ aWYgKG9mZiA+IGxlbiB8fCBlLT5ieXRlcykgewotCQkJZS0+ZXJyID0gLUVJTzsKLQkJCXJldHVy bjsKKwkJCWUtPmN1ciA9IHNnbDsKKwkJCWUtPmVuZCA9IHNnbCArIFNHX01BWF9TSU5HTEVfQUxM T0MgLSAxOwogCQl9CiAKLQkJbWVtbW92ZShlLT5idWYsIGUtPmJ1ZiArIG9mZiwgbGVuIC0gb2Zm KTsKLQkJZS0+Ynl0ZXMgPSBsZW4gLSBvZmY7Ci0JCWUtPnBvcyA9IGUtPnN0YXJ0OwotCQlyZXR1 cm47CisJCWUtPnNpemUgPSBBTElHTihsZW4gKyAxLCBTWl82NEspOworCQllLT5idWYgPSBrbWFs bG9jKGUtPnNpemUsCisJCQkJIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9OT1JF VFJZKTsKKwkJaWYgKCFlLT5idWYpIHsKKwkJCWUtPnNpemUgPSBQQUdFX0FMSUdOKGxlbiArIDEp OworCQkJZS0+YnVmID0ga21hbGxvYyhlLT5zaXplLCBHRlBfS0VSTkVMKTsKKwkJfQorCQlpZiAo IWUtPmJ1ZikgeworCQkJZS0+ZXJyID0gLUVOT01FTTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQog 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 X2Vycm9yX3ByaW50ZihlLCBfX1ZBX0FSR1NfXykKQEAgLTI2Myw2ICsyNjMsOCBAQCBzdGF0aWMg aW50IGNvbXByZXNzX3BhZ2Uoc3RydWN0IGNvbXByZXNzICpjLAogCiAJCWlmICh6c3RyZWFtLT5h dmFpbF9vdXQpCiAJCQlmbHVzaCA9IFpfU1lOQ19GTFVTSDsKKworCQl0b3VjaF9ubWlfd2F0Y2hk b2coKTsKIAl9IHdoaWxlICh6c3RyZWFtLT5hdmFpbF9pbik7CiAKIAkvKiBGYWxsYmFjayB0byB1 bmNvbXByZXNzZWQgaWYgd2UgaW5jcmVhc2Ugc2l6ZT8gKi8KQEAgLTYzMSwzMyArNjMzLDUwIEBA IHN0YXRpYyB2b2lkIGVycl9wcmludF91YyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVm ICptLAogCXByaW50X2Vycm9yX29iaihtLCBOVUxMLCAiR3VDIGxvZyBidWZmZXIiLCBlcnJvcl91 Yy0+Z3VjX2xvZyk7CiB9CiAKLWludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAotCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dwdV9z dGF0ZSAqZXJyb3IpCitzdGF0aWMgdm9pZCBlcnJfZnJlZV9zZ2woc3RydWN0IHNjYXR0ZXJsaXN0 ICpzZ2wpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+aTkxNTsK Kwl3aGlsZSAoc2dsKSB7CisJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisKKwkJZm9yIChzZyA9 IHNnbDsgIXNnX2lzX2NoYWluKHNnKTsgc2crKykgeworCQkJa2ZyZWUoc2dfdmlydChzZykpOwor CQkJaWYgKHNnX2lzX2xhc3Qoc2cpKQorCQkJCWJyZWFrOworCQl9CisKKwkJc2cgPSBzZ19pc19s YXN0KHNnKSA/IE5VTEwgOiBzZ19jaGFpbl9wdHIoc2cpOworCQlmcmVlX3BhZ2UoKHVuc2lnbmVk IGxvbmcpc2dsKTsKKwkJc2dsID0gc2c7CisJfQorfQorCitzdGF0aWMgaW50IGVycl9wcmludF90 b19zZ2woc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf ZXJyb3Jfc3RhdGVfYnVmIG07CiAJc3RydWN0IGRybV9pOTE1X2Vycm9yX29iamVjdCAqb2JqOwog CXN0cnVjdCB0aW1lc3BlYzY0IHRzOwogCWludCBpLCBqOwogCi0JaWYgKCFlcnJvcikgewotCQll cnJfcHJpbnRmKG0sICJObyBlcnJvciBzdGF0ZSBjb2xsZWN0ZWRcbiIpOworCWlmIChSRUFEX09O Q0UoZXJyb3ItPnNnbCkpCiAJCXJldHVybiAwOwotCX0KKworCW1lbXNldCgmbSwgMCwgc2l6ZW9m KG0pKTsKKwltLmk5MTUgPSBlcnJvci0+aTkxNTsKIAogCWlmICgqZXJyb3ItPmVycm9yX21zZykK LQkJZXJyX3ByaW50ZihtLCAiJXNcbiIsIGVycm9yLT5lcnJvcl9tc2cpOwotCWVycl9wcmludGYo bSwgIktlcm5lbDogIiBVVFNfUkVMRUFTRSAiXG4iKTsKKwkJZXJyX3ByaW50ZigmbSwgIiVzXG4i LCBlcnJvci0+ZXJyb3JfbXNnKTsKKwllcnJfcHJpbnRmKCZtLCAiS2VybmVsOiAiIFVUU19SRUxF QVNFICJcbiIpOwogCXRzID0ga3RpbWVfdG9fdGltZXNwZWM2NChlcnJvci0+dGltZSk7Ci0JZXJy X3ByaW50ZihtLCAiVGltZTogJWxsZCBzICVsZCB1c1xuIiwKKwllcnJfcHJpbnRmKCZtLCAiVGlt ZTogJWxsZCBzICVsZCB1c1xuIiwKIAkJICAgKHM2NCl0cy50dl9zZWMsIHRzLnR2X25zZWMgLyBO U0VDX1BFUl9VU0VDKTsKIAl0cyA9IGt0aW1lX3RvX3RpbWVzcGVjNjQoZXJyb3ItPmJvb3R0aW1l KTsKLQllcnJfcHJpbnRmKG0sICJCb290dGltZTogJWxsZCBzICVsZCB1c1xuIiwKKwllcnJfcHJp bnRmKCZtLCAiQm9vdHRpbWU6ICVsbGQgcyAlbGQgdXNcbiIsCiAJCSAgIChzNjQpdHMudHZfc2Vj LCB0cy50dl9uc2VjIC8gTlNFQ19QRVJfVVNFQyk7CiAJdHMgPSBrdGltZV90b190aW1lc3BlYzY0 KGVycm9yLT51cHRpbWUpOwotCWVycl9wcmludGYobSwgIlVwdGltZTogJWxsZCBzICVsZCB1c1xu IiwKKwllcnJfcHJpbnRmKCZtLCAiVXB0aW1lOiAlbGxkIHMgJWxkIHVzXG4iLAogCQkgICAoczY0 KXRzLnR2X3NlYywgdHMudHZfbnNlYyAvIE5TRUNfUEVSX1VTRUMpOwotCWVycl9wcmludGYobSwg IkVwb2NoOiAlbHUgamlmZmllcyAoJXUgSFopXG4iLCBlcnJvci0+ZXBvY2gsIEhaKTsKLQllcnJf cHJpbnRmKG0sICJDYXB0dXJlOiAlbHUgamlmZmllczsgJWQgbXMgYWdvLCAlZCBtcyBhZnRlciBl cG9jaFxuIiwKKwllcnJfcHJpbnRmKCZtLCAiRXBvY2g6ICVsdSBqaWZmaWVzICgldSBIWilcbiIs IGVycm9yLT5lcG9jaCwgSFopOworCWVycl9wcmludGYoJm0sICJDYXB0dXJlOiAlbHUgamlmZmll czsgJWQgbXMgYWdvLCAlZCBtcyBhZnRlciBlcG9jaFxuIiwKIAkJICAgZXJyb3ItPmNhcHR1cmUs CiAJCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIGVycm9yLT5jYXB0dXJlKSwKIAkJICAg amlmZmllc190b19tc2VjcyhlcnJvci0+Y2FwdHVyZSAtIGVycm9yLT5lcG9jaCkpOwpAQCAtNjY1 LDYzICs2ODQsNjMgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkx NV9lcnJvcl9zdGF0ZV9idWYgKm0sCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3It PmVuZ2luZSk7IGkrKykgewogCQlpZiAoZXJyb3ItPmVuZ2luZVtpXS5oYW5nY2hlY2tfc3RhbGxl ZCAmJgogCQkgICAgZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBpZCkgewotCQkJZXJyX3ByaW50 ZihtLCAiQWN0aXZlIHByb2Nlc3MgKG9uIHJpbmcgJXMpOiAlcyBbJWRdLCBzY29yZSAlZCVzXG4i LAotCQkJCSAgIGVuZ2luZV9uYW1lKG0tPmk5MTUsIGkpLAorCQkJZXJyX3ByaW50ZigmbSwgIkFj dGl2ZSBwcm9jZXNzIChvbiByaW5nICVzKTogJXMgWyVkXSwgc2NvcmUgJWQlc1xuIiwKKwkJCQkg ICBlbmdpbmVfbmFtZShtLmk5MTUsIGkpLAogCQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4 dC5jb21tLAogCQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5waWQsCiAJCQkJICAgZXJy b3ItPmVuZ2luZVtpXS5jb250ZXh0LmJhbl9zY29yZSwKIAkJCQkgICBiYW5uYWJsZSgmZXJyb3It PmVuZ2luZVtpXS5jb250ZXh0KSk7CiAJCX0KIAl9Ci0JZXJyX3ByaW50ZihtLCAiUmVzZXQgY291 bnQ6ICV1XG4iLCBlcnJvci0+cmVzZXRfY291bnQpOwotCWVycl9wcmludGYobSwgIlN1c3BlbmQg Y291bnQ6ICV1XG4iLCBlcnJvci0+c3VzcGVuZF9jb3VudCk7Ci0JZXJyX3ByaW50ZihtLCAiUGxh dGZvcm06ICVzXG4iLCBpbnRlbF9wbGF0Zm9ybV9uYW1lKGVycm9yLT5kZXZpY2VfaW5mby5wbGF0 Zm9ybSkpOwotCWVycl9wcmludF9wY2lpZChtLCBlcnJvci0+aTkxNSk7CisJZXJyX3ByaW50Zigm bSwgIlJlc2V0IGNvdW50OiAldVxuIiwgZXJyb3ItPnJlc2V0X2NvdW50KTsKKwllcnJfcHJpbnRm KCZtLCAiU3VzcGVuZCBjb3VudDogJXVcbiIsIGVycm9yLT5zdXNwZW5kX2NvdW50KTsKKwllcnJf cHJpbnRmKCZtLCAiUGxhdGZvcm06ICVzXG4iLCBpbnRlbF9wbGF0Zm9ybV9uYW1lKGVycm9yLT5k ZXZpY2VfaW5mby5wbGF0Zm9ybSkpOworCWVycl9wcmludF9wY2lpZCgmbSwgbS5pOTE1KTsKIAot CWVycl9wcmludGYobSwgIklPTU1VIGVuYWJsZWQ/OiAlZFxuIiwgZXJyb3ItPmlvbW11KTsKKwll cnJfcHJpbnRmKCZtLCAiSU9NTVUgZW5hYmxlZD86ICVkXG4iLCBlcnJvci0+aW9tbXUpOwogCi0J aWYgKEhBU19DU1IoZGV2X3ByaXYpKSB7Ci0JCXN0cnVjdCBpbnRlbF9jc3IgKmNzciA9ICZkZXZf cHJpdi0+Y3NyOworCWlmIChIQVNfQ1NSKG0uaTkxNSkpIHsKKwkJc3RydWN0IGludGVsX2NzciAq Y3NyID0gJm0uaTkxNS0+Y3NyOwogCi0JCWVycl9wcmludGYobSwgIkRNQyBsb2FkZWQ6ICVzXG4i LAorCQllcnJfcHJpbnRmKCZtLCAiRE1DIGxvYWRlZDogJXNcbiIsCiAJCQkgICB5ZXNubyhjc3It PmRtY19wYXlsb2FkICE9IE5VTEwpKTsKLQkJZXJyX3ByaW50ZihtLCAiRE1DIGZ3IHZlcnNpb246 ICVkLiVkXG4iLAorCQllcnJfcHJpbnRmKCZtLCAiRE1DIGZ3IHZlcnNpb246ICVkLiVkXG4iLAog CQkJICAgQ1NSX1ZFUlNJT05fTUFKT1IoY3NyLT52ZXJzaW9uKSwKIAkJCSAgIENTUl9WRVJTSU9O X01JTk9SKGNzci0+dmVyc2lvbikpOwogCX0KIAotCWVycl9wcmludGYobSwgIkdUIGF3YWtlOiAl c1xuIiwgeWVzbm8oZXJyb3ItPmF3YWtlKSk7Ci0JZXJyX3ByaW50ZihtLCAiUlBNIHdha2Vsb2Nr OiAlc1xuIiwgeWVzbm8oZXJyb3ItPndha2Vsb2NrKSk7Ci0JZXJyX3ByaW50ZihtLCAiUE0gc3Vz cGVuZGVkOiAlc1xuIiwgeWVzbm8oZXJyb3ItPnN1c3BlbmRlZCkpOwotCWVycl9wcmludGYobSwg IkVJUjogMHglMDh4XG4iLCBlcnJvci0+ZWlyKTsKLQllcnJfcHJpbnRmKG0sICJJRVI6IDB4JTA4 eFxuIiwgZXJyb3ItPmllcik7CisJZXJyX3ByaW50ZigmbSwgIkdUIGF3YWtlOiAlc1xuIiwgeWVz bm8oZXJyb3ItPmF3YWtlKSk7CisJZXJyX3ByaW50ZigmbSwgIlJQTSB3YWtlbG9jazogJXNcbiIs IHllc25vKGVycm9yLT53YWtlbG9jaykpOworCWVycl9wcmludGYoJm0sICJQTSBzdXNwZW5kZWQ6 ICVzXG4iLCB5ZXNubyhlcnJvci0+c3VzcGVuZGVkKSk7CisJZXJyX3ByaW50ZigmbSwgIkVJUjog MHglMDh4XG4iLCBlcnJvci0+ZWlyKTsKKwllcnJfcHJpbnRmKCZtLCAiSUVSOiAweCUwOHhcbiIs IGVycm9yLT5pZXIpOwogCWZvciAoaSA9IDA7IGkgPCBlcnJvci0+bmd0aWVyOyBpKyspCi0JCWVy cl9wcmludGYobSwgIkdUSUVSWyVkXTogMHglMDh4XG4iLCBpLCBlcnJvci0+Z3RpZXJbaV0pOwot CWVycl9wcmludGYobSwgIlBHVEJMX0VSOiAweCUwOHhcbiIsIGVycm9yLT5wZ3RibF9lcik7Ci0J ZXJyX3ByaW50ZihtLCAiRk9SQ0VXQUtFOiAweCUwOHhcbiIsIGVycm9yLT5mb3JjZXdha2UpOwot CWVycl9wcmludGYobSwgIkRFUlJNUjogMHglMDh4XG4iLCBlcnJvci0+ZGVycm1yKTsKLQllcnJf cHJpbnRmKG0sICJDQ0lEOiAweCUwOHhcbiIsIGVycm9yLT5jY2lkKTsKLQllcnJfcHJpbnRmKG0s ICJNaXNzZWQgaW50ZXJydXB0czogMHglMDhseFxuIiwgZGV2X3ByaXYtPmdwdV9lcnJvci5taXNz ZWRfaXJxX3JpbmdzKTsKKwkJZXJyX3ByaW50ZigmbSwgIkdUSUVSWyVkXTogMHglMDh4XG4iLCBp LCBlcnJvci0+Z3RpZXJbaV0pOworCWVycl9wcmludGYoJm0sICJQR1RCTF9FUjogMHglMDh4XG4i LCBlcnJvci0+cGd0YmxfZXIpOworCWVycl9wcmludGYoJm0sICJGT1JDRVdBS0U6IDB4JTA4eFxu IiwgZXJyb3ItPmZvcmNld2FrZSk7CisJZXJyX3ByaW50ZigmbSwgIkRFUlJNUjogMHglMDh4XG4i LCBlcnJvci0+ZGVycm1yKTsKKwllcnJfcHJpbnRmKCZtLCAiQ0NJRDogMHglMDh4XG4iLCBlcnJv ci0+Y2NpZCk7CisJZXJyX3ByaW50ZigmbSwgIk1pc3NlZCBpbnRlcnJ1cHRzOiAweCUwOGx4XG4i LCBtLmk5MTUtPmdwdV9lcnJvci5taXNzZWRfaXJxX3JpbmdzKTsKIAogCWZvciAoaSA9IDA7IGkg PCBlcnJvci0+bmZlbmNlOyBpKyspCi0JCWVycl9wcmludGYobSwgIiAgZmVuY2VbJWRdID0gJTA4 bGx4XG4iLCBpLCBlcnJvci0+ZmVuY2VbaV0pOworCQllcnJfcHJpbnRmKCZtLCAiICBmZW5jZVsl ZF0gPSAlMDhsbHhcbiIsIGksIGVycm9yLT5mZW5jZVtpXSk7CiAKLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KSB7Ci0JCWVycl9wcmludGYobSwgIkVSUk9SOiAweCUwOHhcbiIsIGVycm9y LT5lcnJvcik7CisJaWYgKElOVEVMX0dFTihtLmk5MTUpID49IDYpIHsKKwkJZXJyX3ByaW50Zigm bSwgIkVSUk9SOiAweCUwOHhcbiIsIGVycm9yLT5lcnJvcik7CiAKLQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOCkKLQkJCWVycl9wcmludGYobSwgIkZBVUxUX1RMQl9EQVRBOiAweCUwOHgg MHglMDh4XG4iLAorCQlpZiAoSU5URUxfR0VOKG0uaTkxNSkgPj0gOCkKKwkJCWVycl9wcmludGYo Jm0sICJGQVVMVF9UTEJfREFUQTogMHglMDh4IDB4JTA4eFxuIiwKIAkJCQkgICBlcnJvci0+ZmF1 bHRfZGF0YTEsIGVycm9yLT5mYXVsdF9kYXRhMCk7CiAKLQkJZXJyX3ByaW50ZihtLCAiRE9ORV9S RUc6IDB4JTA4eFxuIiwgZXJyb3ItPmRvbmVfcmVnKTsKKwkJZXJyX3ByaW50ZigmbSwgIkRPTkVf UkVHOiAweCUwOHhcbiIsIGVycm9yLT5kb25lX3JlZyk7CiAJfQogCi0JaWYgKElTX0dFTjcoZGV2 X3ByaXYpKQotCQllcnJfcHJpbnRmKG0sICJFUlJfSU5UOiAweCUwOHhcbiIsIGVycm9yLT5lcnJf aW50KTsKKwlpZiAoSVNfR0VONyhtLmk5MTUpKQorCQllcnJfcHJpbnRmKCZtLCAiRVJSX0lOVDog MHglMDh4XG4iLCBlcnJvci0+ZXJyX2ludCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShlcnJvci0+ZW5naW5lKTsgaSsrKSB7CiAJCWlmIChlcnJvci0+ZW5naW5lW2ldLmVuZ2luZV9p ZCAhPSAtMSkKLQkJCWVycm9yX3ByaW50X2VuZ2luZShtLCAmZXJyb3ItPmVuZ2luZVtpXSwgZXJy b3ItPmVwb2NoKTsKKwkJCWVycm9yX3ByaW50X2VuZ2luZSgmbSwgJmVycm9yLT5lbmdpbmVbaV0s IGVycm9yLT5lcG9jaCk7CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3It PmFjdGl2ZV92bSk7IGkrKykgewpAQCAtNzM4LDE2ICs3NTcsMTYgQEAgaW50IGk5MTVfZXJyb3Jf c3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiAKIAkJCWxl biArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSwgIiVzJXMiLAogCQkJCQkgZmly c3QgPyAiIiA6ICIsICIsCi0JCQkJCSBkZXZfcHJpdi0+ZW5naW5lW2pdLT5uYW1lKTsKKwkJCQkJ IG0uaTkxNS0+ZW5naW5lW2pdLT5uYW1lKTsKIAkJCWZpcnN0ID0gMDsKIAkJfQogCQlzY25wcmlu dGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSwgIikiKTsKLQkJcHJpbnRfZXJyb3JfYnVmZmVycyht LCBidWYsCisJCXByaW50X2Vycm9yX2J1ZmZlcnMoJm0sIGJ1ZiwKIAkJCQkgICAgZXJyb3ItPmFj dGl2ZV9ib1tpXSwKIAkJCQkgICAgZXJyb3ItPmFjdGl2ZV9ib19jb3VudFtpXSk7CiAJfQogCi0J cHJpbnRfZXJyb3JfYnVmZmVycyhtLCAiUGlubmVkIChnbG9iYWwpIiwKKwlwcmludF9lcnJvcl9i dWZmZXJzKCZtLCAiUGlubmVkIChnbG9iYWwpIiwKIAkJCSAgICBlcnJvci0+cGlubmVkX2JvLAog CQkJICAgIGVycm9yLT5waW5uZWRfYm9fY291bnQpOwogCkBAIC03NTYsMTE1ICs3NzUsMTYzIEBA IGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICptLAogCiAJCW9iaiA9IGVlLT5iYXRjaGJ1ZmZlcjsKIAkJaWYgKG9iaikgewotCQkJZXJy X3B1dHMobSwgZGV2X3ByaXYtPmVuZ2luZVtpXS0+bmFtZSk7CisJCQllcnJfcHV0cygmbSwgbS5p OTE1LT5lbmdpbmVbaV0tPm5hbWUpOwogCQkJaWYgKGVlLT5jb250ZXh0LnBpZCkKLQkJCQllcnJf cHJpbnRmKG0sICIgKHN1Ym1pdHRlZCBieSAlcyBbJWRdLCBjdHggJWQgWyVkXSwgc2NvcmUgJWQl cykiLAorCQkJCWVycl9wcmludGYoJm0sICIgKHN1Ym1pdHRlZCBieSAlcyBbJWRdLCBjdHggJWQg WyVkXSwgc2NvcmUgJWQlcykiLAogCQkJCQkgICBlZS0+Y29udGV4dC5jb21tLAogCQkJCQkgICBl ZS0+Y29udGV4dC5waWQsCiAJCQkJCSAgIGVlLT5jb250ZXh0LmhhbmRsZSwKIAkJCQkJICAgZWUt PmNvbnRleHQuaHdfaWQsCiAJCQkJCSAgIGVlLT5jb250ZXh0LmJhbl9zY29yZSwKIAkJCQkJICAg YmFubmFibGUoJmVlLT5jb250ZXh0KSk7Ci0JCQllcnJfcHJpbnRmKG0sICIgLS0tIGd0dF9vZmZz ZXQgPSAweCUwOHggJTA4eFxuIiwKKwkJCWVycl9wcmludGYoJm0sICIgLS0tIGd0dF9vZmZzZXQg PSAweCUwOHggJTA4eFxuIiwKIAkJCQkgICB1cHBlcl8zMl9iaXRzKG9iai0+Z3R0X29mZnNldCks CiAJCQkJICAgbG93ZXJfMzJfYml0cyhvYmotPmd0dF9vZmZzZXQpKTsKLQkJCXByaW50X2Vycm9y X29iaihtLCBkZXZfcHJpdi0+ZW5naW5lW2ldLCBOVUxMLCBvYmopOworCQkJcHJpbnRfZXJyb3Jf b2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtpXSwgTlVMTCwgb2JqKTsKIAkJfQogCiAJCWZvciAoaiA9 IDA7IGogPCBlZS0+dXNlcl9ib19jb3VudDsgaisrKQotCQkJcHJpbnRfZXJyb3Jfb2JqKG0sIGRl dl9wcml2LT5lbmdpbmVbaV0sCisJCQlwcmludF9lcnJvcl9vYmooJm0sIG0uaTkxNS0+ZW5naW5l W2ldLAogCQkJCQkidXNlciIsIGVlLT51c2VyX2JvW2pdKTsKIAogCQlpZiAoZWUtPm51bV9yZXF1 ZXN0cykgewotCQkJZXJyX3ByaW50ZihtLCAiJXMgLS0tICVkIHJlcXVlc3RzXG4iLAotCQkJCSAg IGRldl9wcml2LT5lbmdpbmVbaV0tPm5hbWUsCisJCQllcnJfcHJpbnRmKCZtLCAiJXMgLS0tICVk IHJlcXVlc3RzXG4iLAorCQkJCSAgIG0uaTkxNS0+ZW5naW5lW2ldLT5uYW1lLAogCQkJCSAgIGVl LT5udW1fcmVxdWVzdHMpOwogCQkJZm9yIChqID0gMDsgaiA8IGVlLT5udW1fcmVxdWVzdHM7IGor KykKLQkJCQllcnJvcl9wcmludF9yZXF1ZXN0KG0sICIgIiwKKwkJCQllcnJvcl9wcmludF9yZXF1 ZXN0KCZtLCAiICIsCiAJCQkJCQkgICAgJmVlLT5yZXF1ZXN0c1tqXSwKIAkJCQkJCSAgICBlcnJv ci0+ZXBvY2gpOwogCQl9CiAKIAkJaWYgKElTX0VSUihlZS0+d2FpdGVycykpIHsKLQkJCWVycl9w cmludGYobSwgIiVzIC0tLSA/IHdhaXRlcnMgW3VuYWJsZSB0byBhY3F1aXJlIHNwaW5sb2NrXVxu IiwKLQkJCQkgICBkZXZfcHJpdi0+ZW5naW5lW2ldLT5uYW1lKTsKKwkJCWVycl9wcmludGYoJm0s ICIlcyAtLS0gPyB3YWl0ZXJzIFt1bmFibGUgdG8gYWNxdWlyZSBzcGlubG9ja11cbiIsCisJCQkJ ICAgbS5pOTE1LT5lbmdpbmVbaV0tPm5hbWUpOwogCQl9IGVsc2UgaWYgKGVlLT5udW1fd2FpdGVy cykgewotCQkJZXJyX3ByaW50ZihtLCAiJXMgLS0tICVkIHdhaXRlcnNcbiIsCi0JCQkJICAgZGV2 X3ByaXYtPmVuZ2luZVtpXS0+bmFtZSwKKwkJCWVycl9wcmludGYoJm0sICIlcyAtLS0gJWQgd2Fp dGVyc1xuIiwKKwkJCQkgICBtLmk5MTUtPmVuZ2luZVtpXS0+bmFtZSwKIAkJCQkgICBlZS0+bnVt X3dhaXRlcnMpOwogCQkJZm9yIChqID0gMDsgaiA8IGVlLT5udW1fd2FpdGVyczsgaisrKSB7Ci0J CQkJZXJyX3ByaW50ZihtLCAiIHNlcW5vIDB4JTA4eCBmb3IgJXMgWyVkXVxuIiwKKwkJCQllcnJf cHJpbnRmKCZtLCAiIHNlcW5vIDB4JTA4eCBmb3IgJXMgWyVkXVxuIiwKIAkJCQkJICAgZWUtPndh aXRlcnNbal0uc2Vxbm8sCiAJCQkJCSAgIGVlLT53YWl0ZXJzW2pdLmNvbW0sCiAJCQkJCSAgIGVl LT53YWl0ZXJzW2pdLnBpZCk7CiAJCQl9CiAJCX0KIAotCQlwcmludF9lcnJvcl9vYmoobSwgZGV2 X3ByaXYtPmVuZ2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtp XSwKIAkJCQkicmluZ2J1ZmZlciIsIGVlLT5yaW5nYnVmZmVyKTsKIAotCQlwcmludF9lcnJvcl9v YmoobSwgZGV2X3ByaXYtPmVuZ2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUt PmVuZ2luZVtpXSwKIAkJCQkiSFcgU3RhdHVzIiwgZWUtPmh3c19wYWdlKTsKIAotCQlwcmludF9l cnJvcl9vYmoobSwgZGV2X3ByaXYtPmVuZ2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBt Lmk5MTUtPmVuZ2luZVtpXSwKIAkJCQkiSFcgY29udGV4dCIsIGVlLT5jdHgpOwogCi0JCXByaW50 X2Vycm9yX29iaihtLCBkZXZfcHJpdi0+ZW5naW5lW2ldLAorCQlwcmludF9lcnJvcl9vYmooJm0s IG0uaTkxNS0+ZW5naW5lW2ldLAogCQkJCSJXQSBjb250ZXh0IiwgZWUtPndhX2N0eCk7CiAKLQkJ cHJpbnRfZXJyb3Jfb2JqKG0sIGRldl9wcml2LT5lbmdpbmVbaV0sCisJCXByaW50X2Vycm9yX29i aigmbSwgbS5pOTE1LT5lbmdpbmVbaV0sCiAJCQkJIldBIGJhdGNoYnVmZmVyIiwgZWUtPndhX2Jh dGNoYnVmZmVyKTsKIAotCQlwcmludF9lcnJvcl9vYmoobSwgZGV2X3ByaXYtPmVuZ2luZVtpXSwK KwkJcHJpbnRfZXJyb3Jfb2JqKCZtLCBtLmk5MTUtPmVuZ2luZVtpXSwKIAkJCQkiTlVMTCBjb250 ZXh0IiwgZWUtPmRlZmF1bHRfc3RhdGUpOwogCX0KIAogCWlmIChlcnJvci0+b3ZlcmxheSkKLQkJ aW50ZWxfb3ZlcmxheV9wcmludF9lcnJvcl9zdGF0ZShtLCBlcnJvci0+b3ZlcmxheSk7CisJCWlu dGVsX292ZXJsYXlfcHJpbnRfZXJyb3Jfc3RhdGUoJm0sIGVycm9yLT5vdmVybGF5KTsKIAogCWlm IChlcnJvci0+ZGlzcGxheSkKLQkJaW50ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShtLCBl cnJvci0+ZGlzcGxheSk7CisJCWludGVsX2Rpc3BsYXlfcHJpbnRfZXJyb3Jfc3RhdGUoJm0sIGVy cm9yLT5kaXNwbGF5KTsKIAotCWVycl9wcmludF9jYXBhYmlsaXRpZXMobSwgJmVycm9yLT5kZXZp Y2VfaW5mbywgJmVycm9yLT5kcml2ZXJfY2Fwcyk7Ci0JZXJyX3ByaW50X3BhcmFtcyhtLCAmZXJy b3ItPnBhcmFtcyk7Ci0JZXJyX3ByaW50X3VjKG0sICZlcnJvci0+dWMpOworCWVycl9wcmludF9j YXBhYmlsaXRpZXMoJm0sICZlcnJvci0+ZGV2aWNlX2luZm8sICZlcnJvci0+ZHJpdmVyX2NhcHMp OworCWVycl9wcmludF9wYXJhbXMoJm0sICZlcnJvci0+cGFyYW1zKTsKKwllcnJfcHJpbnRfdWMo Jm0sICZlcnJvci0+dWMpOwogCi0JaWYgKG0tPmJ5dGVzID09IDAgJiYgbS0+ZXJyKQotCQlyZXR1 cm4gbS0+ZXJyOworCWlmIChtLmJ1ZikgeworCQlfX3NnX3NldF9idWYobS5jdXIrKywgbS5idWYs IG0uYnl0ZXMsIG0uaXRlcik7CisJCW0uYnl0ZXMgPSAwOworCQltLmJ1ZiA9IDA7CisJfQorCWlm IChtLmN1cikgeworCQlHRU1fQlVHX09OKG0uZW5kIDwgbS5jdXIpOworCQlzZ19tYXJrX2VuZCht LmN1ciAtIDEpOworCX0KKwlHRU1fQlVHX09OKG0uc2dsICYmICFtLmN1cik7CisKKwlpZiAobS5l cnIpIHsKKwkJZXJyX2ZyZWVfc2dsKG0uc2dsKTsKKwkJcmV0dXJuIG0uZXJyOworCX0KKworCWlm IChjbXB4Y2hnKCZlcnJvci0+c2dsLCBOVUxMLCBtLnNnbCkpCisJCWVycl9mcmVlX3NnbChtLnNn bCk7CiAKIAlyZXR1cm4gMDsKIH0KIAotaW50IGk5MTVfZXJyb3Jfc3RhdGVfYnVmX2luaXQoc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZWJ1ZiwKLQkJCSAgICAgIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAotCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgcG9zKQor c3NpemVfdCBpOTE1X2dwdV9zdGF0ZV9jb3B5X3RvX2J1ZmZlcihzdHJ1Y3QgaTkxNV9ncHVfc3Rh dGUgKmVycm9yLAorCQkJCSAgICAgIGNoYXIgKmJ1ZiwgbG9mZl90IG9mZiwgc2l6ZV90IHJlbSkK IHsKLQltZW1zZXQoZWJ1ZiwgMCwgc2l6ZW9mKCplYnVmKSk7Ci0JZWJ1Zi0+aTkxNSA9IGk5MTU7 CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlzaXplX3QgY291bnQ7CisJbG9mZl90IHBvczsK KwlpbnQgZXJyOwogCi0JLyogV2UgbmVlZCB0byBoYXZlIGVub3VnaCByb29tIHRvIHN0b3JlIGFu eSBpOTE1X2Vycm9yX3N0YXRlIHByaW50ZgotCSAqIHNvIHRoYXQgd2UgY2FuIG1vdmUgaXQgdG8g c3RhcnQgcG9zaXRpb24uCi0JICovCi0JZWJ1Zi0+c2l6ZSA9IGNvdW50ICsgMSA+IFBBR0VfU0la RSA/IGNvdW50ICsgMSA6IFBBR0VfU0laRTsKLQllYnVmLT5idWYgPSBrbWFsbG9jKGVidWYtPnNp emUsCi0JCQkJR0ZQX0tFUk5FTCB8IF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk4pOworCWlm ICghZXJyb3IgfHwgIXJlbSkKKwkJcmV0dXJuIDA7CiAKLQlpZiAoZWJ1Zi0+YnVmID09IE5VTEwp IHsKLQkJZWJ1Zi0+c2l6ZSA9IFBBR0VfU0laRTsKLQkJZWJ1Zi0+YnVmID0ga21hbGxvYyhlYnVm LT5zaXplLCBHRlBfS0VSTkVMKTsKLQl9CisJZXJyID0gZXJyX3ByaW50X3RvX3NnbChlcnJvcik7 CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKIAotCWlmIChlYnVmLT5idWYgPT0gTlVMTCkgewot CQllYnVmLT5zaXplID0gMTI4OwotCQllYnVmLT5idWYgPSBrbWFsbG9jKGVidWYtPnNpemUsIEdG UF9LRVJORUwpOwotCX0KKwlzZyA9IFJFQURfT05DRShlcnJvci0+Zml0KTsKKwlpZiAoIXNnIHx8 IG9mZiA8IHNnLT5kbWFfYWRkcmVzcykKKwkJc2cgPSBlcnJvci0+c2dsOworCWlmICghc2cpCisJ CXJldHVybiAwOwogCi0JaWYgKGVidWYtPmJ1ZiA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT01FTTsK Kwlwb3MgPSBzZy0+ZG1hX2FkZHJlc3M7CisJY291bnQgPSAwOworCWRvIHsKKwkJc2l6ZV90IGxl biwgc3RhcnQ7CiAKLQllYnVmLT5zdGFydCA9IHBvczsKKwkJaWYgKHNnX2lzX2NoYWluKHNnKSkg eworCQkJc2cgPSBzZ19jaGFpbl9wdHIoc2cpOworCQkJR0VNX0JVR19PTihzZ19pc19jaGFpbihz ZykpOworCQl9CiAKLQlyZXR1cm4gMDsKKwkJbGVuID0gc2ctPmxlbmd0aDsKKwkJaWYgKHBvcyAr IGxlbiA8PSBvZmYpIHsKKwkJCXBvcyArPSBsZW47CisJCQljb250aW51ZTsKKwkJfQorCisJCXN0 YXJ0ID0gc2ctPm9mZnNldDsKKwkJaWYgKHBvcyA8IG9mZikgeworCQkJR0VNX0JVR19PTihvZmYg LSBwb3MgPiBsZW4pOworCQkJbGVuIC09IG9mZiAtIHBvczsKKwkJCXN0YXJ0ICs9IG9mZiAtIHBv czsKKwkJCXBvcyA9IG9mZjsKKwkJfQorCisJCWxlbiA9IG1pbihsZW4sIHJlbSk7CisJCUdFTV9C VUdfT04oIWxlbiB8fCBsZW4gPiBzZy0+bGVuZ3RoKTsKKworCQltZW1jcHkoYnVmLCBwYWdlX2Fk ZHJlc3Moc2dfcGFnZShzZykpICsgc3RhcnQsIGxlbik7CisKKwkJY291bnQgKz0gbGVuOworCQlw b3MgKz0gbGVuOworCisJCWJ1ZiArPSBsZW47CisJCXJlbSAtPSBsZW47CisJCWlmICghcmVtKSB7 CisJCQlXUklURV9PTkNFKGVycm9yLT5maXQsIHNnKTsKKwkJCWJyZWFrOworCQl9CisJfSB3aGls ZSAoIXNnX2lzX2xhc3Qoc2crKykpOworCisJcmV0dXJuIGNvdW50OwogfQogCiBzdGF0aWMgdm9p ZCBpOTE1X2Vycm9yX29iamVjdF9mcmVlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKm9i aikKQEAgLTkzNyw2ICsxMDA0LDcgQEAgdm9pZCBfX2k5MTVfZ3B1X3N0YXRlX2ZyZWUoc3RydWN0 IGtyZWYgKmVycm9yX3JlZikKIAljbGVhbnVwX3BhcmFtcyhlcnJvcik7CiAJY2xlYW51cF91Y19z dGF0ZShlcnJvcik7CiAKKwllcnJfZnJlZV9zZ2woZXJyb3ItPnNnbCk7CiAJa2ZyZWUoZXJyb3Ip OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAppbmRleCBmODkzYTRlOGI3 ODMuLjFjMWJjMGMyMzQ2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCkBA IC0xOTEsNiArMTkxLDggQEAgc3RydWN0IGk5MTVfZ3B1X3N0YXRlIHsKIAl9ICphY3RpdmVfYm9b STkxNV9OVU1fRU5HSU5FU10sICpwaW5uZWRfYm87CiAJdTMyIGFjdGl2ZV9ib19jb3VudFtJOTE1 X05VTV9FTkdJTkVTXSwgcGlubmVkX2JvX2NvdW50OwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKmFjdGl2ZV92bVtJOTE1X05VTV9FTkdJTkVTXTsKKworCXN0cnVjdCBzY2F0dGVybGlzdCAq c2dsLCAqZml0OwogfTsKIAogc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKQEAgLTI5NywyOSArMjk5 LDIwIEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAKIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZV9idWYgewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwotCXVuc2lnbmVkIGlu dCBieXRlczsKLQl1bnNpZ25lZCBpbnQgc2l6ZTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwg KmN1ciwgKmVuZDsKKworCWNoYXIgKmJ1ZjsKKwlzaXplX3QgYnl0ZXM7CisJc2l6ZV90IHNpemU7 CisJbG9mZl90IGl0ZXI7CisKIAlpbnQgZXJyOwotCXU4ICpidWY7Ci0JbG9mZl90IHN0YXJ0Owot CWxvZmZfdCBwb3M7CiB9OwogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfQ0FQVFVS RV9FUlJPUikKIAogX19wcmludGYoMiwgMykKIHZvaWQgaTkxNV9lcnJvcl9wcmludGYoc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZSwgY29uc3QgY2hhciAqZiwgLi4uKTsKLWludCBp OTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICpl c3RyLAotCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZ3B1KTsKLWludCBpOTE1 X2Vycm9yX3N0YXRlX2J1Zl9pbml0KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmVi LAotCQkJICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCi0JCQkgICAgICBzaXpl X3QgY291bnQsIGxvZmZfdCBwb3MpOwotCi1zdGF0aWMgaW5saW5lIHZvaWQKLWk5MTVfZXJyb3Jf c3RhdGVfYnVmX3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZWIpCi17 Ci0Ja2ZyZWUoZWItPmJ1Zik7Ci19CiAKIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqaTkxNV9jYXB0 dXJlX2dwdV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGk5MTVf Y2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBA IC0zMzMsNiArMzI2LDkgQEAgaTkxNV9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBpOTE1X2dwdV9zdGF0 ZSAqZ3B1KQogCXJldHVybiBncHU7CiB9CiAKK3NzaXplX3QgaTkxNV9ncHVfc3RhdGVfY29weV90 b19idWZmZXIoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKKwkJCQkgICAgICBjaGFyICpi dWYsIGxvZmZfdCBvZmZzZXQsIHNpemVfdCBjb3VudCk7CisKIHZvaWQgX19pOTE1X2dwdV9zdGF0 ZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dwdV9z dGF0ZV9wdXQoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICpncHUpCiB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmMKaW5kZXggZTVlNmY2YmIyYjA1Li5hZTYzYTdkMGY1MWQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmMKQEAgLTUxNiwyNiArNTE2LDIxIEBAIHN0YXRpYyBzc2l6ZV90IGVycm9y X3N0YXRlX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLAogewog CiAJc3RydWN0IGRldmljZSAqa2RldiA9IGtvYmpfdG9fZGV2KGtvYmopOwotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKLQlzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmIGVycm9yX3N0cjsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKIAlzdHJ1Y3QgaTkxNV9n cHVfc3RhdGUgKmdwdTsKIAlzc2l6ZV90IHJldDsKIAotCXJldCA9IGk5MTVfZXJyb3Jfc3RhdGVf YnVmX2luaXQoJmVycm9yX3N0ciwgZGV2X3ByaXYsIGNvdW50LCBvZmYpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0KLQlncHUgPSBpOTE1X2ZpcnN0X2Vycm9yX3N0YXRlKGRldl9wcml2KTsK LQlyZXQgPSBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cigmZXJyb3Jfc3RyLCBncHUpOwotCWlmIChy ZXQpCi0JCWdvdG8gb3V0OwotCi0JcmV0ID0gY291bnQgPCBlcnJvcl9zdHIuYnl0ZXMgPyBjb3Vu dCA6IGVycm9yX3N0ci5ieXRlczsKLQltZW1jcHkoYnVmLCBlcnJvcl9zdHIuYnVmLCByZXQpOwor CWdwdSA9IGk5MTVfZmlyc3RfZXJyb3Jfc3RhdGUoaTkxNSk7CisJaWYgKGdwdSkgeworCQlyZXQg PSBpOTE1X2dwdV9zdGF0ZV9jb3B5X3RvX2J1ZmZlcihncHUsIGJ1Ziwgb2ZmLCBjb3VudCk7CisJ CWk5MTVfZ3B1X3N0YXRlX3B1dChncHUpOworCX0gZWxzZSB7CisJCWNvbnN0IGNoYXIgKnN0ciA9 ICJObyBlcnJvciBzdGF0ZSBjb2xsZWN0ZWRcbiI7CisJCXNpemVfdCBsZW4gPSBzdHJsZW4oc3Ry KTsKIAotb3V0OgotCWk5MTVfZ3B1X3N0YXRlX3B1dChncHUpOwotCWk5MTVfZXJyb3Jfc3RhdGVf YnVmX3JlbGVhc2UoJmVycm9yX3N0cik7CisJCXJldCA9IG1pbl90KHNpemVfdCwgY291bnQsIGxl biAtIG9mZik7CisJCW1lbWNweShidWYsIHN0ciArIG9mZiwgcmV0KTsKKwl9CiAKIAlyZXR1cm4g cmV0OwogfQotLSAKMi4xOS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK