From mboxrd@z Thu Jan 1 00:00:00 1970 From: Umesh Nerlige Ramappa Subject: [PATCH] drm/i915/perf: Refactor oa object to better manage resources Date: Thu, 2 May 2019 16:13:15 -0700 Message-ID: <20190502231315.7388-1-umesh.nerlige.ramappa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 914838921D for ; Thu, 2 May 2019 23:13:16 +0000 (UTC) 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 VGhlIG9hIG9iamVjdCBtYW5hZ2VzIHRoZSBvYSBidWZmZXIgYW5kIG11c3QgYmUgYWxsb2NhdGVk IHdoZW4gdGhlIHVzZXIKaW50ZW5kcyB0byByZWFkIHBlcmZvcm1hbmNlIGNvdW50ZXIgc25hcHNo b3RzLiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieQptYWtpbmcgdGhlIG9hIG9iamVjdCBwYXJ0IG9m IHRoZSBzdHJlYW0gb2JqZWN0IHdoaWNoIGlzIGFsbG9jYXRlZCB3aGVuIGEKc3RyZWFtIGlzIG9w ZW5lZCBieSB0aGUgdXNlci4KCkF0dHJpYnV0ZXMgaW4gdGhlIG9hIG9iamVjdCB0aGF0IGFyZSBn ZW4tc3BlY2lmaWMgYXJlIG1vdmVkIHRvIHRoZSBwZXJmCm9iamVjdCBzbyB0aGF0IHRoZXkgY2Fu IGJlIGluaXRpYWxpemVkIG9uIGRyaXZlciBsb2FkLgoKVGhlIHNwbGl0IHByb3ZpZGVzIGEgYmV0 dGVyIHNlcGFyYXRpb24gb2YgdGhlIG9iamVjdHMgdXNlZCBpbiBwZXJmCmltcGxlbWVudGF0aW9u IG9mIGk5MTUgZHJpdmVyIHNvIHRoYXQgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQgYW5kCmluaXRp YWxpemVkIG9ubHkgd2hlbiBuZWVkZWQuCgp2MjogRml4IGNoZWNrcGF0Y2ggd2FybmluZ3MKClNp Z25lZC1vZmYtYnk6IFVtZXNoIE5lcmxpZ2UgUmFtYXBwYSA8dW1lc2gubmVybGlnZS5yYW1hcHBh QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMgIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgIHwgICA0ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgMjE5ICsrKysrLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMgICAgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgICAgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfb2FfY2ZsZ3QyLmMgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff Y2ZsZ3QzLmMgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMgICAg fCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY25sLmMgICAgfCAgMzAgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMgICAgfCAgMzAgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMgICAgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfaWNsLmMgICAgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QyLmMgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3Qz LmMgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmMgfCAgMzAg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmMgfCAgMzAgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0LmMgfCAgMzAgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jICAgICAgfCA1ODYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0K IDE4IGZpbGVzIGNoYW5nZWQsIDYzMiBpbnNlcnRpb25zKCspLCA1OTkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCmluZGV4IDdmNDQ4ZjNiZWEwYi4uZmE3OGRm Mzk1MjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCkBAIC0zMiw3ICszMiw3 IEBAIHUzMiBpbnRlbF9zc2V1X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAkgKiBjYXNlcyB3aGljaCBkaXNhYmxlIHNsaWNlcyBmb3IgZnVuY3Rpb25hbCwgYXBhcnQg Zm9yIHBlcmZvcm1hbmNlCiAJICogcmVhc29ucy4gU28gaW4gdGhpcyBjYXNlIHdlIHNlbGVjdCBh IGtub3duIHN0YWJsZSBzdWJzZXQuCiAJICovCi0JaWYgKCFpOTE1LT5wZXJmLm9hLmV4Y2x1c2l2 ZV9zdHJlYW0pIHsKKwlpZiAoIWk5MTUtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSkgewogCQljdHhf c3NldSA9ICpyZXFfc3NldTsKIAl9IGVsc2UgewogCQljdHhfc3NldSA9IGludGVsX3NzZXVfZnJv bV9kZXZpY2VfaW5mbyhzc2V1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9zY2hlZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwppbmRl eCA3YWU0MmYyZWJmZTguLjg3OGU3MWE5MjdkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hl ZHVsZXIuYwpAQCAtODEsOCArODEsOCBAQCBzdGF0aWMgdm9pZCBzcl9vYV9yZWdzKHN0cnVjdCBp bnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCwKIAkJdTMyICpyZWdfc3RhdGUsIGJvb2wgc2F2 ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB3b3JrbG9hZC0+dmdw dS0+Z3Z0LT5kZXZfcHJpdjsKLQl1MzIgY3R4X29hY3R4Y3RybCA9IGRldl9wcml2LT5wZXJmLm9h LmN0eF9vYWN0eGN0cmxfb2Zmc2V0OwotCXUzMiBjdHhfZmxleGV1MCA9IGRldl9wcml2LT5wZXJm Lm9hLmN0eF9mbGV4ZXUwX29mZnNldDsKKwl1MzIgY3R4X29hY3R4Y3RybCA9IGRldl9wcml2LT5w ZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0OworCXUzMiBjdHhfZmxleGV1MCA9IGRldl9wcml2LT5w ZXJmLmN0eF9mbGV4ZXUwX29mZnNldDsKIAlpbnQgaSA9IDA7CiAJdTMyIGZsZXhfbW1pb1tdID0g ewogCQlpOTE1X21taW9fcmVnX29mZnNldChFVV9QRVJGX0NOVEwwKSwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCmluZGV4IDlhNjM0YmE1N2ZmOS4uMjM3NzhmNjI5OWRlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTE0MDAsNiArMTQwMCw4NiBAQCBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSB7 CiAJICogQG9hX2NvbmZpZzogVGhlIE9BIGNvbmZpZ3VyYXRpb24gdXNlZCBieSB0aGUgc3RyZWFt LgogCSAqLwogCXN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnOworCisJLyoqCisJICog VGhlIE9BIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24uCisJICovCisJc3RydWN0IGludGVs X2NvbnRleHQgKnBpbm5lZF9jdHg7CisJdTMyIHNwZWNpZmljX2N0eF9pZDsKKwl1MzIgc3BlY2lm aWNfY3R4X2lkX21hc2s7CisKKwlzdHJ1Y3QgaHJ0aW1lciBwb2xsX2NoZWNrX3RpbWVyOworCXdh aXRfcXVldWVfaGVhZF90IHBvbGxfd3E7CisJYm9vbCBwb2xsaW47CisKKwlib29sIHBlcmlvZGlj OworCWludCBwZXJpb2RfZXhwb25lbnQ7CisKKwkvKioKKwkgKiBTdGF0ZSBvZiB0aGUgT0EgYnVm ZmVyLgorCSAqLworCXN0cnVjdCB7CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCQl1OCAqdmFk ZHI7CisJCXUzMiBsYXN0X2N0eF9pZDsKKwkJaW50IGZvcm1hdDsKKwkJaW50IGZvcm1hdF9zaXpl OworCQlpbnQgc2l6ZV9leHBvbmVudDsKKworCQkvKioKKwkJICogTG9ja3MgcmVhZHMgYW5kIHdy aXRlcyB0byBhbGwgaGVhZC90YWlsIHN0YXRlCisJCSAqCisJCSAqIENvbnNpZGVyOiB0aGUgaGVh ZCBhbmQgdGFpbCBwb2ludGVyIHN0YXRlIG5lZWRzIHRvIGJlIHJlYWQKKwkJICogY29uc2lzdGVu dGx5IGZyb20gYSBocnRpbWVyIGNhbGxiYWNrIChhdG9taWMgY29udGV4dCkgYW5kCisJCSAqIHJl YWQoKSBmb3AgKHVzZXIgY29udGV4dCkgd2l0aCB0YWlsIHBvaW50ZXIgdXBkYXRlcyBoYXBwZW5p bmcKKwkJICogaW4gYXRvbWljIGNvbnRleHQgYW5kIGhlYWQgdXBkYXRlcyBpbiB1c2VyIGNvbnRl eHQgYW5kIHRoZQorCQkgKiAodW5saWtlbHkpIHBvc3NpYmlsaXR5IG9mIHJlYWQoKSBlcnJvcnMg bmVlZGluZyB0byByZXNldCBhbGwKKwkJICogaGVhZC90YWlsIHN0YXRlLgorCQkgKgorCQkgKiBO b3RlOiBDb250ZW50aW9uL3BlcmZvcm1hbmNlIGFyZW4ndCBjdXJyZW50bHkgYSBzaWduaWZpY2Fu dAorCQkgKiBjb25jZXJuIGhlcmUgY29uc2lkZXJpbmcgdGhlIHJlbGF0aXZlbHkgbG93IGZyZXF1 ZW5jeSBvZgorCQkgKiBocnRpbWVyIGNhbGxiYWNrcyAoNW1zIHBlcmlvZCkgYW5kIHRoYXQgcmVh ZHMgdHlwaWNhbGx5IG9ubHkKKwkJICogaGFwcGVuIGluIHJlc3BvbnNlIHRvIGEgaHJ0aW1lciBl dmVudCBhbmQgbGlrZWx5IGNvbXBsZXRlCisJCSAqIGJlZm9yZSB0aGUgbmV4dCBjYWxsYmFjay4K KwkJICoKKwkJICogTm90ZTogVGhpcyBsb2NrIGlzIG5vdCBoZWxkICp3aGlsZSogcmVhZGluZyBh bmQgY29weWluZyBkYXRhCisJCSAqIHRvIHVzZXJzcGFjZSBzbyB0aGUgdmFsdWUgb2YgaGVhZCBv YnNlcnZlZCBpbiBodHJpbWVyCisJCSAqIGNhbGxiYWNrcyB3b24ndCByZXByZXNlbnQgYW55IHBh cnRpYWwgY29uc3VtcHRpb24gb2YgZGF0YS4KKwkJICovCisJCXNwaW5sb2NrX3QgcHRyX2xvY2s7 CisKKwkJLyoqCisJCSAqIE9uZSAnYWdpbmcnIHRhaWwgcG9pbnRlciBhbmQgb25lICdhZ2VkJyB0 YWlsIHBvaW50ZXIgcmVhZHkgdG8KKwkJICogdXNlZCBmb3IgcmVhZGluZy4KKwkJICoKKwkJICog SW5pdGlhbCB2YWx1ZXMgb2YgMHhmZmZmZmZmZiBhcmUgaW52YWxpZCBhbmQgaW1wbHkgdGhhdCBh bgorCQkgKiB1cGRhdGUgaXMgcmVxdWlyZWQgKGFuZCBzaG91bGQgYmUgaWdub3JlZCBieSBhbiBh dHRlbXB0ZWQKKwkJICogcmVhZCkKKwkJICovCisJCXN0cnVjdCB7CisJCQl1MzIgb2Zmc2V0Owor CQl9IHRhaWxzWzJdOworCisJCS8qKgorCQkgKiBJbmRleCBmb3IgdGhlIGFnZWQgdGFpbCByZWFk eSB0byByZWFkKCkgZGF0YSB1cCB0by4KKwkJICovCisJCXVuc2lnbmVkIGludCBhZ2VkX3RhaWxf aWR4OworCisJCS8qKgorCQkgKiBBIG1vbm90b25pYyB0aW1lc3RhbXAgZm9yIHdoZW4gdGhlIGN1 cnJlbnQgYWdpbmcgdGFpbCBwb2ludGVyCisJCSAqIHdhcyByZWFkOyB1c2VkIHRvIGRldGVybWlu ZSB3aGVuIGl0IGlzIG9sZCBlbm91Z2ggdG8gdHJ1c3QuCisJCSAqLworCQl1NjQgYWdpbmdfdGlt ZXN0YW1wOworCisJCS8qKgorCQkgKiBBbHRob3VnaCB3ZSBjYW4gYWx3YXlzIHJlYWQgYmFjayB0 aGUgaGVhZCBwb2ludGVyIHJlZ2lzdGVyLAorCQkgKiB3ZSBwcmVmZXIgdG8gYXZvaWQgdHJ1c3Rp bmcgdGhlIEhXIHN0YXRlLCBqdXN0IHRvIGF2b2lkIGFueQorCQkgKiByaXNrIHRoYXQgc29tZSBo YXJkd2FyZSBjb25kaXRpb24gY291bGQgKiBzb21laG93IGJ1bXAgdGhlCisJCSAqIGhlYWQgcG9p bnRlciB1bnByZWRpY3RhYmx5IGFuZCBjYXVzZSB1cyB0byBmb3J3YXJkIHRoZSB3cm9uZworCQkg KiBPQSBidWZmZXIgZGF0YSB0byB1c2Vyc3BhY2UuCisJCSAqLworCQl1MzIgaGVhZDsKKwl9IG9h X2J1ZmZlcjsKIH07CiAKIC8qKgpAQCAtMTQzNyw3ICsxNTE3LDcgQEAgc3RydWN0IGk5MTVfb2Ff b3BzIHsKIAkgKiBAZGlzYWJsZV9tZXRyaWNfc2V0OiBSZW1vdmUgc3lzdGVtIGNvbnN0cmFpbnRz IGFzc29jaWF0ZWQgd2l0aCB1c2luZwogCSAqIHRoZSBPQSB1bml0LgogCSAqLwotCXZvaWQgKCpk aXNhYmxlX21ldHJpY19zZXQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisJ dm9pZCAoKmRpc2FibGVfbWV0cmljX3NldCkoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSk7CiAKIAkvKioKIAkgKiBAb2FfZW5hYmxlOiBFbmFibGUgcGVyaW9kaWMgc2FtcGxpbmcKQEAg LTE0NjUsNyArMTU0NSw3IEBAIHN0cnVjdCBpOTE1X29hX29wcyB7CiAJICogaGFuZGxpbmcgdGhl IE9BIHVuaXQgdGFpbCBwb2ludGVyIHJhY2UgdGhhdCBhZmZlY3RzIG11bHRpcGxlCiAJICogZ2Vu ZXJhdGlvbnMuCiAJICovCi0JdTMyICgqb2FfaHdfdGFpbF9yZWFkKShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOworCXUzMiAoKm9hX2h3X3RhaWxfcmVhZCkoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSk7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgewpA QCAtMTg2OCwxMjAgKzE5NDgsMzUgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQlzdHJ1 Y3QgbXV0ZXggbG9jazsKIAkJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOwogCi0JCXN0cnVjdCB7 Ci0JCQkvKgotCQkJICogVGhlIHN0cmVhbSBjdXJyZW50bHkgdXNpbmcgdGhlIE9BIHVuaXQuIElm IGFjY2Vzc2VkCi0JCQkgKiBvdXRzaWRlIGEgc3lzY2FsbCBhc3NvY2lhdGVkIHRvIGl0cyBmaWxl Ci0JCQkgKiBkZXNjcmlwdG9yLCB5b3UgbmVlZCB0byBob2xkCi0JCQkgKiBkZXZfcHJpdi0+ZHJt LnN0cnVjdF9tdXRleC4KLQkJCSAqLwotCQkJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKmV4Y2x1 c2l2ZV9zdHJlYW07CisJCS8qCisJCSAqIFRoZSBzdHJlYW0gY3VycmVudGx5IHVzaW5nIHRoZSBP QSB1bml0LiBJZiBhY2Nlc3NlZAorCQkgKiBvdXRzaWRlIGEgc3lzY2FsbCBhc3NvY2lhdGVkIHRv IGl0cyBmaWxlCisJCSAqIGRlc2NyaXB0b3IsIHlvdSBuZWVkIHRvIGhvbGQKKwkJICogZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXguCisJCSAqLworCQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq ZXhjbHVzaXZlX3N0cmVhbTsKKworCQkvKioKKwkJICogRm9yIHJhdGUgbGltaXRpbmcgYW55IG5v dGlmaWNhdGlvbnMgb2Ygc3B1cmlvdXMKKwkJICogaW52YWxpZCBPQSByZXBvcnRzCisJCSAqLwor CQlzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHNwdXJpb3VzX3JlcG9ydF9yczsKIAotCQkJc3RydWN0 IGludGVsX2NvbnRleHQgKnBpbm5lZF9jdHg7Ci0JCQl1MzIgc3BlY2lmaWNfY3R4X2lkOwotCQkJ dTMyIHNwZWNpZmljX2N0eF9pZF9tYXNrOworCQlzdHJ1Y3QgaTkxNV9vYV9jb25maWcgdGVzdF9j b25maWc7CiAKLQkJCXN0cnVjdCBocnRpbWVyIHBvbGxfY2hlY2tfdGltZXI7Ci0JCQl3YWl0X3F1 ZXVlX2hlYWRfdCBwb2xsX3dxOwotCQkJYm9vbCBwb2xsaW47CisJCXUzMiBnZW43X2xhdGNoZWRf b2FzdGF0dXMxOworCQl1MzIgY3R4X29hY3R4Y3RybF9vZmZzZXQ7CisJCXUzMiBjdHhfZmxleGV1 MF9vZmZzZXQ7CiAKLQkJCS8qKgotCQkJICogRm9yIHJhdGUgbGltaXRpbmcgYW55IG5vdGlmaWNh dGlvbnMgb2Ygc3B1cmlvdXMKLQkJCSAqIGludmFsaWQgT0EgcmVwb3J0cwotCQkJICovCi0JCQlz dHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHNwdXJpb3VzX3JlcG9ydF9yczsKLQotCQkJYm9vbCBwZXJp b2RpYzsKLQkJCWludCBwZXJpb2RfZXhwb25lbnQ7Ci0KLQkJCXN0cnVjdCBpOTE1X29hX2NvbmZp ZyB0ZXN0X2NvbmZpZzsKLQotCQkJc3RydWN0IHsKLQkJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK LQkJCQl1OCAqdmFkZHI7Ci0JCQkJdTMyIGxhc3RfY3R4X2lkOwotCQkJCWludCBmb3JtYXQ7Ci0J CQkJaW50IGZvcm1hdF9zaXplOwotCi0JCQkJLyoqCi0JCQkJICogTG9ja3MgcmVhZHMgYW5kIHdy aXRlcyB0byBhbGwgaGVhZC90YWlsIHN0YXRlCi0JCQkJICoKLQkJCQkgKiBDb25zaWRlcjogdGhl IGhlYWQgYW5kIHRhaWwgcG9pbnRlciBzdGF0ZQotCQkJCSAqIG5lZWRzIHRvIGJlIHJlYWQgY29u c2lzdGVudGx5IGZyb20gYSBocnRpbWVyCi0JCQkJICogY2FsbGJhY2sgKGF0b21pYyBjb250ZXh0 KSBhbmQgcmVhZCgpIGZvcAotCQkJCSAqICh1c2VyIGNvbnRleHQpIHdpdGggdGFpbCBwb2ludGVy IHVwZGF0ZXMKLQkJCQkgKiBoYXBwZW5pbmcgaW4gYXRvbWljIGNvbnRleHQgYW5kIGhlYWQgdXBk YXRlcwotCQkJCSAqIGluIHVzZXIgY29udGV4dCBhbmQgdGhlICh1bmxpa2VseSkKLQkJCQkgKiBw b3NzaWJpbGl0eSBvZiByZWFkKCkgZXJyb3JzIG5lZWRpbmcgdG8KLQkJCQkgKiByZXNldCBhbGwg aGVhZC90YWlsIHN0YXRlLgotCQkJCSAqCi0JCQkJICogTm90ZTogQ29udGVudGlvbiBvciBwZXJm b3JtYW5jZSBhcmVuJ3QKLQkJCQkgKiBjdXJyZW50bHkgYSBzaWduaWZpY2FudCBjb25jZXJuIGhl cmUKLQkJCQkgKiBjb25zaWRlcmluZyB0aGUgcmVsYXRpdmVseSBsb3cgZnJlcXVlbmN5IG9mCi0J CQkJICogaHJ0aW1lciBjYWxsYmFja3MgKDVtcyBwZXJpb2QpIGFuZCB0aGF0Ci0JCQkJICogcmVh ZHMgdHlwaWNhbGx5IG9ubHkgaGFwcGVuIGluIHJlc3BvbnNlIHRvIGEKLQkJCQkgKiBocnRpbWVy IGV2ZW50IGFuZCBsaWtlbHkgY29tcGxldGUgYmVmb3JlIHRoZQotCQkJCSAqIG5leHQgY2FsbGJh Y2suCi0JCQkJICoKLQkJCQkgKiBOb3RlOiBUaGlzIGxvY2sgaXMgbm90IGhlbGQgKndoaWxlKiBy ZWFkaW5nCi0JCQkJICogYW5kIGNvcHlpbmcgZGF0YSB0byB1c2Vyc3BhY2Ugc28gdGhlIHZhbHVl Ci0JCQkJICogb2YgaGVhZCBvYnNlcnZlZCBpbiBodHJpbWVyIGNhbGxiYWNrcyB3b24ndAotCQkJ CSAqIHJlcHJlc2VudCBhbnkgcGFydGlhbCBjb25zdW1wdGlvbiBvZiBkYXRhLgotCQkJCSAqLwot CQkJCXNwaW5sb2NrX3QgcHRyX2xvY2s7Ci0KLQkJCQkvKioKLQkJCQkgKiBPbmUgJ2FnaW5nJyB0 YWlsIHBvaW50ZXIgYW5kIG9uZSAnYWdlZCcKLQkJCQkgKiB0YWlsIHBvaW50ZXIgcmVhZHkgdG8g dXNlZCBmb3IgcmVhZGluZy4KLQkJCQkgKgotCQkJCSAqIEluaXRpYWwgdmFsdWVzIG9mIDB4ZmZm ZmZmZmYgYXJlIGludmFsaWQKLQkJCQkgKiBhbmQgaW1wbHkgdGhhdCBhbiB1cGRhdGUgaXMgcmVx dWlyZWQKLQkJCQkgKiAoYW5kIHNob3VsZCBiZSBpZ25vcmVkIGJ5IGFuIGF0dGVtcHRlZAotCQkJ CSAqIHJlYWQpCi0JCQkJICovCi0JCQkJc3RydWN0IHsKLQkJCQkJdTMyIG9mZnNldDsKLQkJCQl9 IHRhaWxzWzJdOwotCi0JCQkJLyoqCi0JCQkJICogSW5kZXggZm9yIHRoZSBhZ2VkIHRhaWwgcmVh ZHkgdG8gcmVhZCgpCi0JCQkJICogZGF0YSB1cCB0by4KLQkJCQkgKi8KLQkJCQl1bnNpZ25lZCBp bnQgYWdlZF90YWlsX2lkeDsKLQotCQkJCS8qKgotCQkJCSAqIEEgbW9ub3RvbmljIHRpbWVzdGFt cCBmb3Igd2hlbiB0aGUgY3VycmVudAotCQkJCSAqIGFnaW5nIHRhaWwgcG9pbnRlciB3YXMgcmVh ZDsgdXNlZCB0bwotCQkJCSAqIGRldGVybWluZSB3aGVuIGl0IGlzIG9sZCBlbm91Z2ggdG8gdHJ1 c3QuCi0JCQkJICovCi0JCQkJdTY0IGFnaW5nX3RpbWVzdGFtcDsKLQotCQkJCS8qKgotCQkJCSAq IEFsdGhvdWdoIHdlIGNhbiBhbHdheXMgcmVhZCBiYWNrIHRoZSBoZWFkCi0JCQkJICogcG9pbnRl ciByZWdpc3Rlciwgd2UgcHJlZmVyIHRvIGF2b2lkCi0JCQkJICogdHJ1c3RpbmcgdGhlIEhXIHN0 YXRlLCBqdXN0IHRvIGF2b2lkIGFueQotCQkJCSAqIHJpc2sgdGhhdCBzb21lIGhhcmR3YXJlIGNv bmRpdGlvbiBjb3VsZAotCQkJCSAqIHNvbWVob3cgYnVtcCB0aGUgaGVhZCBwb2ludGVyIHVucHJl ZGljdGFibHkKLQkJCQkgKiBhbmQgY2F1c2UgdXMgdG8gZm9yd2FyZCB0aGUgd3JvbmcgT0EgYnVm ZmVyCi0JCQkJICogZGF0YSB0byB1c2Vyc3BhY2UuCi0JCQkJICovCi0JCQkJdTMyIGhlYWQ7Ci0J CQl9IG9hX2J1ZmZlcjsKLQotCQkJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7Ci0JCQl1MzIg Y3R4X29hY3R4Y3RybF9vZmZzZXQ7Ci0JCQl1MzIgY3R4X2ZsZXhldTBfb2Zmc2V0OwotCi0JCQkv KioKLQkJCSAqIFRoZSBSUFRfSUQvcmVhc29uIGZpZWxkIGZvciBHZW44KyBpbmNsdWRlcyBhIGJp dAotCQkJICogdG8gZGV0ZXJtaW5lIGlmIHRoZSBDVFggSUQgaW4gdGhlIHJlcG9ydCBpcyB2YWxp ZAotCQkJICogYnV0IHRoZSBzcGVjaWZpYyBiaXQgZGlmZmVycyBiZXR3ZWVuIEdlbiA4IGFuZCA5 Ci0JCQkgKi8KLQkJCXUzMiBnZW44X3ZhbGlkX2N0eF9iaXQ7CisJCS8qKgorCQkgKiBUaGUgUlBU X0lEL3JlYXNvbiBmaWVsZCBmb3IgR2VuOCsgaW5jbHVkZXMgYSBiaXQKKwkJICogdG8gZGV0ZXJt aW5lIGlmIHRoZSBDVFggSUQgaW4gdGhlIHJlcG9ydCBpcyB2YWxpZAorCQkgKiBidXQgdGhlIHNw ZWNpZmljIGJpdCBkaWZmZXJzIGJldHdlZW4gR2VuIDggYW5kIDkKKwkJICovCisJCXUzMiBnZW44 X3ZhbGlkX2N0eF9iaXQ7CiAKLQkJCXN0cnVjdCBpOTE1X29hX29wcyBvcHM7Ci0JCQljb25zdCBz dHJ1Y3QgaTkxNV9vYV9mb3JtYXQgKm9hX2Zvcm1hdHM7Ci0JCX0gb2E7CisJCXN0cnVjdCBpOTE1 X29hX29wcyBvcHM7CisJCWNvbnN0IHN0cnVjdCBpOTE1X29hX2Zvcm1hdCAqb2FfZm9ybWF0czsK IAl9IHBlcmY7CiAKIAkvKiBBYnN0cmFjdCB0aGUgc3VibWlzc2lvbiBtZWNoYW5pc20gKGxlZ2Fj eSByaW5nYnVmZmVyIG9yIGV4ZWNsaXN0cykgYXdheSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9iZHcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff YmR3LmMKaW5kZXggNGFjZGI5NDU1NWI3Li43ZDYzMmQ1MDM1MTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9vYV9iZHcuYwpAQCAtNjYsMjYgKzY2LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQog dm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfYmR3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiZDZk ZTZmNTUtZTUyNi00Zjc5LWE2YTYtZDczMTVjMDkwNDRlIiwKLQkJc2l6ZW9mKGRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBl cmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rl c3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZp Z190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFS UkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5i X2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3Jl Z3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rl c3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJkNmRlNmY1NS1lNTI2LTRmNzktYTZhNi1kNzMx NWMwOTA0NGUiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5h dHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImQ2ZGU2ZjU1LWU1MjYtNGY3OS1h NmE2LWQ3MzE1YzA5MDQ0ZSI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0 cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQu YXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5h dHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMKaW5kZXggYTQ0MTk1YzM5OTIz Li5hNGNjNTg0ZmI1YzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff Ynh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQuYwpAQCAtNjQsMjYg KzY0LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVz dF9jb25maWdfYnh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJs Y3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiNWVlNzJmNWMtMDkyZi00MjFlLThiNzAtMjI1 ZjdjM2U5NjEyIiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQp KTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBt dXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3Jl Z3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0 X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0g Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29h KTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRl cl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJf cmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0 X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVz dF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFt ZSA9ICI1ZWU3MmY1Yy0wOTJmLTQyMWUtOGI3MC0yMjVmN2MzZTk2MTIiOwotCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpYy5uYW1lID0gIjVlZTcyZjVjLTA5MmYtNDIxZS04YjcwLTIyNWY3YzNlOTYxMiI7CisJZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5h dHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQu YXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0 OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0g c2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfY2ZsZ3QyLmMKaW5kZXggN2Y2MGQ1MWI4NzYxLi41MTkzMGM3MWJmN2MgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2ZsZ3QyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDIuYwpAQCAtNjUsMjYgKzY1LDI2IEBAIHNo b3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfY2Zs Z3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy51dWlkLAogCQkiNzRmYjQ5MDItZDNkMy00MjM3LTllOTAtY2JkYzY4ZDBhNDQ2 IiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAx OwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmln X3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRl cl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdf dGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4g PSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhf cmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAK LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICI3NGZi NDkwMi1kM2QzLTQyMzctOWU5MC1jYmRjNjhkMGE0NDYiOwotCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1l ID0gIjc0ZmI0OTAyLWQzZDMtNDIzNy05ZTkwLWNiZGM2OGQwYTQ0NiI7CisJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9 ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2FfY2ZsZ3QzLmMKaW5kZXggYTkyYzM4ZTNhMGNlLi5kZTYzMGI1M2QzNjQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2ZsZ3QzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9jZmxndDMuYwpAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9v YV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfY2ZsZ3QzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy51dWlkLAogCQkiNTc3ZThlMmMtM2ZhMC00ODc1LTg3NDMtMzUzOGQ1ODVlM2IwIiwKLQkJc2l6 ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7 Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9y ZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11 eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190 ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xl biA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsK KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9T SVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZs ZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICI1NzdlOGUyYy0zZmEw LTQ4NzUtODc0My0zNTM4ZDU4NWUzYjAiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJz OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjU3N2U4 ZTJjLTNmYTAtNDg3NS04NzQzLTM1MzhkNTg1ZTNiMCI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0 cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAi aWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1v ZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5z aG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9jaHYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMKaW5k ZXggNzFlYzg4OWEwMTE0Li43ZDdmMzNjNDQ2OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfb2FfY2h2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9j aHYuYwpAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICpr ZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkx NV9wZXJmX2xvYWRfdGVzdF9jb25maWdfY2h2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJ c3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiNGE1MzRiMDctY2Jh My00MTRkLThkNjAtODc0ODMwZTg4M2FhIiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7 CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVz dF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29h OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJf Y291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJf cmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVz dF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4 X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhf cmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWMubmFtZSA9ICI0YTUzNGIwNy1jYmEzLTQxNGQtOGQ2MC04NzQ4MzBlODgzYWEi OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjRhNTM0YjA3LWNiYTMtNDE0ZC04ZDYwLTg3NDgz MGU4ODNhYSI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJz ID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1sw XSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUg PSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5h dHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jbmwuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY25sLmMKaW5kZXggNWMyM2Q4ODNkNmM5Li40YWU4NmE4 OTgzYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY25sLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jbmwuYwpAQCAtNzcsMjYgKzc3LDI2IEBA IHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdf Y25sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy51dWlkLAogCQkiZGI0MWVkZDQtZDhlNy00NzMwLWFkMTEtYjlhMmQ2ODMzNTAz IiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAx OwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmln X3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRl cl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdf dGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4g PSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhf cmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAK LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJkYjQx ZWRkNC1kOGU3LTQ3MzAtYWQxMS1iOWEyZDY4MzM1MDMiOwotCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1l ID0gImRiNDFlZGQ0LWQ4ZTctNDczMC1hZDExLWI5YTJkNjgzMzUwMyI7CisJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9 ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff Z2xrLmMKaW5kZXggNGJkZGE2NmRmN2QyLi5kOGQ2MzRkY2ExNTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9vYV9nbGsuYwpAQCAtNjQsMjYgKzY0LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQog dm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfZ2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiZGQz ZmQ3ODktZTc4My00MjA0LThjZDAtYjY3MWJiY2NiMGNmIiwKLQkJc2l6ZW9mKGRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBl cmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rl c3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZp Z190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFS UkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5i X2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3Jl Z3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rl c3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJkZDNmZDc4OS1lNzgzLTQyMDQtOGNkMC1iNjcx YmJjY2IwY2YiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5h dHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImRkM2ZkNzg5LWU3ODMtNDIwNC04 Y2QwLWI2NzFiYmNjYjBjZiI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0 cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQu YXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5h dHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMKaW5kZXggY2M2NTI2ZmRkMmJk Li43MDMyMjc3ODc2ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff aHN3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYwpAQCAtOTQsMjYg Kzk0LDI2IEBAIHNob3dfcmVuZGVyX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpiCiB2b2lkCiBpOTE1X3BlcmZfbG9hZF90 ZXN0X2NvbmZpZ19oc3coc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0 cmxjcHkoZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcudXVpZCwKKwlzdHJsY3B5KGRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQsCiAJCSI0MDNkODgzMi0xYTI3LTRhYTYtYTY0ZS1m NTM4OWNlN2IyMTIiLAotCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcudXVp ZCkpOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmlkID0gMTsKKwkJc2l6ZW9mKGRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQpKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5pZCA9IDE7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVncyA9 IG11eF9jb25maWdfcmVuZGVyX2Jhc2ljOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln Lm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ19yZW5kZXJfYmFz aWM7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOwotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJ WkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYyk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50 ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5m bGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVu ZGVyX2Jhc2ljKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Yy5uYW1lID0gIjQwM2Q4ODMyLTFhMjctNGFhNi1hNjRlLWY1Mzg5Y2U3YjIxMiI7Ci0JZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBl cmYub2EudGVzdF9jb25maWcuYXR0cnM7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lz ZnNfbWV0cmljLm5hbWUgPSAiNDAzZDg4MzItMWEyNy00YWE2LWE2NGUtZjUzODljZTdiMjEyIjsK KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyczsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5hdHRyOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwogCi0JZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Ci0J ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9 IDA0NDQ7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNo b3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZDsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKKwlkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9pY2wuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaWNsLmMKaW5kZXggYmFhNTE0MjdhNTQzLi5iY2EyM2Yx NTA2MjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaWNsLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9pY2wuYwpAQCAtNzQsMjYgKzc0LDI2IEBA IHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdf aWNsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy51dWlkLAogCQkiYTI5MTY2NWUtMjQ0Yi00Yjc2LTliOWEtMDFkZTlkM2M4MDY4 IiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAx OwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmln X3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRl cl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdf dGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4g PSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhf cmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAK LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJhMjkx NjY1ZS0yNDRiLTRiNzYtOWI5YS0wMWRlOWQzYzgwNjgiOwotCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1l ID0gImEyOTE2NjVlLTI0NGItNGI3Ni05YjlhLTAxZGU5ZDNjODA2OCI7CisJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9 ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QyLmMKaW5kZXggMTY4ZTQ5YWIwZDRkLi4yZTFkMTJmNzhjOWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYwpAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9v YV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfa2JsZ3QyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy51dWlkLAogCQkiYmFhM2M3ZTQtNTJiNi00Yjg1LTgwMWUtNDY1YTk0Yjc0NmRkIiwKLQkJc2l6 ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7 Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9y ZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11 eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190 ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xl biA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsK KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9T SVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZs ZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJiYWEzYzdlNC01MmI2 LTRiODUtODAxZS00NjVhOTRiNzQ2ZGQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJz OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImJhYTNj N2U0LTUyYjYtNGI4NS04MDFlLTQ2NWE5NGI3NDZkZCI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0 cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAi aWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1v ZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5z aG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9rYmxndDMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3Qz LmMKaW5kZXggNmZmYTU1M2MzODhlLi4wN2E4NTY3YmQ1YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9vYV9rYmxndDMuYwpAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1 Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVm KQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfa2JsZ3QzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnV1aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAog CQkiZjE3OTJmMzItNmRiMi00YjUwLWI0YjItNTU3MTI4ZjE2ODhkIiwKLQkJc2l6ZW9mKGRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlk KSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBl cmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29u ZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4 X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xl biA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5m bGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rf b2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9 IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJmMTc5MmYzMi02ZGIyLTRiNTAtYjRi Mi01NTcxMjhmMTY4OGQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImYxNzkyZjMyLTZkYjIt NGI1MC1iNGIyLTU1NzEyOGYxNjg4ZCI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lz ZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlk ZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0 OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hv d190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9za2xndDIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmMKaW5kZXgg N2NlNmVlODUxZDQzLi5mYTQ2M2E5MmY1YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2Ffc2tsZ3QyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9z a2xndDIuYwpAQCAtNjQsMjYgKzY0LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAog aTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfc2tsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1 aWQsCisJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiMTY1MTk0 OWYtMGFjMC00Y2IxLWEwNmYtZGFmZDc0YTQwN2QxIiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5p ZCA9IDE7CisJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVz dF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYu b2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rf b2EpOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190 ZXN0X29hOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2Nv dW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3Mg PSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rf b2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICIxNjUxOTQ5Zi0wYWMwLTRjYjEtYTA2Zi1kYWZkNzRh NDA3ZDEiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRy cyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjE2NTE5NDlmLTBhYzAtNGNiMS1hMDZm LWRhZmQ3NGE0MDdkMSI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj LmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+ cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5h dHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0 cjsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm5hbWUgPSAiaWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5hdHRyLm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29h X2lkOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmMKaW5kZXggMDg2Y2EyNjMx ZTFjLi45Yzk0OTdkN2E5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffc2tsZ3QzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMuYwpA QCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJm X2xvYWRfdGVzdF9jb25maWdfc2tsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIHsKLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3Ry bGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiMmI5ODU4MDMtZDNjOS00 NjI5LThhNGYtNjM0YmZlY2JhMGU4IiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnV1aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJ CXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcu bXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwor CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4 X2NvbmZpZ190ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291 bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ190ZXN0X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVn cyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9v YSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1 X2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVn c19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9l dV9jb25maWdfdGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWMubmFtZSA9ICIyYjk4NTgwMy1kM2M5LTQ2MjktOGE0Zi02MzRiZmVjYmEwZTgiOwot CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjJiOTg1ODAzLWQzYzktNDYyOS04YTRmLTYzNGJmZWNi YTBlOCI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0g ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50 ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWNfaWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9 ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAi aWQiOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm1vZGUgPSAwNDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0LmMKaW5kZXggYjI5MWE2ZWI4YTg3Li42NWVi YzZiOGRkNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDQuYwpAQCAtNjUsMjYg KzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogdm9pZAogaTkxNV9wZXJmX2xvYWRfdGVz dF9jb25maWdfc2tsZ3Q0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlz dHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCisJc3RybGNweShkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAogCQkiODgyZmE0MzMtMWY0YS00YTY3LWE5NjIt Yzc0MTg4OGZlNWY1IiwKLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1 aWQpKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7CisJCXNpemVvZihk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuaWQgPSAxOwogCi0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3Mg PSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4 X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190 ZXN0X29hKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdz ID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0 X29hKTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291 bnRlcl9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50 ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7CiAKLQlk ZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190 ZXN0X29hOwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCWRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf dGVzdF9vYSk7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMu bmFtZSA9ICI4ODJmYTQzMy0xZjRhLTRhNjctYTk2Mi1jNzQxODg4ZmU1ZjUiOwotCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLmF0dHJzOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpYy5uYW1lID0gIjg4MmZhNDMzLTFmNGEtNGE2Ny1hOTYyLWM3NDE4ODhmZTVmNSI7CisJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcuYXR0cnM7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNf aWQuYXR0cjsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKIAotCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwotCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAw NDQ0OwotCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93 ID0gc2hvd190ZXN0X29hX2lkOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BlcmYuYwppbmRleCBjNDk5NWQ1YTE2ZDIuLmU1N2M3ZmM0MmI0NiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMKQEAgLTM2NCw2ICszNjQsOCBAQCBzdHJ1Y3QgcGVyZl9vcGVuX3By b3BlcnRpZXMgewogCWludCBvYV9wZXJpb2RfZXhwb25lbnQ7CiB9OwogCitzdGF0aWMgZW51bSBo cnRpbWVyX3Jlc3RhcnQgb2FfcG9sbF9jaGVja190aW1lcl9jYihzdHJ1Y3QgaHJ0aW1lciAqaHJ0 aW1lcik7CisKIHN0YXRpYyB2b2lkIGZyZWVfb2FfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCSAgIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQog ewpAQCAtMzkyLDggKzM5NCw4IEBAIHN0YXRpYyBpbnQgZ2V0X29hX2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50IHJldDsKIAogCWlmIChtZXRyaWNzX3NldCA9 PSAxKSB7Ci0JCSpvdXRfY29uZmlnID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnOwot CQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5yZWZfY291bnQpOwor CQkqb3V0X2NvbmZpZyA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZzsKKwkJYXRvbWljX2lu YygmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcucmVmX2NvdW50KTsKIAkJcmV0dXJuIDA7CiAJ fQogCkBAIC00MTIsMTMgKzQxNCwxNiBAQCBzdGF0aWMgaW50IGdldF9vYV9jb25maWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1 MzIgZ2VuOF9vYV9od190YWlsX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQorc3RhdGljIHUzMiBnZW44X29hX2h3X3RhaWxfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7CisKIAlyZXR1cm4gSTkxNV9SRUFEKEdFTjhfT0FUQUlMUFRSKSAmIEdFTjhf T0FUQUlMUFRSX01BU0s7CiB9CiAKLXN0YXRpYyB1MzIgZ2VuN19vYV9od190YWlsX3JlYWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHUzMiBnZW43X29hX2h3X3Rh aWxfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogeworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJdTMyIG9hc3RhdHVz MSA9IEk5MTVfUkVBRChHRU43X09BU1RBVFVTMSk7CiAKIAlyZXR1cm4gb2FzdGF0dXMxICYgR0VO N19PQVNUQVRVUzFfVEFJTF9NQVNLOwpAQCAtNDI2LDcgKzQzMSw3IEBAIHN0YXRpYyB1MzIgZ2Vu N19vYV9od190YWlsX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAv KioKICAqIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZCAtIGNoZWNrIGZvciBkYXRhIGFuZCB1cGRh dGUgdGFpbCBwdHIgc3RhdGUKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAq IEBzdHJlYW06IGk5MTUgc3RyZWFtIGluc3RhbmNlCiAgKgogICogVGhpcyBpcyBlaXRoZXIgY2Fs bGVkIHZpYSBmb3BzIChmb3IgYmxvY2tpbmcgcmVhZHMgaW4gdXNlciBjdHgpIG9yIHRoZSBwb2xs CiAgKiBjaGVjayBocnRpbWVyIChhdG9taWMgY3R4KSB0byBjaGVjayB0aGUgT0EgYnVmZmVyIHRh aWwgcG9pbnRlciBhbmQgY2hlY2sKQEAgLTQ0OCw5ICs0NTMsMTAgQEAgc3RhdGljIHUzMiBnZW43 X29hX2h3X3RhaWxfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKgog ICogUmV0dXJuczogJXRydWUgaWYgdGhlIE9BIGJ1ZmZlciBjb250YWlucyBkYXRhLCBlbHNlICVm YWxzZQogICovCi1zdGF0aWMgYm9vbCBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIGJvb2wgb2FfYnVmZmVyX2NoZWNrX3Vu bG9ja2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0JaW50IHJlcG9ydF9z aXplID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJaW50IHJlcG9y dF9zaXplID0gc3RyZWFtLT5vYV9idWZmZXIuZm9ybWF0X3NpemU7CiAJdW5zaWduZWQgbG9uZyBm bGFnczsKIAl1bnNpZ25lZCBpbnQgYWdlZF9pZHg7CiAJdTMyIGhlYWQsIGh3X3RhaWwsIGFnZWRf dGFpbCwgYWdpbmdfdGFpbDsKQEAgLTQ2MCwxOSArNDY2LDE5IEBAIHN0YXRpYyBib29sIG9hX2J1 ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ ICogY291bGQgcmVzdWx0IGluIGFuIE9BIGJ1ZmZlciByZXNldCB3aGljaCBtaWdodCByZXNldCB0 aGUgaGVhZCwKIAkgKiB0YWlsc1tdIGFuZCBhZ2VkX3RhaWwgc3RhdGUuCiAJICovCi0Jc3Bpbl9s b2NrX2lycXNhdmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3Mp OworCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3Mp OwogCiAJLyogTkI6IFRoZSBoZWFkIHdlIG9ic2VydmUgaGVyZSBtaWdodCBlZmZlY3RpdmVseSBi ZSBhIGxpdHRsZSBvdXQgb2YKIAkgKiBkYXRlIChiZXR3ZWVuIGhlYWQgYW5kIHRhaWxzW2FnZWRf aWR4XS5vZmZzZXQgaWYgdGhlcmUgaXMgY3VycmVudGx5CiAJICogYSByZWFkKCkgaW4gcHJvZ3Jl c3MuCiAJICovCi0JaGVhZCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5oZWFkOworCWhl YWQgPSBzdHJlYW0tPm9hX2J1ZmZlci5oZWFkOwogCi0JYWdlZF9pZHggPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIuYWdlZF90YWlsX2lkeDsKLQlhZ2VkX3RhaWwgPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIudGFpbHNbYWdlZF9pZHhdLm9mZnNldDsKLQlhZ2luZ190YWlsID0gZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnRhaWxzWyFhZ2VkX2lkeF0ub2Zmc2V0OworCWFnZWRf aWR4ID0gc3RyZWFtLT5vYV9idWZmZXIuYWdlZF90YWlsX2lkeDsKKwlhZ2VkX3RhaWwgPSBzdHJl YW0tPm9hX2J1ZmZlci50YWlsc1thZ2VkX2lkeF0ub2Zmc2V0OworCWFnaW5nX3RhaWwgPSBzdHJl YW0tPm9hX2J1ZmZlci50YWlsc1shYWdlZF9pZHhdLm9mZnNldDsKIAotCWh3X3RhaWwgPSBkZXZf cHJpdi0+cGVyZi5vYS5vcHMub2FfaHdfdGFpbF9yZWFkKGRldl9wcml2KTsKKwlod190YWlsID0g ZGV2X3ByaXYtPnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZChzdHJlYW0pOwogCiAJLyogVGhlIHRh aWwgcG9pbnRlciBpbmNyZWFzZXMgaW4gNjQgYnl0ZSBpbmNyZW1lbnRzLAogCSAqIG5vdCBpbiBy ZXBvcnRfc2l6ZSBzdGVwcy4uLgpAQCAtNDkyLDE2ICs0OTgsMTYgQEAgc3RhdGljIGJvb2wgb2Ff YnVmZmVyX2NoZWNrX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAkgKiBhdmFpbGFibGUpIHdpdGhvdXQgbmVlZGluZyB0byB3YWl0IGZvciBhIGxhdGVyIGhydGlt ZXIgY2FsbGJhY2suCiAJICovCiAJaWYgKGFnaW5nX3RhaWwgIT0gSU5WQUxJRF9UQUlMX1BUUiAm JgotCSAgICAoKG5vdyAtIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZ2luZ190aW1lc3Rh bXApID4KKwkgICAgKChub3cgLSBzdHJlYW0tPm9hX2J1ZmZlci5hZ2luZ190aW1lc3RhbXApID4K IAkgICAgIE9BX1RBSUxfTUFSR0lOX05TRUMpKSB7CiAKIAkJYWdlZF9pZHggXj0gMTsKLQkJZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFnZWRfdGFpbF9pZHggPSBhZ2VkX2lkeDsKKwkJc3Ry ZWFtLT5vYV9idWZmZXIuYWdlZF90YWlsX2lkeCA9IGFnZWRfaWR4OwogCiAJCWFnZWRfdGFpbCA9 IGFnaW5nX3RhaWw7CiAKIAkJLyogTWFyayB0aGF0IHdlIG5lZWQgYSBuZXcgcG9pbnRlciB0byBz dGFydCBhZ2luZy4uLiAqLwotCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbIWFn ZWRfaWR4XS5vZmZzZXQgPSBJTlZBTElEX1RBSUxfUFRSOworCQlzdHJlYW0tPm9hX2J1ZmZlci50 YWlsc1shYWdlZF9pZHhdLm9mZnNldCA9IElOVkFMSURfVEFJTF9QVFI7CiAJCWFnaW5nX3RhaWwg PSBJTlZBTElEX1RBSUxfUFRSOwogCX0KIApAQCAtNTE2LDcgKzUyMiw3IEBAIHN0YXRpYyBib29s IG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJaWYgKGFnaW5nX3RhaWwgPT0gSU5WQUxJRF9UQUlMX1BUUiAmJgogCSAgICAoYWdlZF90 YWlsID09IElOVkFMSURfVEFJTF9QVFIgfHwKIAkgICAgIE9BX1RBS0VOKGh3X3RhaWwsIGFnZWRf dGFpbCkgPj0gcmVwb3J0X3NpemUpKSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZGV2X3By aXYtPnBlcmYub2Eub2FfYnVmZmVyLnZtYTsKKwkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBzdHJl YW0tPm9hX2J1ZmZlci52bWE7CiAJCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpOwogCiAJCS8qIEJlIHBhcmFub2lkIGFuZCBkbyBhIGJvdW5kcyBjaGVjayBvbiB0aGUgcG9p bnRlciByZWFkIGJhY2sKQEAgLTUyNSwxNiArNTMxLDE2IEBAIHN0YXRpYyBib29sIG9hX2J1ZmZl cl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAq LwogCQlpZiAoaHdfdGFpbCA+PSBndHRfb2Zmc2V0ICYmCiAJCSAgICBod190YWlsIDwgKGd0dF9v ZmZzZXQgKyBPQV9CVUZGRVJfU0laRSkpIHsKLQkJCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZl ci50YWlsc1shYWdlZF9pZHhdLm9mZnNldCA9CisJCQlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1sh YWdlZF9pZHhdLm9mZnNldCA9CiAJCQkJYWdpbmdfdGFpbCA9IGh3X3RhaWw7Ci0JCQlkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIuYWdpbmdfdGltZXN0YW1wID0gbm93OworCQkJc3RyZWFtLT5v YV9idWZmZXIuYWdpbmdfdGltZXN0YW1wID0gbm93OwogCQl9IGVsc2UgewogCQkJRFJNX0VSUk9S KCJJZ25vcmluZyBzcHVyaW91cyBvdXQgb2YgcmFuZ2UgT0EgYnVmZmVyIHRhaWwgcG9pbnRlciA9 ICV1XG4iLAogCQkJCSAgaHdfdGFpbCk7CiAJCX0KIAl9CiAKLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwog CiAJcmV0dXJuIGFnZWRfdGFpbCA9PSBJTlZBTElEX1RBSUxfUFRSID8KIAkJZmFsc2UgOiBPQV9U QUtFTihhZ2VkX3RhaWwsIGhlYWQpID49IHJlcG9ydF9zaXplOwpAQCAtNTk3LDggKzYwMyw3IEBA IHN0YXRpYyBpbnQgYXBwZW5kX29hX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtLAogCQkJICAgIHNpemVfdCAqb2Zmc2V0LAogCQkJICAgIGNvbnN0IHU4ICpyZXBvcnQpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK LQlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3Np emU7CisJaW50IHJlcG9ydF9zaXplID0gc3RyZWFtLT5vYV9idWZmZXIuZm9ybWF0X3NpemU7CiAJ c3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciBoZWFkZXI7CiAJdTMyIHNhbXBsZV9m bGFncyA9IHN0cmVhbS0+c2FtcGxlX2ZsYWdzOwogCkBAIC02NTAsOSArNjU1LDkgQEAgc3RhdGlj IGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0sCiAJCQkJICBzaXplX3QgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwotCWludCByZXBvcnRfc2l6ZSA9IGRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKLQl1OCAqb2FfYnVmX2Jhc2UgPSBkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudmFkZHI7Ci0JdTMyIGd0dF9vZmZzZXQgPSBpOTE1X2dn dHRfb2Zmc2V0KGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEpOworCWludCByZXBvcnRf c2l6ZSA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdF9zaXplOworCXU4ICpvYV9idWZfYmFzZSA9 IHN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyOworCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29m ZnNldChzdHJlYW0tPm9hX2J1ZmZlci52bWEpOwogCXUzMiBtYXNrID0gKE9BX0JVRkZFUl9TSVpF IC0gMSk7CiAJc2l6ZV90IHN0YXJ0X29mZnNldCA9ICpvZmZzZXQ7CiAJdW5zaWduZWQgbG9uZyBm bGFnczsKQEAgLTY2NCwxMyArNjY5LDEzIEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVw b3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCWlmIChXQVJOX09OKCFzdHJl YW0tPmVuYWJsZWQpKQogCQlyZXR1cm4gLUVJTzsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJx c2F2ZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKIAotCWhlYWQgPSBkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVhZDsKLQlhZ2VkX3RhaWxfaWR4ID0gZGV2X3ByaXYt PnBlcmYub2Eub2FfYnVmZmVyLmFnZWRfdGFpbF9pZHg7Ci0JdGFpbCA9IGRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci50YWlsc1thZ2VkX3RhaWxfaWR4XS5vZmZzZXQ7CisJaGVhZCA9IHN0cmVh bS0+b2FfYnVmZmVyLmhlYWQ7CisJYWdlZF90YWlsX2lkeCA9IHN0cmVhbS0+b2FfYnVmZmVyLmFn ZWRfdGFpbF9pZHg7CisJdGFpbCA9IHN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzW2FnZWRfdGFpbF9p ZHhdLm9mZnNldDsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLm9h Lm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0 cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CiAKIAkvKgogCSAqIEFuIGludmFsaWQg dGFpbCBwb2ludGVyIGhlcmUgbWVhbnMgd2UncmUgc3RpbGwgd2FpdGluZyBmb3IgdGhlIHBvbGwK QEAgLTczNCwxMiArNzM5LDEyIEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlyZWFzb24gPSAoKHJlcG9ydDMyWzBd ID4+IE9BUkVQT1JUX1JFQVNPTl9TSElGVCkgJgogCQkJICBPQVJFUE9SVF9SRUFTT05fTUFTSyk7 CiAJCWlmIChyZWFzb24gPT0gMCkgewotCQkJaWYgKF9fcmF0ZWxpbWl0KCZkZXZfcHJpdi0+cGVy Zi5vYS5zcHVyaW91c19yZXBvcnRfcnMpKQorCQkJaWYgKF9fcmF0ZWxpbWl0KCZkZXZfcHJpdi0+ cGVyZi5zcHVyaW91c19yZXBvcnRfcnMpKQogCQkJCURSTV9OT1RFKCJTa2lwcGluZyBzcHVyaW91 cywgaW52YWxpZCBPQSByZXBvcnRcbiIpOwogCQkJY29udGludWU7CiAJCX0KIAotCQljdHhfaWQg PSByZXBvcnQzMlsyXSAmIGRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9tYXNrOwor CQljdHhfaWQgPSByZXBvcnQzMlsyXSAmIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkX21hc2s7CiAK IAkJLyoKIAkJICogU3F1YXNoIHdoYXRldmVyIGlzIGluIHRoZSBDVFhfSUQgZmllbGQgaWYgaXQn cyBtYXJrZWQgYXMKQEAgLTc0OSw3ICs3NTQsNyBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29h X3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJICogTm90ZTogdGhh dCB3ZSBkb24ndCBjbGVhciB0aGUgdmFsaWRfY3R4X2JpdCBzbyB1c2Vyc3BhY2UgY2FuCiAJCSAq IHVuZGVyc3RhbmQgdGhhdCB0aGUgSUQgaGFzIGJlZW4gc3F1YXNoZWQgYnkgdGhlIGtlcm5lbC4K IAkJICovCi0JCWlmICghKHJlcG9ydDMyWzBdICYgZGV2X3ByaXYtPnBlcmYub2EuZ2VuOF92YWxp ZF9jdHhfYml0KSkKKwkJaWYgKCEocmVwb3J0MzJbMF0gJiBkZXZfcHJpdi0+cGVyZi5nZW44X3Zh bGlkX2N0eF9iaXQpKQogCQkJY3R4X2lkID0gcmVwb3J0MzJbMl0gPSBJTlZBTElEX0NUWF9JRDsK IAogCQkvKgpAQCAtNzgzLDE4ICs3ODgsMTcgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9y ZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCSAqIHN3aXRjaGVzIHNp bmNlIGl0J3Mgbm90LXVuY29tbW9uIGZvciBwZXJpb2RpYyBzYW1wbGVzIHRvCiAJCSAqIGlkZW50 aWZ5IGEgc3dpdGNoIGJlZm9yZSBhbnkgJ2NvbnRleHQgc3dpdGNoJyByZXBvcnQuCiAJCSAqLwot CQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0tPmN0eCB8fAotCQkgICAg ZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID09IGN0eF9pZCB8fAotCQkgICAgKGRl dl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5sYXN0X2N0eF9pZCA9PQotCQkgICAgIGRldl9wcml2 LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCkgfHwKKwkJaWYgKCFkZXZfcHJpdi0+cGVyZi5leGNs dXNpdmVfc3RyZWFtLT5jdHggfHwKKwkJICAgIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkID09IGN0 eF9pZCB8fAorCQkgICAgc3RyZWFtLT5vYV9idWZmZXIubGFzdF9jdHhfaWQgPT0gc3RyZWFtLT5z cGVjaWZpY19jdHhfaWQgfHwKIAkJICAgIHJlYXNvbiAmIE9BUkVQT1JUX1JFQVNPTl9DVFhfU1dJ VENIKSB7CiAKIAkJCS8qCiAJCQkgKiBXaGlsZSBmaWx0ZXJpbmcgZm9yIGEgc2luZ2xlIGNvbnRl eHQgd2UgYXZvaWQKIAkJCSAqIGxlYWtpbmcgdGhlIElEcyBvZiBvdGhlciBjb250ZXh0cy4KIAkJ CSAqLwotCQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0tPmN0eCAmJgot CQkJICAgIGRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAhPSBjdHhfaWQpIHsKKwkJ CWlmIChkZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3RyZWFtLT5jdHggJiYKKwkJCSAgICBzdHJl YW0tPnNwZWNpZmljX2N0eF9pZCAhPSBjdHhfaWQpIHsKIAkJCQlyZXBvcnQzMlsyXSA9IElOVkFM SURfQ1RYX0lEOwogCQkJfQogCkBAIC04MDMsNyArODA3LDcgQEAgc3RhdGljIGludCBnZW44X2Fw cGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQlpZiAo cmV0KQogCQkJCWJyZWFrOwogCi0JCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIubGFzdF9j dHhfaWQgPSBjdHhfaWQ7CisJCQlzdHJlYW0tPm9hX2J1ZmZlci5sYXN0X2N0eF9pZCA9IGN0eF9p ZDsKIAkJfQogCiAJCS8qCkBAIC04MTcsNyArODIxLDcgQEAgc3RhdGljIGludCBnZW44X2FwcGVu ZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJfQogCiAJaWYg KHN0YXJ0X29mZnNldCAhPSAqb2Zmc2V0KSB7Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNh dmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CiAKIAkJLyoKIAkJICogV2Ug cmVtb3ZlZCB0aGUgZ3R0X29mZnNldCBmb3IgdGhlIGNvcHkgbG9vcCBhYm92ZSwgaW5kZXhpbmcK QEAgLTgyNiw5ICs4MzAsOSBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJaGVhZCArPSBndHRfb2Zmc2V0OwogCiAJ CUk5MTVfV1JJVEUoR0VOOF9PQUhFQURQVFIsIGhlYWQgJiBHRU44X09BSEVBRFBUUl9NQVNLKTsK LQkJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmhlYWQgPSBoZWFkOworCQlzdHJlYW0tPm9h X2J1ZmZlci5oZWFkID0gaGVhZDsKIAotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKIAl9CiAKIAlyZXR1 cm4gcmV0OwpAQCAtODYzLDcgKzg2Nyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9vYV9yZWFkKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJdTMyIG9hc3RhdHVzOwogCWludCByZXQ7CiAK LQlpZiAoV0FSTl9PTighZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyKSkKKwlpZiAo V0FSTl9PTighc3RyZWFtLT5vYV9idWZmZXIudmFkZHIpKQogCQlyZXR1cm4gLUVJTzsKIAogCW9h c3RhdHVzID0gSTkxNV9SRUFEKEdFTjhfT0FTVEFUVVMpOwpAQCAtODg5LDEwICs4OTMsMTAgQEAg c3RhdGljIGludCBnZW44X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwK IAkJCXJldHVybiByZXQ7CiAKIAkJRFJNX0RFQlVHKCJPQSBidWZmZXIgb3ZlcmZsb3cgKGV4cG9u ZW50ID0gJWQpOiBmb3JjZSByZXN0YXJ0XG4iLAotCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5wZXJp b2RfZXhwb25lbnQpOworCQkJICBzdHJlYW0tPnBlcmlvZF9leHBvbmVudCk7CiAKLQkJZGV2X3By aXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUoc3RyZWFtKTsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu b3BzLm9hX2VuYWJsZShzdHJlYW0pOworCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZGlzYWJsZShz dHJlYW0pOworCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5hYmxlKHN0cmVhbSk7CiAKIAkJLyoK IAkJICogTm90ZTogLm9hX2VuYWJsZSgpIGlzIGV4cGVjdGVkIHRvIHJlLWluaXQgdGhlIG9hYnVm ZmVyIGFuZApAQCAtOTM5LDkgKzk0Myw5IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBlbmRfb2FfcmVw b3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJCSAgc2l6ZV90ICpvZmZz ZXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZf cHJpdjsKLQlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9y bWF0X3NpemU7Ci0JdTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy LnZhZGRyOwotCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIudm1hKTsKKwlpbnQgcmVwb3J0X3NpemUgPSBzdHJlYW0tPm9hX2J1ZmZl ci5mb3JtYXRfc2l6ZTsKKwl1OCAqb2FfYnVmX2Jhc2UgPSBzdHJlYW0tPm9hX2J1ZmZlci52YWRk cjsKKwl1MzIgZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5vYV9idWZmZXIu dm1hKTsKIAl1MzIgbWFzayA9IChPQV9CVUZGRVJfU0laRSAtIDEpOwogCXNpemVfdCBzdGFydF9v ZmZzZXQgPSAqb2Zmc2V0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC05NTMsMTMgKzk1Nywx MyBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKIAlpZiAoV0FSTl9PTighc3RyZWFtLT5lbmFibGVkKSkKIAkJcmV0dXJu IC1FSU87CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy LnB0cl9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnN0cmVhbS0+b2FfYnVmZmVy LnB0cl9sb2NrLCBmbGFncyk7CiAKLQloZWFkID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy LmhlYWQ7Ci0JYWdlZF90YWlsX2lkeCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZ2Vk X3RhaWxfaWR4OwotCXRhaWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbYWdl ZF90YWlsX2lkeF0ub2Zmc2V0OworCWhlYWQgPSBzdHJlYW0tPm9hX2J1ZmZlci5oZWFkOworCWFn ZWRfdGFpbF9pZHggPSBzdHJlYW0tPm9hX2J1ZmZlci5hZ2VkX3RhaWxfaWR4OworCXRhaWwgPSBz dHJlYW0tPm9hX2J1ZmZlci50YWlsc1thZ2VkX3RhaWxfaWR4XS5vZmZzZXQ7CiAKLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZs YWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9j aywgZmxhZ3MpOwogCiAJLyogQW4gaW52YWxpZCB0YWlsIHBvaW50ZXIgaGVyZSBtZWFucyB3ZSdy ZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgcG9sbAogCSAqIGhydGltZXIgY2FsbGJhY2sgdG8gZ2l2 ZSB1cyBhIHBvaW50ZXIKQEAgLTEwMTIsNyArMTAxNiw3IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBl bmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkgKiBjb3B5 aW5nIGl0IHRvIHVzZXJzcGFjZS4uLgogCQkgKi8KIAkJaWYgKHJlcG9ydDMyWzBdID09IDApIHsK LQkJCWlmIChfX3JhdGVsaW1pdCgmZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNfcmVwb3J0X3Jz KSkKKwkJCWlmIChfX3JhdGVsaW1pdCgmZGV2X3ByaXYtPnBlcmYuc3B1cmlvdXNfcmVwb3J0X3Jz KSkKIAkJCQlEUk1fTk9URSgiU2tpcHBpbmcgc3B1cmlvdXMsIGludmFsaWQgT0EgcmVwb3J0XG4i KTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0xMDMxLDcgKzEwMzUsNyBAQCBzdGF0aWMgaW50IGdl bjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl9 CiAKIAlpZiAoc3RhcnRfb2Zmc2V0ICE9ICpvZmZzZXQpIHsKLQkJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOworCQlzcGluX2xv Y2tfaXJxc2F2ZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKIAogCQkvKiBX ZSByZW1vdmVkIHRoZSBndHRfb2Zmc2V0IGZvciB0aGUgY29weSBsb29wIGFib3ZlLCBpbmRleGlu ZwogCQkgKiByZWxhdGl2ZSB0byBvYV9idWZfYmFzZSBzbyBwdXQgYmFjayBoZXJlLi4uCkBAIC0x MDQxLDkgKzEwNDUsOSBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJSTkxNV9XUklURShHRU43X09BU1RBVFVTMiwK IAkJCSAgICgoaGVhZCAmIEdFTjdfT0FTVEFUVVMyX0hFQURfTUFTSykgfAogCQkJICAgIEdFTjdf T0FTVEFUVVMyX01FTV9TRUxFQ1RfR0dUVCkpOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIuaGVhZCA9IGhlYWQ7CisJCXN0cmVhbS0+b2FfYnVmZmVyLmhlYWQgPSBoZWFkOwogCi0JCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9j aywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZlci5w dHJfbG9jaywgZmxhZ3MpOwogCX0KIAogCXJldHVybiByZXQ7CkBAIC0xMDc0LDcgKzEwNzgsNyBA QCBzdGF0aWMgaW50IGdlbjdfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt LAogCXUzMiBvYXN0YXR1czE7CiAJaW50IHJldDsKIAotCWlmIChXQVJOX09OKCFkZXZfcHJpdi0+ cGVyZi5vYS5vYV9idWZmZXIudmFkZHIpKQorCWlmIChXQVJOX09OKCFzdHJlYW0tPm9hX2J1ZmZl ci52YWRkcikpCiAJCXJldHVybiAtRUlPOwogCiAJb2FzdGF0dXMxID0gSTkxNV9SRUFEKEdFTjdf T0FTVEFUVVMxKTsKQEAgLTEwODQsNyArMTA4OCw3IEBAIHN0YXRpYyBpbnQgZ2VuN19vYV9yZWFk KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJICogbWF5IGJlIHVwZGF0ZWQgYXN5 bmNocm9ub3VzbHkpIHNvIHdlIGlnbm9yZSBzdGF0dXMgYml0cwogCSAqIHRoYXQgaGF2ZSBhbHJl YWR5IGJlZW4gcmVwb3J0ZWQgdG8gdXNlcnNwYWNlLgogCSAqLwotCW9hc3RhdHVzMSAmPSB+ZGV2 X3ByaXYtPnBlcmYub2EuZ2VuN19sYXRjaGVkX29hc3RhdHVzMTsKKwlvYXN0YXR1czEgJj0gfmRl dl9wcml2LT5wZXJmLmdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7CiAKIAkvKiBXZSB0cmVhdCBPQUJV RkZFUl9PVkVSRkxPVyBhcyBhIHNpZ25pZmljYW50IGVycm9yOgogCSAqCkBAIC0xMTEzLDEwICsx MTE3LDEwIEBAIHN0YXRpYyBpbnQgZ2VuN19vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJCQlyZXR1cm4gcmV0OwogCiAJCURSTV9ERUJVRygiT0EgYnVmZmVyIG92ZXJm bG93IChleHBvbmVudCA9ICVkKTogZm9yY2UgcmVzdGFydFxuIiwKLQkJCSAgZGV2X3ByaXYtPnBl cmYub2EucGVyaW9kX2V4cG9uZW50KTsKKwkJCSAgc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQpOwog Ci0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlKHN0cmVhbSk7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLm9wcy5vYV9lbmFibGUoc3RyZWFtKTsKKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9h X2Rpc2FibGUoc3RyZWFtKTsKKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2VuYWJsZShzdHJlYW0p OwogCiAJCW9hc3RhdHVzMSA9IEk5MTVfUkVBRChHRU43X09BU1RBVFVTMSk7CiAJfQpAQCAtMTEy Niw3ICsxMTMwLDcgQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKIAkJCQkgICAgICAgRFJNX0k5MTVfUEVSRl9SRUNPUkRfT0FfUkVQT1JU X0xPU1QpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu Z2VuN19sYXRjaGVkX29hc3RhdHVzMSB8PQorCQlkZXZfcHJpdi0+cGVyZi5nZW43X2xhdGNoZWRf b2FzdGF0dXMxIHw9CiAJCQlHRU43X09BU1RBVFVTMV9SRVBPUlRfTE9TVDsKIAl9CiAKQEAgLTEx NDksMTQgKzExNTMsMTIgQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKICAqLwogc3RhdGljIGludCBpOTE1X29hX3dhaXRfdW5sb2NrZWQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwotCiAJLyogV2Ugd291bGQgd2FpdCBp bmRlZmluaXRlbHkgaWYgcGVyaW9kaWMgc2FtcGxpbmcgaXMgbm90IGVuYWJsZWQgKi8KLQlpZiAo IWRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQorCWlmICghc3RyZWFtLT5wZXJpb2RpYykKIAkJ cmV0dXJuIC1FSU87CiAKLQlyZXR1cm4gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGRldl9wcml2 LT5wZXJmLm9hLnBvbGxfd3EsCi0JCQkJCW9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChkZXZfcHJp dikpOworCXJldHVybiB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoc3RyZWFtLT5wb2xsX3dxLAor CQkJCQlvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RyZWFtKSk7CiB9CiAKIC8qKgpAQCAtMTE3 Myw5ICsxMTc1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9wb2xsX3dhaXQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCSAgICAgIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJICAg ICAgcG9sbF90YWJsZSAqd2FpdCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBzdHJlYW0tPmRldl9wcml2OwotCi0JcG9sbF93YWl0KGZpbGUsICZkZXZfcHJpdi0+cGVy Zi5vYS5wb2xsX3dxLCB3YWl0KTsKKwlwb2xsX3dhaXQoZmlsZSwgJnN0cmVhbS0+cG9sbF93cSwg d2FpdCk7CiB9CiAKIC8qKgpAQCAtMTE5NywxMyArMTE5NywxNCBAQCBzdGF0aWMgaW50IGk5MTVf b2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAKLQlyZXR1cm4gZGV2 X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQpOworCXJl dHVybiBkZXZfcHJpdi0+cGVyZi5vcHMucmVhZChzdHJlYW0sIGJ1ZiwgY291bnQsIG9mZnNldCk7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqb2FfcGluX2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCi0JCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4KQorc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpvYV9waW5fY29udGV4dChzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVz X2l0ZXIgaXQ7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBzdHJlYW0tPmRldl9w cml2OworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBzdHJlYW0tPmN0eDsKIAlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2U7CiAJaW50IGVycjsKIApAQCAtMTIyMSw3ICsxMjIyLDcgQEAg c3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpvYV9waW5fY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICovCiAJCWVyciA9IGludGVsX2NvbnRleHRfcGluKGNlKTsK IAkJaWYgKGVyciA9PSAwKSB7Ci0JCQlpOTE1LT5wZXJmLm9hLnBpbm5lZF9jdHggPSBjZTsKKwkJ CXN0cmVhbS0+cGlubmVkX2N0eCA9IGNlOwogCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC0xMjMxLDcg KzEyMzIsNyBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWlmIChlcnIpCiAJCXJldHVybiBFUlJfUFRS KGVycik7CiAKLQlyZXR1cm4gaTkxNS0+cGVyZi5vYS5waW5uZWRfY3R4OworCXJldHVybiBzdHJl YW0tPnBpbm5lZF9jdHg7CiB9CiAKIC8qKgpAQCAtMTI0OSw3ICsxMjUwLDcgQEAgc3RhdGljIGlu dCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2U7CiAKLQljZSA9IG9hX3Bpbl9jb250ZXh0KGk5MTUsIHN0cmVh bS0+Y3R4KTsKKwljZSA9IG9hX3Bpbl9jb250ZXh0KHN0cmVhbSk7CiAJaWYgKElTX0VSUihjZSkp CiAJCXJldHVybiBQVFJfRVJSKGNlKTsKIApAQCAtMTI1OSw4ICsxMjYwLDggQEAgc3RhdGljIGlu dCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQog CQkgKiBPbiBIYXN3ZWxsIHdlIGRvbid0IGRvIGFueSBwb3N0IHByb2Nlc3Npbmcgb2YgdGhlIHJl cG9ydHMKIAkJICogYW5kIGRvbid0IG5lZWQgdG8gdXNlIHRoZSBtYXNrLgogCQkgKi8KLQkJaTkx NS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSk7 Ci0JCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sgPSAwOworCQlzdHJlYW0tPnNw ZWNpZmljX2N0eF9pZCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0YXRlKTsKKwkJc3RyZWFtLT5z cGVjaWZpY19jdHhfaWRfbWFzayA9IDA7CiAJCWJyZWFrOwogCX0KIApAQCAtMTI3OCwzMyArMTI3 OSwzNiBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0pCiAJCQkgKiBkcm9wcGVkIGJ5IEd1Qy4gVGhleSB3b24ndCBiZSBwYXJ0 IG9mIHRoZSBjb250ZXh0CiAJCQkgKiBJRCBpbiB0aGUgT0EgcmVwb3J0cywgc28gc3F1YXNoIHRo b3NlIGxvd2VyIGJpdHMuCiAJCQkgKi8KLQkJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ID0KKwkJCXN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkID0KIAkJCQlsb3dlcl8zMl9iaXRzKGNlLT5s cmNfZGVzYykgPj4gMTI7CiAKIAkJCS8qCiAJCQkgKiBHdUMgdXNlcyB0aGUgdG9wIGJpdCB0byBz aWduYWwgcHJveHkgc3VibWlzc2lvbiwgc28KIAkJCSAqIGlnbm9yZSB0aGF0IGJpdC4KIAkJCSAq LwotCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzayA9CisJCQlzdHJlYW0tPnNw ZWNpZmljX2N0eF9pZF9tYXNrID0KIAkJCQkoMVUgPDwgKEdFTjhfQ1RYX0lEX1dJRFRIIC0gMSkp IC0gMTsKIAkJfSBlbHNlIHsKLQkJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sg PQorCQkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzayA9CiAJCQkJKDFVIDw8IEdFTjhfQ1RY X0lEX1dJRFRIKSAtIDE7Ci0JCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9CisJCQlz dHJlYW0tPnNwZWNpZmljX2N0eF9pZCA9CiAJCQkJdXBwZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2Mp OwotCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgJj0KLQkJCQlpOTE1LT5wZXJmLm9h LnNwZWNpZmljX2N0eF9pZF9tYXNrOworCQkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgJj0KKwkJ CQlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwogCQl9CiAJCWJyZWFrOwogCiAJY2FzZSAx MTogewotCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9tYXNrID0KLQkJCSgoMVUgPDwg R0VOMTFfU1dfQ1RYX0lEX1dJRFRIKSAtIDEpIDw8IChHRU4xMV9TV19DVFhfSURfU0hJRlQgLSAz MikgfAotCQkJKCgxVSA8PCBHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfV0lEVEgpIC0gMSkgPDwgKEdF TjExX0VOR0lORV9JTlNUQU5DRV9TSElGVCAtIDMyKSB8Ci0JCQkoKDEgPDwgR0VOMTFfRU5HSU5F X0NMQVNTX1dJRFRIKSAtIDEpIDw8IChHRU4xMV9FTkdJTkVfQ0xBU1NfU0hJRlQgLSAzMik7Ci0J CWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0gdXBwZXJfMzJfYml0cyhjZS0+bHJjX2Rl c2MpOwotCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAmPQotCQkJaTkxNS0+cGVyZi5v YS5zcGVjaWZpY19jdHhfaWRfbWFzazsKKwkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzayA9 CisJCQkoKDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURUSCkgLSAxKQorCQkJCTw8IChHRU4xMV9T V19DVFhfSURfU0hJRlQgLSAzMikgfAorCQkJKCgxVSA8PCBHRU4xMV9FTkdJTkVfSU5TVEFOQ0Vf V0lEVEgpIC0gMSkKKwkJCQk8PCAoR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUIC0gMzIpIHwK KwkJCSgoMSA8PCBHRU4xMV9FTkdJTkVfQ0xBU1NfV0lEVEgpIC0gMSkKKwkJCQk8PCAoR0VOMTFf RU5HSU5FX0NMQVNTX1NISUZUIC0gMzIpOworCQlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZCA9IHVw cGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKKwkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgJj0K KwkJCXN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkX21hc2s7CiAJCWJyZWFrOwogCX0KIApAQCAtMTMx Myw4ICsxMzE3LDggQEAgc3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCX0KIAogCURSTV9ERUJVR19EUklWRVIoImZpbHRlcmlu ZyBvbiBjdHhfaWQ9MHgleCBjdHhfaWRfbWFzaz0weCV4XG4iLAotCQkJIGk5MTUtPnBlcmYub2Eu c3BlY2lmaWNfY3R4X2lkLAotCQkJIGk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sp OworCQkJIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkLAorCQkJIHN0cmVhbS0+c3BlY2lmaWNfY3R4 X2lkX21hc2spOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMzMxLDEwICsxMzM1LDEwIEBAIHN0YXRp YyB2b2lkIG9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0pCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJp djsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVj aWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZp Y19jdHhfaWRfbWFzayA9IDA7CisJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NU WF9JRDsKKwlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKIAotCWNlID0gZmV0Y2hf YW5kX3plcm8oJmRldl9wcml2LT5wZXJmLm9hLnBpbm5lZF9jdHgpOworCWNlID0gZmV0Y2hfYW5k X3plcm8oJnN0cmVhbS0+cGlubmVkX2N0eCk7CiAJaWYgKGNlKSB7CiAJCW11dGV4X2xvY2soJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CkBA IC0xMzQzLDM0ICsxMzQ3LDM3IEBAIHN0YXRpYyB2b2lkIG9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB9CiAKIHN0YXRpYyB2b2lkCi1mcmVlX29h X2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK2ZyZWVfb2FfYnVmZmVyKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBzdHJlYW0t PmRldl9wcml2OwogCi0JaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmk5MTUtPnBlcmYub2Eu b2FfYnVmZmVyLnZtYSwKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlp OTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmc3RyZWFtLT5vYV9idWZmZXIudm1hLAogCQkJCSAg IEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKLQogCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CiAKLQlpOTE1LT5wZXJmLm9hLm9hX2J1ZmZlci52YWRkciA9IE5VTEw7CisJc3Ry ZWFtLT5vYV9idWZmZXIudmFkZHIgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X29hX3N0 cmVhbV9kZXN0cm95KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAotCUJVR19P TihzdHJlYW0gIT0gZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSk7CisJaWYgKHN0 cmVhbSAhPSBkZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3RyZWFtKSB7CisJCVdBUk5fT05fT05D RShzdHJlYW0gIT0gZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSk7CisJCXJldHVybjsK Kwl9CiAKIAkvKgogCSAqIFVuc2V0IGV4Y2x1c2l2ZV9zdHJlYW0gZmlyc3QsIGl0IHdpbGwgYmUg Y2hlY2tlZCB3aGlsZSBkaXNhYmxpbmcKIAkgKiB0aGUgbWV0cmljIHNldCBvbiBnZW44Ky4KIAkg Ki8KIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JZGV2X3ByaXYt PnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBlcmYub2Eub3Bz LmRpc2FibGVfbWV0cmljX3NldChkZXZfcHJpdik7CisJZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZl X3N0cmVhbSA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub3BzLmRpc2FibGVfbWV0cmljX3NldChz dHJlYW0pOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0J ZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOworCWZyZWVfb2FfYnVmZmVyKHN0cmVhbSk7CiAKIAlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FM TCk7CiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHN0cmVhbS0+d2FrZXJlZik7CkBA IC0xMzgwLDQxICsxMzg3LDQyIEBAIHN0YXRpYyB2b2lkIGk5MTVfb2Ffc3RyZWFtX2Rlc3Ryb3ko c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAogCXB1dF9vYV9jb25maWcoZGV2X3By aXYsIHN0cmVhbS0+b2FfY29uZmlnKTsKIAotCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5zcHVyaW91 c19yZXBvcnRfcnMubWlzc2VkKSB7CisJaWYgKGRldl9wcml2LT5wZXJmLnNwdXJpb3VzX3JlcG9y dF9ycy5taXNzZWQpIHsKIAkJRFJNX05PVEUoIiVkIHNwdXJpb3VzIE9BIHJlcG9ydCBub3RpY2Vz IHN1cHByZXNzZWQgZHVlIHRvIHJhdGVsaW1pdGluZ1xuIiwKLQkJCSBkZXZfcHJpdi0+cGVyZi5v YS5zcHVyaW91c19yZXBvcnRfcnMubWlzc2VkKTsKKwkJCSBkZXZfcHJpdi0+cGVyZi5zcHVyaW91 c19yZXBvcnRfcnMubWlzc2VkKTsKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjdfaW5pdF9vYV9i dWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgZ2Vu N19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewotCXUz MiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIudm1hKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRl dl9wcml2OworCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChzdHJlYW0tPm9hX2J1 ZmZlci52bWEpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgm ZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2Nr X2lycXNhdmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CiAKIAkvKiBQcmUt RGV2QkRXOiBPQUJVRkZFUiBtdXN0IGJlIHNldCB3aXRoIGNvdW50ZXJzIG9mZiwKIAkgKiBiZWZv cmUgT0FTVEFUVVMxLCBidXQgYWZ0ZXIgT0FTVEFUVVMyCiAJICovCiAJSTkxNV9XUklURShHRU43 X09BU1RBVFVTMiwKIAkJICAgZ3R0X29mZnNldCB8IEdFTjdfT0FTVEFUVVMyX01FTV9TRUxFQ1Rf R0dUVCk7IC8qIGhlYWQgKi8KLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVhZCA9IGd0 dF9vZmZzZXQ7CisJc3RyZWFtLT5vYV9idWZmZXIuaGVhZCA9IGd0dF9vZmZzZXQ7CiAKIAlJOTE1 X1dSSVRFKEdFTjdfT0FCVUZGRVIsIGd0dF9vZmZzZXQpOwogCiAJSTkxNV9XUklURShHRU43X09B U1RBVFVTMSwgZ3R0X29mZnNldCB8IE9BQlVGRkVSX1NJWkVfMTZNKTsgLyogdGFpbCAqLwogCiAJ LyogTWFyayB0aGF0IHdlIG5lZWQgdXBkYXRlZCB0YWlsIHBvaW50ZXJzIHRvIHJlYWQgZnJvbS4u LiAqLwotCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50YWlsc1swXS5vZmZzZXQgPSBJTlZB TElEX1RBSUxfUFRSOwotCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50YWlsc1sxXS5vZmZz ZXQgPSBJTlZBTElEX1RBSUxfUFRSOworCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWzBdLm9mZnNl dCA9IElOVkFMSURfVEFJTF9QVFI7CisJc3RyZWFtLT5vYV9idWZmZXIudGFpbHNbMV0ub2Zmc2V0 ID0gSU5WQUxJRF9UQUlMX1BUUjsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CiAKIAkvKiBPbiBIYXN3 ZWxsIHdlIGhhdmUgdG8gdHJhY2sgd2hpY2ggT0FTVEFUVVMxIGZsYWdzIHdlJ3ZlCiAJICogYWxy ZWFkeSBzZWVuIHNpbmNlIHRoZXkgY2FuJ3QgYmUgY2xlYXJlZCB3aGlsZSBwZXJpb2RpYwogCSAq IHNhbXBsaW5nIGlzIGVuYWJsZWQuCiAJICovCi0JZGV2X3ByaXYtPnBlcmYub2EuZ2VuN19sYXRj aGVkX29hc3RhdHVzMSA9IDA7CisJZGV2X3ByaXYtPnBlcmYuZ2VuN19sYXRjaGVkX29hc3RhdHVz MSA9IDA7CiAKIAkvKiBOQjogYWx0aG91Z2ggdGhlIE9BIGJ1ZmZlciB3aWxsIGluaXRpYWxseSBi ZSBhbGxvY2F0ZWQKIAkgKiB6ZXJvZWQgdmlhIHNobWZzIChhbmQgc28gdGhpcyBtZW1zZXQgaXMg cmVkdW5kYW50IHdoZW4KQEAgLTE0MjcsMjQgKzE0MzUsMjUgQEAgc3RhdGljIHZvaWQgZ2VuN19p bml0X29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogdGhl IGFzc3VtcHRpb24gdGhhdCBuZXcgcmVwb3J0cyBhcmUgYmVpbmcgd3JpdHRlbiB0byB6ZXJvZWQK IAkgKiBtZW1vcnkuLi4KIAkgKi8KLQltZW1zZXQoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy LnZhZGRyLCAwLCBPQV9CVUZGRVJfU0laRSk7CisJbWVtc2V0KHN0cmVhbS0+b2FfYnVmZmVyLnZh ZGRyLCAwLCBPQV9CVUZGRVJfU0laRSk7CiAKIAkvKiBNYXliZSBtYWtlIC0+cG9sbGluIHBlci1z dHJlYW0gc3RhdGUgaWYgd2Ugc3VwcG9ydCBtdWx0aXBsZQogCSAqIGNvbmN1cnJlbnQgc3RyZWFt cyBpbiB0aGUgZnV0dXJlLgogCSAqLwotCWRldl9wcml2LT5wZXJmLm9hLnBvbGxpbiA9IGZhbHNl OworCXN0cmVhbS0+cG9sbGluID0gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjhfaW5pdF9v YV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQg Z2VuOF9pbml0X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewot CXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9i dWZmZXIudm1hKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0t PmRldl9wcml2OworCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChzdHJlYW0tPm9h X2J1ZmZlci52bWEpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CisJc3Bpbl9s b2NrX2lycXNhdmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CiAKIAlJOTE1 X1dSSVRFKEdFTjhfT0FTVEFUVVMsIDApOwogCUk5MTVfV1JJVEUoR0VOOF9PQUhFQURQVFIsIGd0 dF9vZmZzZXQpOwotCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5oZWFkID0gZ3R0X29mZnNl dDsKKwlzdHJlYW0tPm9hX2J1ZmZlci5oZWFkID0gZ3R0X29mZnNldDsKIAogCUk5MTVfV1JJVEUo R0VOOF9PQUJVRkZFUl9VRFcsIDApOwogCkBAIC0xNDYxLDE3ICsxNDcwLDE3IEBAIHN0YXRpYyB2 b2lkIGdlbjhfaW5pdF9vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCUk5MTVfV1JJVEUoR0VOOF9PQVRBSUxQVFIsIGd0dF9vZmZzZXQgJiBHRU44X09BVEFJTFBU Ul9NQVNLKTsKIAogCS8qIE1hcmsgdGhhdCB3ZSBuZWVkIHVwZGF0ZWQgdGFpbCBwb2ludGVycyB0 byByZWFkIGZyb20uLi4gKi8KLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbMF0u b2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu dGFpbHNbMV0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKKwlzdHJlYW0tPm9hX2J1ZmZlci50 YWlsc1swXS5vZmZzZXQgPSBJTlZBTElEX1RBSUxfUFRSOworCXN0cmVhbS0+b2FfYnVmZmVyLnRh aWxzWzFdLm9mZnNldCA9IElOVkFMSURfVEFJTF9QVFI7CiAKIAkvKgogCSAqIFJlc2V0IHN0YXRl IHVzZWQgdG8gcmVjb2duaXNlIGNvbnRleHQgc3dpdGNoZXMsIGFmZmVjdGluZyB3aGljaAogCSAq IHJlcG9ydHMgd2Ugd2lsbCBmb3J3YXJkIHRvIHVzZXJzcGFjZSB3aGlsZSBmaWx0ZXJpbmcgZm9y IGEgc2luZ2xlCiAJICogY29udGV4dC4KIAkgKi8KLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIubGFzdF9jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKKwlzdHJlYW0tPm9hX2J1ZmZlci5sYXN0 X2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKIAogCS8qCiAJ ICogTkI6IGFsdGhvdWdoIHRoZSBPQSBidWZmZXIgd2lsbCBpbml0aWFsbHkgYmUgYWxsb2NhdGVk CkBAIC0xNDg1LDIyICsxNDk0LDIzIEBAIHN0YXRpYyB2b2lkIGdlbjhfaW5pdF9vYV9idWZmZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHRoZSBhc3N1bXB0aW9uIHRo YXQgbmV3IHJlcG9ydHMgYXJlIGJlaW5nIHdyaXR0ZW4gdG8gemVyb2VkCiAJICogbWVtb3J5Li4u CiAJICovCi0JbWVtc2V0KGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52YWRkciwgMCwgT0Ff QlVGRkVSX1NJWkUpOworCW1lbXNldChzdHJlYW0tPm9hX2J1ZmZlci52YWRkciwgMCwgT0FfQlVG RkVSX1NJWkUpOwogCiAJLyoKIAkgKiBNYXliZSBtYWtlIC0+cG9sbGluIHBlci1zdHJlYW0gc3Rh dGUgaWYgd2Ugc3VwcG9ydCBtdWx0aXBsZQogCSAqIGNvbmN1cnJlbnQgc3RyZWFtcyBpbiB0aGUg ZnV0dXJlLgogCSAqLwotCWRldl9wcml2LT5wZXJmLm9hLnBvbGxpbiA9IGZhbHNlOworCXN0cmVh bS0+cG9sbGluID0gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVy KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmJvOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAotCWlmIChX QVJOX09OKGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEpKQorCWlmIChXQVJOX09OKHN0 cmVhbS0+b2FfYnVmZmVyLnZtYSkpCiAJCXJldHVybiAtRU5PREVWOwogCiAJcmV0ID0gaTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwpAQCAtMTUyNSwxOCArMTUz NSwxOCBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJCXJldCA9IFBUUl9FUlIodm1hKTsKIAkJZ290byBlcnJfdW5yZWY7CiAJ fQotCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEgPSB2bWE7CisJc3RyZWFtLT5vYV9i dWZmZXIudm1hID0gdm1hOwogCi0JZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyID0K KwlzdHJlYW0tPm9hX2J1ZmZlci52YWRkciA9CiAJCWk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGJv LCBJOTE1X01BUF9XQik7Ci0JaWYgKElTX0VSUihkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu dmFkZHIpKSB7Ci0JCXJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZh ZGRyKTsKKwlpZiAoSVNfRVJSKHN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyKSkgeworCQlyZXQgPSBQ VFJfRVJSKHN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyKTsKIAkJZ290byBlcnJfdW5waW47CiAJfQog CiAJRFJNX0RFQlVHX0RSSVZFUigiT0EgQnVmZmVyIGluaXRpYWxpemVkLCBndHQgb2Zmc2V0ID0g MHgleCwgdmFkZHIgPSAlcFxuIiwKLQkJCSBpOTE1X2dndHRfb2Zmc2V0KGRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci52bWEpLAotCQkJIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52YWRk cik7CisJCQkgaTkxNV9nZ3R0X29mZnNldChzdHJlYW0tPm9hX2J1ZmZlci52bWEpLAorCQkJIHN0 cmVhbS0+b2FfYnVmZmVyLnZhZGRyKTsKIAogCWdvdG8gdW5sb2NrOwogCkBAIC0xNTQ2LDggKzE1 NTYsOCBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiBlcnJfdW5yZWY6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChibyk7CiAKLQlk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudmFkZHIgPSBOVUxMOwotCWRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci52bWEgPSBOVUxMOworCXN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyID0gTlVM TDsKKwlzdHJlYW0tPm9hX2J1ZmZlci52bWEgPSBOVUxMOwogCiB1bmxvY2s6CiAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC0xNjE3LDggKzE2MjcsMTAgQEAg c3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g KnN0cmVhbSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbWV0cmlj X3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBoc3df ZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwog CUk5MTVfV1JJVEUoR0VONl9VQ0dDVEwxLCAoSTkxNV9SRUFEKEdFTjZfVUNHQ1RMMSkgJgogCQkJ CSAgfkdFTjZfQ1NVTklUX0NMT0NLX0dBVEVfRElTQUJMRSkpOwogCUk5MTVfV1JJVEUoR0VON19N SVNDQ1BDVEwsIChJOTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpIHwKQEAgLTE2MzYsMTMgKzE2NDgs MTQgQEAgc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAgKiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBPQSB1bml0IGhhcyBi ZWVuIGRpc2FibGVkLgogICovCiBzdGF0aWMgdm9pZAotZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3Vu bG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKK2dlbjhfdXBkYXRlX3JlZ19zdGF0ZV91 bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJICAgICAgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCSAgICAgICB1MzIgKnJlZ19zdGF0ZSwKIAkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGNlLT5nZW1fY29udGV4dC0+aTkxNTsKLQl1MzIgY3R4X29h Y3R4Y3RybCA9IGk5MTUtPnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQ7Ci0JdTMyIGN0eF9m bGV4ZXUwID0gaTkxNS0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmZzZXQ7CisJdTMyIGN0eF9vYWN0 eGN0cmwgPSBpOTE1LT5wZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0OworCXUzMiBjdHhfZmxleGV1 MCA9IGk5MTUtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0OwogCS8qIFRoZSBNTUlPIG9mZnNldHMg Zm9yIEZsZXggRVUgcmVnaXN0ZXJzIGFyZW4ndCBjb250aWd1b3VzICovCiAJaTkxNV9yZWdfdCBm bGV4X3JlZ3NbXSA9IHsKIAkJRVVfUEVSRl9DTlRMMCwKQEAgLTE2NTYsOCArMTY2OSw4IEBAIGdl bjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJ aW50IGk7CiAKIAlDVFhfUkVHKHJlZ19zdGF0ZSwgY3R4X29hY3R4Y3RybCwgR0VOOF9PQUNUWENP TlRST0wsCi0JCShpOTE1LT5wZXJmLm9hLnBlcmlvZF9leHBvbmVudCA8PCBHRU44X09BX1RJTUVS X1BFUklPRF9TSElGVCkgfAotCQkoaTkxNS0+cGVyZi5vYS5wZXJpb2RpYyA/IEdFTjhfT0FfVElN RVJfRU5BQkxFIDogMCkgfAorCQkoc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQgPDwgR0VOOF9PQV9U SU1FUl9QRVJJT0RfU0hJRlQpIHwKKwkJKHN0cmVhbS0+cGVyaW9kaWMgPyBHRU44X09BX1RJTUVS X0VOQUJMRSA6IDApIHwKIAkJR0VOOF9PQV9DT1VOVEVSX1JFU1VNRSk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShmbGV4X3JlZ3MpOyBpKyspIHsKQEAgLTE2NzMsMTAgKzE2ODYsMTIg QEAgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwKIAogCQlpZiAob2FfY29uZmlnKSB7CiAJCQl1MzIgajsKKwkJCXN0cnVjdCBpOTE1X29hX3Jl ZyByZWc7CiAKIAkJCWZvciAoaiA9IDA7IGogPCBvYV9jb25maWctPmZsZXhfcmVnc19sZW47IGor KykgewotCQkJCWlmIChpOTE1X21taW9fcmVnX29mZnNldChvYV9jb25maWctPmZsZXhfcmVnc1tq XS5hZGRyKSA9PSBtbWlvKSB7Ci0JCQkJCXZhbHVlID0gb2FfY29uZmlnLT5mbGV4X3JlZ3Nbal0u dmFsdWU7CisJCQkJcmVnID0gb2FfY29uZmlnLT5mbGV4X3JlZ3Nbal07CisJCQkJaWYgKGk5MTVf bW1pb19yZWdfb2Zmc2V0KHJlZy5hZGRyKSA9PSBtbWlvKSB7CisJCQkJCXZhbHVlID0gcmVnLnZh bHVlOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9CkBAIC0xNzE0LDkgKzE3MjksMTAgQEAgZ2Vu OF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKICAq CiAgKiBOb3RlOiBpdCdzIG9ubHkgdGhlIFJDUy9SZW5kZXIgY29udGV4dCB0aGF0IGhhcyBhbnkg T0Egc3RhdGUuCiAgKi8KLXN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKK3N0YXRpYyBpbnQgZ2VuOF9jb25maWd1 cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJICAg ICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQogeworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJdW5zaWduZWQg aW50IG1hcF90eXBlID0gaTkxNV9jb2hlcmVudF9tYXBfdHlwZShkZXZfcHJpdik7CiAJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKQEAgLTE3 NzAsNyArMTc4NiwxMCBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQljZS0+c3RhdGUtPm9iai0+bW0u ZGlydHkgPSB0cnVlOwogCQkJcmVncyArPSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgLyBzaXpl b2YoKnJlZ3MpOwogCi0JCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY2UsIHJlZ3Ms IG9hX2NvbmZpZyk7CisJCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RyZWFtLAor CQkJCQkJICAgICAgIGNlLAorCQkJCQkJICAgICAgIHJlZ3MsCisJCQkJCQkgICAgICAgb2FfY29u ZmlnKTsKIAogCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjZS0+c3RhdGUtPm9iaik7CiAJ CX0KQEAgLTE4MjAsOSArMTgzOSw5IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVfbWV0cmljX3Nl dChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqIFJQVF9JRCBmaWVsZC4KIAkg Ki8KIAlpZiAoSVNfR0VOX1JBTkdFKGRldl9wcml2LCA5LCAxMSkpIHsKLQkJSTkxNV9XUklURShH RU44X09BX0RFQlVHLAotCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfT0FfREVCVUdfRElT QUJMRV9DTEtfUkFUSU9fUkVQT1JUUyB8Ci0JCQkJCSAgICAgIEdFTjlfT0FfREVCVUdfSU5DTFVE RV9DTEtfUkFUSU8pKTsKKwkJdTMyIHZhbCA9IEdFTjlfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFU SU9fUkVQT1JUUyB8CisJCQkgIEdFTjlfT0FfREVCVUdfSU5DTFVERV9DTEtfUkFUSU87CisJCUk5 MTVfV1JJVEUoR0VOOF9PQV9ERUJVRywgX01BU0tFRF9CSVRfRU5BQkxFKHZhbCkpOwogCX0KIAog CS8qCkBAIC0xODMwLDcgKzE4NDksNyBAQCBzdGF0aWMgaW50IGdlbjhfZW5hYmxlX21ldHJpY19z ZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkgKiB0byBtYWtlIHN1cmUgYWxs IHNsaWNlcy9zdWJzbGljZXMgYXJlIE9OIGJlZm9yZSB3cml0aW5nIHRvIE5PQQogCSAqIHJlZ2lz dGVycy4KIAkgKi8KLQlyZXQgPSBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoZGV2X3ByaXYs IG9hX2NvbmZpZyk7CisJcmV0ID0gZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cmVhbSwg b2FfY29uZmlnKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xODQyLDE5ICsxODYx LDIzIEBAIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBnZW44X2Rpc2Fi bGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMg dm9pZCBnZW44X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7CisKIAkvKiBSZXNldCBhbGwgY29udGV4dHMnIHNsaWNlcy9zdWJzbGljZXMgY29uZmln dXJhdGlvbnMuICovCi0JZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKGRldl9wcml2LCBOVUxM KTsKKwlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKIAogCUk5MTVf V1JJVEUoR0RUX0NISUNLRU5fQklUUywgKEk5MTVfUkVBRChHRFRfQ0hJQ0tFTl9CSVRTKSAmCiAJ CQkJICAgICAgfkdUX05PQV9FTkFCTEUpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuMTBfZGlzYWJs ZV9tZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2 b2lkIGdlbjEwX2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7CisKIAkvKiBSZXNldCBhbGwgY29udGV4dHMnIHNsaWNlcy9zdWJzbGljZXMgY29uZmln dXJhdGlvbnMuICovCi0JZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKGRldl9wcml2LCBOVUxM KTsKKwlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKIAogCS8qIE1h a2Ugc3VyZSB3ZSBkaXNhYmxlIG5vYSB0byBzYXZlIHBvd2VyLiAqLwogCUk5MTVfV1JJVEUoUlBN X0NPTkZJRzEsCkBAIC0xODY1LDEwICsxODg4LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjdfb2FfZW5h YmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4ID0gc3RyZWFtLT5jdHg7Ci0JdTMyIGN0eF9pZCA9IGRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZDsKLQlib29sIHBlcmlvZGljID0gZGV2X3ByaXYtPnBlcmYub2Eu cGVyaW9kaWM7Ci0JdTMyIHBlcmlvZF9leHBvbmVudCA9IGRldl9wcml2LT5wZXJmLm9hLnBlcmlv ZF9leHBvbmVudDsKLQl1MzIgcmVwb3J0X2Zvcm1hdCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1 ZmZlci5mb3JtYXQ7CisJdTMyIGN0eF9pZCA9IHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkOworCWJv b2wgcGVyaW9kaWMgPSBzdHJlYW0tPnBlcmlvZGljOworCXUzMiBwZXJpb2RfZXhwb25lbnQgPSBz dHJlYW0tPnBlcmlvZF9leHBvbmVudDsKKwl1MzIgcmVwb3J0X2Zvcm1hdCA9IHN0cmVhbS0+b2Ff YnVmZmVyLmZvcm1hdDsKIAogCS8qCiAJICogUmVzZXQgYnVmIHBvaW50ZXJzIHNvIHdlIGRvbid0 IGZvcndhcmQgcmVwb3J0cyBmcm9tIGJlZm9yZSBub3cuCkBAIC0xODc5LDcgKzE5MDIsNyBAQCBz dGF0aWMgdm9pZCBnZW43X29hX2VuYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQogCSAqIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2VydGFpbiBmaWVsZHMgYXJlIHdyaXR0ZW4g dG8gemVyb2VkCiAJICogbWVtb3J5IHdoaWNoIHRoaXMgaGVscHMgbWFpbnRhaW5zLgogCSAqLwot CWdlbjdfaW5pdF9vYV9idWZmZXIoZGV2X3ByaXYpOworCWdlbjdfaW5pdF9vYV9idWZmZXIoc3Ry ZWFtKTsKIAogCUk5MTVfV1JJVEUoR0VON19PQUNPTlRST0wsCiAJCSAgIChjdHhfaWQgJiBHRU43 X09BQ09OVFJPTF9DVFhfTUFTSykgfApAQCAtMTg5NCw3ICsxOTE3LDcgQEAgc3RhdGljIHZvaWQg Z2VuN19vYV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHN0YXRpYyB2 b2lkIGdlbjhfb2FfZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKLQl1 MzIgcmVwb3J0X2Zvcm1hdCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXQ7CisJ dTMyIHJlcG9ydF9mb3JtYXQgPSBzdHJlYW0tPm9hX2J1ZmZlci5mb3JtYXQ7CiAKIAkvKgogCSAq IFJlc2V0IGJ1ZiBwb2ludGVycyBzbyB3ZSBkb24ndCBmb3J3YXJkIHJlcG9ydHMgZnJvbSBiZWZv cmUgbm93LgpAQCAtMTkwNSw3ICsxOTI4LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9vYV9lbmFibGUo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkgKiBvbiB0aGUgYXNzdW1wdGlvbiB0 aGF0IGNlcnRhaW4gZmllbGRzIGFyZSB3cml0dGVuIHRvIHplcm9lZAogCSAqIG1lbW9yeSB3aGlj aCB0aGlzIGhlbHBzIG1haW50YWlucy4KIAkgKi8KLQlnZW44X2luaXRfb2FfYnVmZmVyKGRldl9w cml2KTsKKwlnZW44X2luaXRfb2FfYnVmZmVyKHN0cmVhbSk7CiAKIAkvKgogCSAqIE5vdGU6IHdl IGRvbid0IHJlbHkgb24gdGhlIGhhcmR3YXJlIHRvIHBlcmZvcm0gc2luZ2xlIGNvbnRleHQKQEAg LTE5MzAsMTAgKzE5NTMsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZW5hYmxlKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAotCWRldl9wcml2LT5wZXJmLm9hLm9w cy5vYV9lbmFibGUoc3RyZWFtKTsKKwlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5hYmxlKHN0cmVh bSk7CiAKLQlpZiAoZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kaWMpCi0JCWhydGltZXJfc3RhcnQo JmRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIsCisJaWYgKHN0cmVhbS0+cGVyaW9k aWMpCisJCWhydGltZXJfc3RhcnQoJnN0cmVhbS0+cG9sbF9jaGVja190aW1lciwKIAkJCSAgICAg IG5zX3RvX2t0aW1lKFBPTExfUEVSSU9EKSwKIAkJCSAgICAgIEhSVElNRVJfTU9ERV9SRUxfUElO TkVEKTsKIH0KQEAgLTE5NzIsMTAgKzE5OTUsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJl YW1fZGlzYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAKLQlkZXZfcHJp di0+cGVyZi5vYS5vcHMub2FfZGlzYWJsZShzdHJlYW0pOworCWRldl9wcml2LT5wZXJmLm9wcy5v YV9kaXNhYmxlKHN0cmVhbSk7CiAKLQlpZiAoZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kaWMpCi0J CWhydGltZXJfY2FuY2VsKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyKTsKKwlp ZiAoc3RyZWFtLT5wZXJpb2RpYykKKwkJaHJ0aW1lcl9jYW5jZWwoJnN0cmVhbS0+cG9sbF9jaGVj a190aW1lcik7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbV9vcHMg aTkxNV9vYV9zdHJlYW1fb3BzID0gewpAQCAtMjAyNyw3ICsyMDUwLDcgQEAgc3RhdGljIGludCBp OTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIAotCWlmICghZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9t ZXRyaWNfc2V0KSB7CisJaWYgKCFkZXZfcHJpdi0+cGVyZi5vcHMuZW5hYmxlX21ldHJpY19zZXQp IHsKIAkJRFJNX0RFQlVHKCJPQSB1bml0IG5vdCBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm4gLUVO T0RFVjsKIAl9CkBAIC0yMDM2LDcgKzIwNTksNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFt X2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkgKiBjb3VudGVyIHJlcG9y dHMgYW5kIG1hcnNoYWwgdG8gdGhlIGFwcHJvcHJpYXRlIGNsaWVudAogCSAqIHdlIGN1cnJlbnRs eSBvbmx5IGFsbG93IGV4Y2x1c2l2ZSBhY2Nlc3MKIAkgKi8KLQlpZiAoZGV2X3ByaXYtPnBlcmYu b2EuZXhjbHVzaXZlX3N0cmVhbSkgeworCWlmIChkZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3Ry ZWFtKSB7CiAJCURSTV9ERUJVRygiT0EgdW5pdCBhbHJlYWR5IGluIHVzZVxuIik7CiAJCXJldHVy biAtRUJVU1k7CiAJfQpAQCAtMjA0Niw0MyArMjA2OSwyMyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ff c3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQogCi0JLyogV2Ugc2V0IHVwIHNvbWUgcmF0ZWxpbWl0IHN0YXRlIHRvIHBvdGVu dGlhbGx5IHRocm90dGxlIGFueSBfTk9URVMKLQkgKiBhYm91dCBzcHVyaW91cywgaW52YWxpZCBP QSByZXBvcnRzIHdoaWNoIHdlIGRvbid0IGZvcndhcmQgdG8KLQkgKiB1c2Vyc3BhY2UuCi0JICoK LQkgKiBUaGUgaW5pdGlhbGl6YXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIG9wZW5pbmcgdGhlIHN0 cmVhbSAobm90IGRyaXZlcgotCSAqIGluaXQpIGNvbnNpZGVyaW5nIHdlIHByaW50IGEgX05PVEUg YWJvdXQgYW55IHRocm90dGxpbmcgd2hlbiBjbG9zaW5nCi0JICogdGhlIHN0cmVhbSBpbnN0ZWFk IG9mIHdhaXRpbmcgdW50aWwgZHJpdmVyIF9maW5pIHdoaWNoIG5vIG9uZSB3b3VsZAotCSAqIGV2 ZXIgc2VlLgotCSAqCi0JICogVXNpbmcgdGhlIHNhbWUgbGltaXRpbmcgZmFjdG9ycyBhcyBwcmlu dGtfcmF0ZWxpbWl0KCkKLQkgKi8KLQlyYXRlbGltaXRfc3RhdGVfaW5pdCgmZGV2X3ByaXYtPnBl cmYub2Euc3B1cmlvdXNfcmVwb3J0X3JzLAotCQkJICAgICA1ICogSFosIDEwKTsKLQkvKiBTaW5j ZSB3ZSB1c2UgYSBEUk1fTk9URSBmb3Igc3B1cmlvdXMgcmVwb3J0cyBpdCB3b3VsZCBiZQotCSAq IGluY29uc2lzdGVudCB0byBsZXQgX19yYXRlbGltaXQoKSBhdXRvbWF0aWNhbGx5IHByaW50IGEg d2FybmluZyBmb3IKLQkgKiB0aHJvdHRsaW5nLgotCSAqLwotCXJhdGVsaW1pdF9zZXRfZmxhZ3Mo JmRldl9wcml2LT5wZXJmLm9hLnNwdXJpb3VzX3JlcG9ydF9ycywKLQkJCSAgICBSQVRFTElNSVRf TVNHX09OX1JFTEVBU0UpOwotCiAJc3RyZWFtLT5zYW1wbGVfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg ZHJtX2k5MTVfcGVyZl9yZWNvcmRfaGVhZGVyKTsKIAotCWZvcm1hdF9zaXplID0gZGV2X3ByaXYt PnBlcmYub2Eub2FfZm9ybWF0c1twcm9wcy0+b2FfZm9ybWF0XS5zaXplOworCWZvcm1hdF9zaXpl ID0gZGV2X3ByaXYtPnBlcmYub2FfZm9ybWF0c1twcm9wcy0+b2FfZm9ybWF0XS5zaXplOwogCiAJ c3RyZWFtLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX09BX1JFUE9SVDsKIAlzdHJlYW0tPnNhbXBs ZV9zaXplICs9IGZvcm1hdF9zaXplOwogCi0JZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZv cm1hdF9zaXplID0gZm9ybWF0X3NpemU7Ci0JaWYgKFdBUk5fT04oZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmZvcm1hdF9zaXplID09IDApKQorCXN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdF9z aXplID0gZm9ybWF0X3NpemU7CisJaWYgKFdBUk5fT04oc3RyZWFtLT5vYV9idWZmZXIuZm9ybWF0 X3NpemUgPT0gMCkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZGV2X3ByaXYtPnBlcmYub2Eub2Ff YnVmZmVyLmZvcm1hdCA9Ci0JCWRldl9wcml2LT5wZXJmLm9hLm9hX2Zvcm1hdHNbcHJvcHMtPm9h X2Zvcm1hdF0uZm9ybWF0OworCXN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdCA9CisJCWRldl9wcml2 LT5wZXJmLm9hX2Zvcm1hdHNbcHJvcHMtPm9hX2Zvcm1hdF0uZm9ybWF0OwogCi0JZGV2X3ByaXYt PnBlcmYub2EucGVyaW9kaWMgPSBwcm9wcy0+b2FfcGVyaW9kaWM7Ci0JaWYgKGRldl9wcml2LT5w ZXJmLm9hLnBlcmlvZGljKQotCQlkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RfZXhwb25lbnQgPSBw cm9wcy0+b2FfcGVyaW9kX2V4cG9uZW50OworCXN0cmVhbS0+cGVyaW9kaWMgPSBwcm9wcy0+b2Ff cGVyaW9kaWM7CisJaWYgKHN0cmVhbS0+cGVyaW9kaWMpCisJCXN0cmVhbS0+cGVyaW9kX2V4cG9u ZW50ID0gcHJvcHMtPm9hX3BlcmlvZF9leHBvbmVudDsKIAogCWlmIChzdHJlYW0tPmN0eCkgewog CQlyZXQgPSBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJlYW0pOwpAQCAtMjExMyw3ICsyMTE2LDcg QEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJc3RyZWFtLT53YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3By aXYpOwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKIAotCXJldCA9IGFsbG9jX29hX2J1ZmZlcihkZXZfcHJpdik7CisJcmV0ID0g YWxsb2Nfb2FfYnVmZmVyKHN0cmVhbSk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJfb2FfYnVmX2Fs bG9jOwogCkBAIC0yMTIyLDkgKzIxMjUsOSBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2lu aXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJZ290byBlcnJfbG9jazsKIAog CXN0cmVhbS0+b3BzID0gJmk5MTVfb2Ffc3RyZWFtX29wczsKLQlkZXZfcHJpdi0+cGVyZi5vYS5l eGNsdXNpdmVfc3RyZWFtID0gc3RyZWFtOworCWRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJl YW0gPSBzdHJlYW07CiAKLQlyZXQgPSBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJp Y19zZXQoc3RyZWFtKTsKKwlyZXQgPSBkZXZfcHJpdi0+cGVyZi5vcHMuZW5hYmxlX21ldHJpY19z ZXQoc3RyZWFtKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVRygiVW5hYmxlIHRvIGVuYWJsZSBt ZXRyaWMgc2V0XG4iKTsKIAkJZ290byBlcnJfZW5hYmxlOwpAQCAtMjEzMiwxNSArMjEzNSwyMSBA QCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g KnN0cmVhbSwKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CisJaHJ0aW1lcl9pbml0KCZzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIsCisJCSAgICAgQ0xPQ0tf TU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKKwlzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIu ZnVuY3Rpb24gPSBvYV9wb2xsX2NoZWNrX3RpbWVyX2NiOworCWluaXRfd2FpdHF1ZXVlX2hlYWQo JnN0cmVhbS0+cG9sbF93cSk7CisJc3Bpbl9sb2NrX2luaXQoJnN0cmVhbS0+b2FfYnVmZmVyLnB0 cl9sb2NrKTsKKwogCXJldHVybiAwOwogCiBlcnJfZW5hYmxlOgotCWRldl9wcml2LT5wZXJmLm9h LmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOwotCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxl X21ldHJpY19zZXQoZGV2X3ByaXYpOworCWRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0g PSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9wcy5kaXNhYmxlX21ldHJpY19zZXQoc3RyZWFtKTsK IAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAogZXJyX2xvY2s6 Ci0JZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOworCWZyZWVfb2FfYnVmZmVyKHN0cmVhbSk7CiAK IGVycl9vYV9idWZfYWxsb2M6CiAJcHV0X29hX2NvbmZpZyhkZXZfcHJpdiwgc3RyZWFtLT5vYV9j b25maWcpOwpAQCAtMjE2NCw5ICsyMTczLDEyIEBAIHZvaWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJaWYgKGVuZ2luZS0+Y2xhc3MgIT0g UkVOREVSX0NMQVNTKQogCQlyZXR1cm47CiAKLQlzdHJlYW0gPSBlbmdpbmUtPmk5MTUtPnBlcmYu b2EuZXhjbHVzaXZlX3N0cmVhbTsKKwlzdHJlYW0gPSBlbmdpbmUtPmk5MTUtPnBlcmYuZXhjbHVz aXZlX3N0cmVhbTsKIAlpZiAoc3RyZWFtKQotCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2Nr ZWQoY2UsIHJlZ3MsIHN0cmVhbS0+b2FfY29uZmlnKTsKKwkJZ2VuOF91cGRhdGVfcmVnX3N0YXRl X3VubG9ja2VkKHN0cmVhbSwKKwkJCQkJICAgICAgIGNlLAorCQkJCQkgICAgICAgcmVncywKKwkJ CQkJICAgICAgIHN0cmVhbS0+b2FfY29uZmlnKTsKIH0KIAogLyoqCkBAIC0yMjgyLDcgKzIyOTQs NyBAQCBzdGF0aWMgc3NpemVfdCBpOTE1X3BlcmZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJ LyogTWF5YmUgbWFrZSAtPnBvbGxpbiBwZXItc3RyZWFtIHN0YXRlIGlmIHdlIHN1cHBvcnQgbXVs dGlwbGUKIAkJICogY29uY3VycmVudCBzdHJlYW1zIGluIHRoZSBmdXR1cmUuCiAJCSAqLwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5wb2xsaW4gPSBmYWxzZTsKKwkJc3RyZWFtLT5wb2xsaW4gPSBmYWxz ZTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMjI5MCwxMyArMjMwMiwxMyBAQCBzdGF0aWMgc3Np emVfdCBpOTE1X3BlcmZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAogc3RhdGljIGVudW0gaHJ0 aW1lcl9yZXN0YXJ0IG9hX3BvbGxfY2hlY2tfdGltZXJfY2Ioc3RydWN0IGhydGltZXIgKmhydGlt ZXIpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJY29udGFpbmVy X29mKGhydGltZXIsIHR5cGVvZigqZGV2X3ByaXYpLAotCQkJICAgICBwZXJmLm9hLnBvbGxfY2hl Y2tfdGltZXIpOworCXN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0gPSBjb250YWluZXJf b2YoaHJ0aW1lciwKKwkJCQkJCSAgICAgICB0eXBlb2YoKnN0cmVhbSksCisJCQkJCQkgICAgICAg cG9sbF9jaGVja190aW1lcik7CiAKLQlpZiAob2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKGRldl9w cml2KSkgewotCQlkZXZfcHJpdi0+cGVyZi5vYS5wb2xsaW4gPSB0cnVlOwotCQl3YWtlX3VwKCZk ZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxKTsKKwlpZiAob2FfYnVmZmVyX2NoZWNrX3VubG9ja2Vk KHN0cmVhbSkpIHsKKwkJc3RyZWFtLT5wb2xsaW4gPSB0cnVlOworCQl3YWtlX3VwKCZzdHJlYW0t PnBvbGxfd3EpOwogCX0KIAogCWhydGltZXJfZm9yd2FyZF9ub3coaHJ0aW1lciwgbnNfdG9fa3Rp bWUoUE9MTF9QRVJJT0QpKTsKQEAgLTIzMzUsNyArMjM0Nyw3IEBAIHN0YXRpYyBfX3BvbGxfdCBp OTE1X3BlcmZfcG9sbF9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CSAqIHRoZSBocnRpbWVyL29hX3BvbGxfY2hlY2tfdGltZXJfY2IgdG8gbm90aWZ5IHVzIHdoZW4g dGhlcmUgYXJlCiAJICogc2FtcGxlcyB0byByZWFkLgogCSAqLwotCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5wb2xsaW4pCisJaWYgKHN0cmVhbS0+cG9sbGluKQogCQlldmVudHMgfD0gRVBPTExJTjsK IAogCXJldHVybiBldmVudHM7CkBAIC0yNjY4LDggKzI2ODAsMTAgQEAgaTkxNV9wZXJmX29wZW5f aW9jdGxfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGlj IHU2NCBvYV9leHBvbmVudF90b19ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGludCBleHBvbmVudCkKIHsKKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICpyaSA9IFJVTlRJ TUVfSU5GTyhkZXZfcHJpdik7CisKIAlyZXR1cm4gZGl2NjRfdTY0KDEwMDAwMDAwMDBVTEwgKiAo MlVMTCA8PCBleHBvbmVudCksCi0JCQkgMTAwMFVMTCAqIFJVTlRJTUVfSU5GTyhkZXZfcHJpdikt PmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6KTsKKwkJCSAxMDAwVUxMICogcmktPmNzX3RpbWVz dGFtcF9mcmVxdWVuY3lfa2h6KTsKIH0KIAogLyoqCkBAIC0yNzUzLDcgKzI3NjcsNyBAQCBzdGF0 aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkJCSAgdmFsdWUpOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQotCQkJ aWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzW3ZhbHVlXS5zaXplKSB7CisJCQlpZiAo IWRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHNbdmFsdWVdLnNpemUpIHsKIAkJCQlEUk1fREVCVUco IlVuc3VwcG9ydGVkIE9BIHJlcG9ydCBmb3JtYXQgJWxsdVxuIiwKIAkJCQkJICB2YWx1ZSk7CiAJ CQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yODk3LDcgKzI5MTEsNyBAQCB2b2lkIGk5MTVfcGVyZl9y ZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKCFkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmopCiAJCWdvdG8gZXhpdDsKIAotCXN5c2ZzX2F0dHJfaW5pdCgm ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIpOworCXN5 c2ZzX2F0dHJfaW5pdCgmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lk LmF0dHIpOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKIAkJaTkxNV9wZXJm X2xvYWRfdGVzdF9jb25maWdfaWNsKGRldl9wcml2KTsKQEAgLTI5MzIsMTUgKzI5NDYsMTUgQEAg dm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19oc3coZGV2X3ByaXYpOwogfQogCi0JaWYg KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmlkID09IDApCisJaWYgKGRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLmlkID09IDApCiAJCWdvdG8gc3lzZnNfZXJyb3I7CiAKIAlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLAotCQkJCSAmZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljKTsKKwkJCQkgJmRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYyk7CiAJaWYgKHJldCkKIAkJZ290byBzeXNm c19lcnJvcjsKIAotCWF0b21pY19zZXQoJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnJl Zl9jb3VudCwgMSk7CisJYXRvbWljX3NldCgmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcucmVm X2NvdW50LCAxKTsKIAogCWdvdG8gZXhpdDsKIApAQCAtMjk2Nyw3ICsyOTgxLDcgQEAgdm9pZCBp OTE1X3BlcmZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CXJldHVybjsKIAogCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosCi0JCQkgICAmZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljKTsK KwkJCSAgICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMpOwogCiAJa29i amVjdF9wdXQoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKTsKIAlkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmogPSBOVUxMOwpAQCAtMjk5Myw3ICszMDA3LDggQEAgc3RhdGljIGJvb2wgZ2Vu OF9pc192YWxpZF9mbGV4X2FkZHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgYWRkcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGdlbjdfaXNfdmFsaWRf Yl9jb3VudGVyX2FkZHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRk cikKK3N0YXRpYyBib29sIGdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgdTMyIGFkZHIpCiB7CiAJcmV0dXJuIChhZGRy ID49IGk5MTVfbW1pb19yZWdfb2Zmc2V0KE9BU1RBUlRUUklHMSkgJiYKIAkJYWRkciA8PSBpOTE1 X21taW9fcmVnX29mZnNldChPQVNUQVJUVFJJRzgpKSB8fApAQCAtMzA3OCw3ICszMDkzLDkgQEAg c3RhdGljIHN0cnVjdCBpOTE1X29hX3JlZyAqYWxsb2Nfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKCFhY2Nlc3Nfb2socmVncywgbl9yZWdzICogc2l6ZW9m KHUzMikgKiAyKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVGQVVMVCk7CiAKLQkvKiBObyBpc192YWxp ZCBmdW5jdGlvbiBtZWFucyB3ZSdyZSBub3QgYWxsb3dpbmcgYW55IHJlZ2lzdGVyIHRvIGJlIHBy b2dyYW1tZWQuICovCisJLyogTm8gaXNfdmFsaWQgZnVuY3Rpb24gbWVhbnMgd2UncmUgbm90IGFs bG93aW5nIGFueSByZWdpc3RlciB0byBiZQorCSAqIHByb2dyYW1tZWQuCisJICovCiAJR0VNX0JV R19PTighaXNfdmFsaWQpOwogCWlmICghaXNfdmFsaWQpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwpAQCAtMzIxMSw3ICszMjI4LDcgQEAgaW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJb2FfY29uZmlnLT5tdXhfcmVn c19sZW4gPSBhcmdzLT5uX211eF9yZWdzOwogCW9hX2NvbmZpZy0+bXV4X3JlZ3MgPQogCQlhbGxv Y19vYV9yZWdzKGRldl9wcml2LAotCQkJICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3Zh bGlkX211eF9yZWcsCisJCQkgICAgICBkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfbXV4X3Jl ZywKIAkJCSAgICAgIHU2NF90b191c2VyX3B0cihhcmdzLT5tdXhfcmVnc19wdHIpLAogCQkJICAg ICAgYXJncy0+bl9tdXhfcmVncyk7CiAKQEAgLTMyMjQsNyArMzI0MSw3IEBAIGludCBpOTE1X3Bl cmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CW9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuID0gYXJncy0+bl9ib29sZWFuX3JlZ3M7CiAJ b2FfY29uZmlnLT5iX2NvdW50ZXJfcmVncyA9CiAJCWFsbG9jX29hX3JlZ3MoZGV2X3ByaXYsCi0J CQkgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZywKKwkJ CSAgICAgIGRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnLAogCQkJICAg ICAgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmJvb2xlYW5fcmVnc19wdHIpLAogCQkJICAgICAgYXJn cy0+bl9ib29sZWFuX3JlZ3MpOwogCkBAIC0zMjQzLDcgKzMyNjAsNyBAQCBpbnQgaTkxNV9wZXJm X2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ b2FfY29uZmlnLT5mbGV4X3JlZ3NfbGVuID0gYXJncy0+bl9mbGV4X3JlZ3M7CiAJCW9hX2NvbmZp Zy0+ZmxleF9yZWdzID0KIAkJCWFsbG9jX29hX3JlZ3MoZGV2X3ByaXYsCi0JCQkJICAgICAgZGV2 X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnLAorCQkJCSAgICAgIGRldl9wcml2 LT5wZXJmLm9wcy5pc192YWxpZF9mbGV4X3JlZywKIAkJCQkgICAgICB1NjRfdG9fdXNlcl9wdHIo YXJncy0+ZmxleF9yZWdzX3B0ciksCiAJCQkJICAgICAgYXJncy0+bl9mbGV4X3JlZ3MpOwogCkBA IC0zMzAwLDcgKzMzMTcsOCBAQCBpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIH0KIAogLyoqCi0gKiBpOTE1X3BlcmZfcmVt b3ZlX2NvbmZpZ19pb2N0bCAtIERSTSBpb2N0bCgpIGZvciB1c2Vyc3BhY2UgdG8gcmVtb3ZlIGFu IE9BIGNvbmZpZworICogaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwgLSBEUk0gaW9jdGwo KSBmb3IgdXNlcnNwYWNlIHRvIHJlbW92ZSBhbiBPQQorICogY29uZmlnCiAgKiBAZGV2OiBkcm0g ZGV2aWNlCiAgKiBAZGF0YTogaW9jdGwgZGF0YSAocG9pbnRlciB0byB1NjQgaW50ZWdlcikgY29w aWVkIGZyb20gdXNlcnNwYWNlCiAgKiBAZmlsZTogZHJtIGZpbGUKQEAgLTM0MDksMjEgKzM0Mjcs MjMgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgZGV2X3Jvb3RbXSA9IHsKICAqLwogdm9pZCBp OTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CisJc3Ry dWN0IGludGVsX3J1bnRpbWVfaW5mbyAqcmk7CisKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikp IHsKLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2JfY291bnRlcl9yZWcgPQorCQlk ZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9CiAJCQlnZW43X2lzX3Zh bGlkX2JfY291bnRlcl9hZGRyOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFsaWRfbXV4 X3JlZyA9CisJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9tdXhfcmVnID0KIAkJCWhzd19p c192YWxpZF9tdXhfYWRkcjsKLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2ZsZXhf cmVnID0gTlVMTDsKLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNfc2V0ID0g aHN3X2VuYWJsZV9tZXRyaWNfc2V0OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZGlzYWJsZV9t ZXRyaWNfc2V0ID0gaHN3X2Rpc2FibGVfbWV0cmljX3NldDsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu b3BzLm9hX2VuYWJsZSA9IGdlbjdfb2FfZW5hYmxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMu b2FfZGlzYWJsZSA9IGdlbjdfb2FfZGlzYWJsZTsKLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJl YWQgPSBnZW43X29hX3JlYWQ7Ci0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9od190YWlsX3Jl YWQgPQorCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfZmxleF9yZWcgPSBOVUxMOworCQlk ZXZfcHJpdi0+cGVyZi5vcHMuZW5hYmxlX21ldHJpY19zZXQgPSBoc3dfZW5hYmxlX21ldHJpY19z ZXQ7CisJCWRldl9wcml2LT5wZXJmLm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPSBoc3dfZGlzYWJs ZV9tZXRyaWNfc2V0OworCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5hYmxlID0gZ2VuN19vYV9l bmFibGU7CisJCWRldl9wcml2LT5wZXJmLm9wcy5vYV9kaXNhYmxlID0gZ2VuN19vYV9kaXNhYmxl OworCQlkZXZfcHJpdi0+cGVyZi5vcHMucmVhZCA9IGdlbjdfb2FfcmVhZDsKKwkJZGV2X3ByaXYt PnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZCA9CiAJCQlnZW43X29hX2h3X3RhaWxfcmVhZDsKIAot CQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0gaHN3X29hX2Zvcm1hdHM7CisJCWRldl9w cml2LT5wZXJmLm9hX2Zvcm1hdHMgPSBoc3dfb2FfZm9ybWF0czsKIAl9IGVsc2UgaWYgKEhBU19M T0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2X3ByaXYpKSB7CiAJCS8qIE5vdGU6IHRoYXQgYWx0aG91 Z2ggd2UgY291bGQgdGhlb3JldGljYWxseSBhbHNvIHN1cHBvcnQgdGhlCiAJCSAqIGxlZ2FjeSBy aW5nYnVmZmVyIG1vZGUgb24gQkRXIChhbmQgZWFybGllciBpdGVyYXRpb25zIG9mCkBAIC0zNDMx LDc1ICszNDUxLDkzIEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkgKiB3b3J0aCB0aGUgY29tcGxleGl0eSB0byBtYWludGFpbiBub3cg dGhhdCBCRFcrIGVuYWJsZQogCQkgKiBleGVjbGlzdCBtb2RlIGJ5IGRlZmF1bHQuCiAJCSAqLwot CQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0gZ2VuOF9wbHVzX29hX2Zvcm1hdHM7CisJ CWRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHMgPSBnZW44X3BsdXNfb2FfZm9ybWF0czsKIAotCQlk ZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlID0gZ2VuOF9vYV9lbmFibGU7Ci0JCWRldl9w cml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOwotCQlkZXZfcHJp di0+cGVyZi5vYS5vcHMucmVhZCA9IGdlbjhfb2FfcmVhZDsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu b3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2FfaHdfdGFpbF9yZWFkOworCQlkZXZfcHJpdi0+ cGVyZi5vcHMub2FfZW5hYmxlID0gZ2VuOF9vYV9lbmFibGU7CisJCWRldl9wcml2LT5wZXJmLm9w cy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOworCQlkZXZfcHJpdi0+cGVyZi5vcHMucmVh ZCA9IGdlbjhfb2FfcmVhZDsKKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZCA9 IGdlbjhfb2FfaHdfdGFpbF9yZWFkOwogCiAJCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDgs IDkpKSB7Ci0JCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9 CisJCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9CiAJCQkJZ2Vu N19pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKLQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192 YWxpZF9tdXhfcmVnID0KKwkJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9tdXhfcmVnID0K IAkJCQlnZW44X2lzX3ZhbGlkX211eF9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlz X3ZhbGlkX2ZsZXhfcmVnID0KKwkJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9mbGV4X3Jl ZyA9CiAJCQkJZ2VuOF9pc192YWxpZF9mbGV4X2FkZHI7CiAKIAkJCWlmIChJU19DSEVSUllWSUVX KGRldl9wcml2KSkgewotCQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhfcmVn ID0KKwkJCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfbXV4X3JlZyA9CiAJCQkJCWNodl9p c192YWxpZF9tdXhfYWRkcjsKIAkJCX0KIAotCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJs ZV9tZXRyaWNfc2V0ID0gZ2VuOF9lbmFibGVfbWV0cmljX3NldDsKLQkJCWRldl9wcml2LT5wZXJm Lm9hLm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPSBnZW44X2Rpc2FibGVfbWV0cmljX3NldDsKKwkJ CWRldl9wcml2LT5wZXJmLm9wcy5lbmFibGVfbWV0cmljX3NldCA9CisJCQkJZ2VuOF9lbmFibGVf bWV0cmljX3NldDsKKwkJCWRldl9wcml2LT5wZXJmLm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPQor CQkJCWdlbjhfZGlzYWJsZV9tZXRyaWNfc2V0OwogCiAJCQlpZiAoSVNfR0VOKGRldl9wcml2LCA4 KSkgewotCQkJCWRldl9wcml2LT5wZXJmLm9hLmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjA7 Ci0JCQkJZGV2X3ByaXYtPnBlcmYub2EuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgyY2U7CisJCQkJ ZGV2X3ByaXYtPnBlcmYuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKKwkJCQlkZXZfcHJp di0+cGVyZi5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDJjZTsKIAotCQkJCWRldl9wcml2LT5wZXJm Lm9hLmdlbjhfdmFsaWRfY3R4X2JpdCA9ICgxPDwyNSk7CisJCQkJZGV2X3ByaXYtPnBlcmYuZ2Vu OF92YWxpZF9jdHhfYml0ID0gKDEgPDwgMjUpOwogCQkJfSBlbHNlIHsKLQkJCQlkZXZfcHJpdi0+ cGVyZi5vYS5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4OwotCQkJCWRldl9wcml2LT5wZXJm Lm9hLmN0eF9mbGV4ZXUwX29mZnNldCA9IDB4M2RlOworCQkJCWRldl9wcml2LT5wZXJmLmN0eF9v YWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjg7CisJCQkJZGV2X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBf b2Zmc2V0ID0gMHgzZGU7CiAKLQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5nZW44X3ZhbGlkX2N0eF9i aXQgPSAoMTw8MTYpOworCQkJCWRldl9wcml2LT5wZXJmLmdlbjhfdmFsaWRfY3R4X2JpdCA9ICgx IDw8IDE2KTsKIAkJCX0KIAkJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDEwLCAx MSkpIHsKLQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0K KwkJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KIAkJCQlnZW43 X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3Zh bGlkX211eF9yZWcgPQorCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlkX211eF9yZWcgPQog CQkJCWdlbjEwX2lzX3ZhbGlkX211eF9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlz X3ZhbGlkX2ZsZXhfcmVnID0KKwkJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9mbGV4X3Jl ZyA9CiAJCQkJZ2VuOF9pc192YWxpZF9mbGV4X2FkZHI7CiAKLQkJCWRldl9wcml2LT5wZXJmLm9h Lm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7Ci0JCQlkZXZf cHJpdi0+cGVyZi5vYS5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gZ2VuMTBfZGlzYWJsZV9tZXRy aWNfc2V0OworCQkJZGV2X3ByaXYtPnBlcmYub3BzLmVuYWJsZV9tZXRyaWNfc2V0ID0KKwkJCQln ZW44X2VuYWJsZV9tZXRyaWNfc2V0OworCQkJZGV2X3ByaXYtPnBlcmYub3BzLmRpc2FibGVfbWV0 cmljX3NldCA9CisJCQkJZ2VuMTBfZGlzYWJsZV9tZXRyaWNfc2V0OwogCi0JCQlkZXZfcHJpdi0+ cGVyZi5vYS5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4OwotCQkJZGV2X3ByaXYtPnBlcmYu b2EuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgzZGU7CisJCQlkZXZfcHJpdi0+cGVyZi5jdHhfb2Fj dHhjdHJsX29mZnNldCA9IDB4MTI4OworCQkJZGV2X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBfb2Zm c2V0ID0gMHgzZGU7CiAKLQkJCWRldl9wcml2LT5wZXJmLm9hLmdlbjhfdmFsaWRfY3R4X2JpdCA9 ICgxPDwxNik7CisJCQlkZXZfcHJpdi0+cGVyZi5nZW44X3ZhbGlkX2N0eF9iaXQgPSAoMSA8PCAx Nik7CiAJCX0KIAl9CiAKLQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNf c2V0KSB7Ci0JCWhydGltZXJfaW5pdCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF9jaGVja190aW1l ciwKLQkJCQlDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyLmZ1bmN0aW9uID0gb2FfcG9sbF9jaGVja190aW1lcl9j YjsKLQkJaW5pdF93YWl0cXVldWVfaGVhZCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSk7Ci0K KwlpZiAoZGV2X3ByaXYtPnBlcmYub3BzLmVuYWJsZV9tZXRyaWNfc2V0KSB7CiAJCUlOSVRfTElT VF9IRUFEKCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zKTsKIAkJbXV0ZXhfaW5pdCgmZGV2X3ByaXYt PnBlcmYubG9jayk7Ci0JCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIucHRyX2xvY2spOwogCisJCXJpID0gUlVOVElNRV9JTkZPKGRldl9wcml2KTsKIAkJb2Ffc2Ft cGxlX3JhdGVfaGFyZF9saW1pdCA9IDEwMDAgKgotCQkJKFJVTlRJTUVfSU5GTyhkZXZfcHJpdikt PmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6IC8gMik7CisJCQkocmktPmNzX3RpbWVzdGFtcF9m cmVxdWVuY3lfa2h6IC8gMik7CiAJCWRldl9wcml2LT5wZXJmLnN5c2N0bF9oZWFkZXIgPSByZWdp c3Rlcl9zeXNjdGxfdGFibGUoZGV2X3Jvb3QpOwogCiAJCW11dGV4X2luaXQoJmRldl9wcml2LT5w ZXJmLm1ldHJpY3NfbG9jayk7CiAJCWlkcl9pbml0KCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lk cik7CiAKKwkJLyogV2Ugc2V0IHVwIHNvbWUgcmF0ZWxpbWl0IHN0YXRlIHRvIHBvdGVudGlhbGx5 IHRocm90dGxlIGFueQorCQkgKiBfTk9URVMgYWJvdXQgc3B1cmlvdXMsIGludmFsaWQgT0EgcmVw b3J0cyB3aGljaCB3ZSBkb24ndAorCQkgKiBmb3J3YXJkIHRvIHVzZXJzcGFjZS4KKwkJICoKKwkJ ICogV2UgcHJpbnQgYSBfTk9URSBhYm91dCBhbnkgdGhyb3R0bGluZyB3aGVuIGNsb3NpbmcgdGhl CisJCSAqIHN0cmVhbSBpbnN0ZWFkIG9mIHdhaXRpbmcgdW50aWwgZHJpdmVyIF9maW5pIHdoaWNo IG5vIG9uZQorCQkgKiB3b3VsZCBldmVyIHNlZS4KKwkJICoKKwkJICogVXNpbmcgdGhlIHNhbWUg bGltaXRpbmcgZmFjdG9ycyBhcyBwcmludGtfcmF0ZWxpbWl0KCkKKwkJICovCisJCXJhdGVsaW1p dF9zdGF0ZV9pbml0KCZkZXZfcHJpdi0+cGVyZi5zcHVyaW91c19yZXBvcnRfcnMsCisJCQkJICAg ICA1ICogSFosIDEwKTsKKwkJLyogU2luY2Ugd2UgdXNlIGEgRFJNX05PVEUgZm9yIHNwdXJpb3Vz IHJlcG9ydHMgaXQgd291bGQgYmUKKwkJICogaW5jb25zaXN0ZW50IHRvIGxldCBfX3JhdGVsaW1p dCgpIGF1dG9tYXRpY2FsbHkgcHJpbnQgYQorCQkgKiB3YXJuaW5nIGZvciB0aHJvdHRsaW5nLgor CQkgKi8KKwkJcmF0ZWxpbWl0X3NldF9mbGFncygmZGV2X3ByaXYtPnBlcmYuc3B1cmlvdXNfcmVw b3J0X3JzLAorCQkJCSAgICBSQVRFTElNSVRfTVNHX09OX1JFTEVBU0UpOworCiAJCWRldl9wcml2 LT5wZXJmLmluaXRpYWxpemVkID0gdHJ1ZTsKIAl9CiB9CkBAIC0zNTI4LDcgKzM1NjYsNyBAQCB2 b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog CXVucmVnaXN0ZXJfc3lzY3RsX3RhYmxlKGRldl9wcml2LT5wZXJmLnN5c2N0bF9oZWFkZXIpOwog Ci0JbWVtc2V0KCZkZXZfcHJpdi0+cGVyZi5vYS5vcHMsIDAsIHNpemVvZihkZXZfcHJpdi0+cGVy Zi5vYS5vcHMpKTsKKwltZW1zZXQoJmRldl9wcml2LT5wZXJmLm9wcywgMCwgc2l6ZW9mKGRldl9w cml2LT5wZXJmLm9wcykpOwogCiAJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSBmYWxzZTsK IH0KLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4