From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 13/22] drm/i915: Update reset path to fix incomplete requests Date: Thu, 08 Sep 2016 15:03:46 +0300 Message-ID: <87wpim7g4d.fsf@gaia.fi.intel.com> References: <20160905130438.31046-1-chris@chris-wilson.co.uk> <20160907144516.29495-1-chris@chris-wilson.co.uk> <20160907144516.29495-13-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4FCED6E0BA for ; Thu, 8 Sep 2016 12:05:00 +0000 (UTC) In-Reply-To: <20160907144516.29495-13-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVXBkYXRl IHJlc2V0IHBhdGggaW4gcHJlcGFyYXRpb24gZm9yIGVuZ2luZSByZXNldCB3aGljaCByZXF1aXJl cwo+IGlkZW50aWZpY2F0aW9uIG9mIGluY29tcGxldGUgcmVxdWVzdHMgYW5kIGFzc29jaWF0ZWQg Y29udGV4dCBhbmQgZml4aW5nCj4gdGhlaXIgc3RhdGUgc28gdGhhdCBlbmdpbmUgY2FuIHJlc3Vt ZSBjb3JyZWN0bHkgYWZ0ZXIgcmVzZXQuCj4KPiBUaGUgcmVxdWVzdCB0aGF0IGNhdXNlZCB0aGUg aGFuZyB3aWxsIGJlIHNraXBwZWQgYW5kIGhlYWQgaXMgcmVzZXQgdG8gdGhlCj4gc3RhcnQgb2Yg YnJlYWRjcnVtYi4gVGhpcyBhbGxvd3MgdXMgdG8gcmVzdW1lIGZyb20gd2hlcmUgd2UgbGVmdC1v ZmYuCj4gU2luY2UgdGhpcyByZXF1ZXN0IGRpZG4ndCBjb21wbGV0ZSBub3JtYWxseSB3ZSBhbHNv IG5lZWQgdG8gY2xlYW51cCBlbHNwCj4gcXVldWUgbWFudWFsbHkuIFRoaXMgaXMgdml0YWwgaWYg d2UgZW1wbG95IG5vbmJsb2NraW5nIHJlcXVlc3QKPiBzdWJtaXNzaW9uIHdoZXJlIHdlIG1heSBo YXZlIGEgd2ViIG9mIGRlcGVuZGVuY2llcyB1cG9uIHRoZSBodW5nIHJlcXVlc3QKPiBhbmQgc28g YWR2YW5jaW5nIHRoZSBzZXFubyBtYW51YWxseSBpcyBubyBsb25nZXIgdHJpdmlhbC4KPgo+IEFC STogZ2VtX3Jlc2V0X3N0YXRzIC8gRFJNX0lPQ1RMX0k5MTVfR0VUX1JFU0VUX1NUQVRTCj4KPiBX ZSBjaGFuZ2UgdGhlIHdheSB3ZSBjb3VudCBwZW5kaW5nIGJhdGNoZXMuIE9ubHkgdGhlIGFjdGl2 ZSBjb250ZXh0Cj4gaW52b2x2ZWQgaW4gdGhlIHJlc2V0IGlzIG1hcmtlZCBhcyBlaXRoZXIgaW5u b2NlbnQgb3IgZ3VpbHR5LCBhbmQgbm90Cj4gbWFyayB0aGUgZW50aXJlIHdvcmxkIGFzIHBlbmRp bmcuIEJ5IGluc3BlY3Rpb24gdGhpcyBvbmx5IGFmZmVjdHMKPiBpZ3QvZ2VtX3Jlc2V0X3N0YXRz ICh3aGljaCBhc3N1bWVzIGltcGxlbWVudGF0aW9uIGRldGFpbHMpIGFuZCBub3QKPiBwaWdsaXQu Cj4KPiBBUkJfcm9idXN0bmVzcyBnaXZlcyB0aGlzIGd1aWRlIG9uIGhvdyB3ZSBleHBlY3QgdGhl IHVzZXIgb2YgdGhpcwo+IGludGVyZmFjZSB0byBiZWhhdmU6Cj4KPiAgKiBQcm92aWRlIGEgbWVj aGFuaXNtIGZvciBhbiBPcGVuR0wgYXBwbGljYXRpb24gdG8gbGVhcm4gYWJvdXQKPiAgICBncmFw aGljcyByZXNldHMgdGhhdCBhZmZlY3QgdGhlIGNvbnRleHQuICBXaGVuIGEgZ3JhcGhpY3MgcmVz ZXQKPiAgICBvY2N1cnMsIHRoZSBPcGVuR0wgY29udGV4dCBiZWNvbWVzIHVudXNhYmxlIGFuZCB0 aGUgYXBwbGljYXRpb24KPiAgICBtdXN0IGNyZWF0ZSBhIG5ldyBjb250ZXh0IHRvIGNvbnRpbnVl IG9wZXJhdGlvbi4gRGV0ZWN0aW5nIGEKPiAgICBncmFwaGljcyByZXNldCBoYXBwZW5zIHRocm91 Z2ggYW4gaW5leHBlbnNpdmUgcXVlcnkuCj4KPiBBbmQgd2l0aCByZWdhcmRzIHRvIHRoZSBhY3R1 YWwgbWVhbmluZyBvZiB0aGUgcmVzZXQgdmFsdWVzOgo+Cj4gICAgQ2VydGFpbiBldmVudHMgY2Fu IHJlc3VsdCBpbiBhIHJlc2V0IG9mIHRoZSBHTCBjb250ZXh0LiBTdWNoIGEgcmVzZXQKPiAgICBj YXVzZXMgYWxsIGNvbnRleHQgc3RhdGUgdG8gYmUgbG9zdC4gUmVjb3ZlcnkgZnJvbSBzdWNoIGV2 ZW50cwo+ICAgIHJlcXVpcmVzIHJlY3JlYXRpb24gb2YgYWxsIG9iamVjdHMgaW4gdGhlIGFmZmVj dGVkIGNvbnRleHQuIFRoZQo+ICAgIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBncmFwaGljcyByZXNl dCBzdGF0ZSBpcyByZXR1cm5lZCBieQo+Cj4gCWVudW0gR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS QigpOwo+Cj4gICAgVGhlIHN5bWJvbGljIGNvbnN0YW50IHJldHVybmVkIGluZGljYXRlcyBpZiB0 aGUgR0wgY29udGV4dCBoYXMgYmVlbgo+ICAgIGluIGEgcmVzZXQgc3RhdGUgYXQgYW55IHBvaW50 IHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KPiAgICBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCLiBO T19FUlJPUiBpbmRpY2F0ZXMgdGhhdCB0aGUgR0wgY29udGV4dAo+ICAgIGhhcyBub3QgYmVlbiBp biBhIHJlc2V0IHN0YXRlIHNpbmNlIHRoZSBsYXN0IGNhbGwuCj4gICAgR1VJTFRZX0NPTlRFWFRf UkVTRVRfQVJCIGluZGljYXRlcyB0aGF0IGEgcmVzZXQgaGFzIGJlZW4gZGV0ZWN0ZWQKPiAgICB0 aGF0IGlzIGF0dHJpYnV0YWJsZSB0byB0aGUgY3VycmVudCBHTCBjb250ZXh0Lgo+ICAgIElOTk9D RU5UX0NPTlRFWFRfUkVTRVRfQVJCIGluZGljYXRlcyBhIHJlc2V0IGhhcyBiZWVuIGRldGVjdGVk IHRoYXQKPiAgICBpcyBub3QgYXR0cmlidXRhYmxlIHRvIHRoZSBjdXJyZW50IEdMIGNvbnRleHQu Cj4gICAgVU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQiBpbmRpY2F0ZXMgYSBkZXRlY3RlZCBncmFw aGljcyByZXNldCB3aG9zZQo+ICAgIGNhdXNlIGlzIHVua25vd24uCj4KPiBUaGUgbGFuZ3VhZ2Ug aGVyZSBpcyBleHBsaWNpdCBpbiB0aGF0IHdlIG11c3QgbWFyayB1cCB0aGUgZ3VpbHR5IGJhdGNo LAo+IGJ1dCBpcyBsb29zZSBlbm91Z2ggZm9yIHVzIHRvIHJlbGF4IHRoZSBpbm5vY2VudCAoaS5l LiBwZW5kaW5nKQo+IGFjY291bnRpbmcgYXMgb25seSB0aGUgYWN0aXZlIGJhdGNoZXMgYXJlIGlu dm9sdmVkIHdpdGggdGhlIHJlc2V0Lgo+Cj4gSW4gdGhlIGZ1dHVyZSwgd2UgYXJlIGxvb2tpbmcg dG93YXJkcyBzaW5nbGUgZW5naW5lIHJlc2V0dGluZyAod2l0aAo+IG1pbmltYWwgbG9ja2luZyks IHdoZXJlIGl0IHNlZW1zIGluYXBwcm9wcmlhdGUgdG8gbWFyayB0aGUgZW50aXJlIHdvcmxkCj4g YXMgaW5ub2NlbnQgc2luY2UgdGhlIHJlc2V0IG9jY3VycmVkIG9uIGEgZGlmZmVyZW50IGVuZ2lu ZS4gUmVkdWNpbmcgdGhlCj4gaW5mb3JtYXRpb24gYXZhaWxhYmxlIG1lYW5zIHdlIG9ubHkgaGF2 ZSB0byBlbmNvdW50ZXIgdGhlIHBhaW4gb25jZSwgYW5kCj4gYWxzbyByZWR1Y2VzIHRoZSBpbmZv cm1hdGlvbiBsZWFraW5nIGZyb20gb25lIGNvbnRleHQgdG8gYW5vdGhlci4KPgo+IHYyOiBMZWdh Y3kgcmluZ2J1ZmZlciBzdWJtaXNzaW9uIHJlcXVpcmVkIGEgcmVzZXQgZm9sbG93aW5nIGhpYmVy bmF0aW9uLAo+IG9yIGVsc2Ugd2UgcmVzdG9yZSBzdGFsZSB2YWx1ZXMgdG8gdGhlIFJJTkdfSEVB RCBhbmQgd2Fsa2VkIG92ZXIKPiBzdG9sZW4gZ2FyYmFnZS4KPgo+IHYzOiBHdUMgcmVxdWlyZXMg cmVwbGF5aW5nIHRoZSByZXF1ZXN0cyBhZnRlciBhIHJlc2V0Lgo+Cj4gdjQ6IFJlc3RvcmUgZW5n aW5lIElSUSBhZnRlciByZXNldCAoc28gd2FpdGVycyB3aWxsIGJlIHdva2VuISkKPiAgICAgUmVh cm0gaGFuZ2NoZWNrIGlmIHJlc2V0dGluZyB3aXRoIGEgd2FpdGVyLgo+Cj4gQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1p a2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IENjOiBBcnVuIFNpbHV2ZXJ5IDxhcnVuLnNpbHV2ZXJ5 QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3Bw YWxhQGludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg ICAgICAgICAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgfCAgIDUgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAg ICAgICAgIHwgMTIzICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICAxNiAtLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgMTUgKysrLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgNDkgKysrKysrKysrKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCAgNDcgKysrKysrKy0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgICA3ICstCj4gIDEw IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGMxYjg5MGRiZDZjYy4uMmIwNzI3ZDE0NjdkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTU1OSw3ICs1NTksNiBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4gIAo+ICAJ bXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fcmVzZXQoZGV2KTsK PiAgCWk5MTVfZ2VtX2NsZWFudXBfZW5naW5lcyhkZXYpOwo+ICAJaTkxNV9nZW1fY29udGV4dF9m aW5pKGRldik7Cj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiBAQCAtMTU3 OSw3ICsxNTc4LDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWlmIChpOTE1 X2dlbV9pbml0X2h3KGRldikpIHsKPiAgCQlEUk1fRVJST1IoImZhaWxlZCB0byByZS1pbml0aWFs aXplIEdQVSwgZGVjbGFyaW5nIHdlZGdlZCFcbiIpOwo+IC0JCXNldF9iaXQoSTkxNV9XRURHRUQs ICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsKPiArCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRl dl9wcml2KTsKPiAgCX0KPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAK PiBAQCAtMTc1Niw4ICsxNzU1LDYgQEAgaW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXByX25vdGljZSgiZHJtL2k5MTU6IFJlc2V0dGluZyBj aGlwIGFmdGVyIGdwdSBoYW5nXG4iKTsKPiAgCj4gLQlpOTE1X2dlbV9yZXNldChkZXYpOwo+IC0K PiAgCXJldCA9IGludGVsX2dwdV9yZXNldChkZXZfcHJpdiwgQUxMX0VOR0lORVMpOwo+ICAJaWYg KHJldCkgewo+ICAJCWlmIChyZXQgIT0gLUVOT0RFVikKPiBAQCAtMTc2Nyw2ICsxNzY0LDcgQEAg aW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWdv dG8gZXJyb3I7Cj4gIAl9Cj4gIAo+ICsJaTkxNV9nZW1fcmVzZXQoZGV2X3ByaXYpOwo+ICAJaW50 ZWxfb3ZlcmxheV9yZXNldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogT2ssIG5vdyBnZXQgdGhpbmdz IGdvaW5nIGFnYWluLi4uICovCj4gQEAgLTE4MDMsNyArMTgwMSw3IEBAIG91dDoKPiAgCXJldHVy biByZXQ7Cj4gIAo+ICBlcnJvcjoKPiAtCXNldF9iaXQoSTkxNV9XRURHRUQsICZlcnJvci0+Zmxh Z3MpOwo+ICsJaTkxNV9nZW1fc2V0X3dlZGdlZChkZXZfcHJpdik7Cj4gIAlnb3RvIG91dDsKPiAg fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAyZTJmZDhhNzcyMzMuLmE2M2Jm ODIwYWE4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMDI5LDYgKzIwMjks NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJLyogQWJzdHJhY3QgdGhlIHN1 Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkg Ki8KPiAgCXN0cnVjdCB7Cj4gKwkJdm9pZCAoKnJlc3VtZSkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKik7Cj4gIAkJdm9pZCAoKmNsZWFudXBfZW5naW5lKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+ICAKPiAgCQkvKioKPiBAQCAtMzI2Miw3ICszMjYzLDggQEAgc3RhdGljIGlu bGluZSB1MzIgaTkxNV9yZXNldF9jb3VudChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ ICAJcmV0dXJuIFJFQURfT05DRShlcnJvci0+cmVzZXRfY291bnQpOwo+ICB9Cj4gIAo+IC12b2lk IGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGk5MTVfZ2Vt X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaTkxNV9n ZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBib29s IGk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos IGJvb2wgZm9yY2UpOwo+ICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1faW5pdF9odyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKPiBAQCAtMzM5MSw3ICszMzkzLDYgQEAgdm9pZCBpOTE1X2dl bV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKTsKPiAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9jb250ZXh0X2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgaTkxNV9nZW1fY29udGV4dF9sb3N0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaTkxNV9nZW1fY29udGV4dF9maW5pKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGk5MTVfZ2VtX2NvbnRleHRfcmVzZXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgdm9pZCBpOTE1X2dl bV9jb250ZXh0X2Nsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSk7Cj4gIGludCBpOTE1X3N3aXRjaF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAyMzA2OWEyZDI4NTAu LjY1YTY5YmJlMDIxZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yNTU1LDI5 ICsyNTU1LDgzIEBAIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9zdGF0dXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICtzdGF0aWMgdm9pZCByZXNldF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKPiArewo+ICsJdm9pZCAqdmFkZHIgPSByZXF1ZXN0LT5yaW5nLT52YWRk cjsKPiArCXUzMiBoZWFkOwo+ICsKPiArCS8qIEFzIHRoaXMgcmVxdWVzdCBsaWtlbHkgZGVwZW5k cyBvbiBzdGF0ZSBmcm9tIHRoZSBsb3N0Cj4gKwkgKiBjb250ZXh0LCBjbGVhciBvdXQgYWxsIHRo ZSB1c2VyIG9wZXJhdGlvbnMgbGVhdmluZyB0aGUKPiArCSAqIGJyZWFkY3J1bWIgYXQgdGhlIGVu ZCAoc28gd2UgZ2V0IHRoZSBmZW5jZSBub3RpZmljYXRpb25zKS4KPiArCSAqLwo+ICsJaGVhZCA9 IHJlcXVlc3QtPmhlYWQ7Cj4gKwlpZiAocmVxdWVzdC0+cG9zdGZpeCA8IGhlYWQpIHsKPiArCQlt ZW1zZXQodmFkZHIgKyBoZWFkLCAwLCByZXF1ZXN0LT5yaW5nLT5zaXplIC0gaGVhZCk7Cj4gKwkJ aGVhZCA9IDA7Cj4gKwl9Cj4gKwltZW1zZXQodmFkZHIgKyBoZWFkLCAwLCByZXF1ZXN0LT5wb3N0 Zml4IC0gaGVhZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICppbmNv bXBsZXRlX2N0eDsKPiAgCWJvb2wgcmluZ19odW5nOwo+ICAKPiArCS8qIEVuc3VyZSBpcnEgaGFu ZGxlciBmaW5pc2hlcywgYW5kIG5vdCBydW4gYWdhaW4uICovCj4gKwl0YXNrbGV0X2tpbGwoJmVu Z2luZS0+aXJxX3Rhc2tsZXQpOwo+ICsKPiAgCXJlcXVlc3QgPSBpOTE1X2dlbV9maW5kX2FjdGl2 ZV9yZXF1ZXN0KGVuZ2luZSk7Cj4gLQlpZiAocmVxdWVzdCA9PSBOVUxMKQo+ICsJaWYgKCFyZXF1 ZXN0KQo+ICAJCXJldHVybjsKPiAgCj4gIAlyaW5nX2h1bmcgPSBlbmdpbmUtPmhhbmdjaGVjay5z Y29yZSA+PSBIQU5HQ0hFQ0tfU0NPUkVfUklOR19IVU5HOwo+IC0KPiAgCWk5MTVfc2V0X3Jlc2V0 X3N0YXR1cyhyZXF1ZXN0LT5jdHgsIHJpbmdfaHVuZyk7Cj4gKwlpZiAoIXJpbmdfaHVuZykKPiAr CQlyZXR1cm47Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigicmVzZXRpbmcgJXMgdG8gc3RhcnQg ZnJvbSB0YWlsIG9mIHJlcXVlc3QgMHgleFxuIiwKPiArCQkJIGVuZ2luZS0+bmFtZSwgcmVxdWVz dC0+ZmVuY2Uuc2Vxbm8pOwo+ICsKPiArCS8qIFNldHVwIHRoZSBDUyB0byByZXN1bWUgZnJvbSB0 aGUgYnJlYWRjcnVtYiBvZiB0aGUgaHVuZyByZXF1ZXN0ICovCj4gKwllbmdpbmUtPnJlc2V0X2h3 KGVuZ2luZSwgcmVxdWVzdCk7Cj4gKwo+ICsJLyogVXNlcnMgb2YgdGhlIGRlZmF1bHQgY29udGV4 dCBkbyBub3QgcmVseSBvbiBsb2dpY2FsIHN0YXRlCj4gKwkgKiBwcmVzZXJ2ZWQgYmV0d2VlbiBi YXRjaGVzLiBUaGV5IGhhdmUgdG8gZW1pdCBmdWxsIHN0YXRlIG9uCj4gKwkgKiBldmVyeSBiYXRj aCBhbmQgc28gaXQgaXMgc2FmZSB0byBleGVjdXRlIHF1ZXVlZCByZXF1ZXN0cyBmb2xsb3dpbmcK PiArCSAqIHRoZSBoYW5nLgo+ICsJICoKPiArCSAqIE90aGVyIGNvbnRleHRzIHByZXNlcnZlIHN0 YXRlLCBub3cgY29ycnVwdC4gV2Ugd2FudCB0byBza2lwIGFsbAo+ICsJICogcXVldWVkIHJlcXVl c3RzIHRoYXQgcmVmZXJlbmNlIHRoZSBjb3JydXB0IGNvbnRleHQuCj4gKwkgKi8KPiArCWluY29t cGxldGVfY3R4ID0gcmVxdWVzdC0+Y3R4Owo+ICsJaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVm YXVsdChpbmNvbXBsZXRlX2N0eCkpCj4gKwkJcmV0dXJuOwo+ICsKPiAgCWxpc3RfZm9yX2VhY2hf ZW50cnlfY29udGludWUocmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0LCBsaW5rKQo+IC0J CWk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhyZXF1ZXN0LT5jdHgsIGZhbHNlKTsKPiArCQlpZiAocmVx dWVzdC0+Y3R4ID09IGluY29tcGxldGVfY3R4KQo+ICsJCQlyZXNldF9yZXF1ZXN0KHJlcXVlc3Qp Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmVfY2xlYW51cChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3ZvaWQgaTkxNV9nZW1fcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgCj4gLQkvKiBFbnN1cmUgaXJxIGhhbmRs ZXIgZmluaXNoZXMsIGFuZCBub3QgcnVuIGFnYWluLiAqLwo+IC0JdGFza2xldF9raWxsKCZlbmdp bmUtPmlycV90YXNrbGV0KTsKPiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7 Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCj4gKwkJaTkxNV9nZW1f cmVzZXRfZW5naW5lKGVuZ2luZSk7Cj4gKwo+ICsJaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoJmRl dl9wcml2LT5kcm0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBub3Bfc3VibWl0X3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICt7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiArewo+ICsJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IG5vcF9zdWJtaXRfcmVx dWVzdDsKPiAgCj4gIAkvKiBNYXJrIGFsbCBwZW5kaW5nIHJlcXVlc3RzIGFzIGNvbXBsZXRlIHNv IHRoYXQgYW55IGNvbmN1cnJlbnQKPiAgCSAqIChsb2NrbGVzcykgbG9va3VwIGRvZXNuJ3QgdHJ5 IGFuZCB3YWl0IHVwb24gdGhlIHJlcXVlc3QgYXMgd2UKPiBAQCAtMjYwMCw1NCArMjY1NCwyMiBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmVfY2xlYW51cChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gIAkJc3Bpbl91bmxvY2soJmVuZ2luZS0+ZXhlY2xpc3RfbG9j ayk7Cj4gIAl9Cj4gIAo+IC0JLyoKPiAtCSAqIFdlIG11c3QgZnJlZSB0aGUgcmVxdWVzdHMgYWZ0 ZXIgYWxsIHRoZSBjb3JyZXNwb25kaW5nIG9iamVjdHMgaGF2ZQo+IC0JICogYmVlbiBtb3ZlZCBv ZmYgYWN0aXZlIGxpc3RzLiBXaGljaCBpcyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgbm9ybWFsCj4g LQkgKiByZXRpcmVfcmVxdWVzdHMgZnVuY3Rpb24gZG9lcy4gVGhpcyBpcyBpbXBvcnRhbnQgaWYg b2JqZWN0IGhvbGQKPiAtCSAqIGltcGxpY2l0IHJlZmVyZW5jZXMgb24gdGhpbmdzIGxpa2UgZS5n LiBwcGd0dCBhZGRyZXNzIHNwYWNlcyB0aHJvdWdoCj4gLQkgKiB0aGUgcmVxdWVzdC4KPiAtCSAq Lwo+IC0JcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0 LAo+IC0JCQkJICAgICAgJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAo cmVxdWVzdCkKPiAtCQlpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHJlcXVlc3QpOwo+IC0J R0VNX0JVR19PTihpbnRlbF9lbmdpbmVfaXNfYWN0aXZlKGVuZ2luZSkpOwo+IC0KPiAtCS8qIEhh dmluZyBmbHVzaGVkIGFsbCByZXF1ZXN0cyBmcm9tIGFsbCBxdWV1ZXMsIHdlIGtub3cgdGhhdCBh bGwKPiAtCSAqIHJpbmdidWZmZXJzIG11c3Qgbm93IGJlIGVtcHR5LiBIb3dldmVyLCBzaW5jZSB3 ZSBkbyBub3QgcmVjbGFpbQo+IC0JICogYWxsIHNwYWNlIHdoZW4gcmV0aXJpbmcgdGhlIHJlcXVl c3QgKHRvIHByZXZlbnQgSEVBRHMgY29sbGlkaW5nCj4gLQkgKiB3aXRoIHJhcGlkIHJpbmdidWZm ZXIgd3JhcGFyb3VuZCkgdGhlIGFtb3VudCBvZiBhdmFpbGFibGUgc3BhY2UKPiAtCSAqIHVwb24g cmVzZXQgaXMgbGVzcyB0aGFuIHdoZW4gd2Ugc3RhcnQuIERvIG9uZSBtb3JlIHBhc3Mgb3Zlcgo+ IC0JICogYWxsIHRoZSByaW5nYnVmZmVycyB0byByZXNldCBsYXN0X3JldGlyZWRfaGVhZC4KPiAt CSAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShyaW5nLCAmZW5naW5lLT5idWZmZXJzLCBsaW5r KSB7Cj4gLQkJcmluZy0+bGFzdF9yZXRpcmVkX2hlYWQgPSByaW5nLT50YWlsOwo+IC0JCWludGVs X3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+IC0JfQo+IC0KPiAgCWVuZ2luZS0+aTkxNS0+Z3Qu YWN0aXZlX2VuZ2luZXMgJj0gfmludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gIH0KPiAgCj4g LXZvaWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9pZCBpOTE1 X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAKPiAtCS8qCj4gLQkgKiBCZWZvcmUg d2UgZnJlZSB0aGUgb2JqZWN0cyBmcm9tIHRoZSByZXF1ZXN0cywgd2UgbmVlZCB0byBpbnNwZWN0 Cj4gLQkgKiB0aGVtIGZvciBmaW5kaW5nIHRoZSBndWlsdHkgcGFydHkuIEFzIHRoZSByZXF1ZXN0 cyBvbmx5IGJvcnJvdwo+IC0JICogdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3RzLCB0aGUg aW5zcGVjdGlvbiBtdXN0IGJlIGRvbmUgZmlyc3QuCj4gLQkgKi8KPiAtCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2KQo+IC0JCWk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9zdGF0dXMoZW5n aW5lKTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiArCXNldF9iaXQoSTkxNV9XRURHRUQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsK PiAgCj4gKwlpOTE1X2dlbV9jb250ZXh0X2xvc3QoZGV2X3ByaXYpOwo+ICAJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpCj4gLQkJaTkxNV9nZW1fcmVzZXRfZW5naW5lX2NsZWFudXAo ZW5naW5lKTsKPiArCQlpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZShlbmdpbmUpOwo+ICAJbW9kX2Rl bGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsICZkZXZfcHJpdi0+Z3QuaWRsZV93b3JrLCAwKTsKPiAg Cj4gLQlpOTE1X2dlbV9jb250ZXh0X3Jlc2V0KGRldik7Cj4gLQo+IC0JaTkxNV9nZW1fcmVzdG9y ZV9mZW5jZXMoZGV2KTsKPiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4g IH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTQzNDMsOCArNDM2NSw3IEBAIHZvaWQgaTkxNV9n ZW1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkgKiBndWFyYW50ZWUgdGhhdCB0 aGUgY29udGV4dCBpbWFnZSBpcyBjb21wbGV0ZS4gU28gbGV0J3MganVzdCByZXNldAo+ICAJICog aXQgYW5kIHN0YXJ0IGFnYWluLgo+ICAJICovCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3Rz KQo+IC0JCWludGVsX2xyX2NvbnRleHRfcmVzZXQoZGV2X3ByaXYsIGRldl9wcml2LT5rZXJuZWxf Y29udGV4dCk7Cj4gKwlkZXZfcHJpdi0+Z3QucmVzdW1lKGRldl9wcml2KTsKPiAgCj4gIAltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgfQo+IEBAIC00NDk2LDggKzQ1MTcsMTAg QEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0 cykgewo+ICsJCWRldl9wcml2LT5ndC5yZXN1bWUgPSBpbnRlbF9sZWdhY3lfc3VibWlzc2lvbl9y ZXN1bWU7Cj4gIAkJZGV2X3ByaXYtPmd0LmNsZWFudXBfZW5naW5lID0gaW50ZWxfZW5naW5lX2Ns ZWFudXA7Cj4gIAl9IGVsc2Ugewo+ICsJCWRldl9wcml2LT5ndC5yZXN1bWUgPSBpbnRlbF9scl9j b250ZXh0X3Jlc3VtZTsKPiAgCQlkZXZfcHJpdi0+Z3QuY2xlYW51cF9lbmdpbmUgPSBpbnRlbF9s b2dpY2FsX3JpbmdfY2xlYW51cDsKPiAgCX0KPiAgCj4gQEAgLTQ1MzAsNyArNDU1Myw3IEBAIGlu dCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJICogZm9yIGFsbCBv dGhlciBmYWlsdXJlLCBzdWNoIGFzIGFuIGFsbG9jYXRpb24gZmFpbHVyZSwgYmFpbC4KPiAgCQkg Ki8KPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIEdQVSwgZGVjbGFyaW5nIGl0 IHdlZGdlZFxuIik7Cj4gLQkJc2V0X2JpdChJOTE1X1dFREdFRCwgJmRldl9wcml2LT5ncHVfZXJy b3IuZmxhZ3MpOwo+ICsJCWk5MTVfZ2VtX3NldF93ZWRnZWQoZGV2X3ByaXYpOwo+ICAJCXJldCA9 IDA7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBp bmRleCAzNTk1MGVlNDZhMWQuLmRmMTBmNGU5NTczNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNDIwLDIyICs0MjAsNiBAQCBzdGF0aWMgdm9pZCBp OTE1X2dlbV9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gIAl9 Cj4gIH0KPiAgCj4gLXZvaWQgaTkxNV9nZW1fY29udGV4dF9yZXNldChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+IC0KPiAtCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4Owo+IC0KPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldl9w cml2LT5jb250ZXh0X2xpc3QsIGxpbmspCj4gLQkJCWludGVsX2xyX2NvbnRleHRfcmVzZXQoZGV2 X3ByaXYsIGN0eCk7Cj4gLQl9Cj4gLQo+IC0JaTkxNV9nZW1fY29udGV4dF9sb3N0KGRldl9wcml2 KTsKPiAtfQo+IC0KPiAgaW50IGk5MTVfZ2VtX2NvbnRleHRfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1 Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ IGluZGV4IDc3NTI2ZDdmNDFmOC4uZDVhNGU5ZWRjY2M1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC05OTQsNiArOTk0LDcgQEAgaW50IGk5 MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwo+ICAJc3RydWN0 IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAKPiAgCS8q IGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJtaXNzaW9uICovCj4gIAljbGllbnQgPSBndWNfY2xpZW50 X2FsbG9jKGRldl9wcml2LAo+IEBAIC0xMDEwLDkgKzEwMTEsMTQgQEAgaW50IGk5MTVfZ3VjX3N1 Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWd1 Y19pbml0X2Rvb3JiZWxsX2h3KGd1Yyk7Cj4gIAo+ICAJLyogVGFrZSBvdmVyIGZyb20gbWFudWFs IGNvbnRyb2wgb2YgRUxTUCAoZXhlY2xpc3RzKSAqLwo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgZGV2X3ByaXYpCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewo+ICAJ CWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBpOTE1X2d1Y19zdWJtaXQ7Cj4gIAo+ICsJCS8qIFJl cGxheSB0aGUgY3VycmVudCBzZXQgb2YgcHJldmlvdXNseSBzdWJtaXR0ZWQgcmVxdWVzdHMgKi8K PiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwg bGluaykKPiArCQkJaTkxNV9ndWNfc3VibWl0KHJlcXVlc3QpOwo+ICsJfQo+ICsKPiAgCXJldHVy biAwOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5k ZXggMmU5NmE4NjEwNWMyLi5lNDA1ZjEwODAyOTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0yMTEsNiArMjExLDggQEAgdm9pZCBpbnRlbF9lbmdpbmVf aW5pdF9oYW5nY2hlY2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlt ZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNrLCAwLCBzaXplb2YoZW5naW5lLT5oYW5nY2hlY2spKTsK PiAgCWNsZWFyX2JpdChlbmdpbmUtPmlkLCAmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3IubWlzc2Vk X2lycV9yaW5ncyk7Cj4gKwlpZiAoaW50ZWxfZW5naW5lX2hhc193YWl0ZXIoZW5naW5lKSkKPiAr CQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhlbmdpbmUtPmk5MTUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gQEAgLTIzMCw3ICsyMzIsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5p dF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAqLwo+ICB2b2lk IGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICB7Cj4gLQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5idWZmZXJzKTsKPiAgCUlOSVRfTElT VF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiAgCXNwaW5fbG9ja19pbml0KCZlbmdp bmUtPmV4ZWNsaXN0X2xvY2spOwo+ICAKPiBAQCAtMzA2LDYgKzMwNywxOCBAQCBpbnQgaW50ZWxf ZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICt2b2lkIGludGVsX2VuZ2luZV9yZXNldF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYt PmlycV9sb2NrKTsKPiArCWlmIChpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKQo+ICsJ CWVuZ2luZS0+aXJxX2VuYWJsZShlbmdpbmUpOwo+ICsJZWxzZQo+ICsJCWVuZ2luZS0+aXJxX2Rp c2FibGUoZW5naW5lKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsK PiArfQo+ICsKPiAgLyoqCj4gICAqIGludGVsX2VuZ2luZXNfY2xlYW51cF9jb21tb24gLSBjbGVh bnMgdXAgdGhlIGVuZ2luZSBzdGF0ZSBjcmVhdGVkIGJ5Cj4gICAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgY29tbW9uIGluaXRpYWlsaXplcnMuCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCBhMzM2ODdkMjk0YjUuLjYxNTQ5YTYyM2UyYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTEyMjIsMTEgKzEyMjIsMTYgQEAgc3RhdGljIHZvaWQg bHJjX2luaXRfaHdzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgc3RhdGljIGlu dCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGludGVsX21vY3NfaW5pdF9lbmdpbmUoZW5naW5l KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gIAlscmNfaW5pdF9od3MoZW5n aW5lKTsKPiAgCj4gLQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4gLQkJICAgICAgIH4oZW5naW5l LT5pcnFfZW5hYmxlX21hc2sgfCBlbmdpbmUtPmlycV9rZWVwX21hc2spKTsKPiArCWludGVsX2Vu Z2luZV9yZXNldF9pcnEoZW5naW5lKTsKPiArCj4gIAlJOTE1X1dSSVRFKFJJTkdfSFdTVEFNKGVu Z2luZS0+bW1pb19iYXNlKSwgMHhmZmZmZmZmZik7Cj4gIAo+ICAJSTkxNV9XUklURShSSU5HX01P REVfR0VONyhlbmdpbmUpLAo+IEBAIC0xMjM3LDcgKzEyNDIsMTAgQEAgc3RhdGljIGludCBnZW44 X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAg CWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdpbmUpOwo+ICAKPiAtCXJldHVybiBpbnRl bF9tb2NzX2luaXRfZW5naW5lKGVuZ2luZSk7Cj4gKwlpZiAoIWV4ZWNsaXN0c19lbHNwX2lkbGUo ZW5naW5lKSkKPiArCQlleGVjbGlzdHNfc3VibWl0X3BvcnRzKGVuZ2luZSk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3JlbmRlcl9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBAQCAtMTI3Myw2ICsxMjgxLDM2IEBAIHN0YXRp YyBpbnQgZ2VuOV9pbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgCXJldHVybiBpbml0X3dvcmthcm91bmRzX3JpbmcoZW5naW5lKTsKPiAgfQo+ICAKPiAr c3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK PiArCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZW5naW5lLT5leGVjbGlzdF9wb3J0Owo+ ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gJnJlcXVlc3QtPmN0eC0+ZW5naW5lW2VuZ2lu ZS0+aWRdOwo+ICsKPiArCS8qIE1vdmUgdGhlIFJJTkdfSEVBRCBvbnRvIHRoZSBicmVhZGNydW1i LCBwYXN0IHRoZSBoYW5naW5nIGJhdGNoICovCj4gKwljZS0+bHJjX3JlZ19zdGF0ZVtDVFhfUklO R19IRUFEKzFdID0gcmVxdWVzdC0+cG9zdGZpeDsKPiArCXJlcXVlc3QtPnJpbmctPmhlYWQgPSBy ZXF1ZXN0LT5wb3N0Zml4Owo+ICsJcmVxdWVzdC0+cmluZy0+bGFzdF9yZXRpcmVkX2hlYWQgPSAt MTsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJlcXVlc3QtPnJpbmcpOwo+ICsKPiArCWlm IChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiArCQlyZXR1cm47Cj4gKwo+ICsJLyogQ2F0 Y2ggdXAgd2l0aCBhbnkgbWlzc2VkIGNvbnRleHQtc3dpdGNoIGludGVycnVwdHMgKi8KPiArCUk5 MTVfV1JJVEUoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSwgX01BU0tFRF9GSUVMRCgw eGZmZmYsIDApKTsKPiArCWlmIChyZXF1ZXN0LT5jdHggIT0gcG9ydFswXS5yZXF1ZXN0LT5jdHgp IHsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChwb3J0WzBdLnJlcXVlc3QpOwo+ICsJCXBvcnRb MF0gPSBwb3J0WzFdOwo+ICsJCW1lbXNldCgmcG9ydFsxXSwgMCwgc2l6ZW9mKHBvcnRbMV0pKTsK PiArCX0KPiArCj4gKwkvKiBDUyBpcyBzdG9wcGVkLCBhbmQgd2Ugd2lsbCByZXN1Ym1pdCBib3Ro IHBvcnRzIG9uIHJlc3VtZSAqLwo+ICsJR0VNX0JVR19PTihyZXF1ZXN0LT5jdHggIT0gcG9ydFsw XS5yZXF1ZXN0LT5jdHgpOwo+ICsJcG9ydFswXS5jb3VudCA9IDA7Cj4gKwlwb3J0WzFdLmNvdW50 ID0gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBz KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQgPSByZXEtPmN0eC0+cHBndHQ7Cj4gQEAgLTE2MzUsNiArMTY3Myw3IEBA IGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gIHsKPiAgCS8qIERlZmF1bHQgdmZ1bmNzIHdoaWNoIGNhbiBiZSBvdmVycmlkZW4gYnkg ZWFjaCBlbmdpbmUuICovCj4gIAllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9uX3Jp bmc7Cj4gKwllbmdpbmUtPnJlc2V0X2h3ID0gcmVzZXRfY29tbW9uX3Jpbmc7Cj4gIAllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7Cj4gIAllbmdpbmUtPmVtaXRfcmVxdWVzdCA9 IGdlbjhfZW1pdF9yZXF1ZXN0Owo+ICAJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGV4ZWNsaXN0 c19zdWJtaXRfcmVxdWVzdDsKPiBAQCAtMjA4Nyw5ICsyMTI2LDkgQEAgZXJyb3JfZGVyZWZfb2Jq Ogo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc2V0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJICAgIHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCj4gK3ZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4ID0gZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0Owo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2 KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBpbmRleCA0ZDcwMzQ2NTAwYzIuLjRmZWQ4 MTY1Zjk4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gQEAgLTg3LDggKzg3LDcg QEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gIAo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgCj4gLXZvaWQgaW50ZWxfbHJf Y29udGV4dF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAg ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsKPiArdm9pZCBpbnRlbF9scl9jb250ZXh0 X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB1aW50NjRfdCBp bnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGUwNGI1OGE4YWEwYS4uN2Yz OGEzZTQyMzlkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ IEBAIC01NjQsNiArNTY0LDggQEAgc3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWVsc2UKPiAgCQlyaW5nX3NldHVwX3BoeXNfc3Rh dHVzX3BhZ2UoZW5naW5lKTsKPiAgCj4gKwlpbnRlbF9lbmdpbmVfcmVzZXRfaXJxKGVuZ2luZSk7 Cj4gKwo+ICAJLyogRW5mb3JjZSBvcmRlcmluZyBieSByZWFkaW5nIEhFQUQgcmVnaXN0ZXIgYmFj ayAqLwo+ICAJSTkxNV9SRUFEX0hFQUQoZW5naW5lKTsKPiAgCj4gQEAgLTU3NywzNCArNTc5LDMz IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAlpZiAoSTkxNV9SRUFEX0hFQUQoZW5naW5lKSkKPiAgCQlEUk1fREVCVUcoIiVz IGluaXRpYWxpemF0aW9uIGZhaWxlZCBbaGVhZD0lMDh4XSwgZnVkZ2luZ1xuIiwKPiAgCQkJICBl bmdpbmUtPm5hbWUsIEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkpOwo+IC0JSTkxNV9XUklURV9IRUFE KGVuZ2luZSwgMCk7Cj4gLQkodm9pZClJOTE1X1JFQURfSEVBRChlbmdpbmUpOwo+ICsKPiArCWlu dGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ICsJSTkxNV9XUklURV9IRUFEKGVuZ2luZSwg cmluZy0+aGVhZCk7Cj4gKwlJOTE1X1dSSVRFX1RBSUwoZW5naW5lLCByaW5nLT50YWlsKTsKPiAr CSh2b2lkKUk5MTVfUkVBRF9UQUlMKGVuZ2luZSk7Cj4gIAo+ICAJSTkxNV9XUklURV9DVEwoZW5n aW5lLAo+ICAJCQkoKHJpbmctPnNpemUgLSBQQUdFX1NJWkUpICYgUklOR19OUl9QQUdFUykKPiAg CQkJfCBSSU5HX1ZBTElEKTsKPiAgCj4gIAkvKiBJZiB0aGUgaGVhZCBpcyBzdGlsbCBub3QgemVy bywgdGhlIHJpbmcgaXMgZGVhZCAqLwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQURfQ1RMKGVu Z2luZSkgJiBSSU5HX1ZBTElEKSAhPSAwICYmCj4gLQkJICAgICBJOTE1X1JFQURfU1RBUlQoZW5n aW5lKSA9PSBpOTE1X2dndHRfb2Zmc2V0KHJpbmctPnZtYSkgJiYKPiAtCQkgICAgIChJOTE1X1JF QURfSEVBRChlbmdpbmUpICYgSEVBRF9BRERSKSA9PSAwLCA1MCkpIHsKPiArCWlmIChpbnRlbF93 YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwgUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2Up LAo+ICsJCQkJICAgICAgIFJJTkdfVkFMSUQsIFJJTkdfVkFMSUQsCj4gKwkJCQkgICAgICAgNTAp KSB7Cj4gIAkJRFJNX0VSUk9SKCIlcyBpbml0aWFsaXphdGlvbiBmYWlsZWQgIgo+IC0JCQkgICJj dGwgJTA4eCAodmFsaWQ/ICVkKSBoZWFkICUwOHggdGFpbCAlMDh4IHN0YXJ0ICUwOHggW2V4cGVj dGVkICUwOHhdXG4iLAo+ICsJCQkgICJjdGwgJTA4eCAodmFsaWQ/ICVkKSBoZWFkICUwOHggWyUw OHhdIHRhaWwgJTA4eCBbJTA4eF0gc3RhcnQgJTA4eCBbZXhwZWN0ZWQgJTA4eF1cbiIsCj4gIAkJ CSAgZW5naW5lLT5uYW1lLAo+ICAJCQkgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSwKPiAgCQkJICBJ OTE1X1JFQURfQ1RMKGVuZ2luZSkgJiBSSU5HX1ZBTElELAo+IC0JCQkgIEk5MTVfUkVBRF9IRUFE KGVuZ2luZSksIEk5MTVfUkVBRF9UQUlMKGVuZ2luZSksCj4gKwkJCSAgSTkxNV9SRUFEX0hFQUQo ZW5naW5lKSwgcmluZy0+aGVhZCwKPiArCQkJICBJOTE1X1JFQURfVEFJTChlbmdpbmUpLCByaW5n LT50YWlsLAo+ICAJCQkgIEk5MTVfUkVBRF9TVEFSVChlbmdpbmUpLAo+ICAJCQkgIGk5MTVfZ2d0 dF9vZmZzZXQocmluZy0+dm1hKSk7Cj4gIAkJcmV0ID0gLUVJTzsKPiAgCQlnb3RvIG91dDsKPiAg CX0KPiAgCj4gLQlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOwo+IC0JcmluZy0+aGVhZCA9 IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7Cj4gLQlyaW5nLT50YWlsID0gSTkxNV9SRUFEX1RBSUwo ZW5naW5lKSAmIFRBSUxfQUREUjsKPiAtCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ IC0KPiAgCWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdpbmUpOwo+ICAKPiAgb3V0Ogo+ IEBAIC02MTMsNiArNjE0LDE1IEBAIG91dDoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB2b2lkIHJlc2V0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiArCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICt7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4gKwo+ICsJcmlu Zy0+aGVhZCA9IHJlcXVlc3QtPnBvc3RmaXg7Cj4gKwlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9 IC0xOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+ICAJc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXEtPnJpbmc7Cj4gQEAgLTIwMDcsNyArMjAxNyw2IEBAIGludGVsX2VuZ2lu ZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzaXplKQo+ ICAJfQo+ICAJcmluZy0+dm1hID0gdm1hOwo+ICAKPiAtCWxpc3RfYWRkKCZyaW5nLT5saW5rLCAm ZW5naW5lLT5idWZmZXJzKTsKPiAgCXJldHVybiByaW5nOwo+ICB9Cj4gIAo+IEBAIC0yMDE1LDcg KzIwMjQsNiBAQCB2b2lkCj4gIGludGVsX3JpbmdfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZykKPiAgewo+ICAJaTkxNV92bWFfcHV0KHJpbmctPnZtYSk7Cj4gLQlsaXN0X2RlbCgmcmluZy0+ bGluayk7Cj4gIAlrZnJlZShyaW5nKTsKPiAgfQo+ICAKPiBAQCAtMjE2OSw2ICsyMTc3LDE2IEBA IHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAJZW5naW5lLT5pOTE1ID0gTlVMTDsKPiAgfQo+ICAKPiArdm9pZCBpbnRlbF9sZWdhY3lf c3VibWlzc2lvbl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwo+ICsJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKPiArCQllbmdpbmUtPmJ1ZmZlci0+aGVhZCA9IGVuZ2lu ZS0+YnVmZmVyLT50YWlsOwo+ICsJCWVuZ2luZS0+YnVmZmVyLT5sYXN0X3JldGlyZWRfaGVhZCA9 IC0xOwo+ICsJfQo+ICt9Cj4gKwo+ICBpbnQgaW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJh cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIHsKPiAgCWludCByZXQ7 Cj4gQEAgLTI2NTQsNiArMjY3Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3JpbmdfZGVmYXVsdF92 ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJaW50ZWxfcmluZ19p bml0X3NlbWFwaG9yZXMoZGV2X3ByaXYsIGVuZ2luZSk7Cj4gIAo+ICAJZW5naW5lLT5pbml0X2h3 ID0gaW5pdF9yaW5nX2NvbW1vbjsKPiArCWVuZ2luZS0+cmVzZXRfaHcgPSByZXNldF9yaW5nX2Nv bW1vbjsKPiAgCj4gIAllbmdpbmUtPmVtaXRfcmVxdWVzdCA9IGk5eHhfZW1pdF9yZXF1ZXN0Owo+ ICAJaWYgKGk5MTUuc2VtYXBob3JlcykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCj4gaW5kZXggMTg4NDhhY2Y1ZTc0Li4zMmY1Mjc0NDczMTAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTg3LDcgKzg3LDYgQEAgc3RydWN0 IGludGVsX3Jpbmcgewo+ICAJdm9pZCAqdmFkZHI7Cj4gIAo+ICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+ICAKPiAgCXN0cnVjdCBs aXN0X2hlYWQgcmVxdWVzdF9saXN0Owo+ICAKPiBAQCAtMTU3LDcgKzE1Niw2IEBAIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3Mgewo+ICAJdTMyCQltbWlvX2Jhc2U7Cj4gIAl1bnNpZ25lZCBpbnQgaXJx X3NoaWZ0Owo+ICAJc3RydWN0IGludGVsX3JpbmcgKmJ1ZmZlcjsKPiAtCXN0cnVjdCBsaXN0X2hl YWQgYnVmZmVyczsKPiAgCj4gIAkvKiBSYXRoZXIgdGhhbiBoYXZlIGV2ZXJ5IGNsaWVudCB3YWl0 IHVwb24gYWxsIHVzZXIgaW50ZXJydXB0cywKPiAgCSAqIHdpdGggdGhlIGhlcmQgd2FraW5nIGFm dGVyIGV2ZXJ5IGludGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUKPiBAQCAtMjExLDYgKzIwOSw4 IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAJdm9pZAkJKCppcnFfZGlzYWJsZSkoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgCj4gIAlpbnQJCSgqaW5pdF9odykoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArCXZvaWQJCSgqcmVzZXRfaHcpKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSk7Cj4gIAo+ICAJaW50CQkoKmluaXRfY29udGV4dCkoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICAKPiBAQCAtNDQ0LDYgKzQ0NCw4IEBAIHZvaWQgaW50 ZWxfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAgdm9pZCBpbnRlbF9lbmdp bmVfc3RvcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICB2b2lkIGludGVsX2Vu Z2luZV9jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIAo+ICt2b2lk IGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+ICsKPiAgaW50IGludGVsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPiAgCj4gIGludCBfX211c3RfY2hl Y2sgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50 IG4pOwo+IEBAIC00ODIsNiArNDg0LDcgQEAgaW50IF9faW50ZWxfcmluZ19zcGFjZShpbnQgaGVh ZCwgaW50IHRhaWwsIGludCBzaXplKTsKPiAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZyk7Cj4gIAo+ICB2b2lkIGludGVsX2VuZ2luZV9pbml0X3Nl cW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKTsKPiArdm9pZCBp bnRlbF9lbmdpbmVfcmVzZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4g IAo+ICB2b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiAgaW50IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwo+IC0tIAo+IDIuOS4zCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=