From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH] drm/i915/perf: Refactor oa object to better manage resources Date: Thu, 16 May 2019 10:48:31 +0100 Message-ID: References: <20190515180736.3425-1-umesh.nerlige.ramappa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A322892CC for ; Thu, 16 May 2019 09:48:37 +0000 (UTC) In-Reply-To: <20190515180736.3425-1-umesh.nerlige.ramappa@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Umesh Nerlige Ramappa , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgVW1lc2gsCgpUaGlzIHYzIGxvb2tzIGdvb2QgdG8gbWUuIEkndmUgbGVmdCBzb21lIG5pdHMg YmVsb3csIGJ1dCB3aXRoIG9yIHdpdGggCnRoZW0gYXBwbGllZCB0aGlzIGlzIDoKClJldmlld2Vk LWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CgpP biAxNS8wNS8yMDE5IDE5OjA3LCBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgd3JvdGU6Cj4gVGhlIG9h IG9iamVjdCBtYW5hZ2VzIHRoZSBvYSBidWZmZXIgYW5kIG11c3QgYmUgYWxsb2NhdGVkIHdoZW4g dGhlIHVzZXIKPiBpbnRlbmRzIHRvIHJlYWQgcGVyZm9ybWFuY2UgY291bnRlciBzbmFwc2hvdHMu IFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5Cj4gbWFraW5nIHRoZSBvYSBvYmplY3QgcGFydCBvZiB0 aGUgc3RyZWFtIG9iamVjdCB3aGljaCBpcyBhbGxvY2F0ZWQgd2hlbiBhCj4gc3RyZWFtIGlzIG9w ZW5lZCBieSB0aGUgdXNlci4KPgo+IEF0dHJpYnV0ZXMgaW4gdGhlIG9hIG9iamVjdCB0aGF0IGFy ZSBnZW4tc3BlY2lmaWMgYXJlIG1vdmVkIHRvIHRoZSBwZXJmCj4gb2JqZWN0IHNvIHRoYXQgdGhl eSBjYW4gYmUgaW5pdGlhbGl6ZWQgb24gZHJpdmVyIGxvYWQuCj4KPiBUaGUgc3BsaXQgcHJvdmlk ZXMgYSBiZXR0ZXIgc2VwYXJhdGlvbiBvZiB0aGUgb2JqZWN0cyB1c2VkIGluIHBlcmYKPiBpbXBs ZW1lbnRhdGlvbiBvZiBpOTE1IGRyaXZlciBzbyB0aGF0IHJlc291cmNlcyBhcmUgYWxsb2NhdGVk IGFuZAo+IGluaXRpYWxpemVkIG9ubHkgd2hlbiBuZWVkZWQuCj4KPiB2MjogRml4IGNoZWNrcGF0 Y2ggd2FybmluZ3MKPiB2MzogQWRkcmVzc2VkIExpb25lbCdzIHJldmlldyBjb21tZW50Cj4KPiBT aWduZWQtb2ZmLWJ5OiBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgPHVtZXNoLm5lcmxpZ2UucmFtYXBw YUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1 LmMgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgIHwg ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgMjE5ICsr KysrLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMgICAgfCAgMzAg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgICAgfCAgMzAgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2ZsZ3QyLmMgfCAgMzAgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2ZsZ3QzLmMgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMgICAgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfY25sLmMgICAgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2FfZ2xrLmMgICAgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff aHN3LmMgICAgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaWNsLmMg ICAgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMgfCAg MzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMgfCAgMzAgKy0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmMgfCAgMzAgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmMgfCAgMzAgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0LmMgfCAgMzAgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jICAgICAgfCA1ODMgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0K PiAgIDE4IGZpbGVzIGNoYW5nZWQsIDYyOSBpbnNlcnRpb25zKCspLCA1OTkgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCj4gaW5kZXggN2Y0NDhmM2JlYTBi Li5mYTc4ZGYzOTUyMWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfc3NldS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCj4g QEAgLTMyLDcgKzMyLDcgQEAgdTMyIGludGVsX3NzZXVfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAo+ICAgCSAqIGNhc2VzIHdoaWNoIGRpc2FibGUgc2xpY2VzIGZvciBm dW5jdGlvbmFsLCBhcGFydCBmb3IgcGVyZm9ybWFuY2UKPiAgIAkgKiByZWFzb25zLiBTbyBpbiB0 aGlzIGNhc2Ugd2Ugc2VsZWN0IGEga25vd24gc3RhYmxlIHN1YnNldC4KPiAgIAkgKi8KPiAtCWlm ICghaTkxNS0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtKSB7Cj4gKwlpZiAoIWk5MTUtPnBlcmYu ZXhjbHVzaXZlX3N0cmVhbSkgewo+ICAgCQljdHhfc3NldSA9ICpyZXFfc3NldTsKPiAgIAl9IGVs c2Ugewo+ICAgCQljdHhfc3NldSA9IGludGVsX3NzZXVfZnJvbV9kZXZpY2VfaW5mbyhzc2V1KTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gaW5kZXggN2FlNDJmMmViZmU4Li44 NzhlNzFhOTI3ZGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVk dWxlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gQEAg LTgxLDggKzgxLDggQEAgc3RhdGljIHZvaWQgc3Jfb2FfcmVncyhzdHJ1Y3QgaW50ZWxfdmdwdV93 b3JrbG9hZCAqd29ya2xvYWQsCj4gICAJCXUzMiAqcmVnX3N0YXRlLCBib29sIHNhdmUpCj4gICB7 Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gd29ya2xvYWQtPnZncHUt Pmd2dC0+ZGV2X3ByaXY7Cj4gLQl1MzIgY3R4X29hY3R4Y3RybCA9IGRldl9wcml2LT5wZXJmLm9h LmN0eF9vYWN0eGN0cmxfb2Zmc2V0Owo+IC0JdTMyIGN0eF9mbGV4ZXUwID0gZGV2X3ByaXYtPnBl cmYub2EuY3R4X2ZsZXhldTBfb2Zmc2V0Owo+ICsJdTMyIGN0eF9vYWN0eGN0cmwgPSBkZXZfcHJp di0+cGVyZi5jdHhfb2FjdHhjdHJsX29mZnNldDsKPiArCXUzMiBjdHhfZmxleGV1MCA9IGRldl9w cml2LT5wZXJmLmN0eF9mbGV4ZXUwX29mZnNldDsKPiAgIAlpbnQgaSA9IDA7Cj4gICAJdTMyIGZs ZXhfbW1pb1tdID0gewo+ICAgCQlpOTE1X21taW9fcmVnX29mZnNldChFVV9QRVJGX0NOVEwwKSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA5YTYzNGJhNTdmZjkuLjIzNzc4ZjYyOTlk ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNDAwLDYgKzE0MDAsODYgQEAg c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gewo+ICAgCSAqIEBvYV9jb25maWc6IFRoZSBPQSBjb25m aWd1cmF0aW9uIHVzZWQgYnkgdGhlIHN0cmVhbS4KPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgaTkxNV9v YV9jb25maWcgKm9hX2NvbmZpZzsKPiArCj4gKwkvKioKPiArCSAqIFRoZSBPQSBjb250ZXh0IHNw ZWNpZmljIGluZm9ybWF0aW9uLgo+ICsJICovCj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqcGlu bmVkX2N0eDsKPiArCXUzMiBzcGVjaWZpY19jdHhfaWQ7Cj4gKwl1MzIgc3BlY2lmaWNfY3R4X2lk X21hc2s7Cj4gKwo+ICsJc3RydWN0IGhydGltZXIgcG9sbF9jaGVja190aW1lcjsKPiArCXdhaXRf cXVldWVfaGVhZF90IHBvbGxfd3E7Cj4gKwlib29sIHBvbGxpbjsKPiArCj4gKwlib29sIHBlcmlv ZGljOwo+ICsJaW50IHBlcmlvZF9leHBvbmVudDsKPiArCj4gKwkvKioKPiArCSAqIFN0YXRlIG9m IHRoZSBPQSBidWZmZXIuCj4gKwkgKi8KPiArCXN0cnVjdCB7Cj4gKwkJc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gKwkJdTggKnZhZGRyOwo+ICsJCXUzMiBsYXN0X2N0eF9pZDsKPiArCQlpbnQgZm9y bWF0Owo+ICsJCWludCBmb3JtYXRfc2l6ZTsKPiArCQlpbnQgc2l6ZV9leHBvbmVudDsKPiArCj4g KwkJLyoqCj4gKwkJICogTG9ja3MgcmVhZHMgYW5kIHdyaXRlcyB0byBhbGwgaGVhZC90YWlsIHN0 YXRlCj4gKwkJICoKPiArCQkgKiBDb25zaWRlcjogdGhlIGhlYWQgYW5kIHRhaWwgcG9pbnRlciBz dGF0ZSBuZWVkcyB0byBiZSByZWFkCj4gKwkJICogY29uc2lzdGVudGx5IGZyb20gYSBocnRpbWVy IGNhbGxiYWNrIChhdG9taWMgY29udGV4dCkgYW5kCj4gKwkJICogcmVhZCgpIGZvcCAodXNlciBj b250ZXh0KSB3aXRoIHRhaWwgcG9pbnRlciB1cGRhdGVzIGhhcHBlbmluZwo+ICsJCSAqIGluIGF0 b21pYyBjb250ZXh0IGFuZCBoZWFkIHVwZGF0ZXMgaW4gdXNlciBjb250ZXh0IGFuZCB0aGUKPiAr CQkgKiAodW5saWtlbHkpIHBvc3NpYmlsaXR5IG9mIHJlYWQoKSBlcnJvcnMgbmVlZGluZyB0byBy ZXNldCBhbGwKPiArCQkgKiBoZWFkL3RhaWwgc3RhdGUuCj4gKwkJICoKPiArCQkgKiBOb3RlOiBD b250ZW50aW9uL3BlcmZvcm1hbmNlIGFyZW4ndCBjdXJyZW50bHkgYSBzaWduaWZpY2FudAo+ICsJ CSAqIGNvbmNlcm4gaGVyZSBjb25zaWRlcmluZyB0aGUgcmVsYXRpdmVseSBsb3cgZnJlcXVlbmN5 IG9mCj4gKwkJICogaHJ0aW1lciBjYWxsYmFja3MgKDVtcyBwZXJpb2QpIGFuZCB0aGF0IHJlYWRz IHR5cGljYWxseSBvbmx5Cj4gKwkJICogaGFwcGVuIGluIHJlc3BvbnNlIHRvIGEgaHJ0aW1lciBl dmVudCBhbmQgbGlrZWx5IGNvbXBsZXRlCj4gKwkJICogYmVmb3JlIHRoZSBuZXh0IGNhbGxiYWNr Lgo+ICsJCSAqCj4gKwkJICogTm90ZTogVGhpcyBsb2NrIGlzIG5vdCBoZWxkICp3aGlsZSogcmVh ZGluZyBhbmQgY29weWluZyBkYXRhCj4gKwkJICogdG8gdXNlcnNwYWNlIHNvIHRoZSB2YWx1ZSBv ZiBoZWFkIG9ic2VydmVkIGluIGh0cmltZXIKPiArCQkgKiBjYWxsYmFja3Mgd29uJ3QgcmVwcmVz ZW50IGFueSBwYXJ0aWFsIGNvbnN1bXB0aW9uIG9mIGRhdGEuCj4gKwkJICovCj4gKwkJc3Bpbmxv Y2tfdCBwdHJfbG9jazsKPiArCj4gKwkJLyoqCj4gKwkJICogT25lICdhZ2luZycgdGFpbCBwb2lu dGVyIGFuZCBvbmUgJ2FnZWQnIHRhaWwgcG9pbnRlciByZWFkeSB0bwo+ICsJCSAqIHVzZWQgZm9y IHJlYWRpbmcuCj4gKwkJICoKPiArCQkgKiBJbml0aWFsIHZhbHVlcyBvZiAweGZmZmZmZmZmIGFy ZSBpbnZhbGlkIGFuZCBpbXBseSB0aGF0IGFuCj4gKwkJICogdXBkYXRlIGlzIHJlcXVpcmVkIChh bmQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgYW4gYXR0ZW1wdGVkCj4gKwkJICogcmVhZCkKPiArCQkg Ki8KPiArCQlzdHJ1Y3Qgewo+ICsJCQl1MzIgb2Zmc2V0Owo+ICsJCX0gdGFpbHNbMl07Cj4gKwo+ ICsJCS8qKgo+ICsJCSAqIEluZGV4IGZvciB0aGUgYWdlZCB0YWlsIHJlYWR5IHRvIHJlYWQoKSBk YXRhIHVwIHRvLgo+ICsJCSAqLwo+ICsJCXVuc2lnbmVkIGludCBhZ2VkX3RhaWxfaWR4Owo+ICsK PiArCQkvKioKPiArCQkgKiBBIG1vbm90b25pYyB0aW1lc3RhbXAgZm9yIHdoZW4gdGhlIGN1cnJl bnQgYWdpbmcgdGFpbCBwb2ludGVyCj4gKwkJICogd2FzIHJlYWQ7IHVzZWQgdG8gZGV0ZXJtaW5l IHdoZW4gaXQgaXMgb2xkIGVub3VnaCB0byB0cnVzdC4KPiArCQkgKi8KPiArCQl1NjQgYWdpbmdf dGltZXN0YW1wOwo+ICsKPiArCQkvKioKPiArCQkgKiBBbHRob3VnaCB3ZSBjYW4gYWx3YXlzIHJl YWQgYmFjayB0aGUgaGVhZCBwb2ludGVyIHJlZ2lzdGVyLAo+ICsJCSAqIHdlIHByZWZlciB0byBh dm9pZCB0cnVzdGluZyB0aGUgSFcgc3RhdGUsIGp1c3QgdG8gYXZvaWQgYW55Cj4gKwkJICogcmlz ayB0aGF0IHNvbWUgaGFyZHdhcmUgY29uZGl0aW9uIGNvdWxkICogc29tZWhvdyBidW1wIHRoZQo+ ICsJCSAqIGhlYWQgcG9pbnRlciB1bnByZWRpY3RhYmx5IGFuZCBjYXVzZSB1cyB0byBmb3J3YXJk IHRoZSB3cm9uZwo+ICsJCSAqIE9BIGJ1ZmZlciBkYXRhIHRvIHVzZXJzcGFjZS4KPiArCQkgKi8K PiArCQl1MzIgaGVhZDsKPiArCX0gb2FfYnVmZmVyOwo+ICAgfTsKPiAgIAo+ICAgLyoqCj4gQEAg LTE0MzcsNyArMTUxNyw3IEBAIHN0cnVjdCBpOTE1X29hX29wcyB7Cj4gICAJICogQGRpc2FibGVf bWV0cmljX3NldDogUmVtb3ZlIHN5c3RlbSBjb25zdHJhaW50cyBhc3NvY2lhdGVkIHdpdGggdXNp bmcKPiAgIAkgKiB0aGUgT0EgdW5pdC4KPiAgIAkgKi8KPiAtCXZvaWQgKCpkaXNhYmxlX21ldHJp Y19zZXQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gKwl2b2lkICgqZGlz YWJsZV9tZXRyaWNfc2V0KShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKTsKPiAgIAo+ ICAgCS8qKgo+ICAgCSAqIEBvYV9lbmFibGU6IEVuYWJsZSBwZXJpb2RpYyBzYW1wbGluZwo+IEBA IC0xNDY1LDcgKzE1NDUsNyBAQCBzdHJ1Y3QgaTkxNV9vYV9vcHMgewo+ICAgCSAqIGhhbmRsaW5n IHRoZSBPQSB1bml0IHRhaWwgcG9pbnRlciByYWNlIHRoYXQgYWZmZWN0cyBtdWx0aXBsZQo+ICAg CSAqIGdlbmVyYXRpb25zLgo+ICAgCSAqLwo+IC0JdTMyICgqb2FfaHdfdGFpbF9yZWFkKShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsJdTMyICgqb2FfaHdfdGFpbF9yZWFk KShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKTsKPiAgIH07Cj4gICAKPiAgIHN0cnVj dCBpbnRlbF9jZGNsa19zdGF0ZSB7Cj4gQEAgLTE4NjgsMTIwICsxOTQ4LDM1IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsKPiAgIAkJc3RydWN0IG11dGV4IGxvY2s7Cj4gICAJCXN0cnVjdCBs aXN0X2hlYWQgc3RyZWFtczsKPiAgIAo+IC0JCXN0cnVjdCB7Cj4gLQkJCS8qCj4gLQkJCSAqIFRo ZSBzdHJlYW0gY3VycmVudGx5IHVzaW5nIHRoZSBPQSB1bml0LiBJZiBhY2Nlc3NlZAo+IC0JCQkg KiBvdXRzaWRlIGEgc3lzY2FsbCBhc3NvY2lhdGVkIHRvIGl0cyBmaWxlCj4gLQkJCSAqIGRlc2Ny aXB0b3IsIHlvdSBuZWVkIHRvIGhvbGQKPiAtCQkJICogZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXguCj4gLQkJCSAqLwo+IC0JCQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqZXhjbHVzaXZlX3N0 cmVhbTsKPiArCQkvKgo+ICsJCSAqIFRoZSBzdHJlYW0gY3VycmVudGx5IHVzaW5nIHRoZSBPQSB1 bml0LiBJZiBhY2Nlc3NlZAo+ICsJCSAqIG91dHNpZGUgYSBzeXNjYWxsIGFzc29jaWF0ZWQgdG8g aXRzIGZpbGUKPiArCQkgKiBkZXNjcmlwdG9yLCB5b3UgbmVlZCB0byBob2xkCj4gKwkJICogZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXguCj4gKwkJICovCj4gKwkJc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKmV4Y2x1c2l2ZV9zdHJlYW07Cj4gKwo+ICsJCS8qKgo+ICsJCSAqIEZvciByYXRlIGxp bWl0aW5nIGFueSBub3RpZmljYXRpb25zIG9mIHNwdXJpb3VzCj4gKwkJICogaW52YWxpZCBPQSBy ZXBvcnRzCj4gKwkJICovCj4gKwkJc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSBzcHVyaW91c19yZXBv cnRfcnM7Cj4gICAKPiAtCQkJc3RydWN0IGludGVsX2NvbnRleHQgKnBpbm5lZF9jdHg7Cj4gLQkJ CXUzMiBzcGVjaWZpY19jdHhfaWQ7Cj4gLQkJCXUzMiBzcGVjaWZpY19jdHhfaWRfbWFzazsKPiAr CQlzdHJ1Y3QgaTkxNV9vYV9jb25maWcgdGVzdF9jb25maWc7Cj4gICAKPiAtCQkJc3RydWN0IGhy dGltZXIgcG9sbF9jaGVja190aW1lcjsKPiAtCQkJd2FpdF9xdWV1ZV9oZWFkX3QgcG9sbF93cTsK PiAtCQkJYm9vbCBwb2xsaW47Cj4gKwkJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7Cj4gKwkJ dTMyIGN0eF9vYWN0eGN0cmxfb2Zmc2V0Owo+ICsJCXUzMiBjdHhfZmxleGV1MF9vZmZzZXQ7Cj4g ICAKPiAtCQkJLyoqCj4gLQkJCSAqIEZvciByYXRlIGxpbWl0aW5nIGFueSBub3RpZmljYXRpb25z IG9mIHNwdXJpb3VzCj4gLQkJCSAqIGludmFsaWQgT0EgcmVwb3J0cwo+IC0JCQkgKi8KPiAtCQkJ c3RydWN0IHJhdGVsaW1pdF9zdGF0ZSBzcHVyaW91c19yZXBvcnRfcnM7Cj4gLQo+IC0JCQlib29s IHBlcmlvZGljOwo+IC0JCQlpbnQgcGVyaW9kX2V4cG9uZW50Owo+IC0KPiAtCQkJc3RydWN0IGk5 MTVfb2FfY29uZmlnIHRlc3RfY29uZmlnOwo+IC0KPiAtCQkJc3RydWN0IHsKPiAtCQkJCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+IC0JCQkJdTggKnZhZGRyOwo+IC0JCQkJdTMyIGxhc3RfY3R4X2lk Owo+IC0JCQkJaW50IGZvcm1hdDsKPiAtCQkJCWludCBmb3JtYXRfc2l6ZTsKPiAtCj4gLQkJCQkv KioKPiAtCQkJCSAqIExvY2tzIHJlYWRzIGFuZCB3cml0ZXMgdG8gYWxsIGhlYWQvdGFpbCBzdGF0 ZQo+IC0JCQkJICoKPiAtCQkJCSAqIENvbnNpZGVyOiB0aGUgaGVhZCBhbmQgdGFpbCBwb2ludGVy IHN0YXRlCj4gLQkJCQkgKiBuZWVkcyB0byBiZSByZWFkIGNvbnNpc3RlbnRseSBmcm9tIGEgaHJ0 aW1lcgo+IC0JCQkJICogY2FsbGJhY2sgKGF0b21pYyBjb250ZXh0KSBhbmQgcmVhZCgpIGZvcAo+ IC0JCQkJICogKHVzZXIgY29udGV4dCkgd2l0aCB0YWlsIHBvaW50ZXIgdXBkYXRlcwo+IC0JCQkJ ICogaGFwcGVuaW5nIGluIGF0b21pYyBjb250ZXh0IGFuZCBoZWFkIHVwZGF0ZXMKPiAtCQkJCSAq IGluIHVzZXIgY29udGV4dCBhbmQgdGhlICh1bmxpa2VseSkKPiAtCQkJCSAqIHBvc3NpYmlsaXR5 IG9mIHJlYWQoKSBlcnJvcnMgbmVlZGluZyB0bwo+IC0JCQkJICogcmVzZXQgYWxsIGhlYWQvdGFp bCBzdGF0ZS4KPiAtCQkJCSAqCj4gLQkJCQkgKiBOb3RlOiBDb250ZW50aW9uIG9yIHBlcmZvcm1h bmNlIGFyZW4ndAo+IC0JCQkJICogY3VycmVudGx5IGEgc2lnbmlmaWNhbnQgY29uY2VybiBoZXJl Cj4gLQkJCQkgKiBjb25zaWRlcmluZyB0aGUgcmVsYXRpdmVseSBsb3cgZnJlcXVlbmN5IG9mCj4g LQkJCQkgKiBocnRpbWVyIGNhbGxiYWNrcyAoNW1zIHBlcmlvZCkgYW5kIHRoYXQKPiAtCQkJCSAq IHJlYWRzIHR5cGljYWxseSBvbmx5IGhhcHBlbiBpbiByZXNwb25zZSB0byBhCj4gLQkJCQkgKiBo cnRpbWVyIGV2ZW50IGFuZCBsaWtlbHkgY29tcGxldGUgYmVmb3JlIHRoZQo+IC0JCQkJICogbmV4 dCBjYWxsYmFjay4KPiAtCQkJCSAqCj4gLQkJCQkgKiBOb3RlOiBUaGlzIGxvY2sgaXMgbm90IGhl bGQgKndoaWxlKiByZWFkaW5nCj4gLQkJCQkgKiBhbmQgY29weWluZyBkYXRhIHRvIHVzZXJzcGFj ZSBzbyB0aGUgdmFsdWUKPiAtCQkJCSAqIG9mIGhlYWQgb2JzZXJ2ZWQgaW4gaHRyaW1lciBjYWxs YmFja3Mgd29uJ3QKPiAtCQkJCSAqIHJlcHJlc2VudCBhbnkgcGFydGlhbCBjb25zdW1wdGlvbiBv ZiBkYXRhLgo+IC0JCQkJICovCj4gLQkJCQlzcGlubG9ja190IHB0cl9sb2NrOwo+IC0KPiAtCQkJ CS8qKgo+IC0JCQkJICogT25lICdhZ2luZycgdGFpbCBwb2ludGVyIGFuZCBvbmUgJ2FnZWQnCj4g LQkJCQkgKiB0YWlsIHBvaW50ZXIgcmVhZHkgdG8gdXNlZCBmb3IgcmVhZGluZy4KPiAtCQkJCSAq Cj4gLQkJCQkgKiBJbml0aWFsIHZhbHVlcyBvZiAweGZmZmZmZmZmIGFyZSBpbnZhbGlkCj4gLQkJ CQkgKiBhbmQgaW1wbHkgdGhhdCBhbiB1cGRhdGUgaXMgcmVxdWlyZWQKPiAtCQkJCSAqIChhbmQg c2hvdWxkIGJlIGlnbm9yZWQgYnkgYW4gYXR0ZW1wdGVkCj4gLQkJCQkgKiByZWFkKQo+IC0JCQkJ ICovCj4gLQkJCQlzdHJ1Y3Qgewo+IC0JCQkJCXUzMiBvZmZzZXQ7Cj4gLQkJCQl9IHRhaWxzWzJd Owo+IC0KPiAtCQkJCS8qKgo+IC0JCQkJICogSW5kZXggZm9yIHRoZSBhZ2VkIHRhaWwgcmVhZHkg dG8gcmVhZCgpCj4gLQkJCQkgKiBkYXRhIHVwIHRvLgo+IC0JCQkJICovCj4gLQkJCQl1bnNpZ25l ZCBpbnQgYWdlZF90YWlsX2lkeDsKPiAtCj4gLQkJCQkvKioKPiAtCQkJCSAqIEEgbW9ub3Rvbmlj IHRpbWVzdGFtcCBmb3Igd2hlbiB0aGUgY3VycmVudAo+IC0JCQkJICogYWdpbmcgdGFpbCBwb2lu dGVyIHdhcyByZWFkOyB1c2VkIHRvCj4gLQkJCQkgKiBkZXRlcm1pbmUgd2hlbiBpdCBpcyBvbGQg ZW5vdWdoIHRvIHRydXN0Lgo+IC0JCQkJICovCj4gLQkJCQl1NjQgYWdpbmdfdGltZXN0YW1wOwo+ IC0KPiAtCQkJCS8qKgo+IC0JCQkJICogQWx0aG91Z2ggd2UgY2FuIGFsd2F5cyByZWFkIGJhY2sg dGhlIGhlYWQKPiAtCQkJCSAqIHBvaW50ZXIgcmVnaXN0ZXIsIHdlIHByZWZlciB0byBhdm9pZAo+ IC0JCQkJICogdHJ1c3RpbmcgdGhlIEhXIHN0YXRlLCBqdXN0IHRvIGF2b2lkIGFueQo+IC0JCQkJ ICogcmlzayB0aGF0IHNvbWUgaGFyZHdhcmUgY29uZGl0aW9uIGNvdWxkCj4gLQkJCQkgKiBzb21l aG93IGJ1bXAgdGhlIGhlYWQgcG9pbnRlciB1bnByZWRpY3RhYmx5Cj4gLQkJCQkgKiBhbmQgY2F1 c2UgdXMgdG8gZm9yd2FyZCB0aGUgd3JvbmcgT0EgYnVmZmVyCj4gLQkJCQkgKiBkYXRhIHRvIHVz ZXJzcGFjZS4KPiAtCQkJCSAqLwo+IC0JCQkJdTMyIGhlYWQ7Cj4gLQkJCX0gb2FfYnVmZmVyOwo+ IC0KPiAtCQkJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7Cj4gLQkJCXUzMiBjdHhfb2FjdHhj dHJsX29mZnNldDsKPiAtCQkJdTMyIGN0eF9mbGV4ZXUwX29mZnNldDsKPiAtCj4gLQkJCS8qKgo+ IC0JCQkgKiBUaGUgUlBUX0lEL3JlYXNvbiBmaWVsZCBmb3IgR2VuOCsgaW5jbHVkZXMgYSBiaXQK PiAtCQkJICogdG8gZGV0ZXJtaW5lIGlmIHRoZSBDVFggSUQgaW4gdGhlIHJlcG9ydCBpcyB2YWxp ZAo+IC0JCQkgKiBidXQgdGhlIHNwZWNpZmljIGJpdCBkaWZmZXJzIGJldHdlZW4gR2VuIDggYW5k IDkKPiAtCQkJICovCj4gLQkJCXUzMiBnZW44X3ZhbGlkX2N0eF9iaXQ7Cj4gKwkJLyoqCj4gKwkJ ICogVGhlIFJQVF9JRC9yZWFzb24gZmllbGQgZm9yIEdlbjgrIGluY2x1ZGVzIGEgYml0Cj4gKwkJ ICogdG8gZGV0ZXJtaW5lIGlmIHRoZSBDVFggSUQgaW4gdGhlIHJlcG9ydCBpcyB2YWxpZAo+ICsJ CSAqIGJ1dCB0aGUgc3BlY2lmaWMgYml0IGRpZmZlcnMgYmV0d2VlbiBHZW4gOCBhbmQgOQo+ICsJ CSAqLwo+ICsJCXUzMiBnZW44X3ZhbGlkX2N0eF9iaXQ7Cj4gICAKPiAtCQkJc3RydWN0IGk5MTVf b2Ffb3BzIG9wczsKPiAtCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfZm9ybWF0ICpvYV9mb3JtYXRz Owo+IC0JCX0gb2E7Cj4gKwkJc3RydWN0IGk5MTVfb2Ffb3BzIG9wczsKPiArCQljb25zdCBzdHJ1 Y3QgaTkxNV9vYV9mb3JtYXQgKm9hX2Zvcm1hdHM7Cj4gICAJfSBwZXJmOwo+ICAgCj4gICAJLyog QWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBl eGVjbGlzdHMpIGF3YXkgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9iZHcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMKPiBpbmRleCA0 YWNkYjk0NTU1YjcuLjdkNjMyZDUwMzUxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X29hX2Jkdy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9i ZHcuYwo+IEBAIC02NiwyNiArNjYsMjYgQEAgc2hvd190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2Ug KmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gICB2b2lk Cj4gICBpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RybGNweShkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy51dWlkLAo+ICsJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAo+ ICAgCQkiZDZkZTZmNTUtZTUyNi00Zjc5LWE2YTYtZDczMTVjMDkwNDRlIiwKPiAtCQlzaXplb2Yo ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcudXVpZCkpOwo+IC0JZGV2X3ByaXYtPnBlcmYu b2EudGVzdF9jb25maWcuaWQgPSAxOwo+ICsJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy51dWlkKSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gICAK PiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190 ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7 Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0g Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rf b2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2Nv dW50ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2Nv dW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4g ICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVf Y29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3Jl Z3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4g KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShm bGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAiZDZkZTZmNTUtZTUyNi00Zjc5LWE2YTYtZDczMTVj MDkwNDRlIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5h dHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOwo+ICsJZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAiZDZkZTZmNTUtZTUyNi00Zjc5 LWE2YTYtZDczMTVjMDkwNDRlIjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzOwo+ICAgCj4g LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpY19pZC5hdHRyOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0Owo+IC0JZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2Ff aWQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5u YW1lID0gImlkIjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyLm1vZGUgPSAwNDQ0Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNf bWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X29hX2J4dC5jCj4gaW5kZXggYTQ0MTk1YzM5OTIzLi5hNGNjNTg0ZmI1YzkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMKPiBAQCAtNjQsMjYgKzY0LDI2IEBAIHNob3dfdGVz dF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciwgY2hhciAqYnVmKQo+ICAgdm9pZAo+ICAgaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfYnh0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cmxjcHkoZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcudXVpZCwKPiArCXN0cmxjcHkoZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcudXVpZCwKPiAgIAkJIjVlZTcyZjVjLTA5MmYtNDIxZS04YjcwLTIyNWY3 YzNlOTYxMiIsCj4gLQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQp KTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmlkID0gMTsKPiArCQlzaXplb2Yo ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcudXVpZCkpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcuaWQgPSAxOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5t dXhfcmVncyA9IG11eF9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiAr CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29h Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShtdXhfY29uZmlnX3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYu b2EudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf dGVzdF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4 X2V1X2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjVlZTcyZjVj LTA5MmYtNDIxZS04YjcwLTIyNWY3YzNlOTYxMiI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5hdHRyczsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1l ID0gIjVlZTcyZjVjLTA5MmYtNDIxZS04YjcwLTIyNWY3YzNlOTYxMiI7Cj4gKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5hdHRyczsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0 cnNbMF0gPSAmZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0 dHI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKPiAgIAo+IC0JZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4g LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2Rl ID0gMDQ0NDsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcu c3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiArCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2NmbGd0Mi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDIuYwo+IGluZGV4IDdmNjBkNTFi ODc2MS4uNTE5MzBjNzFiZjdjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2FfY2ZsZ3QyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2NmbGd0 Mi5jCj4gQEAgLTY1LDI2ICs2NSwyNiBAQCBzaG93X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAgIHZvaWQK PiAgIGk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2NmbGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnV1aWQsCj4gKwlzdHJsY3B5KGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQs Cj4gICAJCSI3NGZiNDkwMi1kM2QzLTQyMzctOWU5MC1jYmRjNjhkMGE0NDYiLAo+IC0JCXNpemVv ZihkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gKwkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLnRlc3Rf Y29uZmlnLnV1aWQpKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmlkID0gMTsKPiAg IAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmln X3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5tdXhfcmVncyA9IG11eF9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29h KTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3Mg PSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVz dF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJf Y291bnRlcl9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJf Y291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsK PiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9l dV9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhf cmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVzdF9vYTsK PiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpF KGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICI3NGZiNDkwMi1kM2QzLTQyMzctOWU5MC1jYmRj NjhkMGE0NDYiOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj LmF0dHJzID0gZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnM7Cj4gKwlkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICI3NGZiNDkwMi1kM2QzLTQy MzctOWU5MC1jYmRjNjhkMGE0NDYiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lz ZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7Cj4gICAK PiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICsJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcuYXR0cnNbMF0gPSAmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lz ZnNfbWV0cmljX2lkLmF0dHI7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+IC0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfdGVzdF9v YV9pZDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm5hbWUgPSAiaWQiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj X2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWNfaWQuc2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfY2ZsZ3QzLmMKPiBpbmRleCBhOTJjMzhlM2EwY2UuLmRlNjMwYjUzZDM2NCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2NmbGd0My5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jZmxndDMuYwo+IEBAIC02NSwyNiArNjUs MjYgQEAgc2hvd190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gICB2b2lkCj4gICBpOTE1X3BlcmZfbG9hZF90 ZXN0X2NvbmZpZ19jZmxndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg ewo+IC0Jc3RybGNweShkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkLAo+ICsJc3Ry bGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAo+ICAgCQkiNTc3ZThlMmMtM2Zh MC00ODc1LTg3NDMtMzUzOGQ1ODVlM2IwIiwKPiAtCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcudXVpZCkpOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuaWQg PSAxOwo+ICsJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29u ZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3MgPSBt dXhfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhfcmVn c19sZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190 ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3Nf bGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rf b2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBB UlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4g LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0 X29hKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj Lm5hbWUgPSAiNTc3ZThlMmMtM2ZhMC00ODc1LTg3NDMtMzUzOGQ1ODVlM2IwIjsKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcu c3lzZnNfbWV0cmljLm5hbWUgPSAiNTc3ZThlMmMtM2ZhMC00ODc1LTg3NDMtMzUzOGQ1ODVlM2Iw IjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0cjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJz WzBdID0gJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0 ci5uYW1lID0gImlkIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiArCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0 Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBz aG93X3Rlc3Rfb2FfaWQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfb2FfY2h2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Nodi5jCj4gaW5k ZXggNzFlYzg4OWEwMTE0Li43ZDdmMzNjNDQ2OGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9jaHYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2FfY2h2LmMKPiBAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICAg dm9pZAo+ICAgaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfY2h2KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYub2EudGVz dF9jb25maWcudXVpZCwKPiArCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcudXVp ZCwKPiAgIAkJIjRhNTM0YjA3LWNiYTMtNDE0ZC04ZDYwLTg3NDgzMGU4ODNhYSIsCj4gLQkJc2l6 ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKPiAtCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmlkID0gMTsKPiArCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcudXVpZCkpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAxOwo+ ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVncyA9IG11eF9jb25m aWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9yZWdzX2xl biA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRl c3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rf b2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVn cyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190 ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0g Yl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcu Yl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2Ep Owo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4 X2V1X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuZmxl eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0X29h Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjRhNTM0YjA3LWNiYTMtNDE0ZC04ZDYwLTg3 NDgzMGU4ODNhYSI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyczsKPiArCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjRhNTM0YjA3LWNiYTMt NDE0ZC04ZDYwLTg3NDgzMGU4ODNhYSI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyczsKPiAg IAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnNbMF0gPSAmZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHI7Cj4gKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWNfaWQuYXR0cjsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0 dHIubmFtZSA9ICJpZCI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5 c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwo+ICAgfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2NubC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9jbmwuYwo+IGluZGV4IDVjMjNkODgzZDZjOS4uNGFlODZhODk4M2MzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY25sLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2NubC5jCj4gQEAgLTc3LDI2ICs3NywyNiBAQCBzaG93 X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiAgIHZvaWQKPiAgIGk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmln X2NubChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlzdHJsY3B5 KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQsCj4gKwlzdHJsY3B5KGRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQsCj4gICAJCSJkYjQxZWRkNC1kOGU3LTQ3MzAtYWQxMS1i OWEyZDY4MzM1MDMiLAo+IC0JCXNpemVvZihkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51 dWlkKSk7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gKwkJc2l6 ZW9mKGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQpKTsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLmlkID0gMTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50 ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7 Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhfcmVncyA9IG11eF9jb25maWdfdGVz dF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVz dF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlk ZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9T SVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKPiArCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5w ZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzID0g ZmxleF9ldV9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZs ZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwo+ICAgCj4g LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJkYjQx ZWRkNC1kOGU3LTQ3MzAtYWQxMS1iOWEyZDY4MzM1MDMiOwo+IC0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcuYXR0cnM7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMu bmFtZSA9ICJkYjQxZWRkNC1kOGU3LTQ3MzAtYWQxMS1iOWEyZDY4MzM1MDMiOwo+ICsJZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcuYXR0cnM7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnNbMF0gPSAmZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHI7Cj4gICAKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQi Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIu bW9kZSA9IDA0NDQ7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWNfaWQuc2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+ICsJZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gKwlkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfdGVzdF9vYV9p ZDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMKPiBpbmRleCA0YmRkYTY2ZGY3 ZDIuLmQ4ZDYzNGRjYTE1OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2dsay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsuYwo+IEBA IC02NCwyNiArNjQsMjYgQEAgc2hvd190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gICB2b2lkCj4gICBpOTE1 X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19nbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgewo+IC0Jc3RybGNweShkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlk LAo+ICsJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAo+ICAgCQkiZGQz ZmQ3ODktZTc4My00MjA0LThjZDAtYjY3MWJiY2NiMGNmIiwKPiAtCQlzaXplb2YoZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWcudXVpZCkpOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcuaWQgPSAxOwo+ICsJCXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlk KSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gICAKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+ IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0la RShtdXhfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4 X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5tdXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAt CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3Vu dGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29u ZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVn c19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rl c3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRl c3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2Nv bmZpZ190ZXN0X29hKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lz ZnNfbWV0cmljLm5hbWUgPSAiZGQzZmQ3ODktZTc4My00MjA0LThjZDAtYjY3MWJiY2NiMGNmIjsK PiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAiZGQzZmQ3ODktZTc4My00MjA0LThjZDAtYjY3 MWJiY2NiMGNmIjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5h dHRycyA9IGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzOwo+ICAgCj4gLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19p ZC5hdHRyOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0Owo+IC0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlk IjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1v ZGUgPSAwNDQ0Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lk LnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2hz dy5jCj4gaW5kZXggY2M2NTI2ZmRkMmJkLi43MDMyMjc3ODc2ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfaHN3LmMKPiBAQCAtOTQsMjYgKzk0LDI2IEBAIHNob3dfcmVuZGVyX2Jhc2lj X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpiCj4gICB2b2lkCj4gICBpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19oc3coc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RybGNweShkZXZfcHJpdi0+ cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkLAo+ICsJc3RybGNweShkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy51dWlkLAo+ICAgCQkiNDAzZDg4MzItMWEyNy00YWE2LWE2NGUtZjUzODljZTdiMjEy IiwKPiAtCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcudXVpZCkpOwo+IC0J ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuaWQgPSAxOwo+ICsJCXNpemVvZihkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5pZCA9IDE7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9yZWdz ID0gbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWM7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5tdXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2ljKTsK PiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ19yZW5k ZXJfYmFzaWM7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBB UlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2ljKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBl cmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3JlbmRl cl9iYXNpYzsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdz X2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOwo+ICsJZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmln X3JlbmRlcl9iYXNpYzsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOwo+ICAg Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2Nv bmZpZ19yZW5kZXJfYmFzaWM7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4 X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwo+ICsJ ZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfcmVu ZGVyX2Jhc2ljOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9 IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKPiAgIAo+IC0JZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAiNDAzZDg4MzItMWEy Ny00YWE2LWE2NGUtZjUzODljZTdiMjEyIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0 dHJzOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAi NDAzZDg4MzItMWEyNy00YWE2LWE2NGUtZjUzODljZTdiMjEyIjsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLmF0dHJzOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyc1sw XSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsK PiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiAtCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAw NDQ0Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNo b3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2lj X2lkOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2lj bC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9pY2wuYwo+IGluZGV4IGJhYTUxNDI3 YTU0My4uYmNhMjNmMTUwNjI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2FfaWNsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2ljbC5jCj4g QEAgLTc0LDI2ICs3NCwyNiBAQCBzaG93X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAgIHZvaWQKPiAgIGk5 MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2ljbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICB7Cj4gLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1 aWQsCj4gKwlzdHJsY3B5KGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQsCj4gICAJCSJh MjkxNjY1ZS0yNDRiLTRiNzYtOWI5YS0wMWRlOWQzYzgwNjgiLAo+IC0JCXNpemVvZihkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0 X2NvbmZpZy5pZCA9IDE7Cj4gKwkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1 aWQpKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmlkID0gMTsKPiAgIAo+IC0JZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7 Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBBUlJBWV9T SVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5t dXhfcmVncyA9IG11eF9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+ IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50 ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2Nv dW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4g KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9j b25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0J ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdf dGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4g PSBBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVzdF9vYTsKPiArCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVf Y29uZmlnX3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWMubmFtZSA9ICJhMjkxNjY1ZS0yNDRiLTRiNzYtOWI5YS0wMWRlOWQzYzgwNjgi Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0g ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnM7Cj4gKwlkZXZfcHJpdi0+cGVyZi50 ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICJhMjkxNjY1ZS0yNDRiLTRiNzYtOWI5YS0w MWRlOWQzYzgwNjgiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj LmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7Cj4gICAKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYXR0cnNbMF0gPSAmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj X2lkLmF0dHI7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21l dHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gLQlkZXZfcHJpdi0+cGVyZi5v YS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiAr CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAi aWQiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIu bW9kZSA9IDA0NDQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNf aWQuc2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QyLmMKPiBpbmRleCAxNjhlNDlhYjBkNGQuLjJlMWQxMmY3OGM5YiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYwo+IEBAIC02NSwyNiArNjUsMjYgQEAgc2hv d190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCj4gICB2b2lkCj4gICBpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZp Z19rYmxndDIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3Ry bGNweShkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkLAo+ICsJc3RybGNweShkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAo+ICAgCQkiYmFhM2M3ZTQtNTJiNi00Yjg1LTgw MWUtNDY1YTk0Yjc0NmRkIiwKPiAtCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcudXVpZCkpOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuaWQgPSAxOwo+ICsJ CXNpemVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gKwlkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYu b2EudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rf b2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmln X3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBB UlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJS QVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpF KGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJp di0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1 X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVn cyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiAg IAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAi YmFhM2M3ZTQtNTJiNi00Yjg1LTgwMWUtNDY1YTk0Yjc0NmRkIjsKPiAtCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLmF0dHJzOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0 cmljLm5hbWUgPSAiYmFhM2M3ZTQtNTJiNi00Yjg1LTgwMWUtNDY1YTk0Yjc0NmRkIjsKPiArCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLmF0dHJzOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRy aWNfaWQuYXR0cjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICAgCj4gLQlk ZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0g ImlkIjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5h dHRyLm1vZGUgPSAwNDQ0Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNf bWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiArCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0Owo+ICsJZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rf b2FfaWQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff a2JsZ3QzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0My5jCj4gaW5kZXgg NmZmYTU1M2MzODhlLi4wN2E4NTY3YmQ1YmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9rYmxndDMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QzLmMKPiBAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ ICAgdm9pZAo+ICAgaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfa2JsZ3QzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYu b2EudGVzdF9jb25maWcudXVpZCwKPiArCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcudXVpZCwKPiAgIAkJImYxNzkyZjMyLTZkYjItNGI1MC1iNGIyLTU1NzEyOGYxNjg4ZCIsCj4g LQkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKPiAtCWRldl9w cml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmlkID0gMTsKPiArCQlzaXplb2YoZGV2X3ByaXYtPnBl cmYudGVzdF9jb25maWcudXVpZCkpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQg PSAxOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVncyA9IG11 eF9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9y ZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5w ZXJmLnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmln X3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2NvdW50 ZXJfcmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9y ZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rl c3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3Mg PSBmbGV4X2V1X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25m aWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4g KwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190 ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFS UkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJm Lm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImYxNzkyZjMyLTZkYjItNGI1MC1i NGIyLTU1NzEyOGYxNjg4ZCI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyczsKPiAr CWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gImYxNzkyZjMy LTZkYjItNGI1MC1iNGIyLTU1NzEyOGYxNjg4ZCI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRy czsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnNbMF0gPSAmZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHI7Cj4gKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVz dF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4gLQlkZXZfcHJpdi0+ cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiAt CWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hv d190ZXN0X29hX2lkOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj X2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwo+ICAgfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0Mi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYwo+IGluZGV4IDdjZTZlZTg1MWQ0My4uZmE0NjNh OTJmNWJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Qy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0Mi5jCj4gQEAgLTY0 LDI2ICs2NCwyNiBAQCBzaG93X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAgIHZvaWQKPiAgIGk5MTVfcGVy Zl9sb2FkX3Rlc3RfY29uZmlnX3NrbGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gICB7Cj4gLQlzdHJsY3B5KGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQs Cj4gKwlzdHJsY3B5KGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQsCj4gICAJCSIxNjUx OTQ5Zi0wYWMwLTRjYjEtYTA2Zi1kYWZkNzRhNDA3ZDEiLAo+IC0JCXNpemVvZihkZXZfcHJpdi0+ cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5pZCA9IDE7Cj4gKwkJc2l6ZW9mKGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnV1aWQp KTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmlkID0gMTsKPiAgIAo+IC0JZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Cj4g LQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBBUlJBWV9TSVpF KG11eF9jb25maWdfdGVzdF9vYSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhf cmVncyA9IG11eF9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln Lm11eF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0J ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJf Y29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2NvdW50 ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVncyA9IGJfY291bnRlcl9jb25m aWdfdGVzdF9vYTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdz X2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+IC0JZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVz dF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVz dF9jb25maWcuZmxleF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVzdF9vYTsKPiArCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWMubmFtZSA9ICIxNjUxOTQ5Zi0wYWMwLTRjYjEtYTA2Zi1kYWZkNzRhNDA3ZDEiOwo+ IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2 X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnM7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0 X2NvbmZpZy5zeXNmc19tZXRyaWMubmFtZSA9ICIxNjUxOTQ5Zi0wYWMwLTRjYjEtYTA2Zi1kYWZk NzRhNDA3ZDEiOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLmF0 dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0cnM7Cj4gICAKPiAtCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuYXR0cnNbMF0gPSAmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lk LmF0dHI7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJp Y19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcu c3lzZnNfbWV0cmljX2lkLmF0dHIubW9kZSA9IDA0NDQ7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50 ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuc2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiArCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQi Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubW9k ZSA9IDA0NDQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQu c2hvdyA9IHNob3dfdGVzdF9vYV9pZDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9za2xndDMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff c2tsZ3QzLmMKPiBpbmRleCAwODZjYTI2MzFlMWMuLjljOTQ5N2Q3YTlkNSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0My5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMuYwo+IEBAIC02NSwyNiArNjUsMjYgQEAgc2hvd190 ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCj4gICB2b2lkCj4gICBpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19z a2xndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RybGNw eShkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy51dWlkLAo+ICsJc3RybGNweShkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy51dWlkLAo+ICAgCQkiMmI5ODU4MDMtZDNjOS00NjI5LThhNGYt NjM0YmZlY2JhMGU4IiwKPiAtCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcu dXVpZCkpOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuaWQgPSAxOwo+ICsJCXNp emVvZihkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7Cj4gKwlkZXZfcHJpdi0+cGVy Zi50ZXN0X2NvbmZpZy5pZCA9IDE7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29u ZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2Ep Owo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29uZmlnX3Rl c3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5tdXhfcmVnc19sZW4gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLmJfY291bnRlcl9yZWdzID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+IC0J ZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlf U0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2EpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZf cHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5iX2NvdW50ZXJfcmVnc19sZW4gPSBBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLmZsZXhfcmVncyA9IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gLQlkZXZfcHJpdi0+ cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2Nv bmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmZsZXhfcmVncyA9 IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5m bGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKPiAgIAo+ IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljLm5hbWUgPSAiMmI5 ODU4MDMtZDNjOS00NjI5LThhNGYtNjM0YmZlY2JhMGU4IjsKPiAtCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJmLm9hLnRlc3Rf Y29uZmlnLmF0dHJzOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmlj Lm5hbWUgPSAiMmI5ODU4MDMtZDNjOS00NjI5LThhNGYtNjM0YmZlY2JhMGU4IjsKPiArCWRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5hdHRycyA9IGRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLmF0dHJzOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZp Zy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNf aWQuYXR0cjsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmF0dHJzWzBdID0gJmRldl9w cml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyOwo+ICAgCj4gLQlkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlk IjsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRy Lm1vZGUgPSAwNDQ0Owo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0 cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQ7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0Owo+ICsJZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X3Rlc3Rfb2Ff aWQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2ts Z3Q0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0NC5jCj4gaW5kZXggYjI5 MWE2ZWI4YTg3Li42NWViYzZiOGRkNzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9za2xndDQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff c2tsZ3Q0LmMKPiBAQCAtNjUsMjYgKzY1LDI2IEBAIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICAg dm9pZAo+ICAgaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfc2tsZ3Q0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYub2Eu dGVzdF9jb25maWcudXVpZCwKPiArCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcu dXVpZCwKPiAgIAkJIjg4MmZhNDMzLTFmNGEtNGE2Ny1hOTYyLWM3NDE4ODhmZTVmNSIsCj4gLQkJ c2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnV1aWQpKTsKPiAtCWRldl9wcml2 LT5wZXJmLm9hLnRlc3RfY29uZmlnLmlkID0gMTsKPiArCQlzaXplb2YoZGV2X3ByaXYtPnBlcmYu dGVzdF9jb25maWcudXVpZCkpOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuaWQgPSAx Owo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5tdXhfcmVncyA9IG11eF9j b25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLm11eF9yZWdz X2xlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLm11eF9yZWdzID0gbXV4X2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYt PnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rl c3Rfb2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5iX2NvdW50ZXJf cmVncyA9IGJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnRl c3RfY29uZmlnLmJfY291bnRlcl9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZp Z190ZXN0X29hKTsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmJfY291bnRlcl9yZWdz ID0gYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25m aWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Rlc3Rf b2EpOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBm bGV4X2V1X2NvbmZpZ190ZXN0X29hOwo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcu ZmxleF9yZWdzX2xlbiA9IEFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gKwlk ZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5mbGV4X3JlZ3MgPSBmbGV4X2V1X2NvbmZpZ190ZXN0 X29hOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxleF9yZWdzX2xlbiA9IEFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9h LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjg4MmZhNDMzLTFmNGEtNGE2Ny1hOTYy LWM3NDE4ODhmZTVmNSI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5zeXNmc19t ZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5hdHRyczsKPiArCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjg4MmZhNDMzLTFm NGEtNGE2Ny1hOTYyLWM3NDE4ODhmZTVmNSI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5zeXNmc19tZXRyaWMuYXR0cnMgPSBkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyczsK PiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcuYXR0cnNbMF0gPSAmZGV2X3By aXYtPnBlcmYub2EudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHI7Cj4gKwlkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2EudGVzdF9j b25maWcuc3lzZnNfbWV0cmljX2lkLmF0dHIubmFtZSA9ICJpZCI7Cj4gLQlkZXZfcHJpdi0+cGVy Zi5vYS50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiAtCWRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190 ZXN0X29hX2lkOwo+ICsJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lk LmF0dHIubmFtZSA9ICJpZCI7Cj4gKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19t ZXRyaWNfaWQuYXR0ci5tb2RlID0gMDQ0NDsKPiArCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmln LnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0X29hX2lkOwo+ICAgfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggYzQ5OTVkNWExNmQyLi40MzJhM2MwOGNmYmEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0zNjQsNiArMzY0LDggQEAgc3RydWN0IHBl cmZfb3Blbl9wcm9wZXJ0aWVzIHsKPiAgIAlpbnQgb2FfcGVyaW9kX2V4cG9uZW50Owo+ICAgfTsK PiAgIAo+ICtzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgb2FfcG9sbF9jaGVja190aW1lcl9j YihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcik7Cj4gKwo+ICAgc3RhdGljIHZvaWQgZnJlZV9vYV9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJICAgc3RydWN0 IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCj4gICB7Cj4gQEAgLTM5Miw4ICszOTQsOCBAQCBz dGF0aWMgaW50IGdldF9vYV9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlpZiAobWV0cmljc19zZXQgPT0gMSkgewo+IC0JCSpv dXRfY29uZmlnID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnOwo+IC0JCWF0b21pY19p bmMoJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnJlZl9jb3VudCk7Cj4gKwkJKm91dF9j b25maWcgPSAmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWc7Cj4gKwkJYXRvbWljX2luYygmZGV2 X3ByaXYtPnBlcmYudGVzdF9jb25maWcucmVmX2NvdW50KTsKPiAgIAkJcmV0dXJuIDA7Cj4gICAJ fQo+ICAgCj4gQEAgLTQxMiwxMyArNDE0LDE2IEBAIHN0YXRpYyBpbnQgZ2V0X29hX2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJcmV0dXJuIHJldDsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgdTMyIGdlbjhfb2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHUzMiBnZW44X29hX2h3X3RhaWxfcmVhZChzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiArCj4gICAJcmV0dXJuIEk5MTVf UkVBRChHRU44X09BVEFJTFBUUikgJiBHRU44X09BVEFJTFBUUl9NQVNLOwo+ICAgfQo+ICAgCj4g LXN0YXRpYyB1MzIgZ2VuN19vYV9od190YWlsX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICtzdGF0aWMgdTMyIGdlbjdfb2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+ICAgCXUzMiBvYXN0YXR1czEgPSBJOTE1X1JF QUQoR0VON19PQVNUQVRVUzEpOwo+ICAgCj4gICAJcmV0dXJuIG9hc3RhdHVzMSAmIEdFTjdfT0FT VEFUVVMxX1RBSUxfTUFTSzsKPiBAQCAtNDI2LDcgKzQzMSw3IEBAIHN0YXRpYyB1MzIgZ2VuN19v YV9od190YWlsX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4g ICAvKioKPiAgICAqIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZCAtIGNoZWNrIGZvciBkYXRhIGFu ZCB1cGRhdGUgdGFpbCBwdHIgc3RhdGUKPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0 YW5jZQo+ICsgKiBAc3RyZWFtOiBpOTE1IHN0cmVhbSBpbnN0YW5jZQo+ICAgICoKPiAgICAqIFRo aXMgaXMgZWl0aGVyIGNhbGxlZCB2aWEgZm9wcyAoZm9yIGJsb2NraW5nIHJlYWRzIGluIHVzZXIg Y3R4KSBvciB0aGUgcG9sbAo+ICAgICogY2hlY2sgaHJ0aW1lciAoYXRvbWljIGN0eCkgdG8gY2hl Y2sgdGhlIE9BIGJ1ZmZlciB0YWlsIHBvaW50ZXIgYW5kIGNoZWNrCj4gQEAgLTQ0OCw5ICs0NTMs MTAgQEAgc3RhdGljIHUzMiBnZW43X29hX2h3X3RhaWxfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICAgKgo+ICAgICogUmV0dXJuczogJXRydWUgaWYgdGhlIE9BIGJ1 ZmZlciBjb250YWlucyBkYXRhLCBlbHNlICVmYWxzZQo+ICAgICovCj4gLXN0YXRpYyBib29sIG9h X2J1ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK3N0YXRpYyBib29sIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQo+ICAgewo+IC0JaW50IHJlcG9ydF9zaXplID0gZGV2X3ByaXYtPnBl cmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiArCWludCByZXBvcnRfc2l6ZSA9IHN0cmVh bS0+b2FfYnVmZmVyLmZvcm1hdF9zaXplOwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAJ dW5zaWduZWQgaW50IGFnZWRfaWR4Owo+ICAgCXUzMiBoZWFkLCBod190YWlsLCBhZ2VkX3RhaWws IGFnaW5nX3RhaWw7Cj4gQEAgLTQ2MCwxOSArNDY2LDE5IEBAIHN0YXRpYyBib29sIG9hX2J1ZmZl cl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJ ICogY291bGQgcmVzdWx0IGluIGFuIE9BIGJ1ZmZlciByZXNldCB3aGljaCBtaWdodCByZXNldCB0 aGUgaGVhZCwKPiAgIAkgKiB0YWlsc1tdIGFuZCBhZ2VkX3RhaWwgc3RhdGUuCj4gICAJICovCj4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2Nr LCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xv Y2ssIGZsYWdzKTsKPiAgIAo+ICAgCS8qIE5COiBUaGUgaGVhZCB3ZSBvYnNlcnZlIGhlcmUgbWln aHQgZWZmZWN0aXZlbHkgYmUgYSBsaXR0bGUgb3V0IG9mCj4gICAJICogZGF0ZSAoYmV0d2VlbiBo ZWFkIGFuZCB0YWlsc1thZ2VkX2lkeF0ub2Zmc2V0IGlmIHRoZXJlIGlzIGN1cnJlbnRseQo+ICAg CSAqIGEgcmVhZCgpIGluIHByb2dyZXNzLgo+ICAgCSAqLwo+IC0JaGVhZCA9IGRldl9wcml2LT5w ZXJmLm9hLm9hX2J1ZmZlci5oZWFkOwo+ICsJaGVhZCA9IHN0cmVhbS0+b2FfYnVmZmVyLmhlYWQ7 Cj4gICAKPiAtCWFnZWRfaWR4ID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFnZWRfdGFp bF9pZHg7Cj4gLQlhZ2VkX3RhaWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNb YWdlZF9pZHhdLm9mZnNldDsKPiAtCWFnaW5nX3RhaWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9i dWZmZXIudGFpbHNbIWFnZWRfaWR4XS5vZmZzZXQ7Cj4gKwlhZ2VkX2lkeCA9IHN0cmVhbS0+b2Ff YnVmZmVyLmFnZWRfdGFpbF9pZHg7Cj4gKwlhZ2VkX3RhaWwgPSBzdHJlYW0tPm9hX2J1ZmZlci50 YWlsc1thZ2VkX2lkeF0ub2Zmc2V0Owo+ICsJYWdpbmdfdGFpbCA9IHN0cmVhbS0+b2FfYnVmZmVy LnRhaWxzWyFhZ2VkX2lkeF0ub2Zmc2V0Owo+ICAgCj4gLQlod190YWlsID0gZGV2X3ByaXYtPnBl cmYub2Eub3BzLm9hX2h3X3RhaWxfcmVhZChkZXZfcHJpdik7Cj4gKwlod190YWlsID0gZGV2X3By aXYtPnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZChzdHJlYW0pOwo+ICAgCj4gICAJLyogVGhlIHRh aWwgcG9pbnRlciBpbmNyZWFzZXMgaW4gNjQgYnl0ZSBpbmNyZW1lbnRzLAo+ICAgCSAqIG5vdCBp biByZXBvcnRfc2l6ZSBzdGVwcy4uLgo+IEBAIC00OTIsMTYgKzQ5OCwxNiBAQCBzdGF0aWMgYm9v bCBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCSAqIGF2YWlsYWJsZSkgd2l0aG91dCBuZWVkaW5nIHRvIHdhaXQgZm9yIGEgbGF0 ZXIgaHJ0aW1lciBjYWxsYmFjay4KPiAgIAkgKi8KPiAgIAlpZiAoYWdpbmdfdGFpbCAhPSBJTlZB TElEX1RBSUxfUFRSICYmCj4gLQkgICAgKChub3cgLSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIuYWdpbmdfdGltZXN0YW1wKSA+Cj4gKwkgICAgKChub3cgLSBzdHJlYW0tPm9hX2J1ZmZlci5h Z2luZ190aW1lc3RhbXApID4KPiAgIAkgICAgIE9BX1RBSUxfTUFSR0lOX05TRUMpKSB7Cj4gICAK PiAgIAkJYWdlZF9pZHggXj0gMTsKPiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuYWdl ZF90YWlsX2lkeCA9IGFnZWRfaWR4Owo+ICsJCXN0cmVhbS0+b2FfYnVmZmVyLmFnZWRfdGFpbF9p ZHggPSBhZ2VkX2lkeDsKPiAgIAo+ICAgCQlhZ2VkX3RhaWwgPSBhZ2luZ190YWlsOwo+ICAgCj4g ICAJCS8qIE1hcmsgdGhhdCB3ZSBuZWVkIGEgbmV3IHBvaW50ZXIgdG8gc3RhcnQgYWdpbmcuLi4g Ki8KPiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbIWFnZWRfaWR4XS5vZmZz ZXQgPSBJTlZBTElEX1RBSUxfUFRSOwo+ICsJCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWyFhZ2Vk X2lkeF0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKPiAgIAkJYWdpbmdfdGFpbCA9IElOVkFM SURfVEFJTF9QVFI7Cj4gICAJfQo+ICAgCj4gQEAgLTUxNiw3ICs1MjIsNyBAQCBzdGF0aWMgYm9v bCBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCWlmIChhZ2luZ190YWlsID09IElOVkFMSURfVEFJTF9QVFIgJiYKPiAgIAkgICAg KGFnZWRfdGFpbCA9PSBJTlZBTElEX1RBSUxfUFRSIHx8Cj4gICAJICAgICBPQV9UQUtFTihod190 YWlsLCBhZ2VkX3RhaWwpID49IHJlcG9ydF9zaXplKSkgewo+IC0JCXN0cnVjdCBpOTE1X3ZtYSAq dm1hID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZtYTsKPiArCQlzdHJ1Y3QgaTkxNV92 bWEgKnZtYSA9IHN0cmVhbS0+b2FfYnVmZmVyLnZtYTsKPiAgIAkJdTMyIGd0dF9vZmZzZXQgPSBp OTE1X2dndHRfb2Zmc2V0KHZtYSk7Cj4gICAKPiAgIAkJLyogQmUgcGFyYW5vaWQgYW5kIGRvIGEg Ym91bmRzIGNoZWNrIG9uIHRoZSBwb2ludGVyIHJlYWQgYmFjawo+IEBAIC01MjUsMTYgKzUzMSwx NiBAQCBzdGF0aWMgYm9vbCBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQkgKi8KPiAgIAkJaWYgKGh3X3RhaWwgPj0gZ3R0X29m ZnNldCAmJgo+ICAgCQkgICAgaHdfdGFpbCA8IChndHRfb2Zmc2V0ICsgT0FfQlVGRkVSX1NJWkUp KSB7Cj4gLQkJCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50YWlsc1shYWdlZF9pZHhdLm9m ZnNldCA9Cj4gKwkJCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWyFhZ2VkX2lkeF0ub2Zmc2V0ID0K PiAgIAkJCQlhZ2luZ190YWlsID0gaHdfdGFpbDsKPiAtCQkJZGV2X3ByaXYtPnBlcmYub2Eub2Ff YnVmZmVyLmFnaW5nX3RpbWVzdGFtcCA9IG5vdzsKPiArCQkJc3RyZWFtLT5vYV9idWZmZXIuYWdp bmdfdGltZXN0YW1wID0gbm93Owo+ICAgCQl9IGVsc2Ugewo+ICAgCQkJRFJNX0VSUk9SKCJJZ25v cmluZyBzcHVyaW91cyBvdXQgb2YgcmFuZ2UgT0EgYnVmZmVyIHRhaWwgcG9pbnRlciA9ICV1XG4i LAo+ICAgCQkJCSAgaHdfdGFpbCk7Cj4gICAJCX0KPiAgIAl9Cj4gICAKPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3Mp Owo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ss IGZsYWdzKTsKPiAgIAo+ICAgCXJldHVybiBhZ2VkX3RhaWwgPT0gSU5WQUxJRF9UQUlMX1BUUiA/ Cj4gICAJCWZhbHNlIDogT0FfVEFLRU4oYWdlZF90YWlsLCBoZWFkKSA+PSByZXBvcnRfc2l6ZTsK PiBAQCAtNTk3LDggKzYwMyw3IEBAIHN0YXRpYyBpbnQgYXBwZW5kX29hX3NhbXBsZShzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCQkJICAgIHNpemVfdCAqb2Zmc2V0LAo+ICAg CQkJICAgIGNvbnN0IHU4ICpyZXBvcnQpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+IC0JaW50IHJlcG9ydF9zaXplID0gZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwo+ICsJaW50IHJlcG9ydF9zaXpl ID0gc3RyZWFtLT5vYV9idWZmZXIuZm9ybWF0X3NpemU7Cj4gICAJc3RydWN0IGRybV9pOTE1X3Bl cmZfcmVjb3JkX2hlYWRlciBoZWFkZXI7Cj4gICAJdTMyIHNhbXBsZV9mbGFncyA9IHN0cmVhbS0+ c2FtcGxlX2ZsYWdzOwo+ICAgCj4gQEAgLTY1MCw5ICs2NTUsOSBAQCBzdGF0aWMgaW50IGdlbjhf YXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJ CQkgIHNpemVfdCAqb2Zmc2V0KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gLQlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7Cj4gLQl1OCAqb2FfYnVmX2Jhc2UgPSBk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudmFkZHI7Cj4gLQl1MzIgZ3R0X29mZnNldCA9IGk5 MTVfZ2d0dF9vZmZzZXQoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZtYSk7Cj4gKwlpbnQg cmVwb3J0X3NpemUgPSBzdHJlYW0tPm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKPiArCXU4ICpvYV9i dWZfYmFzZSA9IHN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyOwo+ICsJdTMyIGd0dF9vZmZzZXQgPSBp OTE1X2dndHRfb2Zmc2V0KHN0cmVhbS0+b2FfYnVmZmVyLnZtYSk7Cj4gICAJdTMyIG1hc2sgPSAo T0FfQlVGRkVSX1NJWkUgLSAxKTsKPiAgIAlzaXplX3Qgc3RhcnRfb2Zmc2V0ID0gKm9mZnNldDsK PiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IEBAIC02NjQsMTMgKzY2OSwxMyBAQCBzdGF0aWMg aW50IGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSwKPiAgIAlpZiAoV0FSTl9PTighc3RyZWFtLT5lbmFibGVkKSkKPiAgIAkJcmV0dXJuIC1FSU87 Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu cHRyX2xvY2ssIGZsYWdzKTsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1ZmZl ci5wdHJfbG9jaywgZmxhZ3MpOwo+ICAgCj4gLQloZWFkID0gZGV2X3ByaXYtPnBlcmYub2Eub2Ff YnVmZmVyLmhlYWQ7Cj4gLQlhZ2VkX3RhaWxfaWR4ID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVm ZmVyLmFnZWRfdGFpbF9pZHg7Cj4gLQl0YWlsID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy LnRhaWxzW2FnZWRfdGFpbF9pZHhdLm9mZnNldDsKPiArCWhlYWQgPSBzdHJlYW0tPm9hX2J1ZmZl ci5oZWFkOwo+ICsJYWdlZF90YWlsX2lkeCA9IHN0cmVhbS0+b2FfYnVmZmVyLmFnZWRfdGFpbF9p ZHg7Cj4gKwl0YWlsID0gc3RyZWFtLT5vYV9idWZmZXIudGFpbHNbYWdlZF90YWlsX2lkeF0ub2Zm c2V0Owo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+cGVyZi5vYS5v YV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0 cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIEFu IGludmFsaWQgdGFpbCBwb2ludGVyIGhlcmUgbWVhbnMgd2UncmUgc3RpbGwgd2FpdGluZyBmb3Ig dGhlIHBvbGwKPiBAQCAtNzM0LDEyICs3MzksMTIgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9v YV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAJCXJlYXNvbiA9 ICgocmVwb3J0MzJbMF0gPj4gT0FSRVBPUlRfUkVBU09OX1NISUZUKSAmCj4gICAJCQkgIE9BUkVQ T1JUX1JFQVNPTl9NQVNLKTsKPiAgIAkJaWYgKHJlYXNvbiA9PSAwKSB7Cj4gLQkJCWlmIChfX3Jh dGVsaW1pdCgmZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNfcmVwb3J0X3JzKSkKPiArCQkJaWYg KF9fcmF0ZWxpbWl0KCZkZXZfcHJpdi0+cGVyZi5zcHVyaW91c19yZXBvcnRfcnMpKQo+ICAgCQkJ CURSTV9OT1RFKCJTa2lwcGluZyBzcHVyaW91cywgaW52YWxpZCBPQSByZXBvcnRcbiIpOwo+ICAg CQkJY29udGludWU7Cj4gICAJCX0KPiAgIAo+IC0JCWN0eF9pZCA9IHJlcG9ydDMyWzJdICYgZGV2 X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2s7Cj4gKwkJY3R4X2lkID0gcmVwb3J0 MzJbMl0gJiBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+ICAgCj4gICAJCS8qCj4gICAJ CSAqIFNxdWFzaCB3aGF0ZXZlciBpcyBpbiB0aGUgQ1RYX0lEIGZpZWxkIGlmIGl0J3MgbWFya2Vk IGFzCj4gQEAgLTc0OSw3ICs3NTQsNyBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29hX3JlcG9y dHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJICogTm90ZTogdGhhdCB3 ZSBkb24ndCBjbGVhciB0aGUgdmFsaWRfY3R4X2JpdCBzbyB1c2Vyc3BhY2UgY2FuCj4gICAJCSAq IHVuZGVyc3RhbmQgdGhhdCB0aGUgSUQgaGFzIGJlZW4gc3F1YXNoZWQgYnkgdGhlIGtlcm5lbC4K PiAgIAkJICovCj4gLQkJaWYgKCEocmVwb3J0MzJbMF0gJiBkZXZfcHJpdi0+cGVyZi5vYS5nZW44 X3ZhbGlkX2N0eF9iaXQpKQo+ICsJCWlmICghKHJlcG9ydDMyWzBdICYgZGV2X3ByaXYtPnBlcmYu Z2VuOF92YWxpZF9jdHhfYml0KSkKPiAgIAkJCWN0eF9pZCA9IHJlcG9ydDMyWzJdID0gSU5WQUxJ RF9DVFhfSUQ7Cj4gICAKPiAgIAkJLyoKPiBAQCAtNzgzLDE4ICs3ODgsMTcgQEAgc3RhdGljIGlu dCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0s Cj4gICAJCSAqIHN3aXRjaGVzIHNpbmNlIGl0J3Mgbm90LXVuY29tbW9uIGZvciBwZXJpb2RpYyBz YW1wbGVzIHRvCj4gICAJCSAqIGlkZW50aWZ5IGEgc3dpdGNoIGJlZm9yZSBhbnkgJ2NvbnRleHQg c3dpdGNoJyByZXBvcnQuCj4gICAJCSAqLwo+IC0JCWlmICghZGV2X3ByaXYtPnBlcmYub2EuZXhj bHVzaXZlX3N0cmVhbS0+Y3R4IHx8Cj4gLQkJICAgIGRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmlj X2N0eF9pZCA9PSBjdHhfaWQgfHwKPiAtCQkgICAgKGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZl ci5sYXN0X2N0eF9pZCA9PQo+IC0JCSAgICAgZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4 X2lkKSB8fAo+ICsJCWlmICghZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbS0+Y3R4IHx8 Cj4gKwkJICAgIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkID09IGN0eF9pZCB8fAo+ICsJCSAgICBz dHJlYW0tPm9hX2J1ZmZlci5sYXN0X2N0eF9pZCA9PSBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZCB8 fAo+ICAgCQkgICAgcmVhc29uICYgT0FSRVBPUlRfUkVBU09OX0NUWF9TV0lUQ0gpIHsKPiAgIAo+ ICAgCQkJLyoKPiAgIAkJCSAqIFdoaWxlIGZpbHRlcmluZyBmb3IgYSBzaW5nbGUgY29udGV4dCB3 ZSBhdm9pZAo+ICAgCQkJICogbGVha2luZyB0aGUgSURzIG9mIG90aGVyIGNvbnRleHRzLgo+ICAg CQkJICovCj4gLQkJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtLT5jdHgg JiYKPiAtCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAhPSBjdHhfaWQp IHsKPiArCQkJaWYgKGRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0tPmN0eCAmJgo+ICsJ CQkgICAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgIT0gY3R4X2lkKSB7Cj4gICAJCQkJcmVwb3J0 MzJbMl0gPSBJTlZBTElEX0NUWF9JRDsKPiAgIAkJCX0KPiAgIAo+IEBAIC04MDMsNyArODA3LDcg QEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0sCj4gICAJCQlpZiAocmV0KQo+ICAgCQkJCWJyZWFrOwo+ICAgCj4gLQkJCWRl dl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5sYXN0X2N0eF9pZCA9IGN0eF9pZDsKPiArCQkJc3Ry ZWFtLT5vYV9idWZmZXIubGFzdF9jdHhfaWQgPSBjdHhfaWQ7Cj4gICAJCX0KPiAgIAo+ICAgCQkv Kgo+IEBAIC04MTcsNyArODIxLDcgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRz KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAJfQo+ICAgCj4gICAJaWYgKHN0 YXJ0X29mZnNldCAhPSAqb2Zmc2V0KSB7Cj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICsJCXNwaW5fbG9ja19pcnFz YXZlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJCS8qCj4g ICAJCSAqIFdlIHJlbW92ZWQgdGhlIGd0dF9vZmZzZXQgZm9yIHRoZSBjb3B5IGxvb3AgYWJvdmUs IGluZGV4aW5nCj4gQEAgLTgyNiw5ICs4MzAsOSBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29h X3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJaGVhZCArPSBn dHRfb2Zmc2V0Owo+ICAgCj4gICAJCUk5MTVfV1JJVEUoR0VOOF9PQUhFQURQVFIsIGhlYWQgJiBH RU44X09BSEVBRFBUUl9NQVNLKTsKPiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVh ZCA9IGhlYWQ7Cj4gKwkJc3RyZWFtLT5vYV9idWZmZXIuaGVhZCA9IGhlYWQ7Cj4gICAKPiAtCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xv Y2ssIGZsYWdzKTsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZl ci5wdHJfbG9jaywgZmxhZ3MpOwo+ICAgCX0KPiAgIAo+ICAgCXJldHVybiByZXQ7Cj4gQEAgLTg2 Myw3ICs4NjcsNyBAQCBzdGF0aWMgaW50IGdlbjhfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtLAo+ICAgCXUzMiBvYXN0YXR1czsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlp ZiAoV0FSTl9PTighZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyKSkKPiArCWlmIChX QVJOX09OKCFzdHJlYW0tPm9hX2J1ZmZlci52YWRkcikpCj4gICAJCXJldHVybiAtRUlPOwo+ICAg Cj4gICAJb2FzdGF0dXMgPSBJOTE1X1JFQUQoR0VOOF9PQVNUQVRVUyk7Cj4gQEAgLTg4OSwxMCAr ODkzLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJCURSTV9ERUJVRygiT0EgYnVm ZmVyIG92ZXJmbG93IChleHBvbmVudCA9ICVkKTogZm9yY2UgcmVzdGFydFxuIiwKPiAtCQkJICBk ZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RfZXhwb25lbnQpOwo+ICsJCQkgIHN0cmVhbS0+cGVyaW9k X2V4cG9uZW50KTsKPiAgIAo+IC0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlKHN0 cmVhbSk7Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2VuYWJsZShzdHJlYW0pOwo+ICsJ CWRldl9wcml2LT5wZXJmLm9wcy5vYV9kaXNhYmxlKHN0cmVhbSk7Cj4gKwkJZGV2X3ByaXYtPnBl cmYub3BzLm9hX2VuYWJsZShzdHJlYW0pOwo+ICAgCj4gICAJCS8qCj4gICAJCSAqIE5vdGU6IC5v YV9lbmFibGUoKSBpcyBleHBlY3RlZCB0byByZS1pbml0IHRoZSBvYWJ1ZmZlciBhbmQKPiBAQCAt OTM5LDkgKzk0Myw5IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCQkJCSAgc2l6ZV90ICpvZmZzZXQpCj4gICB7 Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJp djsKPiAtCWludCByZXBvcnRfc2l6ZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3Jt YXRfc2l6ZTsKPiAtCXU4ICpvYV9idWZfYmFzZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZl ci52YWRkcjsKPiAtCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+ cGVyZi5vYS5vYV9idWZmZXIudm1hKTsKPiArCWludCByZXBvcnRfc2l6ZSA9IHN0cmVhbS0+b2Ff YnVmZmVyLmZvcm1hdF9zaXplOwo+ICsJdTggKm9hX2J1Zl9iYXNlID0gc3RyZWFtLT5vYV9idWZm ZXIudmFkZHI7Cj4gKwl1MzIgZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5v YV9idWZmZXIudm1hKTsKPiAgIAl1MzIgbWFzayA9IChPQV9CVUZGRVJfU0laRSAtIDEpOwo+ICAg CXNpemVfdCBzdGFydF9vZmZzZXQgPSAqb2Zmc2V0Owo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gQEAgLTk1MywxMyArOTU3LDEzIEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBlbmRfb2FfcmVwb3J0 cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCWlmIChXQVJOX09OKCFzdHJl YW0tPmVuYWJsZWQpKQo+ICAgCQlyZXR1cm4gLUVJTzsKPiAgIAo+IC0Jc3Bpbl9sb2NrX2lycXNh dmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gICAK PiAtCWhlYWQgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVhZDsKPiAtCWFnZWRfdGFp bF9pZHggPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuYWdlZF90YWlsX2lkeDsKPiAtCXRh aWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbYWdlZF90YWlsX2lkeF0ub2Zm c2V0Owo+ICsJaGVhZCA9IHN0cmVhbS0+b2FfYnVmZmVyLmhlYWQ7Cj4gKwlhZ2VkX3RhaWxfaWR4 ID0gc3RyZWFtLT5vYV9idWZmZXIuYWdlZF90YWlsX2lkeDsKPiArCXRhaWwgPSBzdHJlYW0tPm9h X2J1ZmZlci50YWlsc1thZ2VkX3RhaWxfaWR4XS5vZmZzZXQ7Cj4gICAKPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3Mp Owo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ss IGZsYWdzKTsKPiAgIAo+ICAgCS8qIEFuIGludmFsaWQgdGFpbCBwb2ludGVyIGhlcmUgbWVhbnMg d2UncmUgc3RpbGwgd2FpdGluZyBmb3IgdGhlIHBvbGwKPiAgIAkgKiBocnRpbWVyIGNhbGxiYWNr IHRvIGdpdmUgdXMgYSBwb2ludGVyCj4gQEAgLTEwMTIsNyArMTAxNiw3IEBAIHN0YXRpYyBpbnQg Z2VuN19hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ ICAgCQkgKiBjb3B5aW5nIGl0IHRvIHVzZXJzcGFjZS4uLgo+ICAgCQkgKi8KPiAgIAkJaWYgKHJl cG9ydDMyWzBdID09IDApIHsKPiAtCQkJaWYgKF9fcmF0ZWxpbWl0KCZkZXZfcHJpdi0+cGVyZi5v YS5zcHVyaW91c19yZXBvcnRfcnMpKQo+ICsJCQlpZiAoX19yYXRlbGltaXQoJmRldl9wcml2LT5w ZXJmLnNwdXJpb3VzX3JlcG9ydF9ycykpCj4gICAJCQkJRFJNX05PVEUoIlNraXBwaW5nIHNwdXJp b3VzLCBpbnZhbGlkIE9BIHJlcG9ydFxuIik7Cj4gICAJCQljb250aW51ZTsKPiAgIAkJfQo+IEBA IC0xMDMxLDcgKzEwMzUsNyBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAl9Cj4gICAKPiAgIAlpZiAoc3RhcnRf b2Zmc2V0ICE9ICpvZmZzZXQpIHsKPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnBl cmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUo JnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAkJLyogV2UgcmVt b3ZlZCB0aGUgZ3R0X29mZnNldCBmb3IgdGhlIGNvcHkgbG9vcCBhYm92ZSwgaW5kZXhpbmcKPiAg IAkJICogcmVsYXRpdmUgdG8gb2FfYnVmX2Jhc2Ugc28gcHV0IGJhY2sgaGVyZS4uLgo+IEBAIC0x MDQxLDkgKzEwNDUsOSBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJSTkxNV9XUklURShHRU43X09BU1RBVFVT MiwKPiAgIAkJCSAgICgoaGVhZCAmIEdFTjdfT0FTVEFUVVMyX0hFQURfTUFTSykgfAo+ICAgCQkJ ICAgIEdFTjdfT0FTVEFUVVMyX01FTV9TRUxFQ1RfR0dUVCkpOwo+IC0JCWRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci5oZWFkID0gaGVhZDsKPiArCQlzdHJlYW0tPm9hX2J1ZmZlci5oZWFkID0g aGVhZDsKPiAgIAo+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLm9h Lm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gICAJfQo+ICAgCj4gICAJcmV0 dXJuIHJldDsKPiBAQCAtMTA3NCw3ICsxMDc4LDcgQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAl1MzIgb2FzdGF0dXMxOwo+ICAg CWludCByZXQ7Cj4gICAKPiAtCWlmIChXQVJOX09OKCFkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIudmFkZHIpKQo+ICsJaWYgKFdBUk5fT04oIXN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyKSkKPiAg IAkJcmV0dXJuIC1FSU87Cj4gICAKPiAgIAlvYXN0YXR1czEgPSBJOTE1X1JFQUQoR0VON19PQVNU QVRVUzEpOwo+IEBAIC0xMDg0LDcgKzEwODgsNyBAQCBzdGF0aWMgaW50IGdlbjdfb2FfcmVhZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCSAqIG1heSBiZSB1cGRhdGVkIGFz eW5jaHJvbm91c2x5KSBzbyB3ZSBpZ25vcmUgc3RhdHVzIGJpdHMKPiAgIAkgKiB0aGF0IGhhdmUg YWxyZWFkeSBiZWVuIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS4KPiAgIAkgKi8KPiAtCW9hc3RhdHVz MSAmPSB+ZGV2X3ByaXYtPnBlcmYub2EuZ2VuN19sYXRjaGVkX29hc3RhdHVzMTsKPiArCW9hc3Rh dHVzMSAmPSB+ZGV2X3ByaXYtPnBlcmYuZ2VuN19sYXRjaGVkX29hc3RhdHVzMTsKPiAgIAo+ICAg CS8qIFdlIHRyZWF0IE9BQlVGRkVSX09WRVJGTE9XIGFzIGEgc2lnbmlmaWNhbnQgZXJyb3I6Cj4g ICAJICoKPiBAQCAtMTExMywxMCArMTExNywxMCBAQCBzdGF0aWMgaW50IGdlbjdfb2FfcmVhZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAo+ ICAgCQlEUk1fREVCVUcoIk9BIGJ1ZmZlciBvdmVyZmxvdyAoZXhwb25lbnQgPSAlZCk6IGZvcmNl IHJlc3RhcnRcbiIsCj4gLQkJCSAgZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kX2V4cG9uZW50KTsK PiArCQkJICBzdHJlYW0tPnBlcmlvZF9leHBvbmVudCk7Cj4gICAKPiAtCQlkZXZfcHJpdi0+cGVy Zi5vYS5vcHMub2FfZGlzYWJsZShzdHJlYW0pOwo+IC0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5v YV9lbmFibGUoc3RyZWFtKTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZGlzYWJsZShzdHJl YW0pOwo+ICsJCWRldl9wcml2LT5wZXJmLm9wcy5vYV9lbmFibGUoc3RyZWFtKTsKPiAgIAo+ICAg CQlvYXN0YXR1czEgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzEpOwo+ICAgCX0KPiBAQCAtMTEy Niw3ICsxMTMwLDcgQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKPiAgIAkJCQkgICAgICAgRFJNX0k5MTVfUEVSRl9SRUNPUkRfT0FfUkVQ T1JUX0xPU1QpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAtCQlkZXZfcHJp di0+cGVyZi5vYS5nZW43X2xhdGNoZWRfb2FzdGF0dXMxIHw9Cj4gKwkJZGV2X3ByaXYtPnBlcmYu Z2VuN19sYXRjaGVkX29hc3RhdHVzMSB8PQo+ICAgCQkJR0VON19PQVNUQVRVUzFfUkVQT1JUX0xP U1Q7Cj4gICAJfQo+ICAgCj4gQEAgLTExNDksMTQgKzExNTMsMTIgQEAgc3RhdGljIGludCBnZW43 X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgICAqLwo+ICAgc3Rh dGljIGludCBpOTE1X29hX3dhaXRfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7Cj4gLQo+ICAgCS8qIFdlIHdvdWxkIHdhaXQgaW5kZWZpbml0ZWx5IGlmIHBl cmlvZGljIHNhbXBsaW5nIGlzIG5vdCBlbmFibGVkICovCj4gLQlpZiAoIWRldl9wcml2LT5wZXJm Lm9hLnBlcmlvZGljKQo+ICsJaWYgKCFzdHJlYW0tPnBlcmlvZGljKQo+ICAgCQlyZXR1cm4gLUVJ TzsKPiAgIAo+IC0JcmV0dXJuIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShkZXZfcHJpdi0+cGVy Zi5vYS5wb2xsX3dxLAo+IC0JCQkJCW9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChkZXZfcHJpdikp Owo+ICsJcmV0dXJuIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShzdHJlYW0tPnBvbGxfd3EsCj4g KwkJCQkJb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKHN0cmVhbSkpOwo+ICAgfQo+ICAgCj4gICAv KioKPiBAQCAtMTE3Myw5ICsxMTc1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9wb2xsX3dhaXQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJCSAgICAgIHN0cnVjdCBmaWxl ICpmaWxlLAo+ICAgCQkJICAgICAgcG9sbF90YWJsZSAqd2FpdCkKPiAgIHsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gLQo+IC0JcG9s bF93YWl0KGZpbGUsICZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxLCB3YWl0KTsKPiArCXBvbGxf d2FpdChmaWxlLCAmc3RyZWFtLT5wb2xsX3dxLCB3YWl0KTsKPiAgIH0KPiAgIAo+ICAgLyoqCj4g QEAgLTExOTcsMTMgKzExOTcsMTQgQEAgc3RhdGljIGludCBpOTE1X29hX3JlYWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+ICAgCj4gLQlyZXR1cm4gZGV2X3ByaXYt PnBlcmYub2Eub3BzLnJlYWQoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQpOwo+ICsJcmV0dXJu IGRldl9wcml2LT5wZXJmLm9wcy5yZWFkKHN0cmVhbSwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKPiAg IH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQo+ICtzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250 ZXh0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICB7Cj4gICAJc3RydWN0IGk5 MTVfZ2VtX2VuZ2luZXNfaXRlciBpdDsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBz dHJlYW0tPmN0eDsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gICAJaW50IGVycjsK PiAgIAo+IEBAIC0xMjIxLDcgKzEyMjIsNyBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQg Km9hX3Bpbl9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkgKi8K PiAgIAkJZXJyID0gaW50ZWxfY29udGV4dF9waW4oY2UpOwo+ICAgCQlpZiAoZXJyID09IDApIHsK PiAtCQkJaTkxNS0+cGVyZi5vYS5waW5uZWRfY3R4ID0gY2U7Cj4gKwkJCXN0cmVhbS0+cGlubmVk X2N0eCA9IGNlOwo+ICAgCQkJYnJlYWs7Cj4gICAJCX0KPiAgIAl9Cj4gQEAgLTEyMzEsNyArMTIz Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqb2FfcGluX2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJaWYgKGVycikKPiAgIAkJcmV0dXJuIEVSUl9Q VFIoZXJyKTsKPiAgIAo+IC0JcmV0dXJuIGk5MTUtPnBlcmYub2EucGlubmVkX2N0eDsKPiArCXJl dHVybiBzdHJlYW0tPnBpbm5lZF9jdHg7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0xMjQ5LDcg KzEyNTAsNyBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0pCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBz dHJlYW0tPmRldl9wcml2Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAo+IC0J Y2UgPSBvYV9waW5fY29udGV4dChpOTE1LCBzdHJlYW0tPmN0eCk7Cj4gKwljZSA9IG9hX3Bpbl9j b250ZXh0KHN0cmVhbSk7Cj4gICAJaWYgKElTX0VSUihjZSkpCj4gICAJCXJldHVybiBQVFJfRVJS KGNlKTsKPiAgIAo+IEBAIC0xMjU5LDggKzEyNjAsOCBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5k ZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAJCSAqIE9uIEhh c3dlbGwgd2UgZG9uJ3QgZG8gYW55IHBvc3QgcHJvY2Vzc2luZyBvZiB0aGUgcmVwb3J0cwo+ICAg CQkgKiBhbmQgZG9uJ3QgbmVlZCB0byB1c2UgdGhlIG1hc2suCj4gICAJCSAqLwo+IC0JCWk5MTUt PnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpOwo+ IC0JCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sgPSAwOwo+ICsJCXN0cmVhbS0+ c3BlY2lmaWNfY3R4X2lkID0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpOwo+ICsJCXN0cmVh bS0+c3BlY2lmaWNfY3R4X2lkX21hc2sgPSAwOwo+ICAgCQlicmVhazsKPiAgIAl9Cj4gICAKPiBA QCAtMTI3OCwzMyArMTI3OSwzNiBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAJCQkgKiBkcm9wcGVkIGJ5IEd1Qy4g VGhleSB3b24ndCBiZSBwYXJ0IG9mIHRoZSBjb250ZXh0Cj4gICAJCQkgKiBJRCBpbiB0aGUgT0Eg cmVwb3J0cywgc28gc3F1YXNoIHRob3NlIGxvd2VyIGJpdHMuCj4gICAJCQkgKi8KPiAtCQkJaTkx NS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPQo+ICsJCQlzdHJlYW0tPnNwZWNpZmljX2N0eF9p ZCA9Cj4gICAJCQkJbG93ZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2MpID4+IDEyOwo+ICAgCj4gICAJ CQkvKgo+ICAgCQkJICogR3VDIHVzZXMgdGhlIHRvcCBiaXQgdG8gc2lnbmFsIHByb3h5IHN1Ym1p c3Npb24sIHNvCj4gICAJCQkgKiBpZ25vcmUgdGhhdCBiaXQuCj4gICAJCQkgKi8KPiAtCQkJaTkx NS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzayA9Cj4gKwkJCXN0cmVhbS0+c3BlY2lmaWNf Y3R4X2lkX21hc2sgPQo+ICAgCQkJCSgxVSA8PCAoR0VOOF9DVFhfSURfV0lEVEggLSAxKSkgLSAx Owo+ICAgCQl9IGVsc2Ugewo+IC0JCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9tYXNr ID0KPiArCQkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzayA9Cj4gICAJCQkJKDFVIDw8IEdF TjhfQ1RYX0lEX1dJRFRIKSAtIDE7Cj4gLQkJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ID0KPiArCQkJc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgPQo+ICAgCQkJCXVwcGVyXzMyX2JpdHMo Y2UtPmxyY19kZXNjKTsKPiAtCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgJj0KPiAt CQkJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2s7Cj4gKwkJCXN0cmVhbS0+c3Bl Y2lmaWNfY3R4X2lkICY9Cj4gKwkJCQlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+ICAg CQl9Cj4gICAJCWJyZWFrOwo+ICAgCj4gICAJY2FzZSAxMTogewo+IC0JCWk5MTUtPnBlcmYub2Eu c3BlY2lmaWNfY3R4X2lkX21hc2sgPQo+IC0JCQkoKDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURU SCkgLSAxKSA8PCAoR0VOMTFfU1dfQ1RYX0lEX1NISUZUIC0gMzIpIHwKPiAtCQkJKCgxVSA8PCBH RU4xMV9FTkdJTkVfSU5TVEFOQ0VfV0lEVEgpIC0gMSkgPDwgKEdFTjExX0VOR0lORV9JTlNUQU5D RV9TSElGVCAtIDMyKSB8Cj4gLQkJCSgoMSA8PCBHRU4xMV9FTkdJTkVfQ0xBU1NfV0lEVEgpIC0g MSkgPDwgKEdFTjExX0VOR0lORV9DTEFTU19TSElGVCAtIDMyKTsKPiAtCQlpOTE1LT5wZXJmLm9h LnNwZWNpZmljX2N0eF9pZCA9IHVwcGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKPiAtCQlpOTE1 LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAmPQo+IC0JCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmlj X2N0eF9pZF9tYXNrOwo+ICsJCXN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkX21hc2sgPQo+ICsJCQko KDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURUSCkgLSAxKQo+ICsJCQkJPDwgKEdFTjExX1NXX0NU WF9JRF9TSElGVCAtIDMyKSB8Cj4gKwkJCSgoMVUgPDwgR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1dJ RFRIKSAtIDEpCj4gKwkJCQk8PCAoR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUIC0gMzIpIHwK PiArCQkJKCgxIDw8IEdFTjExX0VOR0lORV9DTEFTU19XSURUSCkgLSAxKQo+ICsJCQkJPDwgKEdF TjExX0VOR0lORV9DTEFTU19TSElGVCAtIDMyKTsKPiArCQlzdHJlYW0tPnNwZWNpZmljX2N0eF9p ZCA9IHVwcGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKPiArCQlzdHJlYW0tPnNwZWNpZmljX2N0 eF9pZCAmPQo+ICsJCQlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+ICAgCQlicmVhazsK PiAgIAl9Cj4gICAKPiBAQCAtMTMxMyw4ICsxMzE3LDggQEAgc3RhdGljIGludCBvYV9nZXRfcmVu ZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgCX0KPiAgIAo+ ICAgCURSTV9ERUJVR19EUklWRVIoImZpbHRlcmluZyBvbiBjdHhfaWQ9MHgleCBjdHhfaWRfbWFz az0weCV4XG4iLAo+IC0JCQkgaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQsCj4gLQkJCSBp OTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9tYXNrKTsKPiArCQkJIHN0cmVhbS0+c3BlY2lm aWNfY3R4X2lkLAo+ICsJCQkgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzayk7Cj4gICAKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPiBAQCAtMTMzMSwxMCArMTMzNSwxMCBAQCBzdGF0aWMgdm9pZCBv YV9wdXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4g ICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5z cGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKPiAtCWRldl9wcml2LT5wZXJmLm9hLnNw ZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKPiArCXN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkID0gSU5W QUxJRF9DVFhfSUQ7Cj4gKwlzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKPiAgIAo+ IC0JY2UgPSBmZXRjaF9hbmRfemVybygmZGV2X3ByaXYtPnBlcmYub2EucGlubmVkX2N0eCk7Cj4g KwljZSA9IGZldGNoX2FuZF96ZXJvKCZzdHJlYW0tPnBpbm5lZF9jdHgpOwo+ICAgCWlmIChjZSkg ewo+ICAgCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCWlu dGVsX2NvbnRleHRfdW5waW4oY2UpOwo+IEBAIC0xMzQzLDM0ICsxMzQ3LDM0IEBAIHN0YXRpYyB2 b2lkIG9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0p Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gLWZyZWVfb2FfYnVmZmVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICtmcmVlX29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtKQo+ICAgewo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVhbS0+ZGV2X3ByaXY7 Cj4gICAKPiAtCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZpOTE1LT5wZXJmLm9hLm9hX2J1 ZmZlci52bWEsCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWk5 MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZzdHJlYW0tPm9hX2J1ZmZlci52bWEsCj4gICAJCQkJ ICAgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+IC0KPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQlpOTE1LT5wZXJmLm9hLm9hX2J1ZmZlci52YWRkciA9 IE5VTEw7Cj4gKwlzdHJlYW0tPm9hX2J1ZmZlci52YWRkciA9IE5VTEw7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyB2b2lkIGk5MTVfb2Ffc3RyZWFtX2Rlc3Ryb3koc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBzdHJlYW0tPmRldl9wcml2Owo+ICAgCj4gLQlCVUdfT04oc3RyZWFtICE9IGRldl9wcml2LT5w ZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0pOwo+ICsJQlVHX09OKHN0cmVhbSAhPSBkZXZfcHJpdi0+ cGVyZi5leGNsdXNpdmVfc3RyZWFtKTsKPiAgIAo+ICAgCS8qCj4gICAJICogVW5zZXQgZXhjbHVz aXZlX3N0cmVhbSBmaXJzdCwgaXQgd2lsbCBiZSBjaGVja2VkIHdoaWxlIGRpc2FibGluZwo+ICAg CSAqIHRoZSBtZXRyaWMgc2V0IG9uIGdlbjgrLgo+ICAgCSAqLwo+ICAgCW11dGV4X2xvY2soJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2 ZV9zdHJlYW0gPSBOVUxMOwo+IC0JZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRpc2FibGVfbWV0cmlj X3NldChkZXZfcHJpdik7Cj4gKwlkZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3RyZWFtID0gTlVM TDsKPiArCWRldl9wcml2LT5wZXJmLm9wcy5kaXNhYmxlX21ldHJpY19zZXQoc3RyZWFtKTsKPiAg IAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+IC0JZnJl ZV9vYV9idWZmZXIoZGV2X3ByaXYpOwo+ICsJZnJlZV9vYV9idWZmZXIoc3RyZWFtKTsKPiAgIAo+ ICAgCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdB S0VfQUxMKTsKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgc3RyZWFtLT53YWtl cmVmKTsKPiBAQCAtMTM4MCw0MSArMTM4NCw0MiBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX3N0cmVh bV9kZXN0cm95KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAKPiAgIAlwdXRf b2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0tPm9hX2NvbmZpZyk7Cj4gICAKPiAtCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5zcHVyaW91c19yZXBvcnRfcnMubWlzc2VkKSB7Cj4gKwlpZiAoZGV2X3By aXYtPnBlcmYuc3B1cmlvdXNfcmVwb3J0X3JzLm1pc3NlZCkgewo+ICAgCQlEUk1fTk9URSgiJWQg c3B1cmlvdXMgT0EgcmVwb3J0IG5vdGljZXMgc3VwcHJlc3NlZCBkdWUgdG8gcmF0ZWxpbWl0aW5n XG4iLAo+IC0JCQkgZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNfcmVwb3J0X3JzLm1pc3NlZCk7 Cj4gKwkJCSBkZXZfcHJpdi0+cGVyZi5zcHVyaW91c19yZXBvcnRfcnMubWlzc2VkKTsKPiAgIAl9 Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgZ2VuN19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGdlbjdfaW5pdF9vYV9idWZm ZXIoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiAtCXUzMiBndHRfb2Zm c2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudm1hKTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7 Cj4gKwl1MzIgZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5vYV9idWZmZXIu dm1hKTsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmc3RyZWFtLT5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPiAgIAo+ ICAgCS8qIFByZS1EZXZCRFc6IE9BQlVGRkVSIG11c3QgYmUgc2V0IHdpdGggY291bnRlcnMgb2Zm LAo+ICAgCSAqIGJlZm9yZSBPQVNUQVRVUzEsIGJ1dCBhZnRlciBPQVNUQVRVUzIKPiAgIAkgKi8K PiAgIAlJOTE1X1dSSVRFKEdFTjdfT0FTVEFUVVMyLAo+ICAgCQkgICBndHRfb2Zmc2V0IHwgR0VO N19PQVNUQVRVUzJfTUVNX1NFTEVDVF9HR1RUKTsgLyogaGVhZCAqLwo+IC0JZGV2X3ByaXYtPnBl cmYub2Eub2FfYnVmZmVyLmhlYWQgPSBndHRfb2Zmc2V0Owo+ICsJc3RyZWFtLT5vYV9idWZmZXIu aGVhZCA9IGd0dF9vZmZzZXQ7Cj4gICAKPiAgIAlJOTE1X1dSSVRFKEdFTjdfT0FCVUZGRVIsIGd0 dF9vZmZzZXQpOwo+ICAgCj4gICAJSTkxNV9XUklURShHRU43X09BU1RBVFVTMSwgZ3R0X29mZnNl dCB8IE9BQlVGRkVSX1NJWkVfMTZNKTsgLyogdGFpbCAqLwo+ICAgCj4gICAJLyogTWFyayB0aGF0 IHdlIG5lZWQgdXBkYXRlZCB0YWlsIHBvaW50ZXJzIHRvIHJlYWQgZnJvbS4uLiAqLwo+IC0JZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnRhaWxzWzBdLm9mZnNldCA9IElOVkFMSURfVEFJTF9Q VFI7Cj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbMV0ub2Zmc2V0ID0gSU5W QUxJRF9UQUlMX1BUUjsKPiArCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWzBdLm9mZnNldCA9IElO VkFMSURfVEFJTF9QVFI7Cj4gKwlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1sxXS5vZmZzZXQgPSBJ TlZBTElEX1RBSUxfUFRSOwo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAkv KiBPbiBIYXN3ZWxsIHdlIGhhdmUgdG8gdHJhY2sgd2hpY2ggT0FTVEFUVVMxIGZsYWdzIHdlJ3Zl Cj4gICAJICogYWxyZWFkeSBzZWVuIHNpbmNlIHRoZXkgY2FuJ3QgYmUgY2xlYXJlZCB3aGlsZSBw ZXJpb2RpYwo+ICAgCSAqIHNhbXBsaW5nIGlzIGVuYWJsZWQuCj4gICAJICovCj4gLQlkZXZfcHJp di0+cGVyZi5vYS5nZW43X2xhdGNoZWRfb2FzdGF0dXMxID0gMDsKPiArCWRldl9wcml2LT5wZXJm LmdlbjdfbGF0Y2hlZF9vYXN0YXR1czEgPSAwOwo+ICAgCj4gICAJLyogTkI6IGFsdGhvdWdoIHRo ZSBPQSBidWZmZXIgd2lsbCBpbml0aWFsbHkgYmUgYWxsb2NhdGVkCj4gICAJICogemVyb2VkIHZp YSBzaG1mcyAoYW5kIHNvIHRoaXMgbWVtc2V0IGlzIHJlZHVuZGFudCB3aGVuCj4gQEAgLTE0Mjcs MjQgKzE0MzIsMjUgQEAgc3RhdGljIHZvaWQgZ2VuN19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJICogdGhlIGFzc3VtcHRpb24gdGhhdCBuZXcg cmVwb3J0cyBhcmUgYmVpbmcgd3JpdHRlbiB0byB6ZXJvZWQKPiAgIAkgKiBtZW1vcnkuLi4KPiAg IAkgKi8KPiAtCW1lbXNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudmFkZHIsIDAsIE9B X0JVRkZFUl9TSVpFKTsKPiArCW1lbXNldChzdHJlYW0tPm9hX2J1ZmZlci52YWRkciwgMCwgT0Ff QlVGRkVSX1NJWkUpOwo+ICAgCj4gICAJLyogTWF5YmUgbWFrZSAtPnBvbGxpbiBwZXItc3RyZWFt IHN0YXRlIGlmIHdlIHN1cHBvcnQgbXVsdGlwbGUKPiAgIAkgKiBjb25jdXJyZW50IHN0cmVhbXMg aW4gdGhlIGZ1dHVyZS4KPiAgIAkgKi8KPiAtCWRldl9wcml2LT5wZXJmLm9hLnBvbGxpbiA9IGZh bHNlOwo+ICsJc3RyZWFtLT5wb2xsaW4gPSBmYWxzZTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9p ZCBnZW44X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiArc3RhdGljIHZvaWQgZ2VuOF9pbml0X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtKQo+ICAgewo+IC0JdTMyIGd0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KGRl dl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiArCXUzMiBndHRfb2Zmc2V0ID0gaTkx NV9nZ3R0X29mZnNldChzdHJlYW0tPm9hX2J1ZmZlci52bWEpOwo+ICAgCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9i dWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJlYW0tPm9h X2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJSTkxNV9XUklURShHRU44X09BU1RB VFVTLCAwKTsKPiAgIAlJOTE1X1dSSVRFKEdFTjhfT0FIRUFEUFRSLCBndHRfb2Zmc2V0KTsKPiAt CWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5oZWFkID0gZ3R0X29mZnNldDsKPiArCXN0cmVh bS0+b2FfYnVmZmVyLmhlYWQgPSBndHRfb2Zmc2V0Owo+ICAgCj4gICAJSTkxNV9XUklURShHRU44 X09BQlVGRkVSX1VEVywgMCk7Cj4gICAKPiBAQCAtMTQ2MSwxNyArMTQ2NywxNyBAQCBzdGF0aWMg dm9pZCBnZW44X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAlJOTE1X1dSSVRFKEdFTjhfT0FUQUlMUFRSLCBndHRfb2Zmc2V0ICYgR0VOOF9PQVRB SUxQVFJfTUFTSyk7Cj4gICAKPiAgIAkvKiBNYXJrIHRoYXQgd2UgbmVlZCB1cGRhdGVkIHRhaWwg cG9pbnRlcnMgdG8gcmVhZCBmcm9tLi4uICovCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIudGFpbHNbMF0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKPiAtCWRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci50YWlsc1sxXS5vZmZzZXQgPSBJTlZBTElEX1RBSUxfUFRSOwo+ICsJc3Ry ZWFtLT5vYV9idWZmZXIudGFpbHNbMF0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKPiArCXN0 cmVhbS0+b2FfYnVmZmVyLnRhaWxzWzFdLm9mZnNldCA9IElOVkFMSURfVEFJTF9QVFI7Cj4gICAK PiAgIAkvKgo+ICAgCSAqIFJlc2V0IHN0YXRlIHVzZWQgdG8gcmVjb2duaXNlIGNvbnRleHQgc3dp dGNoZXMsIGFmZmVjdGluZyB3aGljaAo+ICAgCSAqIHJlcG9ydHMgd2Ugd2lsbCBmb3J3YXJkIHRv IHVzZXJzcGFjZSB3aGlsZSBmaWx0ZXJpbmcgZm9yIGEgc2luZ2xlCj4gICAJICogY29udGV4dC4K PiAgIAkgKi8KPiAtCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5sYXN0X2N0eF9pZCA9IElO VkFMSURfQ1RYX0lEOwo+ICsJc3RyZWFtLT5vYV9idWZmZXIubGFzdF9jdHhfaWQgPSBJTlZBTElE X0NUWF9JRDsKPiAgIAo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJLyoKPiAgIAkg KiBOQjogYWx0aG91Z2ggdGhlIE9BIGJ1ZmZlciB3aWxsIGluaXRpYWxseSBiZSBhbGxvY2F0ZWQK PiBAQCAtMTQ4NSwyMiArMTQ5MSwyMyBAQCBzdGF0aWMgdm9pZCBnZW44X2luaXRfb2FfYnVmZmVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiB0aGUgYXNzdW1wdGlv biB0aGF0IG5ldyByZXBvcnRzIGFyZSBiZWluZyB3cml0dGVuIHRvIHplcm9lZAo+ICAgCSAqIG1l bW9yeS4uLgo+ICAgCSAqLwo+IC0JbWVtc2V0KGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52 YWRkciwgMCwgT0FfQlVGRkVSX1NJWkUpOwo+ICsJbWVtc2V0KHN0cmVhbS0+b2FfYnVmZmVyLnZh ZGRyLCAwLCBPQV9CVUZGRVJfU0laRSk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIE1heWJlIG1ha2Ug LT5wb2xsaW4gcGVyLXN0cmVhbSBzdGF0ZSBpZiB3ZSBzdXBwb3J0IG11bHRpcGxlCj4gICAJICog Y29uY3VycmVudCBzdHJlYW1zIGluIHRoZSBmdXR1cmUuCj4gICAJICovCj4gLQlkZXZfcHJpdi0+ cGVyZi5vYS5wb2xsaW4gPSBmYWxzZTsKPiArCXN0cmVhbS0+cG9sbGluID0gZmFsc2U7Cj4gICB9 Cj4gICAKPiAtc3RhdGljIGludCBhbGxvY19vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICtzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpibzsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0J aWYgKFdBUk5fT04oZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZtYSkpCj4gKwlpZiAoV0FS Tl9PTihzdHJlYW0tPm9hX2J1ZmZlci52bWEpKQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgIAo+ ICAgCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ZHJtKTsK PiBAQCAtMTUyNSwxOCArMTUzMiwxOCBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCXJldCA9IFBUUl9FUlIodm1hKTsK PiAgIAkJZ290byBlcnJfdW5yZWY7Cj4gICAJfQo+IC0JZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVm ZmVyLnZtYSA9IHZtYTsKPiArCXN0cmVhbS0+b2FfYnVmZmVyLnZtYSA9IHZtYTsKPiAgIAo+IC0J ZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyID0KPiArCXN0cmVhbS0+b2FfYnVmZmVy LnZhZGRyID0KPiAgIAkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoYm8sIEk5MTVfTUFQX1dCKTsK PiAtCWlmIChJU19FUlIoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyKSkgewo+IC0J CXJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRyKTsKPiArCWlm IChJU19FUlIoc3RyZWFtLT5vYV9idWZmZXIudmFkZHIpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihz dHJlYW0tPm9hX2J1ZmZlci52YWRkcik7Cj4gICAJCWdvdG8gZXJyX3VucGluOwo+ICAgCX0KPiAg IAo+ICAgCURSTV9ERUJVR19EUklWRVIoIk9BIEJ1ZmZlciBpbml0aWFsaXplZCwgZ3R0IG9mZnNl dCA9IDB4JXgsIHZhZGRyID0gJXBcbiIsCj4gLQkJCSBpOTE1X2dndHRfb2Zmc2V0KGRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEpLAo+IC0JCQkgZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVm ZmVyLnZhZGRyKTsKPiArCQkJIGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5vYV9idWZmZXIudm1h KSwKPiArCQkJIHN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyKTsKPiAgIAo+ICAgCWdvdG8gdW5sb2Nr Owo+ICAgCj4gQEAgLTE1NDYsOCArMTU1Myw4IEBAIHN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIGVycl91bnJlZjoKPiAgIAlp OTE1X2dlbV9vYmplY3RfcHV0KGJvKTsKPiAgIAo+IC0JZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVm ZmVyLnZhZGRyID0gTlVMTDsKPiAtCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52bWEgPSBO VUxMOwo+ICsJc3RyZWFtLT5vYV9idWZmZXIudmFkZHIgPSBOVUxMOwo+ICsJc3RyZWFtLT5vYV9i dWZmZXIudm1hID0gTlVMTDsKPiAgIAo+ICAgdW5sb2NrOgo+ICAgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC0xNjE3LDggKzE2MjQsMTAgQEAgc3RhdGlj IGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSkKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBoc3dfZGlzYWJsZV9t ZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHZv aWQgaHN3X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5k ZXZfcHJpdjsKPiArCj4gICAJSTkxNV9XUklURShHRU42X1VDR0NUTDEsIChJOTE1X1JFQUQoR0VO Nl9VQ0dDVEwxKSAmCj4gICAJCQkJICB+R0VONl9DU1VOSVRfQ0xPQ0tfR0FURV9ESVNBQkxFKSk7 Cj4gICAJSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENU TCkgfAo+IEBAIC0xNjM2LDEzICsxNjQ1LDE0IEBAIHN0YXRpYyB2b2lkIGhzd19kaXNhYmxlX21l dHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgICogaW4gdGhl IGNhc2UgdGhhdCB0aGUgT0EgdW5pdCBoYXMgYmVlbiBkaXNhYmxlZC4KPiAgICAqLwo+ICAgc3Rh dGljIHZvaWQKPiAtZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKPiArZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsCj4gICAJCQkgICAgICAgdTMyICpyZWdfc3RhdGUsCj4gICAJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBjZS0+Z2VtX2NvbnRleHQtPmk5MTU7Cj4gLQl1MzIgY3R4X29hY3R4 Y3RybCA9IGk5MTUtPnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQ7Cj4gLQl1MzIgY3R4X2Zs ZXhldTAgPSBpOTE1LT5wZXJmLm9hLmN0eF9mbGV4ZXUwX29mZnNldDsKPiArCXUzMiBjdHhfb2Fj dHhjdHJsID0gaTkxNS0+cGVyZi5jdHhfb2FjdHhjdHJsX29mZnNldDsKPiArCXUzMiBjdHhfZmxl eGV1MCA9IGk5MTUtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0Owo+ICAgCS8qIFRoZSBNTUlPIG9m ZnNldHMgZm9yIEZsZXggRVUgcmVnaXN0ZXJzIGFyZW4ndCBjb250aWd1b3VzICovCj4gICAJaTkx NV9yZWdfdCBmbGV4X3JlZ3NbXSA9IHsKPiAgIAkJRVVfUEVSRl9DTlRMMCwKPiBAQCAtMTY1Niw4 ICsxNjY2LDggQEAgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKPiAgIAlpbnQgaTsKPiAgIAo+ICAgCUNUWF9SRUcocmVnX3N0YXRlLCBjdHhf b2FjdHhjdHJsLCBHRU44X09BQ1RYQ09OVFJPTCwKPiAtCQkoaTkxNS0+cGVyZi5vYS5wZXJpb2Rf ZXhwb25lbnQgPDwgR0VOOF9PQV9USU1FUl9QRVJJT0RfU0hJRlQpIHwKPiAtCQkoaTkxNS0+cGVy Zi5vYS5wZXJpb2RpYyA/IEdFTjhfT0FfVElNRVJfRU5BQkxFIDogMCkgfAo+ICsJCShzdHJlYW0t PnBlcmlvZF9leHBvbmVudCA8PCBHRU44X09BX1RJTUVSX1BFUklPRF9TSElGVCkgfAo+ICsJCShz dHJlYW0tPnBlcmlvZGljID8gR0VOOF9PQV9USU1FUl9FTkFCTEUgOiAwKSB8Cj4gICAJCUdFTjhf T0FfQ09VTlRFUl9SRVNVTUUpOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZmxleF9yZWdzKTsgaSsrKSB7Cj4gQEAgLTE2NzMsMTAgKzE2ODMsMTIgQEAgZ2VuOF91cGRhdGVf cmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAo+ICAgCQlp ZiAob2FfY29uZmlnKSB7Cj4gICAJCQl1MzIgajsKPiArCQkJc3RydWN0IGk5MTVfb2FfcmVnIHJl ZzsKPiAgIAo+ICAgCQkJZm9yIChqID0gMDsgaiA8IG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbjsg aisrKSB7Cj4gLQkJCQlpZiAoaTkxNV9tbWlvX3JlZ19vZmZzZXQob2FfY29uZmlnLT5mbGV4X3Jl Z3Nbal0uYWRkcikgPT0gbW1pbykgewo+IC0JCQkJCXZhbHVlID0gb2FfY29uZmlnLT5mbGV4X3Jl Z3Nbal0udmFsdWU7Cj4gKwkJCQlyZWcgPSBvYV9jb25maWctPmZsZXhfcmVnc1tqXTsKPiArCQkJ CWlmIChpOTE1X21taW9fcmVnX29mZnNldChyZWcuYWRkcikgPT0gbW1pbykgewo+ICsJCQkJCXZh bHVlID0gcmVnLnZhbHVlOwo+ICAgCQkJCQlicmVhazsKPiAgIAkJCQl9Cj4gICAJCQl9Cj4gQEAg LTE3MTQsOSArMTcyNiwxMCBAQCBnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAo+ICAgICoKPiAgICAqIE5vdGU6IGl0J3Mgb25seSB0aGUgUkNT L1JlbmRlciBjb250ZXh0IHRoYXQgaGFzIGFueSBPQSBzdGF0ZS4KPiAgICAqLwo+IC1zdGF0aWMg aW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gK3N0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiAgIAl1bnNpZ25lZCBpbnQgbWFwX3R5 cGUgPSBpOTE1X2NvaGVyZW50X21hcF90eXBlKGRldl9wcml2KTsKPiAgIAlzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4Owo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+IEBAIC0xNzcw LDcgKzE3ODMsMTAgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJY2UtPnN0YXRlLT5vYmotPm1t LmRpcnR5ID0gdHJ1ZTsKPiAgIAkJCXJlZ3MgKz0gTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFIC8g c2l6ZW9mKCpyZWdzKTsKPiAgIAo+IC0JCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQo Y2UsIHJlZ3MsIG9hX2NvbmZpZyk7Cj4gKwkJCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tl ZChzdHJlYW0sCj4gKwkJCQkJCSAgICAgICBjZSwKPiArCQkJCQkJICAgICAgIHJlZ3MsCj4gKwkJ CQkJCSAgICAgICBvYV9jb25maWcpOwo+ICAgCj4gICAJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGNlLT5zdGF0ZS0+b2JqKTsKPiAgIAkJfQo+IEBAIC0xODIwLDkgKzE4MzYsOSBAQCBzdGF0 aWMgaW50IGdlbjhfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKPiAgIAkgKiBSUFRfSUQgZmllbGQuCj4gICAJICovCj4gICAJaWYgKElTX0dFTl9SQU5H RShkZXZfcHJpdiwgOSwgMTEpKSB7Cj4gLQkJSTkxNV9XUklURShHRU44X09BX0RFQlVHLAo+IC0J CQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9PQV9ERUJVR19ESVNBQkxFX0NMS19SQVRJT19S RVBPUlRTIHwKPiAtCQkJCQkgICAgICBHRU45X09BX0RFQlVHX0lOQ0xVREVfQ0xLX1JBVElPKSk7 Cj4gKwkJdTMyIHZhbCA9IEdFTjlfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFUSU9fUkVQT1JUUyB8 Cj4gKwkJCSAgR0VOOV9PQV9ERUJVR19JTkNMVURFX0NMS19SQVRJTzsKPiArCQlJOTE1X1dSSVRF KEdFTjhfT0FfREVCVUcsIF9NQVNLRURfQklUX0VOQUJMRSh2YWwpKTsKPiAgIAl9Cj4gICAKPiAg IAkvKgo+IEBAIC0xODMwLDcgKzE4NDYsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW5hYmxlX21ldHJp Y19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIAkgKiB0byBtYWtlIHN1 cmUgYWxsIHNsaWNlcy9zdWJzbGljZXMgYXJlIE9OIGJlZm9yZSB3cml0aW5nIHRvIE5PQQo+ICAg CSAqIHJlZ2lzdGVycy4KPiAgIAkgKi8KPiAtCXJldCA9IGdlbjhfY29uZmlndXJlX2FsbF9jb250 ZXh0cyhkZXZfcHJpdiwgb2FfY29uZmlnKTsKPiArCXJldCA9IGdlbjhfY29uZmlndXJlX2FsbF9j b250ZXh0cyhzdHJlYW0sIG9hX2NvbmZpZyk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiAgIAo+IEBAIC0xODQyLDE5ICsxODU4LDIzIEBAIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVf bWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgCXJldHVybiAw Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGdlbjhfZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHZvaWQgZ2VuOF9kaXNhYmxl X21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gKwo+ ICAgCS8qIFJlc2V0IGFsbCBjb250ZXh0cycgc2xpY2VzL3N1YnNsaWNlcyBjb25maWd1cmF0aW9u cy4gKi8KPiAtCWdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhkZXZfcHJpdiwgTlVMTCk7Cj4g KwlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKPiAgIAo+ICAgCUk5 MTVfV1JJVEUoR0RUX0NISUNLRU5fQklUUywgKEk5MTVfUkVBRChHRFRfQ0hJQ0tFTl9CSVRTKSAm Cj4gICAJCQkJICAgICAgfkdUX05PQV9FTkFCTEUpKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9p ZCBnZW4xMF9kaXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICtzdGF0aWMgdm9pZCBnZW4xMF9kaXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gKwo+ICAgCS8qIFJlc2V0IGFsbCBjb250ZXh0 cycgc2xpY2VzL3N1YnNsaWNlcyBjb25maWd1cmF0aW9ucy4gKi8KPiAtCWdlbjhfY29uZmlndXJl X2FsbF9jb250ZXh0cyhkZXZfcHJpdiwgTlVMTCk7Cj4gKwlnZW44X2NvbmZpZ3VyZV9hbGxfY29u dGV4dHMoc3RyZWFtLCBOVUxMKTsKPiAgIAo+ICAgCS8qIE1ha2Ugc3VyZSB3ZSBkaXNhYmxlIG5v YSB0byBzYXZlIHBvd2VyLiAqLwo+ICAgCUk5MTVfV1JJVEUoUlBNX0NPTkZJRzEsCj4gQEAgLTE4 NjUsMTAgKzE4ODUsMTAgQEAgc3RhdGljIHZvaWQgZ2VuN19vYV9lbmFibGUoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHggPSBzdHJlYW0tPmN0eDsKPiAtCXUzMiBjdHhfaWQgPSBkZXZfcHJpdi0+cGVyZi5vYS5z cGVjaWZpY19jdHhfaWQ7Cj4gLQlib29sIHBlcmlvZGljID0gZGV2X3ByaXYtPnBlcmYub2EucGVy aW9kaWM7Cj4gLQl1MzIgcGVyaW9kX2V4cG9uZW50ID0gZGV2X3ByaXYtPnBlcmYub2EucGVyaW9k X2V4cG9uZW50Owo+IC0JdTMyIHJlcG9ydF9mb3JtYXQgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9i dWZmZXIuZm9ybWF0Owo+ICsJdTMyIGN0eF9pZCA9IHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkOwo+ ICsJYm9vbCBwZXJpb2RpYyA9IHN0cmVhbS0+cGVyaW9kaWM7Cj4gKwl1MzIgcGVyaW9kX2V4cG9u ZW50ID0gc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQ7Cj4gKwl1MzIgcmVwb3J0X2Zvcm1hdCA9IHN0 cmVhbS0+b2FfYnVmZmVyLmZvcm1hdDsKPiAgIAo+ICAgCS8qCj4gICAJICogUmVzZXQgYnVmIHBv aW50ZXJzIHNvIHdlIGRvbid0IGZvcndhcmQgcmVwb3J0cyBmcm9tIGJlZm9yZSBub3cuCj4gQEAg LTE4NzksNyArMTg5OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjdfb2FfZW5hYmxlKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAJICogb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjZXJ0 YWluIGZpZWxkcyBhcmUgd3JpdHRlbiB0byB6ZXJvZWQKPiAgIAkgKiBtZW1vcnkgd2hpY2ggdGhp cyBoZWxwcyBtYWludGFpbnMuCj4gICAJICovCj4gLQlnZW43X2luaXRfb2FfYnVmZmVyKGRldl9w cml2KTsKPiArCWdlbjdfaW5pdF9vYV9idWZmZXIoc3RyZWFtKTsKPiAgIAo+ICAgCUk5MTVfV1JJ VEUoR0VON19PQUNPTlRST0wsCj4gICAJCSAgIChjdHhfaWQgJiBHRU43X09BQ09OVFJPTF9DVFhf TUFTSykgfAo+IEBAIC0xODk0LDcgKzE5MTQsNyBAQCBzdGF0aWMgdm9pZCBnZW43X29hX2VuYWJs ZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgc3RhdGljIHZvaWQgZ2VuOF9v YV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+IC0JdTMy IHJlcG9ydF9mb3JtYXQgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0Owo+ICsJ dTMyIHJlcG9ydF9mb3JtYXQgPSBzdHJlYW0tPm9hX2J1ZmZlci5mb3JtYXQ7Cj4gICAKPiAgIAkv Kgo+ICAgCSAqIFJlc2V0IGJ1ZiBwb2ludGVycyBzbyB3ZSBkb24ndCBmb3J3YXJkIHJlcG9ydHMg ZnJvbSBiZWZvcmUgbm93Lgo+IEBAIC0xOTA1LDcgKzE5MjUsNyBAQCBzdGF0aWMgdm9pZCBnZW44 X29hX2VuYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgCSAqIG9uIHRo ZSBhc3N1bXB0aW9uIHRoYXQgY2VydGFpbiBmaWVsZHMgYXJlIHdyaXR0ZW4gdG8gemVyb2VkCj4g ICAJICogbWVtb3J5IHdoaWNoIHRoaXMgaGVscHMgbWFpbnRhaW5zLgo+ICAgCSAqLwo+IC0JZ2Vu OF9pbml0X29hX2J1ZmZlcihkZXZfcHJpdik7Cj4gKwlnZW44X2luaXRfb2FfYnVmZmVyKHN0cmVh bSk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIE5vdGU6IHdlIGRvbid0IHJlbHkgb24gdGhlIGhhcmR3 YXJlIHRvIHBlcmZvcm0gc2luZ2xlIGNvbnRleHQKPiBAQCAtMTkzMCwxMCArMTk1MCwxMCBAQCBz dGF0aWMgdm9pZCBpOTE1X29hX3N0cmVhbV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g KnN0cmVhbSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBz dHJlYW0tPmRldl9wcml2Owo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxl KHN0cmVhbSk7Cj4gKwlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5hYmxlKHN0cmVhbSk7Cj4gICAK PiAtCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKPiAtCQlocnRpbWVyX3N0YXJ0KCZk ZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyLAo+ICsJaWYgKHN0cmVhbS0+cGVyaW9k aWMpCj4gKwkJaHJ0aW1lcl9zdGFydCgmc3RyZWFtLT5wb2xsX2NoZWNrX3RpbWVyLAo+ICAgCQkJ ICAgICAgbnNfdG9fa3RpbWUoUE9MTF9QRVJJT0QpLAo+ICAgCQkJICAgICAgSFJUSU1FUl9NT0RF X1JFTF9QSU5ORUQpOwo+ICAgfQo+IEBAIC0xOTcyLDEwICsxOTkyLDEwIEBAIHN0YXRpYyB2b2lk IGk5MTVfb2Ffc3RyZWFtX2Rpc2FibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkK PiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRl dl9wcml2Owo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZGlzYWJsZShzdHJlYW0p Owo+ICsJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2Rpc2FibGUoc3RyZWFtKTsKPiAgIAo+IC0JaWYg KGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQo+IC0JCWhydGltZXJfY2FuY2VsKCZkZXZfcHJp di0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyKTsKPiArCWlmIChzdHJlYW0tPnBlcmlvZGljKQo+ ICsJCWhydGltZXJfY2FuY2VsKCZzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIpOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzIGk5MTVfb2Ffc3Ry ZWFtX29wcyA9IHsKPiBAQCAtMjAyNyw3ICsyMDQ3LDcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0 cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAJCXJldHVybiAt RUlOVkFMOwo+ICAgCX0KPiAgIAo+IC0JaWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxl X21ldHJpY19zZXQpIHsKPiArCWlmICghZGV2X3ByaXYtPnBlcmYub3BzLmVuYWJsZV9tZXRyaWNf c2V0KSB7Cj4gICAJCURSTV9ERUJVRygiT0EgdW5pdCBub3Qgc3VwcG9ydGVkXG4iKTsKPiAgIAkJ cmV0dXJuIC1FTk9ERVY7Cj4gICAJfQo+IEBAIC0yMDM2LDcgKzIwNTYsNyBAQCBzdGF0aWMgaW50 IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAg IAkgKiBjb3VudGVyIHJlcG9ydHMgYW5kIG1hcnNoYWwgdG8gdGhlIGFwcHJvcHJpYXRlIGNsaWVu dAo+ICAgCSAqIHdlIGN1cnJlbnRseSBvbmx5IGFsbG93IGV4Y2x1c2l2ZSBhY2Nlc3MKPiAgIAkg Ki8KPiAtCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtKSB7Cj4gKwlpZiAo ZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSkgewo+ICAgCQlEUk1fREVCVUcoIk9BIHVu aXQgYWxyZWFkeSBpbiB1c2VcbiIpOwo+ICAgCQlyZXR1cm4gLUVCVVNZOwo+ICAgCX0KPiBAQCAt MjA0Niw0MyArMjA2NiwyMyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+ ICAgCj4gLQkvKiBXZSBzZXQgdXAgc29tZSByYXRlbGltaXQgc3RhdGUgdG8gcG90ZW50aWFsbHkg dGhyb3R0bGUgYW55IF9OT1RFUwo+IC0JICogYWJvdXQgc3B1cmlvdXMsIGludmFsaWQgT0EgcmVw b3J0cyB3aGljaCB3ZSBkb24ndCBmb3J3YXJkIHRvCj4gLQkgKiB1c2Vyc3BhY2UuCj4gLQkgKgo+ IC0JICogVGhlIGluaXRpYWxpemF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBvcGVuaW5nIHRoZSBz dHJlYW0gKG5vdCBkcml2ZXIKPiAtCSAqIGluaXQpIGNvbnNpZGVyaW5nIHdlIHByaW50IGEgX05P VEUgYWJvdXQgYW55IHRocm90dGxpbmcgd2hlbiBjbG9zaW5nCj4gLQkgKiB0aGUgc3RyZWFtIGlu c3RlYWQgb2Ygd2FpdGluZyB1bnRpbCBkcml2ZXIgX2Zpbmkgd2hpY2ggbm8gb25lIHdvdWxkCj4g LQkgKiBldmVyIHNlZS4KPiAtCSAqCj4gLQkgKiBVc2luZyB0aGUgc2FtZSBsaW1pdGluZyBmYWN0 b3JzIGFzIHByaW50a19yYXRlbGltaXQoKQo+IC0JICovCj4gLQlyYXRlbGltaXRfc3RhdGVfaW5p dCgmZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNfcmVwb3J0X3JzLAo+IC0JCQkgICAgIDUgKiBI WiwgMTApOwo+IC0JLyogU2luY2Ugd2UgdXNlIGEgRFJNX05PVEUgZm9yIHNwdXJpb3VzIHJlcG9y dHMgaXQgd291bGQgYmUKPiAtCSAqIGluY29uc2lzdGVudCB0byBsZXQgX19yYXRlbGltaXQoKSBh dXRvbWF0aWNhbGx5IHByaW50IGEgd2FybmluZyBmb3IKPiAtCSAqIHRocm90dGxpbmcuCj4gLQkg Ki8KPiAtCXJhdGVsaW1pdF9zZXRfZmxhZ3MoJmRldl9wcml2LT5wZXJmLm9hLnNwdXJpb3VzX3Jl cG9ydF9ycywKPiAtCQkJICAgIFJBVEVMSU1JVF9NU0dfT05fUkVMRUFTRSk7Cj4gLQo+ICAgCXN0 cmVhbS0+c2FtcGxlX3NpemUgPSBzaXplb2Yoc3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hl YWRlcik7Cj4gICAKPiAtCWZvcm1hdF9zaXplID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0 c1twcm9wcy0+b2FfZm9ybWF0XS5zaXplOwo+ICsJZm9ybWF0X3NpemUgPSBkZXZfcHJpdi0+cGVy Zi5vYV9mb3JtYXRzW3Byb3BzLT5vYV9mb3JtYXRdLnNpemU7Cj4gICAKPiAgIAlzdHJlYW0tPnNh bXBsZV9mbGFncyB8PSBTQU1QTEVfT0FfUkVQT1JUOwo+ICAgCXN0cmVhbS0+c2FtcGxlX3NpemUg Kz0gZm9ybWF0X3NpemU7Cj4gICAKPiAtCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3Jt YXRfc2l6ZSA9IGZvcm1hdF9zaXplOwo+IC0JaWYgKFdBUk5fT04oZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmZvcm1hdF9zaXplID09IDApKQo+ICsJc3RyZWFtLT5vYV9idWZmZXIuZm9ybWF0 X3NpemUgPSBmb3JtYXRfc2l6ZTsKPiArCWlmIChXQVJOX09OKHN0cmVhbS0+b2FfYnVmZmVyLmZv cm1hdF9zaXplID09IDApKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+IC0JZGV2X3ByaXYt PnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdCA9Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9y bWF0c1twcm9wcy0+b2FfZm9ybWF0XS5mb3JtYXQ7Cj4gKwlzdHJlYW0tPm9hX2J1ZmZlci5mb3Jt YXQgPQo+ICsJCWRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHNbcHJvcHMtPm9hX2Zvcm1hdF0uZm9y bWF0Owo+ICAgCj4gLQlkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYyA9IHByb3BzLT5vYV9wZXJp b2RpYzsKPiAtCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKPiAtCQlkZXZfcHJpdi0+ cGVyZi5vYS5wZXJpb2RfZXhwb25lbnQgPSBwcm9wcy0+b2FfcGVyaW9kX2V4cG9uZW50Owo+ICsJ c3RyZWFtLT5wZXJpb2RpYyA9IHByb3BzLT5vYV9wZXJpb2RpYzsKPiArCWlmIChzdHJlYW0tPnBl cmlvZGljKQo+ICsJCXN0cmVhbS0+cGVyaW9kX2V4cG9uZW50ID0gcHJvcHMtPm9hX3BlcmlvZF9l eHBvbmVudDsKPiAgIAo+ICAgCWlmIChzdHJlYW0tPmN0eCkgewo+ICAgCQlyZXQgPSBvYV9nZXRf cmVuZGVyX2N0eF9pZChzdHJlYW0pOwo+IEBAIC0yMTEzLDcgKzIxMTMsNyBAQCBzdGF0aWMgaW50 IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAg IAlzdHJlYW0tPndha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gICAJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9B TEwpOwo+ICAgCj4gLQlyZXQgPSBhbGxvY19vYV9idWZmZXIoZGV2X3ByaXYpOwo+ICsJcmV0ID0g YWxsb2Nfb2FfYnVmZmVyKHN0cmVhbSk7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnJfb2Ff YnVmX2FsbG9jOwo+ICAgCj4gQEAgLTIxMjIsOSArMjEyMiw5IEBAIHN0YXRpYyBpbnQgaTkxNV9v YV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCQlnb3Rv IGVycl9sb2NrOwo+ICAgCj4gICAJc3RyZWFtLT5vcHMgPSAmaTkxNV9vYV9zdHJlYW1fb3BzOwo+ IC0JZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IHN0cmVhbTsKPiArCWRldl9w cml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0gPSBzdHJlYW07Cj4gICAKPiAtCXJldCA9IGRldl9w cml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldChzdHJlYW0pOwo+ICsJcmV0ID0gZGV2 X3ByaXYtPnBlcmYub3BzLmVuYWJsZV9tZXRyaWNfc2V0KHN0cmVhbSk7Cj4gICAJaWYgKHJldCkg ewo+ICAgCQlEUk1fREVCVUcoIlVuYWJsZSB0byBlbmFibGUgbWV0cmljIHNldFxuIik7Cj4gICAJ CWdvdG8gZXJyX2VuYWJsZTsKPiBAQCAtMjEzMiwxNSArMjEzMiwyMSBAQCBzdGF0aWMgaW50IGk5 MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPiAgIAo+ ICAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gKwlo cnRpbWVyX2luaXQoJnN0cmVhbS0+cG9sbF9jaGVja190aW1lciwKPiArCQkgICAgIENMT0NLX01P Tk9UT05JQywgSFJUSU1FUl9NT0RFX1JFTCk7Cj4gKwlzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIu ZnVuY3Rpb24gPSBvYV9wb2xsX2NoZWNrX3RpbWVyX2NiOwo+ICsJaW5pdF93YWl0cXVldWVfaGVh ZCgmc3RyZWFtLT5wb2xsX3dxKTsKPiArCXNwaW5fbG9ja19pbml0KCZzdHJlYW0tPm9hX2J1ZmZl ci5wdHJfbG9jayk7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICAgCj4gICBlcnJfZW5hYmxlOgo+IC0J ZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IE5VTEw7Cj4gLQlkZXZfcHJpdi0+ cGVyZi5vYS5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0KGRldl9wcml2KTsKPiArCWRldl9wcml2LT5w ZXJmLmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOwo+ICsJZGV2X3ByaXYtPnBlcmYub3BzLmRpc2Fi bGVfbWV0cmljX3NldChzdHJlYW0pOwo+ICAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICBlcnJfbG9jazoKPiAtCWZyZWVfb2FfYnVmZmVyKGRldl9w cml2KTsKPiArCWZyZWVfb2FfYnVmZmVyKHN0cmVhbSk7Cj4gICAKPiAgIGVycl9vYV9idWZfYWxs b2M6Cj4gICAJcHV0X29hX2NvbmZpZyhkZXZfcHJpdiwgc3RyZWFtLT5vYV9jb25maWcpOwo+IEBA IC0yMTY0LDkgKzIxNzAsMTIgQEAgdm9pZCBpOTE1X29hX2luaXRfcmVnX3N0YXRlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlpZiAoZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJf Q0xBU1MpCj4gICAJCXJldHVybjsKPiAgIAo+IC0Jc3RyZWFtID0gZW5naW5lLT5pOTE1LT5wZXJm Lm9hLmV4Y2x1c2l2ZV9zdHJlYW07Cj4gKwlzdHJlYW0gPSBlbmdpbmUtPmk5MTUtPnBlcmYuZXhj bHVzaXZlX3N0cmVhbTsKPiAgIAlpZiAoc3RyZWFtKQo+IC0JCWdlbjhfdXBkYXRlX3JlZ19zdGF0 ZV91bmxvY2tlZChjZSwgcmVncywgc3RyZWFtLT5vYV9jb25maWcpOwo+ICsJCWdlbjhfdXBkYXRl X3JlZ19zdGF0ZV91bmxvY2tlZChzdHJlYW0sCj4gKwkJCQkJICAgICAgIGNlLAo+ICsJCQkJCSAg ICAgICByZWdzLAo+ICsJCQkJCSAgICAgICBzdHJlYW0tPm9hX2NvbmZpZyk7Cj4gICB9Cj4gICAK PiAgIC8qKgo+IEBAIC0yMjgyLDcgKzIyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBpOTE1X3BlcmZf cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgIAkJLyogTWF5YmUgbWFrZSAtPnBvbGxpbiBwZXIt c3RyZWFtIHN0YXRlIGlmIHdlIHN1cHBvcnQgbXVsdGlwbGUKPiAgIAkJICogY29uY3VycmVudCBz dHJlYW1zIGluIHRoZSBmdXR1cmUuCj4gICAJCSAqLwo+IC0JCWRldl9wcml2LT5wZXJmLm9hLnBv bGxpbiA9IGZhbHNlOwo+ICsJCXN0cmVhbS0+cG9sbGluID0gZmFsc2U7Cj4gICAJfQo+ICAgCj4g ICAJcmV0dXJuIHJldDsKPiBAQCAtMjI5MCwxMyArMjI5OSwxMyBAQCBzdGF0aWMgc3NpemVfdCBp OTE1X3BlcmZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgIAo+ICAgc3RhdGljIGVudW0gaHJ0 aW1lcl9yZXN0YXJ0IG9hX3BvbGxfY2hlY2tfdGltZXJfY2Ioc3RydWN0IGhydGltZXIgKmhydGlt ZXIpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCWNv bnRhaW5lcl9vZihocnRpbWVyLCB0eXBlb2YoKmRldl9wcml2KSwKPiAtCQkJICAgICBwZXJmLm9h LnBvbGxfY2hlY2tfdGltZXIpOwo+ICsJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSA9 IGNvbnRhaW5lcl9vZihocnRpbWVyLAo+ICsJCQkJCQkgICAgICAgdHlwZW9mKCpzdHJlYW0pLAo+ ICsJCQkJCQkgICAgICAgcG9sbF9jaGVja190aW1lcik7Cj4gICAKPiAtCWlmIChvYV9idWZmZXJf Y2hlY2tfdW5sb2NrZWQoZGV2X3ByaXYpKSB7Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2EucG9sbGlu ID0gdHJ1ZTsKPiAtCQl3YWtlX3VwKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxKTsKPiArCWlm IChvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RyZWFtKSkgewo+ICsJCXN0cmVhbS0+cG9sbGlu ID0gdHJ1ZTsKPiArCQl3YWtlX3VwKCZzdHJlYW0tPnBvbGxfd3EpOwo+ICAgCX0KPiAgIAo+ICAg CWhydGltZXJfZm9yd2FyZF9ub3coaHJ0aW1lciwgbnNfdG9fa3RpbWUoUE9MTF9QRVJJT0QpKTsK PiBAQCAtMjMzNSw3ICsyMzQ0LDcgQEAgc3RhdGljIF9fcG9sbF90IGk5MTVfcGVyZl9wb2xsX2xv Y2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJICogdGhlIGhydGlt ZXIvb2FfcG9sbF9jaGVja190aW1lcl9jYiB0byBub3RpZnkgdXMgd2hlbiB0aGVyZSBhcmUKPiAg IAkgKiBzYW1wbGVzIHRvIHJlYWQuCj4gICAJICovCj4gLQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eu cG9sbGluKQo+ICsJaWYgKHN0cmVhbS0+cG9sbGluKQo+ICAgCQlldmVudHMgfD0gRVBPTExJTjsK PiAgIAo+ICAgCXJldHVybiBldmVudHM7Cj4gQEAgLTI2NjgsOCArMjY3NywxMCBAQCBpOTE1X3Bl cmZfb3Blbl9pb2N0bF9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAgCj4gICBzdGF0aWMgdTY0IG9hX2V4cG9uZW50X3RvX25zKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50IGV4cG9uZW50KQo+ICAgewo+ICsJc3RydWN0IGludGVsX3J1bnRp bWVfaW5mbyAqcmkgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpOwo+ICsKPiAgIAlyZXR1cm4gZGl2 NjRfdTY0KDEwMDAwMDAwMDBVTEwgKiAoMlVMTCA8PCBleHBvbmVudCksCj4gLQkJCSAxMDAwVUxM ICogUlVOVElNRV9JTkZPKGRldl9wcml2KS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHopOwo+ ICsJCQkgMTAwMFVMTCAqIHJpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7CgoKSSB0aGlu ayB5b3UgY2FuIGF2b2lkIGNoYW5naW5nIHRoaXMsIHJlYWRpbmcgdGhlIGNvZGluZyBzdHlsZSwg dGhlIDgwIApjaGFyYWN0ZXJzIHRoaW5ncyBzZWVtcyB0byBiZSBtb3JlIG9mIGEgZ3VpZGVsaW5l IHRvIGF2b2lkIGxvdHMgaWYoKSBibG9ja3MuCgoKPiAgIH0KPiAgIAo+ICAgLyoqCj4gQEAgLTI3 NTMsNyArMjc2NCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9wcm9wZXJ0aWVzX3VubG9ja2VkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkJICB2YWx1ZSk7Cj4gICAJCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gICAJCQl9Cj4gLQkJCWlmICghZGV2X3ByaXYtPnBlcmYub2Eub2Ff Zm9ybWF0c1t2YWx1ZV0uc2l6ZSkgewo+ICsJCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hX2Zvcm1h dHNbdmFsdWVdLnNpemUpIHsKPiAgIAkJCQlEUk1fREVCVUcoIlVuc3VwcG9ydGVkIE9BIHJlcG9y dCBmb3JtYXQgJWxsdVxuIiwKPiAgIAkJCQkJICB2YWx1ZSk7Cj4gICAJCQkJcmV0dXJuIC1FSU5W QUw7Cj4gQEAgLTI4OTcsNyArMjkwOCw3IEBAIHZvaWQgaTkxNV9wZXJmX3JlZ2lzdGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlpZiAoIWRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaikKPiAgIAkJZ290byBleGl0Owo+ICAgCj4gLQlzeXNmc19hdHRyX2luaXQoJmRl dl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyKTsKPiArCXN5 c2ZzX2F0dHJfaW5pdCgmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuc3lzZnNfbWV0cmljX2lk LmF0dHIpOwo+ICAgCj4gICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKPiAgIAkJ aTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfaWNsKGRldl9wcml2KTsKPiBAQCAtMjkzMiwxNSAr Mjk0MywxNSBAQCB2b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2hzdyhkZXZfcHJp dik7Cj4gICB9Cj4gICAKPiAtCWlmIChkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5pZCA9 PSAwKQo+ICsJaWYgKGRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLmlkID09IDApCj4gICAJCWdv dG8gc3lzZnNfZXJyb3I7Cj4gICAKPiAgIAlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLAo+IC0JCQkJICZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2Nv bmZpZy5zeXNmc19tZXRyaWMpOwo+ICsJCQkJICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5z eXNmc19tZXRyaWMpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gc3lzZnNfZXJyb3I7Cj4gICAK PiAtCWF0b21pY19zZXQoJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLnJlZl9jb3VudCwg MSk7Cj4gKwlhdG9taWNfc2V0KCZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5yZWZfY291bnQs IDEpOwo+ICAgCj4gICAJZ290byBleGl0Owo+ICAgCj4gQEAgLTI5NjcsNyArMjk3OCw3IEBAIHZv aWQgaTkxNV9wZXJmX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLAo+IC0JCQkgICAmZGV2X3ByaXYtPnBlcmYub2EudGVzdF9jb25maWcu c3lzZnNfbWV0cmljKTsKPiArCQkJICAgJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpYyk7Cj4gICAKPiAgIAlrb2JqZWN0X3B1dChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmopOwo+ICAgCWRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiA9IE5VTEw7Cj4gQEAgLTI5OTMs NyArMzAwNCw4IEBAIHN0YXRpYyBib29sIGdlbjhfaXNfdmFsaWRfZmxleF9hZGRyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCj4gICAJcmV0dXJuIGZhbHNlOwo+ ICAgfQo+ICAgCj4gLXN0YXRpYyBib29sIGdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKPiArc3RhdGljIGJvb2wg Z2VuN19pc192YWxpZF9iX2NvdW50ZXJfYWRkcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gKwkJCQkJIHUzMiBhZGRyKQoKClRoaXMgY2FuIGJlIGRyb3BwZWQuCgoKPiAgIHsK PiAgIAlyZXR1cm4gKGFkZHIgPj0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoT0FTVEFSVFRSSUcxKSAm Jgo+ICAgCQlhZGRyIDw9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KE9BU1RBUlRUUklHOCkpIHx8Cj4g QEAgLTMwNzgsNyArMzA5MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9vYV9yZWcgKmFsbG9jX29h X3JlZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWlmICghYWNjZXNz X29rKHJlZ3MsIG5fcmVncyAqIHNpemVvZih1MzIpICogMikpCj4gICAJCXJldHVybiBFUlJfUFRS KC1FRkFVTFQpOwo+ICAgCj4gLQkvKiBObyBpc192YWxpZCBmdW5jdGlvbiBtZWFucyB3ZSdyZSBu b3QgYWxsb3dpbmcgYW55IHJlZ2lzdGVyIHRvIGJlIHByb2dyYW1tZWQuICovCj4gKwkvKiBObyBp c192YWxpZCBmdW5jdGlvbiBtZWFucyB3ZSdyZSBub3QgYWxsb3dpbmcgYW55IHJlZ2lzdGVyIHRv IGJlCj4gKwkgKiBwcm9ncmFtbWVkLgo+ICsJICovCgoKWW91IGNhbiBhdm9pZCBjaGFuZ2luZyB0 aGlzIGNvbW1lbnQgdG9vLgoKCj4gICAJR0VNX0JVR19PTighaXNfdmFsaWQpOwo+ICAgCWlmICgh aXNfdmFsaWQpCj4gICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IEBAIC0zMjExLDcgKzMy MjUsNyBAQCBpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPiAgIAlvYV9jb25maWctPm11eF9yZWdzX2xlbiA9IGFyZ3MtPm5f bXV4X3JlZ3M7Cj4gICAJb2FfY29uZmlnLT5tdXhfcmVncyA9Cj4gICAJCWFsbG9jX29hX3JlZ3Mo ZGV2X3ByaXYsCj4gLQkJCSAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhf cmVnLAo+ICsJCQkgICAgICBkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfbXV4X3JlZywKPiAg IAkJCSAgICAgIHU2NF90b191c2VyX3B0cihhcmdzLT5tdXhfcmVnc19wdHIpLAo+ICAgCQkJICAg ICAgYXJncy0+bl9tdXhfcmVncyk7Cj4gICAKPiBAQCAtMzIyNCw3ICszMjM4LDcgQEAgaW50IGk5 MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gICAJb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVnc19sZW4gPSBhcmdzLT5uX2Jvb2xlYW5f cmVnczsKPiAgIAlvYV9jb25maWctPmJfY291bnRlcl9yZWdzID0KPiAgIAkJYWxsb2Nfb2FfcmVn cyhkZXZfcHJpdiwKPiAtCQkJICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2Jf Y291bnRlcl9yZWcsCj4gKwkJCSAgICAgIGRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9iX2Nv dW50ZXJfcmVnLAo+ICAgCQkJICAgICAgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmJvb2xlYW5fcmVn c19wdHIpLAo+ICAgCQkJICAgICAgYXJncy0+bl9ib29sZWFuX3JlZ3MpOwo+ICAgCj4gQEAgLTMy NDMsNyArMzI1Nyw3IEBAIGludCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlvYV9jb25maWctPmZsZXhfcmVnc19sZW4g PSBhcmdzLT5uX2ZsZXhfcmVnczsKPiAgIAkJb2FfY29uZmlnLT5mbGV4X3JlZ3MgPQo+ICAgCQkJ YWxsb2Nfb2FfcmVncyhkZXZfcHJpdiwKPiAtCQkJCSAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9w cy5pc192YWxpZF9mbGV4X3JlZywKPiArCQkJCSAgICAgIGRldl9wcml2LT5wZXJmLm9wcy5pc192 YWxpZF9mbGV4X3JlZywKPiAgIAkJCQkgICAgICB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZmxleF9y ZWdzX3B0ciksCj4gICAJCQkJICAgICAgYXJncy0+bl9mbGV4X3JlZ3MpOwo+ICAgCj4gQEAgLTMz MDAsNyArMzMxNCw4IEBAIGludCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgfQo+ICAgCj4gICAvKioKPiAtICogaTkxNV9w ZXJmX3JlbW92ZV9jb25maWdfaW9jdGwgLSBEUk0gaW9jdGwoKSBmb3IgdXNlcnNwYWNlIHRvIHJl bW92ZSBhbiBPQSBjb25maWcKPiArICogaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwgLSBE Uk0gaW9jdGwoKSBmb3IgdXNlcnNwYWNlIHRvIHJlbW92ZSBhbiBPQQo+ICsgKiBjb25maWcKCgpO byBuZWVkIHRvIGNoYW5nZSB0aGlzIGNvbW1lbnQuCgoKPiAgICAqIEBkZXY6IGRybSBkZXZpY2UK PiAgICAqIEBkYXRhOiBpb2N0bCBkYXRhIChwb2ludGVyIHRvIHU2NCBpbnRlZ2VyKSBjb3BpZWQg ZnJvbSB1c2Vyc3BhY2UKPiAgICAqIEBmaWxlOiBkcm0gZmlsZQo+IEBAIC0zNDA5LDIxICszNDI0 LDIzIEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGRldl9yb290W10gPSB7Cj4gICAgKi8KPiAg IHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAgewo+ICsJc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqcmk7CgoKSSB0aGluayB5b3UgY2Fu IG1vdmUgdGhpcyByaSB2YXJpYWJsZSBpbiB0aGUgaWYoKSBibG9jayB0aGF0IHNlZW1zIHRvIGJl IAp0aGUgb25seSBwbGFjZSBpdCBnZXRzIHVzZWQuCgoKPiArCj4gICAJaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpKSB7Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2JfY291bnRl cl9yZWcgPQo+ICsJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0K PiAgIAkJCWdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHI7Cj4gLQkJZGV2X3ByaXYtPnBlcmYu b2Eub3BzLmlzX3ZhbGlkX211eF9yZWcgPQo+ICsJCWRldl9wcml2LT5wZXJmLm9wcy5pc192YWxp ZF9tdXhfcmVnID0KPiAgIAkJCWhzd19pc192YWxpZF9tdXhfYWRkcjsKPiAtCQlkZXZfcHJpdi0+ cGVyZi5vYS5vcHMuaXNfdmFsaWRfZmxleF9yZWcgPSBOVUxMOwo+IC0JCWRldl9wcml2LT5wZXJm Lm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmljX3NldDsKPiAtCQlk ZXZfcHJpdi0+cGVyZi5vYS5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gaHN3X2Rpc2FibGVfbWV0 cmljX3NldDsKPiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlID0gZ2VuN19vYV9l bmFibGU7Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUgPSBnZW43X29hX2Rp c2FibGU7Cj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQgPSBnZW43X29hX3JlYWQ7Cj4g LQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2h3X3RhaWxfcmVhZCA9Cj4gKwkJZGV2X3ByaXYt PnBlcmYub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnID0gTlVMTDsKPiArCQlkZXZfcHJpdi0+cGVyZi5v cHMuZW5hYmxlX21ldHJpY19zZXQgPSBoc3dfZW5hYmxlX21ldHJpY19zZXQ7Cj4gKwkJZGV2X3By aXYtPnBlcmYub3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhzd19kaXNhYmxlX21ldHJpY19zZXQ7 Cj4gKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2VuYWJsZSA9IGdlbjdfb2FfZW5hYmxlOwo+ICsJ CWRldl9wcml2LT5wZXJmLm9wcy5vYV9kaXNhYmxlID0gZ2VuN19vYV9kaXNhYmxlOwo+ICsJCWRl dl9wcml2LT5wZXJmLm9wcy5yZWFkID0gZ2VuN19vYV9yZWFkOwo+ICsJCWRldl9wcml2LT5wZXJm Lm9wcy5vYV9od190YWlsX3JlYWQgPQo+ICAgCQkJZ2VuN19vYV9od190YWlsX3JlYWQ7Cj4gICAK PiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0gaHN3X29hX2Zvcm1hdHM7Cj4gKwkJ ZGV2X3ByaXYtPnBlcmYub2FfZm9ybWF0cyA9IGhzd19vYV9mb3JtYXRzOwo+ICAgCX0gZWxzZSBp ZiAoSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhkZXZfcHJpdikpIHsKPiAgIAkJLyogTm90ZTog dGhhdCBhbHRob3VnaCB3ZSBjb3VsZCB0aGVvcmV0aWNhbGx5IGFsc28gc3VwcG9ydCB0aGUKPiAg IAkJICogbGVnYWN5IHJpbmdidWZmZXIgbW9kZSBvbiBCRFcgKGFuZCBlYXJsaWVyIGl0ZXJhdGlv bnMgb2YKPiBAQCAtMzQzMSw3NSArMzQ0OCw5MyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJICogd29ydGggdGhlIGNvbXBsZXhp dHkgdG8gbWFpbnRhaW4gbm93IHRoYXQgQkRXKyBlbmFibGUKPiAgIAkJICogZXhlY2xpc3QgbW9k ZSBieSBkZWZhdWx0Lgo+ICAgCQkgKi8KPiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRz ID0gZ2VuOF9wbHVzX29hX2Zvcm1hdHM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2FfZm9ybWF0cyA9 IGdlbjhfcGx1c19vYV9mb3JtYXRzOwo+ICAgCj4gLQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9h X2VuYWJsZSA9IGdlbjhfb2FfZW5hYmxlOwo+IC0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9k aXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOwo+IC0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5yZWFk ID0gZ2VuOF9vYV9yZWFkOwo+IC0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9od190YWlsX3Jl YWQgPSBnZW44X29hX2h3X3RhaWxfcmVhZDsKPiArCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5h YmxlID0gZ2VuOF9vYV9lbmFibGU7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2Rpc2FibGUg PSBnZW44X29hX2Rpc2FibGU7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub3BzLnJlYWQgPSBnZW44X29h X3JlYWQ7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2Ff aHdfdGFpbF9yZWFkOwo+ICAgCj4gICAJCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDgsIDkp KSB7Cj4gLQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0K PiArCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlkX2JfY291bnRlcl9yZWcgPQo+ICAgCQkJ CWdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHI7Cj4gLQkJCWRldl9wcml2LT5wZXJmLm9hLm9w cy5pc192YWxpZF9tdXhfcmVnID0KPiArCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlkX211 eF9yZWcgPQo+ICAgCQkJCWdlbjhfaXNfdmFsaWRfbXV4X2FkZHI7Cj4gLQkJCWRldl9wcml2LT5w ZXJmLm9hLm9wcy5pc192YWxpZF9mbGV4X3JlZyA9Cj4gKwkJCWRldl9wcml2LT5wZXJmLm9wcy5p c192YWxpZF9mbGV4X3JlZyA9Cj4gICAJCQkJZ2VuOF9pc192YWxpZF9mbGV4X2FkZHI7Cj4gICAK PiAgIAkJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+IC0JCQkJZGV2X3ByaXYtPnBl cmYub2Eub3BzLmlzX3ZhbGlkX211eF9yZWcgPQo+ICsJCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlz X3ZhbGlkX211eF9yZWcgPQo+ICAgCQkJCQljaHZfaXNfdmFsaWRfbXV4X2FkZHI7Cj4gICAJCQl9 Cj4gICAKPiAtCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNfc2V0ID0gZ2Vu OF9lbmFibGVfbWV0cmljX3NldDsKPiAtCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRpc2FibGVf bWV0cmljX3NldCA9IGdlbjhfZGlzYWJsZV9tZXRyaWNfc2V0Owo+ICsJCQlkZXZfcHJpdi0+cGVy Zi5vcHMuZW5hYmxlX21ldHJpY19zZXQgPQo+ICsJCQkJZ2VuOF9lbmFibGVfbWV0cmljX3NldDsK PiArCQkJZGV2X3ByaXYtPnBlcmYub3BzLmRpc2FibGVfbWV0cmljX3NldCA9Cj4gKwkJCQlnZW44 X2Rpc2FibGVfbWV0cmljX3NldDsKPiAgIAo+ICAgCQkJaWYgKElTX0dFTihkZXZfcHJpdiwgOCkp IHsKPiAtCQkJCWRldl9wcml2LT5wZXJmLm9hLmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjA7 Cj4gLQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDJjZTsKPiAr CQkJCWRldl9wcml2LT5wZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjA7Cj4gKwkJCQlk ZXZfcHJpdi0+cGVyZi5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDJjZTsKPiAgIAo+IC0JCQkJZGV2 X3ByaXYtPnBlcmYub2EuZ2VuOF92YWxpZF9jdHhfYml0ID0gKDE8PDI1KTsKPiArCQkJCWRldl9w cml2LT5wZXJmLmdlbjhfdmFsaWRfY3R4X2JpdCA9ICgxIDw8IDI1KTsKPiAgIAkJCX0gZWxzZSB7 Cj4gLQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4Owo+ IC0JCQkJZGV2X3ByaXYtPnBlcmYub2EuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgzZGU7Cj4gKwkJ CQlkZXZfcHJpdi0+cGVyZi5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4Owo+ICsJCQkJZGV2 X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgzZGU7Cj4gICAKPiAtCQkJCWRldl9w cml2LT5wZXJmLm9hLmdlbjhfdmFsaWRfY3R4X2JpdCA9ICgxPDwxNik7Cj4gKwkJCQlkZXZfcHJp di0+cGVyZi5nZW44X3ZhbGlkX2N0eF9iaXQgPSAoMSA8PCAxNik7Cj4gICAJCQl9Cj4gICAJCX0g ZWxzZSBpZiAoSVNfR0VOX1JBTkdFKGRldl9wcml2LCAxMCwgMTEpKSB7Cj4gLQkJCWRldl9wcml2 LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KPiArCQkJZGV2X3ByaXYtPnBl cmYub3BzLmlzX3ZhbGlkX2JfY291bnRlcl9yZWcgPQo+ICAgCQkJCWdlbjdfaXNfdmFsaWRfYl9j b3VudGVyX2FkZHI7Cj4gLQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhfcmVn ID0KPiArCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlkX211eF9yZWcgPQo+ICAgCQkJCWdl bjEwX2lzX3ZhbGlkX211eF9hZGRyOwo+IC0JCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFs aWRfZmxleF9yZWcgPQo+ICsJCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfZmxleF9yZWcg PQo+ICAgCQkJCWdlbjhfaXNfdmFsaWRfZmxleF9hZGRyOwo+ICAgCj4gLQkJCWRldl9wcml2LT5w ZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7Cj4g LQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPSBnZW4xMF9kaXNh YmxlX21ldHJpY19zZXQ7Cj4gKwkJCWRldl9wcml2LT5wZXJmLm9wcy5lbmFibGVfbWV0cmljX3Nl dCA9Cj4gKwkJCQlnZW44X2VuYWJsZV9tZXRyaWNfc2V0Owo+ICsJCQlkZXZfcHJpdi0+cGVyZi5v cHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0KPiArCQkJCWdlbjEwX2Rpc2FibGVfbWV0cmljX3NldDsK PiAgIAo+IC0JCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4 Owo+IC0JCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDNkZTsKPiAr CQkJZGV2X3ByaXYtPnBlcmYuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyODsKPiArCQkJZGV2 X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgzZGU7Cj4gICAKPiAtCQkJZGV2X3By aXYtPnBlcmYub2EuZ2VuOF92YWxpZF9jdHhfYml0ID0gKDE8PDE2KTsKPiArCQkJZGV2X3ByaXYt PnBlcmYuZ2VuOF92YWxpZF9jdHhfYml0ID0gKDEgPDwgMTYpOwo+ICAgCQl9Cj4gICAJfQo+ICAg Cj4gLQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNfc2V0KSB7Cj4gLQkJ aHJ0aW1lcl9pbml0KCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyLAo+IC0JCQkJ Q0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKPiAtCQlkZXZfcHJpdi0+cGVyZi5v YS5wb2xsX2NoZWNrX3RpbWVyLmZ1bmN0aW9uID0gb2FfcG9sbF9jaGVja190aW1lcl9jYjsKPiAt CQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxKTsKPiAtCj4g KwlpZiAoZGV2X3ByaXYtPnBlcmYub3BzLmVuYWJsZV9tZXRyaWNfc2V0KSB7Cj4gICAJCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zKTsKPiAgIAkJbXV0ZXhfaW5pdCgmZGV2 X3ByaXYtPnBlcmYubG9jayk7Cj4gLQkJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5wZXJmLm9h Lm9hX2J1ZmZlci5wdHJfbG9jayk7Cj4gICAKPiArCQlyaSA9IFJVTlRJTUVfSU5GTyhkZXZfcHJp dik7Cj4gICAJCW9hX3NhbXBsZV9yYXRlX2hhcmRfbGltaXQgPSAxMDAwICoKPiAtCQkJKFJVTlRJ TUVfSU5GTyhkZXZfcHJpdiktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6IC8gMik7Cj4gKwkJ CShyaS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHogLyAyKTsKPiAgIAkJZGV2X3ByaXYtPnBl cmYuc3lzY3RsX2hlYWRlciA9IHJlZ2lzdGVyX3N5c2N0bF90YWJsZShkZXZfcm9vdCk7Cj4gICAK PiAgIAkJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKPiAgIAkJaWRy X2luaXQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyKTsKPiAgIAo+ICsJCS8qIFdlIHNldCB1 cCBzb21lIHJhdGVsaW1pdCBzdGF0ZSB0byBwb3RlbnRpYWxseSB0aHJvdHRsZSBhbnkKPiArCQkg KiBfTk9URVMgYWJvdXQgc3B1cmlvdXMsIGludmFsaWQgT0EgcmVwb3J0cyB3aGljaCB3ZSBkb24n dAo+ICsJCSAqIGZvcndhcmQgdG8gdXNlcnNwYWNlLgo+ICsJCSAqCj4gKwkJICogV2UgcHJpbnQg YSBfTk9URSBhYm91dCBhbnkgdGhyb3R0bGluZyB3aGVuIGNsb3NpbmcgdGhlCj4gKwkJICogc3Ry ZWFtIGluc3RlYWQgb2Ygd2FpdGluZyB1bnRpbCBkcml2ZXIgX2Zpbmkgd2hpY2ggbm8gb25lCj4g KwkJICogd291bGQgZXZlciBzZWUuCj4gKwkJICoKPiArCQkgKiBVc2luZyB0aGUgc2FtZSBsaW1p dGluZyBmYWN0b3JzIGFzIHByaW50a19yYXRlbGltaXQoKQo+ICsJCSAqLwo+ICsJCXJhdGVsaW1p dF9zdGF0ZV9pbml0KCZkZXZfcHJpdi0+cGVyZi5zcHVyaW91c19yZXBvcnRfcnMsCj4gKwkJCQkg ICAgIDUgKiBIWiwgMTApOwo+ICsJCS8qIFNpbmNlIHdlIHVzZSBhIERSTV9OT1RFIGZvciBzcHVy aW91cyByZXBvcnRzIGl0IHdvdWxkIGJlCj4gKwkJICogaW5jb25zaXN0ZW50IHRvIGxldCBfX3Jh dGVsaW1pdCgpIGF1dG9tYXRpY2FsbHkgcHJpbnQgYQo+ICsJCSAqIHdhcm5pbmcgZm9yIHRocm90 dGxpbmcuCj4gKwkJICovCj4gKwkJcmF0ZWxpbWl0X3NldF9mbGFncygmZGV2X3ByaXYtPnBlcmYu c3B1cmlvdXNfcmVwb3J0X3JzLAo+ICsJCQkJICAgIFJBVEVMSU1JVF9NU0dfT05fUkVMRUFTRSk7 Cj4gKwo+ICAgCQlkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCA9IHRydWU7Cj4gICAJfQo+ICAg fQo+IEBAIC0zNTI4LDcgKzM1NjMsNyBAQCB2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCXVucmVnaXN0ZXJfc3lzY3RsX3RhYmxl KGRldl9wcml2LT5wZXJmLnN5c2N0bF9oZWFkZXIpOwo+ICAgCj4gLQltZW1zZXQoJmRldl9wcml2 LT5wZXJmLm9hLm9wcywgMCwgc2l6ZW9mKGRldl9wcml2LT5wZXJmLm9hLm9wcykpOwo+ICsJbWVt c2V0KCZkZXZfcHJpdi0+cGVyZi5vcHMsIDAsIHNpemVvZihkZXZfcHJpdi0+cGVyZi5vcHMpKTsK PiAgIAo+ICAgCWRldl9wcml2LT5wZXJmLmluaXRpYWxpemVkID0gZmFsc2U7Cj4gICB9CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4