From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 15/22] drm/i915: Make request allocation caches global Date: Mon, 4 Feb 2019 18:48:50 +0000 Message-ID: <9318dbd4-2dff-6538-1d87-885eeda9e622@linux.intel.com> References: <20190204132214.9459-1-chris@chris-wilson.co.uk> <20190204132214.9459-16-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF89889B61 for ; Mon, 4 Feb 2019 18:48:45 +0000 (UTC) In-Reply-To: <20190204132214.9459-16-chris@chris-wilson.co.uk> 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: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA0LzAyLzIwMTkgMTM6MjIsIENocmlzIFdpbHNvbiB3cm90ZQo+IEFzIGttZW1fY2FjaGVz IHNoYXJlIHRoZSBzYW1lIHByb3BlcnRpZXMgKHNpemUsIGFsbG9jYXRpb24vZnJlZSBiZWhhdmlv dXIpCj4gZm9yIGFsbCBwb3RlbnRpYWwgZGV2aWNlcywgd2UgY2FuIHVzZSBnbG9iYWwgY2FjaGVz LiBXaGlsZSB0aGlzCj4gcG90ZW50aWFsIGhhcyB3b3JzZSBmcmFnbWVudGF0aW9uIGJlaGF2aW91 ciAob25lIGNhbiBhcmd1ZSB0aGF0Cj4gZGlmZmVyZW50IGRldmljZXMgd291bGQgaGF2ZSBkaWZm ZXJlbnQgYWN0aXZpdHkgbGlmZXRpbWVzLCBidXQgeW91IGNhbgo+IGFsc28gYXJndWUgdGhhdCBh Y3Rpdml0eSBpcyB0ZW1wb3JhbCBhY3Jvc3MgdGhlIHN5c3RlbSkgaXQgaXMgdGhlCj4gZGVmYXVs dCBiZWhhdmlvdXIgb2YgdGhlIHN5c3RlbSBhdCBsYXJnZSB0byBhbWFsZ2FtYXRlIG1hdGNoaW5n IGNhY2hlcy4KPiAKPiBUaGUgYmVuZWZpdCBmb3IgdXMgaXMgbXVjaCByZWR1Y2VkIHBvaW50ZXIg ZGFuY2luZyBhbG9uZyB0aGUgZnJlcXVlbnQKPiBhbGxvY2F0aW9uIHBhdGhzLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgIDEgKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYyAgICAgICAgICAgIHwgIDkgKyst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oICAgICAgICAgICAgfCAgMSAr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMyAt Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAzMiAr LS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jICAgICAgICAg ICB8IDQ5ICsrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2Jh bHMuaCAgICAgICAgICAgfCAxNCArKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jICAgICAgICAgICAgICAgfCAgOCArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5jICAgICAgICAgICB8IDUzICsrKysrKysrKysrKy0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgMTAgKysrCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgICAgfCA2NiArKysrKysrKysrKysrKyst LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oICAgICAgICAgfCAz NCArKysrKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jICAgfCAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg ICAgICAgIHwgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCAgICAgICB8IDE3IC0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfbHJjLmMgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZW5naW5lLmMgIHwgNDggKysrKysrKy0tLS0tLS0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8IDI2IC0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMgfCAxMiArKy0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmggfCAgNyAtLQo+ICAgMjAgZmlsZXMg Y2hhbmdlZCwgMjQ4IGluc2VydGlvbnMoKyksIDE1MyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuYwo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKPiBpbmRleCAxNzg3ZTEyOTliMWIuLmExZDgzNDA2ODc2NSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTc3LDYgKzc3LDcgQEAgaTkxNS15ICs9IFwKPiAgIAkg IGk5MTVfZ2VtX3RpbGluZy5vIFwKPiAgIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCj4gICAJICBp OTE1X2dlbWZzLm8gXAo+ICsJICBpOTE1X2dsb2JhbHMubyBcCj4gICAJICBpOTE1X3F1ZXJ5Lm8g XAo+ICAgCSAgaTkxNV9yZXF1ZXN0Lm8gXAo+ICAgCSAgaTkxNV9zY2hlZHVsZXIubyBcCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gaW5kZXggNjQ2NjFjNDE1MzJiLi5kMjMwOTJkOGM4 OWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKPiBAQCAtMjUxLDcgKzI1MSw3 IEBAIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAgICNp bmNsdWRlICJzZWxmdGVzdHMvaTkxNV9hY3RpdmUuYyIKPiAgICNlbmRpZgo+ICAgCj4gLWludCBf X2luaXQgaTkxNV9nbG9iYWxfYWN0aXZlX2luaXQodm9pZCkKPiAraW50IGk5MTVfZ2xvYmFsX2Fj dGl2ZV9pbml0KHZvaWQpCgpUaGVzZSBjYW4ndCByZW1haW4gX19pbml0LCBzaW5jZSB0aGV5IGFy ZSBvbmx5IGNhbGxlZCBmcm9tIHRoZSBnbG9iYWwgCl9faW5pdCBvbmU/Cgo+ICAgewo+ICAgCWds b2JhbC5zbGFiX2NhY2hlID0gS01FTV9DQUNIRShhY3RpdmVfbm9kZSwgU0xBQl9IV0NBQ0hFX0FM SUdOKTsKPiAgIAlpZiAoIWdsb2JhbC5zbGFiX2NhY2hlKQo+IEBAIC0yNjAsNyArMjYwLDEyIEBA IGludCBfX2luaXQgaTkxNV9nbG9iYWxfYWN0aXZlX2luaXQodm9pZCkKPiAgIAlyZXR1cm4gMDsK PiAgIH0KPiAgIAo+IC12b2lkIF9fZXhpdCBpOTE1X2dsb2JhbF9hY3RpdmVfZXhpdCh2b2lkKQo+ ICt2b2lkIGk5MTVfZ2xvYmFsX2FjdGl2ZV9zaHJpbmsodm9pZCkKPiArewo+ICsJa21lbV9jYWNo ZV9zaHJpbmsoZ2xvYmFsLnNsYWJfY2FjaGUpOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2xvYmFs X2FjdGl2ZV9leGl0KHZvaWQpCj4gICB7Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGdsb2JhbC5z bGFiX2NhY2hlKTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9hY3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmgKPiBpbmRleCAx NzliNDdhZWVjMzMuLjZjNTZkMTBiMWY1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2FjdGl2ZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3Rp dmUuaAo+IEBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2FjdGl2ZV9m aW5pKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKSB7IH0KPiAgICNlbmRpZgo+ICAgCj4gICBpbnQg aTkxNV9nbG9iYWxfYWN0aXZlX2luaXQodm9pZCk7Cj4gK3ZvaWQgaTkxNV9nbG9iYWxfYWN0aXZl X3Nocmluayh2b2lkKTsKPiAgIHZvaWQgaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQodm9pZCk7Cj4g ICAKPiAgICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCAzZTQ1MzhjZTUyNzYuLmU0OGUzYzIyOGQ5YyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0xNDU5LDkgKzE0NTksNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7Cj4gICAJc3RydWN0IGttZW1fY2FjaGUgKm9iamVjdHM7Cj4gICAJc3RydWN0IGttZW1fY2Fj aGUgKnZtYXM7Cj4gICAJc3RydWN0IGttZW1fY2FjaGUgKmx1dHM7Cj4gLQlzdHJ1Y3Qga21lbV9j YWNoZSAqcmVxdWVzdHM7Cj4gLQlzdHJ1Y3Qga21lbV9jYWNoZSAqZGVwZW5kZW5jaWVzOwo+IC0J c3RydWN0IGttZW1fY2FjaGUgKnByaW9yaXRpZXM7Cj4gICAKPiAgIAljb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gX19pbmZvOyAvKiBVc2UgSU5URUxfSU5GTygpIHRvIGFjY2Vzcy4gKi8K PiAgIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvIF9fcnVudGltZTsgLyogVXNlIFJVTlRJTUVf SU5GTygpIHRvIGFjY2Vzcy4gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAyYzYx NjFjODljYzcuLmQ4MmU0Zjk5MDU4NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBA IC00Miw2ICs0Miw3IEBACj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJp OTE1X2dlbV9jbGZsdXNoLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nZW1mcy5oIgo+ICsjaW5jbHVk ZSAiaTkxNV9nbG9iYWxzLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXNldC5oIgo+ICAgI2luY2x1 ZGUgImk5MTVfdHJhY2UuaCIKPiAgICNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPiBAQCAtMjkxNiwx MiArMjkxNywxMSBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfY2FjaGVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAgCSAqIGZpbGxlZCBzbGFicyB0byBwcmlvcml0aXNlIGFsbG9jYXRp bmcgZnJvbSB0aGUgbW9zdGx5IGZ1bGwgc2xhYnMsCj4gICAJICogd2l0aCB0aGUgYWltIG9mIHJl ZHVjaW5nIGZyYWdtZW50YXRpb24uCj4gICAJICovCj4gLQlrbWVtX2NhY2hlX3NocmluayhpOTE1 LT5wcmlvcml0aWVzKTsKPiAtCWttZW1fY2FjaGVfc2hyaW5rKGk5MTUtPmRlcGVuZGVuY2llcyk7 Cj4gLQlrbWVtX2NhY2hlX3NocmluayhpOTE1LT5yZXF1ZXN0cyk7Cj4gICAJa21lbV9jYWNoZV9z aHJpbmsoaTkxNS0+bHV0cyk7Cj4gICAJa21lbV9jYWNoZV9zaHJpbmsoaTkxNS0+dm1hcyk7Cj4g ICAJa21lbV9jYWNoZV9zaHJpbmsoaTkxNS0+b2JqZWN0cyk7Cj4gKwo+ICsJaTkxNV9nbG9iYWxz X3NocmluaygpOwoKVGhpcyBpcyB0aGUgbWFpbiBiaXQgd2hpY2ggd29ycmllcyBtZS4KCkdsb2Jh bCBjYWNoZXMgYXJlIHdoYXQgd2Ugd2FudCBJIHRoaW5rLCBleGFjdGx5IGZvciB3aGF0IHlvdSB3 cm90ZSBpbiAKdGhlIGNvbW1pdCBtZXNzYWdlLiBCdXQgd291bGQgb25lIGRldmljZSBnb2luZyBp ZGxlIGhhdmUgdGhlIHBvdGVudGlhbCAKdG8gaW5qZWN0IHNvbWUgbGF0ZW5jeSBpbnRvIGFub3Ro ZXIgcG90ZW50aWFsbHkgdmVyeSBidXN5IGNsaWVudD8KClBlcmhhcHMgd2UgY291bGQgaGF2ZSBz b21lIHNvcnQgb2YgYWdncmVnYXRlZCBpZGxlIHNpZ25hbCBhbmQgZGVmZXIgCnNocmlua2luZyBj YWNoZWQgdG8gdGhhdCBwb2ludC4gTGlrZSBhIGJpdG1hc2sgb2YgZ2xvYmFsIGNsaWVudHMgCnJl cG9ydGluZyB0aGVpciBpZGxlL2FjdGl2ZSBzdGF0dXMgdG8gZ2xvYmFsIGNvcmUsIGFuZCB0aGVu IHNocmluayAKaGFwcGVucyBvbmx5IGlmIGFsbCBhcmUgaWRsZS4KCj4gICB9Cj4gICAKPiAgIHN0 cnVjdCBzbGVlcF9yY3Vfd29yayB7Cj4gQEAgLTUyNjQsMjMgKzUyNjQsNiBAQCBpbnQgaTkxNV9n ZW1faW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJaWYg KCFkZXZfcHJpdi0+bHV0cykKPiAgIAkJZ290byBlcnJfdm1hczsKPiAgIAo+IC0JZGV2X3ByaXYt PnJlcXVlc3RzID0gS01FTV9DQUNIRShpOTE1X3JlcXVlc3QsCj4gLQkJCQkJU0xBQl9IV0NBQ0hF X0FMSUdOIHwKPiAtCQkJCQlTTEFCX1JFQ0xBSU1fQUNDT1VOVCB8Cj4gLQkJCQkJU0xBQl9UWVBF U0FGRV9CWV9SQ1UpOwo+IC0JaWYgKCFkZXZfcHJpdi0+cmVxdWVzdHMpCj4gLQkJZ290byBlcnJf bHV0czsKPiAtCj4gLQlkZXZfcHJpdi0+ZGVwZW5kZW5jaWVzID0gS01FTV9DQUNIRShpOTE1X2Rl cGVuZGVuY3ksCj4gLQkJCQkJICAgIFNMQUJfSFdDQUNIRV9BTElHTiB8Cj4gLQkJCQkJICAgIFNM QUJfUkVDTEFJTV9BQ0NPVU5UKTsKPiAtCWlmICghZGV2X3ByaXYtPmRlcGVuZGVuY2llcykKPiAt CQlnb3RvIGVycl9yZXF1ZXN0czsKPiAtCj4gLQlkZXZfcHJpdi0+cHJpb3JpdGllcyA9IEtNRU1f Q0FDSEUoaTkxNV9wcmlvbGlzdCwgU0xBQl9IV0NBQ0hFX0FMSUdOKTsKPiAtCWlmICghZGV2X3By aXYtPnByaW9yaXRpZXMpCj4gLQkJZ290byBlcnJfZGVwZW5kZW5jaWVzOwo+IC0KPiAgIAlJTklU X0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LmFjdGl2ZV9yaW5ncyk7Cj4gICAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5ndC5jbG9zZWRfdm1hKTsKPiAgIAo+IEBAIC01MzA1LDEyICs1Mjg4LDYg QEAgaW50IGk5MTVfZ2VtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICAKPiAtZXJyX2RlcGVuZGVuY2llczoKPiAtCWtt ZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+ZGVwZW5kZW5jaWVzKTsKPiAtZXJyX3JlcXVlc3Rz Ogo+IC0Ja21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5yZXF1ZXN0cyk7Cj4gLWVycl9sdXRz Ogo+IC0Ja21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5sdXRzKTsKPiAgIGVycl92bWFzOgo+ ICAgCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+dm1hcyk7Cj4gICBlcnJfb2JqZWN0czoK PiBAQCAtNTMyOCw5ICs1MzA1LDYgQEAgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCWNsZWFudXBfc3JjdV9zdHJ1 Y3QoJmRldl9wcml2LT5ncHVfZXJyb3Iuc3JjdSk7Cj4gICAKPiAtCWttZW1fY2FjaGVfZGVzdHJv eShkZXZfcHJpdi0+cHJpb3JpdGllcyk7Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYt PmRlcGVuZGVuY2llcyk7Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnJlcXVlc3Rz KTsKPiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPmx1dHMpOwo+ICAgCWttZW1fY2Fj aGVfZGVzdHJveShkZXZfcHJpdi0+dm1hcyk7Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9w cml2LT5vYmplY3RzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n bG9iYWxzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuYwo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yZWNmOTg5N2ZkMTYKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nbG9iYWxzLmMKPiBAQCAt MCwwICsxLDQ5IEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiAr ICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ ICsjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIKPiArI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgo+ ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gKyNpbmNsdWRlICJpOTE1X3NjaGVkdWxlci5o Igo+ICsKPiAraW50IF9faW5pdCBpOTE1X2dsb2JhbHNfaW5pdCh2b2lkKQo+ICt7Cj4gKwlpbnQg ZXJyOwo+ICsKPiArCWVyciA9IGk5MTVfZ2xvYmFsX2FjdGl2ZV9pbml0KCk7Cj4gKwlpZiAoZXJy KQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJZXJyID0gaTkxNV9nbG9iYWxfcmVxdWVzdF9pbml0 KCk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gZXJyX2FjdGl2ZTsKPiArCj4gKwllcnIgPSBpOTE1 X2dsb2JhbF9zY2hlZHVsZXJfaW5pdCgpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl9yZXF1 ZXN0Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3JlcXVlc3Q6Cj4gKwlpOTE1X2dsb2Jh bF9yZXF1ZXN0X2V4aXQoKTsKPiArZXJyX2FjdGl2ZToKPiArCWk5MTVfZ2xvYmFsX2FjdGl2ZV9l eGl0KCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2xvYmFsc19zaHJp bmsodm9pZCkKPiArewo+ICsJaTkxNV9nbG9iYWxfYWN0aXZlX3NocmluaygpOwo+ICsJaTkxNV9n bG9iYWxfcmVxdWVzdF9zaHJpbmsoKTsKPiArCWk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9zaHJpbmso KTsKPiArfQo+ICsKPiArdm9pZCBfX2V4aXQgaTkxNV9nbG9iYWxzX2V4aXQodm9pZCkKPiArewo+ ICsJaTkxNV9nbG9iYWxfc2NoZWR1bGVyX2V4aXQoKTsKPiArCWk5MTVfZ2xvYmFsX3JlcXVlc3Rf ZXhpdCgpOwo+ICsJaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQoKTsKPiArfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2xvYmFscy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLjkwM2Y1MmMwYTFkMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dsb2JhbHMuaAo+IEBAIC0wLDAgKzEsMTQgQEAKPiArLyoKPiArICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJ bnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0k5MTVfR0xPQkFMU19IXwo+ ICsjZGVmaW5lIF9JOTE1X0dMT0JBTFNfSF8KPiArCj4gK2ludCBpOTE1X2dsb2JhbHNfaW5pdCh2 b2lkKTsKPiArdm9pZCBpOTE1X2dsb2JhbHNfc2hyaW5rKHZvaWQpOwo+ICt2b2lkIGk5MTVfZ2xv YmFsc19leGl0KHZvaWQpOwo+ICsKPiArI2VuZGlmIC8qIF9JOTE1X0dMT0JBTFNfSF8gKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGNpLmMKPiBpbmRleCA4NTJiNmI0ZThlZDguLjBkNjg0ZWI1MzBjMyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC0yOCw4ICsyOCw4IEBACj4gICAKPiAg ICNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+ICAgCj4gLSNpbmNsdWRlICJpOTE1X2FjdGl2ZS5o Igo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIK PiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gICAKPiAgICNkZWZpbmUgUExBVEZPUk0o eCkgLnBsYXRmb3JtID0gKHgpLCAucGxhdGZvcm1fbWFzayA9IEJJVCh4KQo+IEBAIC04MDEsNyAr ODAxLDkgQEAgc3RhdGljIGludCBfX2luaXQgaTkxNV9pbml0KHZvaWQpCj4gICAJYm9vbCB1c2Vf a21zID0gdHJ1ZTsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlpOTE1X2dsb2JhbF9hY3RpdmVfaW5p dCgpOwo+ICsJZXJyID0gaTkxNV9nbG9iYWxzX2luaXQoKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0 dXJuIGVycjsKPiAgIAo+ICAgCWVyciA9IGk5MTVfbW9ja19zZWxmdGVzdHMoKTsKPiAgIAlpZiAo ZXJyKQo+IEBAIC04MzQsNyArODM2LDcgQEAgc3RhdGljIHZvaWQgX19leGl0IGk5MTVfZXhpdCh2 b2lkKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmk5MTVf cGNpX2RyaXZlcik7Cj4gLQlpOTE1X2dsb2JhbF9hY3RpdmVfZXhpdCgpOwo+ICsJaTkxNV9nbG9i YWxzX2V4aXQoKTsKPiAgIH0KPiAgIAo+ICAgbW9kdWxlX2luaXQoaTkxNV9pbml0KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDA0YzY1ZTZkODNiOS4uM2JiNDg0MGJh NzYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtMzEsNiArMzEs MTEgQEAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAgI2luY2x1ZGUgImk5MTVfcmVzZXQu aCIKPiAgIAo+ICtzdGF0aWMgc3RydWN0IGk5MTVfZ2xvYmFsX3JlcXVlc3Qgewo+ICsJc3RydWN0 IGttZW1fY2FjaGUgKnNsYWJfcmVxdWVzdHM7Cj4gKwlzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYl9k ZXBlbmRlbmNpZXM7Cj4gK30gZ2xvYmFsOwo+ICsKPiAgIHN0YXRpYyBjb25zdCBjaGFyICppOTE1 X2ZlbmNlX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAgIHsKPiAg IAlyZXR1cm4gImk5MTUiOwo+IEBAIC04Myw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZmVu Y2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAgIAkgKi8KPiAgIAlpOTE1X3N3 X2ZlbmNlX2ZpbmkoJnJxLT5zdWJtaXQpOwo+ICAgCj4gLQlrbWVtX2NhY2hlX2ZyZWUocnEtPmk5 MTUtPnJlcXVlc3RzLCBycSk7Cj4gKwlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFsLnNsYWJfcmVxdWVz dHMsIHJxKTsKPiAgIH0KPiAgIAo+ICAgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgaTkxNV9m ZW5jZV9vcHMgPSB7Cj4gQEAgLTMwMSw3ICszMDYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlcXVl c3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAKPiAgIAl1bnJlc2Vy dmVfZ3QocmVxdWVzdC0+aTkxNSk7Cj4gICAKPiAtCWk5MTVfc2NoZWRfbm9kZV9maW5pKHJlcXVl c3QtPmk5MTUsICZyZXF1ZXN0LT5zY2hlZCk7Cj4gKwlpOTE1X3NjaGVkX25vZGVfZmluaSgmcmVx dWVzdC0+c2NoZWQpOwo+ICAgCWk5MTVfcmVxdWVzdF9wdXQocmVxdWVzdCk7Cj4gICB9Cj4gICAK PiBAQCAtNTM1LDcgKzU0MCw3IEBAIGk5MTVfcmVxdWVzdF9hbGxvY19zbG93KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKPiAgIAlyaW5nX3JldGlyZV9yZXF1ZXN0cyhyaW5nKTsKPiAgIAo+ICAg b3V0Ogo+IC0JcmV0dXJuIGttZW1fY2FjaGVfYWxsb2MoY2UtPmdlbV9jb250ZXh0LT5pOTE1LT5y ZXF1ZXN0cywgR0ZQX0tFUk5FTCk7Cj4gKwlyZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwu c2xhYl9yZXF1ZXN0cywgR0ZQX0tFUk5FTCk7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC02MTcs NyArNjIyLDcgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAkgKgo+ICAgCSAqIERvIG5v dCB1c2Uga21lbV9jYWNoZV96YWxsb2MoKSBoZXJlIQo+ICAgCSAqLwo+IC0JcnEgPSBrbWVtX2Nh Y2hlX2FsbG9jKGk5MTUtPnJlcXVlc3RzLAo+ICsJcnEgPSBrbWVtX2NhY2hlX2FsbG9jKGdsb2Jh bC5zbGFiX3JlcXVlc3RzLAo+ICAgCQkJICAgICAgR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01B WUZBSUwgfCBfX0dGUF9OT1dBUk4pOwo+ICAgCWlmICh1bmxpa2VseSghcnEpKSB7Cj4gICAJCXJx ID0gaTkxNV9yZXF1ZXN0X2FsbG9jX3Nsb3coY2UpOwo+IEBAIC03MDEsNyArNzA2LDcgQEAgaTkx NV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2No ZWQuc2lnbmFsZXJzX2xpc3QpKTsKPiAgIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2No ZWQud2FpdGVyc19saXN0KSk7Cj4gICAKPiAtCWttZW1fY2FjaGVfZnJlZShpOTE1LT5yZXF1ZXN0 cywgcnEpOwo+ICsJa21lbV9jYWNoZV9mcmVlKGdsb2JhbC5zbGFiX3JlcXVlc3RzLCBycSk7Cj4g ICBlcnJfdW5yZXNlcnZlOgo+ICAgCXVucmVzZXJ2ZV9ndChpOTE1KTsKPiAgIAlpbnRlbF9jb250 ZXh0X3VucGluKGNlKTsKPiBAQCAtNzIwLDkgKzcyNSw3IEBAIGk5MTVfcmVxdWVzdF9hd2FpdF9y ZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnRvLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9t KQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWlmICh0by0+ZW5naW5lLT5zY2hlZHVsZSkgewo+ IC0JCXJldCA9IGk5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeSh0by0+aTkxNSwKPiAtCQkJ CQkJICAgICAmdG8tPnNjaGVkLAo+IC0JCQkJCQkgICAgICZmcm9tLT5zY2hlZCk7Cj4gKwkJcmV0 ID0gaTkxNV9zY2hlZF9ub2RlX2FkZF9kZXBlbmRlbmN5KCZ0by0+c2NoZWQsICZmcm9tLT5zY2hl ZCk7Cj4gICAJCWlmIChyZXQgPCAwKQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gQEAgLTEx OTUsMyArMTE5OCwzNyBAQCB2b2lkIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICAgI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuYyIK PiAgICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMiCj4gICAjZW5kaWYKPiArCj4g K2ludCBpOTE1X2dsb2JhbF9yZXF1ZXN0X2luaXQodm9pZCkKPiArewo+ICsJZ2xvYmFsLnNsYWJf cmVxdWVzdHMgPSBLTUVNX0NBQ0hFKGk5MTVfcmVxdWVzdCwKPiArCQkJCQkgIFNMQUJfSFdDQUNI RV9BTElHTiB8Cj4gKwkJCQkJICBTTEFCX1JFQ0xBSU1fQUNDT1VOVCB8Cj4gKwkJCQkJICBTTEFC X1RZUEVTQUZFX0JZX1JDVSk7Cj4gKwlpZiAoIWdsb2JhbC5zbGFiX3JlcXVlc3RzKQo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCWdsb2JhbC5zbGFiX2RlcGVuZGVuY2llcyA9IEtNRU1fQ0FD SEUoaTkxNV9kZXBlbmRlbmN5LAo+ICsJCQkJCSAgICAgIFNMQUJfSFdDQUNIRV9BTElHTiB8Cj4g KwkJCQkJICAgICAgU0xBQl9SRUNMQUlNX0FDQ09VTlQpOwo+ICsJaWYgKCFnbG9iYWwuc2xhYl9k ZXBlbmRlbmNpZXMpCj4gKwkJZ290byBlcnJfcmVxdWVzdHM7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g Kwo+ICtlcnJfcmVxdWVzdHM6Cj4gKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZ2xvYmFsLnNsYWJfcmVx dWVzdHMpOwo+ICsJcmV0dXJuIC1FTk9NRU07Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9nbG9iYWxf cmVxdWVzdF9zaHJpbmsodm9pZCkKPiArewo+ICsJa21lbV9jYWNoZV9zaHJpbmsoZ2xvYmFsLnNs YWJfZGVwZW5kZW5jaWVzKTsKPiArCWttZW1fY2FjaGVfc2hyaW5rKGdsb2JhbC5zbGFiX3JlcXVl c3RzKTsKPiArfQo+ICsKPiArdm9pZCBpOTE1X2dsb2JhbF9yZXF1ZXN0X2V4aXQodm9pZCkKPiAr ewo+ICsJa21lbV9jYWNoZV9kZXN0cm95KGdsb2JhbC5zbGFiX2RlcGVuZGVuY2llcyk7Cj4gKwlr bWVtX2NhY2hlX2Rlc3Ryb3koZ2xvYmFsLnNsYWJfcmVxdWVzdHMpOwo+ICt9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBpbmRleCAzY2ZmYjk2MjAzYjkuLjA1NGJkMzAwOTg0YiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gQEAgLTI5LDYgKzI5LDcgQEAK PiAgIAo+ICAgI2luY2x1ZGUgImk5MTVfZ2VtLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9zY2hlZHVs ZXIuaCIKPiArI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiAgICNpbmNsdWRlICJpOTE1X3N3 X2ZlbmNlLmgiCj4gICAKPiAgICNpbmNsdWRlIDx1YXBpL2RybS9pOTE1X2RybS5oPgo+IEBAIC0y MDQsNiArMjA1LDExIEBAIHN0cnVjdCBpOTE1X3JlcXVlc3Qgewo+ICAgCXN0cnVjdCBkcm1faTkx NV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKPiAgIAkvKiogZmlsZV9wcml2IGxpc3QgZW50cnkg Zm9yIHRoaXMgcmVxdWVzdCAqLwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgY2xpZW50X2xpbms7Cj4g Kwo+ICsJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVjdCB7Cj4gKwkJc3RydWN0IGxpc3RfaGVh ZCBsaW5rOwo+ICsJCXVuc2lnbmVkIGxvbmcgZGVsYXk7Cj4gKwl9IG1vY2s7KQo+ICAgfTsKPiAg IAo+ICAgI2RlZmluZSBJOTE1X0ZFTkNFX0dGUCAoR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01B WUZBSUwgfCBfX0dGUF9OT1dBUk4pCj4gQEAgLTc4Niw0ICs3OTIsOCBAQCBpOTE1X2dlbV9hY3Rp dmVfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKPiAgICNkZWZpbmUgZm9y X2VhY2hfYWN0aXZlKG1hc2ssIGlkeCkgXAo+ICAgCWZvciAoOyBtYXNrID8gaWR4ID0gZmZzKG1h c2spIC0gMSwgMSA6IDA7IG1hc2sgJj0gfkJJVChpZHgpKQo+ICAgCj4gK2ludCBpOTE1X2dsb2Jh bF9yZXF1ZXN0X2luaXQodm9pZCk7Cj4gK3ZvaWQgaTkxNV9nbG9iYWxfcmVxdWVzdF9zaHJpbmso dm9pZCk7Cj4gK3ZvaWQgaTkxNV9nbG9iYWxfcmVxdWVzdF9leGl0KHZvaWQpOwo+ICsKPiAgICNl bmRpZiAvKiBJOTE1X1JFUVVFU1RfSCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVs ZXIuYwo+IGluZGV4IGQwMTY4MzE2N2M3Ny4uN2MxZDllZjk4Mzc0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gQEAgLTEwLDYgKzEwLDExIEBACj4gICAjaW5jbHVk ZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9zY2hlZHVsZXIuaCIKPiAgIAo+ ICtzdGF0aWMgc3RydWN0IGk5MTVfZ2xvYmFsX3NjaGVkdWxlciB7Cj4gKwlzdHJ1Y3Qga21lbV9j YWNoZSAqc2xhYl9kZXBlbmRlbmNpZXM7Cj4gKwlzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYl9wcmlv cml0aWVzOwo+ICt9IGdsb2JhbDsKPiArCj4gICBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHNjaGVk dWxlX2xvY2spOwo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4g QEAgLTMyLDE2ICszNywxNSBAQCB2b2lkIGk5MTVfc2NoZWRfbm9kZV9pbml0KHN0cnVjdCBpOTE1 X3NjaGVkX25vZGUgKm5vZGUpCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9kZXBl bmRlbmN5ICoKPiAtaTkxNV9kZXBlbmRlbmN5X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICtpOTE1X2RlcGVuZGVuY3lfYWxsb2Modm9pZCkKPiAgIHsKPiAtCXJldHVybiBr bWVtX2NhY2hlX2FsbG9jKGk5MTUtPmRlcGVuZGVuY2llcywgR0ZQX0tFUk5FTCk7Cj4gKwlyZXR1 cm4ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9kZXBlbmRlbmNpZXMsIEdGUF9LRVJORUwp Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZAo+IC1pOTE1X2RlcGVuZGVuY3lfZnJlZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVu Y3kgKmRlcCkKPiAraTkxNV9kZXBlbmRlbmN5X2ZyZWUoc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAq ZGVwKQo+ICAgewo+IC0Ja21lbV9jYWNoZV9mcmVlKGk5MTUtPmRlcGVuZGVuY2llcywgZGVwKTsK PiArCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9kZXBlbmRlbmNpZXMsIGRlcCk7Cj4gICB9 Cj4gICAKPiAgIGJvb2wgX19pOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiBAQCAtNjgsMjUgKzcyLDIzIEBAIGJvb2wgX19pOTE1X3Nj aGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAg IAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLWludCBpOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVu ZGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJCQkgICBzdHJ1Y3QgaTkx NV9zY2hlZF9ub2RlICpub2RlLAo+ICtpbnQgaTkxNV9zY2hlZF9ub2RlX2FkZF9kZXBlbmRlbmN5 KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsCj4gICAJCQkJICAgc3RydWN0IGk5MTVfc2No ZWRfbm9kZSAqc2lnbmFsKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRlcDsK PiAgIAo+IC0JZGVwID0gaTkxNV9kZXBlbmRlbmN5X2FsbG9jKGk5MTUpOwo+ICsJZGVwID0gaTkx NV9kZXBlbmRlbmN5X2FsbG9jKCk7Cj4gICAJaWYgKCFkZXApCj4gICAJCXJldHVybiAtRU5PTUVN Owo+ICAgCj4gICAJaWYgKCFfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShub2RlLCBz aWduYWwsIGRlcCwKPiAgIAkJCQkJICAgICAgSTkxNV9ERVBFTkRFTkNZX0FMTE9DKSkKPiAtCQlp OTE1X2RlcGVuZGVuY3lfZnJlZShpOTE1LCBkZXApOwo+ICsJCWk5MTVfZGVwZW5kZW5jeV9mcmVl KGRlcCk7Cj4gICAKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC12b2lkIGk5MTVfc2NoZWRf bm9kZV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCQkgIHN0cnVjdCBp OTE1X3NjaGVkX25vZGUgKm5vZGUpCj4gK3ZvaWQgaTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0 IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5 ICpkZXAsICp0bXA7Cj4gICAKPiBAQCAtMTA2LDcgKzEwOCw3IEBAIHZvaWQgaTkxNV9zY2hlZF9u b2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIAkJbGlzdF9k ZWwoJmRlcC0+d2FpdF9saW5rKTsKPiAgIAkJaWYgKGRlcC0+ZmxhZ3MgJiBJOTE1X0RFUEVOREVO Q1lfQUxMT0MpCj4gLQkJCWk5MTVfZGVwZW5kZW5jeV9mcmVlKGk5MTUsIGRlcCk7Cj4gKwkJCWk5 MTVfZGVwZW5kZW5jeV9mcmVlKGRlcCk7Cj4gICAJfQo+ICAgCj4gICAJLyogUmVtb3ZlIG91cnNl bHZlcyBmcm9tIGV2ZXJ5b25lIHdobyBkZXBlbmRzIHVwb24gdXMgKi8KPiBAQCAtMTE2LDcgKzEx OCw3IEBAIHZvaWQgaTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCj4gICAKPiAgIAkJbGlzdF9kZWwoJmRlcC0+c2lnbmFsX2xpbmspOwo+ICAgCQlpZiAo ZGVwLT5mbGFncyAmIEk5MTVfREVQRU5ERU5DWV9BTExPQykKPiAtCQkJaTkxNV9kZXBlbmRlbmN5 X2ZyZWUoaTkxNSwgZGVwKTsKPiArCQkJaTkxNV9kZXBlbmRlbmN5X2ZyZWUoZGVwKTsKPiAgIAl9 Cj4gICAKPiAgIAlzcGluX3VubG9jaygmc2NoZWR1bGVfbG9jayk7Cj4gQEAgLTE5Myw3ICsxOTUs NyBAQCBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIGludCBwcmlvKQo+ICAgCWlmIChwcmlvID09IEk5MTVfUFJJT1JJVFlfTk9STUFMKSB7 Cj4gICAJCXAgPSAmZXhlY2xpc3RzLT5kZWZhdWx0X3ByaW9saXN0Owo+ICAgCX0gZWxzZSB7Cj4g LQkJcCA9IGttZW1fY2FjaGVfYWxsb2MoZW5naW5lLT5pOTE1LT5wcmlvcml0aWVzLCBHRlBfQVRP TUlDKTsKPiArCQlwID0ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9wcmlvcml0aWVzLCBH RlBfQVRPTUlDKTsKPiAgIAkJLyogQ29udmVydCBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgdG8gYSBw cmlvcml0eSBidW1wICovCj4gICAJCWlmICh1bmxpa2VseSghcCkpIHsKPiAgIAkJCXByaW8gPSBJ OTE1X1BSSU9SSVRZX05PUk1BTDsgLyogcmVjdXJzZXMganVzdCBvbmNlICovCj4gQEAgLTQwOCwz ICs0MTAsMzkgQEAgdm9pZCBpOTE1X3NjaGVkdWxlX2J1bXBfcHJpb3JpdHkoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsIHVuc2lnbmVkIGludCBidW1wKQo+ICAgCj4gICAJc3Bpbl91bmxvY2tfYmgo JnNjaGVkdWxlX2xvY2spOwo+ICAgfQo+ICsKPiArdm9pZCBfX2k5MTVfcHJpb2xpc3RfZnJlZShz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKPiArewo+ICsJa21lbV9jYWNoZV9mcmVlKGdsb2JhbC5z bGFiX3ByaW9yaXRpZXMsIHApOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV9nbG9iYWxfc2NoZWR1bGVy X2luaXQodm9pZCkKPiArewo+ICsJZ2xvYmFsLnNsYWJfZGVwZW5kZW5jaWVzID0gS01FTV9DQUNI RShpOTE1X2RlcGVuZGVuY3ksCj4gKwkJCQkJICAgICAgU0xBQl9IV0NBQ0hFX0FMSUdOKTsKPiAr CWlmICghZ2xvYmFsLnNsYWJfZGVwZW5kZW5jaWVzKQo+ICsJCXJldHVybiAtRU5PTUVNOwoKUmln aHQsIHNvIHRoaXMgc2xhYiBpcyBkdXBsaWNhdGVkLiBJdCBjb3VsZCBlbmQgdXAgbWVyZ2VkIGJ5 IHRoZSBjb3JlLCAKYnV0IEkgYW0gdGhpbmtpbmcgaWYgdGhpcyBpcyB0aGUgZGlyZWN0aW9uIHdl IHdhbnQgdG8gZ28ganVzdCB0byBhdm9pZCAKc29tZSBwb2ludGVyIGNoYXNpbmcuCgpZb3Ugd291 bGRuJ3QgY29uc2lkZXIgaTkxNS0+Z2xvYmFsLT5zbGFiX2RlcGVuZGVuY2llcyBvciBzb21ldGhp bmcgYWxvbmcgCnRob3NlIGxpbmVzPwoKUmVnYXJkcywKClR2cnRrbwoKPiArCj4gKwlnbG9iYWwu c2xhYl9wcmlvcml0aWVzID0gS01FTV9DQUNIRShpOTE1X3ByaW9saXN0LAo+ICsJCQkJCSAgICBT TEFCX0hXQ0FDSEVfQUxJR04pOwo+ICsJaWYgKCFnbG9iYWwuc2xhYl9wcmlvcml0aWVzKQo+ICsJ CWdvdG8gZXJyX3ByaW9yaXRpZXM7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfcHJpb3Jp dGllczoKPiArCWttZW1fY2FjaGVfZGVzdHJveShnbG9iYWwuc2xhYl9wcmlvcml0aWVzKTsKPiAr CXJldHVybiAtRU5PTUVNOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9z aHJpbmsodm9pZCkKPiArewo+ICsJa21lbV9jYWNoZV9zaHJpbmsoZ2xvYmFsLnNsYWJfZGVwZW5k ZW5jaWVzKTsKPiArCWttZW1fY2FjaGVfc2hyaW5rKGdsb2JhbC5zbGFiX3ByaW9yaXRpZXMpOwo+ ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9leGl0KHZvaWQpCj4gK3sKPiAr CWttZW1fY2FjaGVfZGVzdHJveShnbG9iYWwuc2xhYl9kZXBlbmRlbmNpZXMpOwo+ICsJa21lbV9j YWNoZV9kZXN0cm95KGdsb2JhbC5zbGFiX3ByaW9yaXRpZXMpOwo+ICt9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gaW5kZXggNTRiZDZjODk4MTdlLi41MTk2Y2UwN2I2YzIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiBAQCAtODUsNiArODUs MjMgQEAgc3RydWN0IGk5MTVfZGVwZW5kZW5jeSB7Cj4gICAjZGVmaW5lIEk5MTVfREVQRU5ERU5D WV9BTExPQyBCSVQoMCkKPiAgIH07Cj4gICAKPiArc3RydWN0IGk5MTVfcHJpb2xpc3Qgewo+ICsJ c3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0c1tJOTE1X1BSSU9SSVRZX0NPVU5UXTsKPiArCXN0cnVj dCByYl9ub2RlIG5vZGU7Cj4gKwl1bnNpZ25lZCBsb25nIHVzZWQ7Cj4gKwlpbnQgcHJpb3JpdHk7 Cj4gK307Cj4gKwo+ICsjZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3QoaXQsIHBsaXN0 LCBpZHgpIFwKPiArCWZvciAoaWR4ID0gMDsgaWR4IDwgQVJSQVlfU0laRSgocGxpc3QpLT5yZXF1 ZXN0cyk7IGlkeCsrKSBcCj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdCwgJihwbGlzdCktPnJl cXVlc3RzW2lkeF0sIHNjaGVkLmxpbmspCj4gKwo+ICsjZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNo X3JlcXVlc3RfY29uc3VtZShpdCwgbiwgcGxpc3QsIGlkeCkgXAo+ICsJZm9yICg7IChpZHggPSBm ZnMoKHBsaXN0KS0+dXNlZCkpOyAocGxpc3QpLT51c2VkICY9IH5CSVQoaWR4IC0gMSkpIFwKPiAr CQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQsIG4sIFwKPiArCQkJCQkgJihwbGlzdCktPnJl cXVlc3RzW2lkeCAtIDFdLCBcCj4gKwkJCQkJIHNjaGVkLmxpbmspCj4gKwo+ICAgdm9pZCBpOTE1 X3NjaGVkX25vZGVfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKTsKPiAgIAo+ICAg Ym9vbCBfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgaTkxNV9zY2hlZF9u b2RlICpub2RlLAo+IEBAIC05MiwxMiArMTA5LDEwIEBAIGJvb2wgX19pOTE1X3NjaGVkX25vZGVf YWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAgIAkJCQkgICAg ICBzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICpkZXAsCj4gICAJCQkJICAgICAgdW5zaWduZWQgbG9u ZyBmbGFncyk7Cj4gICAKPiAtaW50IGk5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJCSAgIHN0cnVjdCBpOTE1X3NjaGVkX25v ZGUgKm5vZGUsCj4gK2ludCBpOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAgIAkJCQkgICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpz aWduYWwpOwo+ICAgCj4gLXZvaWQgaTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gLQkJCSAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7Cj4g K3ZvaWQgaTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7 Cj4gICAKPiAgIHZvaWQgaTkxNV9zY2hlZHVsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 LAo+ICAgCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKPiBAQCAtMTA3 LDQgKzEyMiwxNSBAQCB2b2lkIGk5MTVfc2NoZWR1bGVfYnVtcF9wcmlvcml0eShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgaW50IGJ1bXApOwo+ICAgc3RydWN0IGxpc3RfaGVhZCAq Cj4gICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIGludCBwcmlvKTsKPiAgIAo+ICt2b2lkIF9faTkxNV9wcmlvbGlzdF9mcmVlKHN0cnVj dCBpOTE1X3ByaW9saXN0ICpwKTsKPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHJpb2xpc3Rf ZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKPiArewo+ICsJaWYgKHAtPnByaW9yaXR5ICE9 IEk5MTVfUFJJT1JJVFlfTk9STUFMKQo+ICsJCV9faTkxNV9wcmlvbGlzdF9mcmVlKHApOwo+ICt9 Cj4gKwo+ICtpbnQgaTkxNV9nbG9iYWxfc2NoZWR1bGVyX2luaXQodm9pZCk7Cj4gK3ZvaWQgaTkx NV9nbG9iYWxfc2NoZWR1bGVyX3Nocmluayh2b2lkKTsKPiArdm9pZCBpOTE1X2dsb2JhbF9zY2hl ZHVsZXJfZXhpdCh2b2lkKTsKPiArCj4gICAjZW5kaWYgLyogX0k5MTVfU0NIRURVTEVSX0hfICov Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXgg OGJjOGFhNTRhYTM1Li40Y2Y5NDUxMzYxNWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNzgxLDggKzc4MSw3IEBAIHN0YXRpYyBib29s IF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQl9Cj4g ICAKPiAgIAkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAmZXhlY2xpc3RzLT5xdWV1ZSk7Cj4g LQkJaWYgKHAtPnByaW9yaXR5ICE9IEk5MTVfUFJJT1JJVFlfTk9STUFMKQo+IC0JCQlrbWVtX2Nh Y2hlX2ZyZWUoZW5naW5lLT5pOTE1LT5wcmlvcml0aWVzLCBwKTsKPiArCQlpOTE1X3ByaW9saXN0 X2ZyZWUocCk7Cj4gICAJfQo+ICAgZG9uZToKPiAgIAlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5 X2hpbnQgPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggOGUzMDFmMTkwMzZiLi5l MzdmMjA3YWZiNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC04MDYsOCAr ODA2LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgCQl9Cj4gICAKPiAgIAkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2Rl LCAmZXhlY2xpc3RzLT5xdWV1ZSk7Cj4gLQkJaWYgKHAtPnByaW9yaXR5ICE9IEk5MTVfUFJJT1JJ VFlfTk9STUFMKQo+IC0JCQlrbWVtX2NhY2hlX2ZyZWUoZW5naW5lLT5pOTE1LT5wcmlvcml0aWVz LCBwKTsKPiArCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7Cj4gICAJfQo+ICAgCj4gICBkb25lOgo+ IEBAIC05NjYsOCArOTY1LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCX0KPiAgIAo+ICAgCQlyYl9l cmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsKPiAtCQlpZiAocC0+cHJp b3JpdHkgIT0gSTkxNV9QUklPUklUWV9OT1JNQUwpCj4gLQkJCWttZW1fY2FjaGVfZnJlZShlbmdp bmUtPmk5MTUtPnByaW9yaXRpZXMsIHApOwo+ICsJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiAg IAl9Cj4gICAKPiAgIAlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDgxODNkMzQ0MTkwNy4uNWRmZmNj YjY3NDBlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBA IC0xODUsMjMgKzE4NSw2IEBAIGVudW0gaW50ZWxfZW5naW5lX2lkIHsKPiAgICNkZWZpbmUgX1ZF Q1MobikgKFZFQ1MgKyAobikpCj4gICB9Owo+ICAgCj4gLXN0cnVjdCBpOTE1X3ByaW9saXN0IHsK PiAtCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHNbSTkxNV9QUklPUklUWV9DT1VOVF07Cj4gLQlz dHJ1Y3QgcmJfbm9kZSBub2RlOwo+IC0JdW5zaWduZWQgbG9uZyB1c2VkOwo+IC0JaW50IHByaW9y aXR5Owo+IC19Owo+IC0KPiAtI2RlZmluZSBwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0KGl0LCBw bGlzdCwgaWR4KSBcCj4gLQlmb3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoKHBsaXN0KS0+ cmVxdWVzdHMpOyBpZHgrKykgXAo+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnkoaXQsICYocGxpc3Qp LT5yZXF1ZXN0c1tpZHhdLCBzY2hlZC5saW5rKQo+IC0KPiAtI2RlZmluZSBwcmlvbGlzdF9mb3Jf ZWFjaF9yZXF1ZXN0X2NvbnN1bWUoaXQsIG4sIHBsaXN0LCBpZHgpIFwKPiAtCWZvciAoOyAoaWR4 ID0gZmZzKChwbGlzdCktPnVzZWQpKTsgKHBsaXN0KS0+dXNlZCAmPSB+QklUKGlkeCAtIDEpKSBc Cj4gLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0LCBuLCBcCj4gLQkJCQkJICYocGxpc3Qp LT5yZXF1ZXN0c1tpZHggLSAxXSwgXAo+IC0JCQkJCSBzY2hlZC5saW5rKQo+IC0KPiAgIHN0cnVj dCBzdF9wcmVlbXB0X2hhbmcgewo+ICAgCXN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247Cj4g ICAJdW5zaWduZWQgaW50IGNvdW50Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfbHJjLmMKPiBpbmRleCA5NjdjZWZhMTE4ZWUuLjMwYWIwZTA0YTY3NCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiBAQCAtNDQwLDcgKzQ0 MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpkdW1teV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHN0YXRpYyB2b2lkIGR1bW15X3JlcXVlc3RfZnJl ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpkdW1teSkKPiAgIHsKPiAgIAlpOTE1X3JlcXVlc3RfbWFy a19jb21wbGV0ZShkdW1teSk7Cj4gLQlpOTE1X3NjaGVkX25vZGVfZmluaShkdW1teS0+ZW5naW5l LT5pOTE1LCAmZHVtbXktPnNjaGVkKTsKPiArCWk5MTVfc2NoZWRfbm9kZV9maW5pKCZkdW1teS0+ c2NoZWQpOwo+ICAgCWtmcmVlKGR1bW15KTsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gaW5kZXggMDhmMGNhYjAyZTBmLi4wZDM1 YWYwNzg2N2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19l bmdpbmUuYwo+IEBAIC03NiwyOCArNzYsMjcgQEAgc3RhdGljIHZvaWQgbW9ja19yaW5nX2ZyZWUo c3RydWN0IGludGVsX3JpbmcgKmJhc2UpCj4gICAJa2ZyZWUocmluZyk7Cj4gICB9Cj4gICAKPiAt c3RhdGljIHN0cnVjdCBtb2NrX3JlcXVlc3QgKmZpcnN0X3JlcXVlc3Qoc3RydWN0IG1vY2tfZW5n aW5lICplbmdpbmUpCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmaXJzdF9yZXF1ZXN0 KHN0cnVjdCBtb2NrX2VuZ2luZSAqZW5naW5lKQo+ICAgewo+ICAgCXJldHVybiBsaXN0X2ZpcnN0 X2VudHJ5X29yX251bGwoJmVuZ2luZS0+aHdfcXVldWUsCj4gLQkJCQkJc3RydWN0IG1vY2tfcmVx dWVzdCwKPiAtCQkJCQlsaW5rKTsKPiArCQkJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0LAo+ICsJCQkJ CW1vY2subGluayk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgYWR2YW5jZShzdHJ1Y3QgbW9j a19yZXF1ZXN0ICpyZXF1ZXN0KQo+ICtzdGF0aWMgdm9pZCBhZHZhbmNlKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gLQlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5saW5rKTsK PiAtCWludGVsX2VuZ2luZV93cml0ZV9nbG9iYWxfc2Vxbm8ocmVxdWVzdC0+YmFzZS5lbmdpbmUs Cj4gLQkJCQkJcmVxdWVzdC0+YmFzZS5nbG9iYWxfc2Vxbm8pOwo+IC0JaTkxNV9yZXF1ZXN0X21h cmtfY29tcGxldGUoJnJlcXVlc3QtPmJhc2UpOwo+IC0JR0VNX0JVR19PTighaTkxNV9yZXF1ZXN0 X2NvbXBsZXRlZCgmcmVxdWVzdC0+YmFzZSkpOwo+ICsJbGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+ bW9jay5saW5rKTsKPiArCWludGVsX2VuZ2luZV93cml0ZV9nbG9iYWxfc2Vxbm8ocmVxdWVzdC0+ ZW5naW5lLCByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwo+ICsJaTkxNV9yZXF1ZXN0X21hcmtfY29t cGxldGUocmVxdWVzdCk7Cj4gKwlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJl cXVlc3QpKTsKPiAgIAo+IC0JaW50ZWxfZW5naW5lX3F1ZXVlX2JyZWFkY3J1bWJzKHJlcXVlc3Qt PmJhc2UuZW5naW5lKTsKPiArCWludGVsX2VuZ2luZV9xdWV1ZV9icmVhZGNydW1icyhyZXF1ZXN0 LT5lbmdpbmUpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBod19kZWxheV9jb21wbGV0ZShz dHJ1Y3QgdGltZXJfbGlzdCAqdCkKPiAgIHsKPiAgIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2lu ZSA9IGZyb21fdGltZXIoZW5naW5lLCB0LCBod19kZWxheSk7Cj4gLQlzdHJ1Y3QgbW9ja19yZXF1 ZXN0ICpyZXF1ZXN0Owo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKPiAgIAl1bnNp Z25lZCBsb25nIGZsYWdzOwo+ICAgCj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+aHdf bG9jaywgZmxhZ3MpOwo+IEBAIC0xMTIsOCArMTExLDkgQEAgc3RhdGljIHZvaWQgaHdfZGVsYXlf Y29tcGxldGUoc3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gICAJICogcmVxdWV1ZSB0aGUgdGltZXIg Zm9yIHRoZSBuZXh0IGRlbGF5ZWQgcmVxdWVzdC4KPiAgIAkgKi8KPiAgIAl3aGlsZSAoKHJlcXVl c3QgPSBmaXJzdF9yZXF1ZXN0KGVuZ2luZSkpKSB7Cj4gLQkJaWYgKHJlcXVlc3QtPmRlbGF5KSB7 Cj4gLQkJCW1vZF90aW1lcigmZW5naW5lLT5od19kZWxheSwgamlmZmllcyArIHJlcXVlc3QtPmRl bGF5KTsKPiArCQlpZiAocmVxdWVzdC0+bW9jay5kZWxheSkgewo+ICsJCQltb2RfdGltZXIoJmVu Z2luZS0+aHdfZGVsYXksCj4gKwkJCQkgIGppZmZpZXMgKyByZXF1ZXN0LT5tb2NrLmRlbGF5KTsK PiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAKPiBAQCAtMTcxLDEwICsxNzEsOCBAQCBtb2NrX2Nv bnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAo+ICAgc3RhdGlj IGludCBtb2NrX3JlcXVlc3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAg IHsKPiAtCXN0cnVjdCBtb2NrX3JlcXVlc3QgKm1vY2sgPSBjb250YWluZXJfb2YocmVxdWVzdCwg dHlwZW9mKCptb2NrKSwgYmFzZSk7Cj4gLQo+IC0JSU5JVF9MSVNUX0hFQUQoJm1vY2stPmxpbmsp Owo+IC0JbW9jay0+ZGVsYXkgPSAwOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJlcXVlc3QtPm1vY2su bGluayk7Cj4gKwlyZXF1ZXN0LT5tb2NrLmRlbGF5ID0gMDsKPiAgIAo+ICAgCXJldHVybiAwOwo+ ICAgfQo+IEBAIC0xOTIsNyArMTkwLDYgQEAgc3RhdGljIHUzMiAqbW9ja19lbWl0X2JyZWFkY3J1 bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKPiAgIAo+ICAgc3RhdGlj IHZvaWQgbW9ja19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ ICAgewo+IC0Jc3RydWN0IG1vY2tfcmVxdWVzdCAqbW9jayA9IGNvbnRhaW5lcl9vZihyZXF1ZXN0 LCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKPiAgIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSA9 Cj4gICAJCWNvbnRhaW5lcl9vZihyZXF1ZXN0LT5lbmdpbmUsIHR5cGVvZigqZW5naW5lKSwgYmFz ZSk7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiBAQCAtMjAxLDEyICsxOTgsMTMgQEAgc3Rh dGljIHZvaWQgbW9ja19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 KQo+ICAgCUdFTV9CVUdfT04oIXJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gICAKPiAgIAlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5od19sb2NrLCBmbGFncyk7Cj4gLQlsaXN0X2FkZF90YWls KCZtb2NrLT5saW5rLCAmZW5naW5lLT5od19xdWV1ZSk7Cj4gLQlpZiAobW9jay0+bGluay5wcmV2 ID09ICZlbmdpbmUtPmh3X3F1ZXVlKSB7Cj4gLQkJaWYgKG1vY2stPmRlbGF5KQo+IC0JCQltb2Rf dGltZXIoJmVuZ2luZS0+aHdfZGVsYXksIGppZmZpZXMgKyBtb2NrLT5kZWxheSk7Cj4gKwlsaXN0 X2FkZF90YWlsKCZyZXF1ZXN0LT5tb2NrLmxpbmssICZlbmdpbmUtPmh3X3F1ZXVlKTsKPiArCWlm IChsaXN0X2lzX2ZpcnN0KCZyZXF1ZXN0LT5tb2NrLmxpbmssICZlbmdpbmUtPmh3X3F1ZXVlKSkg ewo+ICsJCWlmIChyZXF1ZXN0LT5tb2NrLmRlbGF5KQo+ICsJCQltb2RfdGltZXIoJmVuZ2luZS0+ aHdfZGVsYXksCj4gKwkJCQkgIGppZmZpZXMgKyByZXF1ZXN0LT5tb2NrLmRlbGF5KTsKPiAgIAkJ ZWxzZQo+IC0JCQlhZHZhbmNlKG1vY2spOwo+ICsJCQlhZHZhbmNlKHJlcXVlc3QpOwo+ICAgCX0K PiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmh3X2xvY2ssIGZsYWdzKTsKPiAg IH0KPiBAQCAtMjY2LDEyICsyNjQsMTIgQEAgdm9pZCBtb2NrX2VuZ2luZV9mbHVzaChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IG1vY2tfZW5naW5lICpt b2NrID0KPiAgIAkJY29udGFpbmVyX29mKGVuZ2luZSwgdHlwZW9mKCptb2NrKSwgYmFzZSk7Cj4g LQlzdHJ1Y3QgbW9ja19yZXF1ZXN0ICpyZXF1ZXN0LCAqcm47Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyZXF1ZXN0LCAqcm47Cj4gICAKPiAgIAlkZWxfdGltZXJfc3luYygmbW9jay0+aHdfZGVs YXkpOwo+ICAgCj4gICAJc3Bpbl9sb2NrX2lycSgmbW9jay0+aHdfbG9jayk7Cj4gLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocmVxdWVzdCwgcm4sICZtb2NrLT5od19xdWV1ZSwgbGluaykKPiAr CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBybiwgJm1vY2stPmh3X3F1ZXVlLCBt b2NrLmxpbmspCj4gICAJCWFkdmFuY2UocmVxdWVzdCk7Cj4gICAJc3Bpbl91bmxvY2tfaXJxKCZt b2NrLT5od19sb2NrKTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggMDc0YTBkOWNiZjI2Li4xNzkxNWEyZDk0ZmEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2Rl dmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2Rl dmljZS5jCj4gQEAgLTc5LDkgKzc5LDYgQEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFz ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCj4gICAJZGVzdHJveV93b3JrcXVldWUoaTkx NS0+d3EpOwo+ICAgCj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+cHJpb3JpdGllcyk7Cj4g LQlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+ZGVwZW5kZW5jaWVzKTsKPiAtCWttZW1fY2FjaGVf ZGVzdHJveShpOTE1LT5yZXF1ZXN0cyk7Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPnZt YXMpOwo+ICAgCWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT5vYmplY3RzKTsKPiAgIAo+IEBAIC0y MTEsMjMgKzIwOCw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICptb2NrX2dlbV9kZXZpY2Uo dm9pZCkKPiAgIAlpZiAoIWk5MTUtPnZtYXMpCj4gICAJCWdvdG8gZXJyX29iamVjdHM7Cj4gICAK PiAtCWk5MTUtPnJlcXVlc3RzID0gS01FTV9DQUNIRShtb2NrX3JlcXVlc3QsCj4gLQkJCQkgICAg U0xBQl9IV0NBQ0hFX0FMSUdOIHwKPiAtCQkJCSAgICBTTEFCX1JFQ0xBSU1fQUNDT1VOVCB8Cj4g LQkJCQkgICAgU0xBQl9UWVBFU0FGRV9CWV9SQ1UpOwo+IC0JaWYgKCFpOTE1LT5yZXF1ZXN0cykK PiAtCQlnb3RvIGVycl92bWFzOwo+IC0KPiAtCWk5MTUtPmRlcGVuZGVuY2llcyA9IEtNRU1fQ0FD SEUoaTkxNV9kZXBlbmRlbmN5LAo+IC0JCQkJCVNMQUJfSFdDQUNIRV9BTElHTiB8Cj4gLQkJCQkJ U0xBQl9SRUNMQUlNX0FDQ09VTlQpOwo+IC0JaWYgKCFpOTE1LT5kZXBlbmRlbmNpZXMpCj4gLQkJ Z290byBlcnJfcmVxdWVzdHM7Cj4gLQo+IC0JaTkxNS0+cHJpb3JpdGllcyA9IEtNRU1fQ0FDSEUo aTkxNV9wcmlvbGlzdCwgU0xBQl9IV0NBQ0hFX0FMSUdOKTsKPiAtCWlmICghaTkxNS0+cHJpb3Jp dGllcykKPiAtCQlnb3RvIGVycl9kZXBlbmRlbmNpZXM7Cj4gLQo+ICAgCWk5MTVfdGltZWxpbmVz X2luaXQoaTkxNSk7Cj4gICAKPiAgIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Z3QuYWN0aXZlX3Jp bmdzKTsKPiBAQCAtMjU3LDEyICsyMzcsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9j a19nZW1fZGV2aWNlKHZvaWQpCj4gICBlcnJfdW5sb2NrOgo+ICAgCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaTkxNV90aW1lbGluZXNfZmluaShpOTE1KTsKPiAt CWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT5wcmlvcml0aWVzKTsKPiAtZXJyX2RlcGVuZGVuY2ll czoKPiAtCWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT5kZXBlbmRlbmNpZXMpOwo+IC1lcnJfcmVx dWVzdHM6Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+cmVxdWVzdHMpOwo+IC1lcnJfdm1h czoKPiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+dm1hcyk7Cj4gICBlcnJfb2JqZWN0czoK PiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+b2JqZWN0cyk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuYwo+IGluZGV4IDBkYzI5ZTI0MjU5Ny4u ZDFhN2M5NjA4NzEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX3JlcXVlc3QuYwo+IEBAIC0zMSwyOSArMzEsMjUgQEAgbW9ja19yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCj4g ICB7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKPiAtCXN0cnVjdCBtb2NrX3Jl cXVlc3QgKm1vY2s7Cj4gICAKPiAgIAkvKiBOQiB0aGUgaTkxNS0+cmVxdWVzdHMgc2xhYiBjYWNo ZSBpcyBlbmxhcmdlZCB0byBmaXQgbW9ja19yZXF1ZXN0ICovCj4gICAJcmVxdWVzdCA9IGk5MTVf cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGNvbnRleHQpOwo+ICAgCWlmIChJU19FUlIocmVxdWVzdCkp Cj4gICAJCXJldHVybiBOVUxMOwo+ICAgCj4gLQltb2NrID0gY29udGFpbmVyX29mKHJlcXVlc3Qs IHR5cGVvZigqbW9jayksIGJhc2UpOwo+IC0JbW9jay0+ZGVsYXkgPSBkZWxheTsKPiAtCj4gLQly ZXR1cm4gJm1vY2stPmJhc2U7Cj4gKwlyZXF1ZXN0LT5tb2NrLmRlbGF5ID0gZGVsYXk7Cj4gKwly ZXR1cm4gcmVxdWVzdDsKPiAgIH0KPiAgIAo+ICAgYm9vbCBtb2NrX2NhbmNlbF9yZXF1ZXN0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gLQlzdHJ1Y3QgbW9ja19yZXF1ZXN0 ICptb2NrID0gY29udGFpbmVyX29mKHJlcXVlc3QsIHR5cGVvZigqbW9jayksIGJhc2UpOwo+ICAg CXN0cnVjdCBtb2NrX2VuZ2luZSAqZW5naW5lID0KPiAgIAkJY29udGFpbmVyX29mKHJlcXVlc3Qt PmVuZ2luZSwgdHlwZW9mKCplbmdpbmUpLCBiYXNlKTsKPiAgIAlib29sIHdhc19xdWV1ZWQ7Cj4g ICAKPiAgIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPmh3X2xvY2spOwo+IC0Jd2FzX3F1ZXVlZCA9 ICFsaXN0X2VtcHR5KCZtb2NrLT5saW5rKTsKPiAtCWxpc3RfZGVsX2luaXQoJm1vY2stPmxpbmsp Owo+ICsJd2FzX3F1ZXVlZCA9ICFsaXN0X2VtcHR5KCZyZXF1ZXN0LT5tb2NrLmxpbmspOwo+ICsJ bGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+bW9jay5saW5rKTsKPiAgIAlzcGluX3VubG9ja19pcnEo JmVuZ2luZS0+aHdfbG9jayk7Cj4gICAKPiAgIAlpZiAod2FzX3F1ZXVlZCkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5oCj4gaW5kZXggOTk1ZmI3Mjgz ODBjLi40YWNmMDIxMWRmMjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfcmVxdWVzdC5oCj4gQEAgLTI5LDEzICsyOSw2IEBACj4gICAKPiAgICNpbmNsdWRl ICIuLi9pOTE1X3JlcXVlc3QuaCIKPiAgIAo+IC1zdHJ1Y3QgbW9ja19yZXF1ZXN0IHsKPiAtCXN0 cnVjdCBpOTE1X3JlcXVlc3QgYmFzZTsKPiAtCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4g LQl1bnNpZ25lZCBsb25nIGRlbGF5Owo+IC19Owo+IC0KPiAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qg Kgo+ICAgbW9ja19yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkg ICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjb250ZXh0LAo+IApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK