From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Brost Subject: Re: [PATCH 1/3] drm/i915/guc: Remove preemption support for current fw Date: Mon, 8 Jul 2019 17:45:38 -0700 Message-ID: <20190709004538.GA76627@sdutt> References: <20190702200947.26497-1-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 94E8D8985A for ; Tue, 9 Jul 2019 00:51:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190702200947.26497-1-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMDIsIDIwMTkgYXQgMDE6MDk6NDVQTSAtMDcwMCwgRGFuaWVsZSBDZXJhb2xv IFNwdXJpbyB3cm90ZToKPkZyb206IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+Cj5QcmVlbXB0aW9uIHZpYSBHdUMgc3VibWlzc2lvbiBpcyBub3QgYmVpbmcgc3VwcG9y dGVkIHdpdGggaXRzIGN1cnJlbnQKPmxlZ2FjeSBpbmNhcm5hdGlvbi4gVGhlIGN1cnJlbnQgRlcg ZG9lcyBzdXBwb3J0IGEgc2ltaWxhciBwcmUtZW1wdGlvbgo+ZmxvdyB2aWEgSDJHLCBidXQgaXQg aXMgY2xhc3MtYmFzZWQgaW5zdGVhZCBvZiBiZWluZyBpbnN0YW5jZS1iYXNlZCwKPndoaWNoIGRv ZXNuJ3QgZml0IHdlbGwgd2l0aCB0aGUgaTkxNSB0cmFja2luZy4gVG8gZml4IHRoaXMsIHRoZQo+ ZmlybXdhcmUgaXMgYmVpbmcgdXBkYXRlZCB0byBiZXR0ZXIgc3VwcG9ydCBvdXIgbmVlZHMgd2l0 aCBhIG5ldyBmbG93LAo+c28gd2UgY2FuIHNhZmVseSByZW1vdmUgdGhlIG9sZCBjb2RlLgo+Cj52 MiAoRGFuaWVsZSk6IHJlc3VycmVjdCAmIHJlYmFzZSwgcmV3b3JkIGNvbW1pdCBtZXNzYWdlLCBy ZW1vdmUKPnByZWVtcHRfY29udGV4dCBhcyB3ZWxsCj4KPlNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+U2lnbmVkLW9mZi1ieTogRGFuaWVsZSBD ZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPkNjOiBNaWNoYWwgV2FqZGVjemtv IDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPkNjOiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3 LmJyb3N0QGludGVsLmNvbT4KPkNjOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50 ZWwuY29tPgo+LS0tCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQu YyAgfCAgMTcgLS0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAg ICB8ICAxMyAtLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o IHwgICAxIC0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jICAgICAgICB8 ICAgNCAtCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgfCAg IDUgLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgIHwgICAy IC0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYyAgICAgICAgICAgICB8ICAzMSAt LS0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgICB8ICAgOSAt Cj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgfCAyMjAgKy0t LS0tLS0tLS0tLS0tLS0tLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9n dWMuYyAgIHwgIDMxICstLQo+IDEwIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMx OSBkZWxldGlvbnMoLSkKPgoKTm90aGluZyBpbiB0aGlzIHBhdGNoIGNvbmZsaWN0cyB3aXRoIHRo ZSB1cGRhdGVzIHRvIHRoZSBmaXJtd2FyZS9kcml2ZXIgSSdtCndvcmtpbmcgb24gdG8gYmV0dGVy IHN1cHBvcnQgb3VyIG5lZWRzLgoKQWNrZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPgoKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRl eHQuYwo+aW5kZXggOGE5Nzg3Y2YwY2QwLi45YzY5NTkxMGJjNDMgMTAwNjQ0Cj4tLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4rKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj5AQCAtNjQ0LDE4ICs2NDQsMTIgQEAg c3RhdGljIHZvaWQgaW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAJaW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5jb250ZXh0cy5mcmVlX2xpc3QpOwo+IH0KPgo+LXN0 YXRpYyBib29sIG5lZWRzX3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKPi17Cj4tCXJldHVybiBVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpOwo+LX0KPi0KPiBp bnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gewo+IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+Cj4gCS8qIFJlYXNzdXJl IG91cnNlbHZlcyB3ZSBhcmUgb25seSBjYWxsZWQgb25jZSAqLwo+IAlHRU1fQlVHX09OKGRldl9w cml2LT5rZXJuZWxfY29udGV4dCk7Cj4tCUdFTV9CVUdfT04oZGV2X3ByaXYtPnByZWVtcHRfY29u dGV4dCk7Cj4KPiAJaW50ZWxfZW5naW5lX2luaXRfY3R4X3dhKGRldl9wcml2LT5lbmdpbmVbUkNT MF0pOwo+IAlpbml0X2NvbnRleHRzKGRldl9wcml2KTsKPkBAIC02NzcsMTUgKzY3MSw2IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAJR0VNX0JVR19PTighYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50KSk7Cj4g CWRldl9wcml2LT5rZXJuZWxfY29udGV4dCA9IGN0eDsKPgo+LQkvKiBoaWdoZXN0IHByaW9yaXR5 OyBwcmVlbXB0aW5nIHRhc2sgKi8KPi0JaWYgKG5lZWRzX3ByZWVtcHRfY29udGV4dChkZXZfcHJp dikpIHsKPi0JCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChkZXZfcHJpdiwg SU5UX01BWCk7Cj4tCQlpZiAoIUlTX0VSUihjdHgpKQo+LQkJCWRldl9wcml2LT5wcmVlbXB0X2Nv bnRleHQgPSBjdHg7Cj4tCQllbHNlCj4tCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBy ZWVtcHQgY29udGV4dDsgZGlzYWJsaW5nIHByZWVtcHRpb25cbiIpOwo+LQl9Cj4tCj4gCURSTV9E RUJVR19EUklWRVIoIiVzIGNvbnRleHQgc3VwcG9ydCBpbml0aWFsaXplZFxuIiwKPiAJCQkgRFJJ VkVSX0NBUFMoZGV2X3ByaXYpLT5oYXNfbG9naWNhbF9jb250ZXh0cyA/Cj4gCQkJICJsb2dpY2Fs IiA6ICJmYWtlIik7Cj5AQCAtNjk2LDggKzY4MSw2IEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dHNf ZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiB7Cj4gCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+Cj4tCWlmIChpOTE1LT5wcmVlbXB0X2Nv bnRleHQpCj4tCQlkZXN0cm95X2tlcm5lbF9jb250ZXh0KCZpOTE1LT5wcmVlbXB0X2NvbnRleHQp Owo+IAlkZXN0cm95X2tlcm5lbF9jb250ZXh0KCZpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4KPiAJ LyogTXVzdCBmcmVlIGFsbCBkZWZlcnJlZCBjb250ZXh0cyAodmlhIGZsdXNoX3dvcmtxdWV1ZSkg Zmlyc3QgKi8KPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj5pbmRl eCBkMTUwOGYwYjRjODQuLjU1YjExNDA5YzFmMCAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwo+QEAgLTg0MiwxNSArODQyLDYgQEAgaW50IGludGVsX2VuZ2lu ZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gCWlmIChyZXQp Cj4gCQlyZXR1cm4gcmV0Owo+Cj4tCS8qCj4tCSAqIFNpbWlsYXJseSB0aGUgcHJlZW1wdCBjb250 ZXh0IG11c3QgYWx3YXlzIGJlIGF2YWlsYWJsZSBzbyB0aGF0Cj4tCSAqIHdlIGNhbiBpbnRlcnJ1 cHQgdGhlIGVuZ2luZSBhdCBhbnkgdGltZS4gSG93ZXZlciwgYXMgcHJlZW1wdGlvbgo+LQkgKiBp cyBvcHRpb25hbCwgd2UgYWxsb3cgaXQgdG8gZmFpbC4KPi0JICovCj4tCWlmIChpOTE1LT5wcmVl bXB0X2NvbnRleHQpCj4tCQlwaW5fY29udGV4dChpOTE1LT5wcmVlbXB0X2NvbnRleHQsIGVuZ2lu ZSwKPi0JCQkgICAgJmVuZ2luZS0+cHJlZW1wdF9jb250ZXh0KTsKPi0KPiAJcmV0ID0gbWVhc3Vy ZV9icmVhZGNydW1iX2R3KGVuZ2luZSk7Cj4gCWlmIChyZXQgPCAwKQo+IAkJZ290byBlcnJfdW5w aW47Cj5AQCAtODYyLDggKzg1Myw2IEBAIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IAlyZXR1cm4gMDsKPgo+IGVycl91bnBpbjoK Pi0JaWYgKGVuZ2luZS0+cHJlZW1wdF9jb250ZXh0KQo+LQkJaW50ZWxfY29udGV4dF91bnBpbihl bmdpbmUtPnByZWVtcHRfY29udGV4dCk7Cj4gCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5r ZXJuZWxfY29udGV4dCk7Cj4gCXJldHVybiByZXQ7Cj4gfQo+QEAgLTg4OCw4ICs4NzcsNiBAQCB2 b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCj4gCQlpOTE1X2dlbV9vYmplY3Rf cHV0KGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7Cj4KPi0JaWYgKGVuZ2luZS0+cHJlZW1wdF9jb250 ZXh0KQo+LQkJaW50ZWxfY29udGV4dF91bnBpbihlbmdpbmUtPnByZWVtcHRfY29udGV4dCk7Cj4g CWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gCUdFTV9CVUdf T04oIWxsaXN0X2VtcHR5KCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpKTsKPgo+ZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPmluZGV4IDdlMDU2MTE0MzQ0ZS4u OGJlNjMwMTlkNzA3IDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmgKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCj5AQCAtMjg4LDcgKzI4OCw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ IAlzdHJ1Y3QgbGxpc3RfaGVhZCBiYXJyaWVyX3Rhc2tzOwo+Cj4gCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICprZXJuZWxfY29udGV4dDsgLyogcGlubmVkICovCj4tCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpwcmVlbXB0X2NvbnRleHQ7IC8qIHBpbm5lZDsgb3B0aW9uYWwgKi8KPgo+IAlpbnRlbF9lbmdp bmVfbWFza190IHNhdHVyYXRlZDsgLyogc3VibWl0dGluZyBzZW1hcGhvcmVzIHRvbyBsYXRlPyAq Lwo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKPmluZGV4IDM2YmE4MGU2YTBi Ny4uZGE4MWIzYTkyZDE2IDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfcG0uYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwo+ QEAgLTE0NSwxMCArMTQ1LDYgQEAgaW50IGludGVsX2d0X3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQo+IAkJaWYgKGNlKQo+IAkJCWNlLT5vcHMtPnJlc2V0KGNlKTsKPgo+LQkJY2UgPSBlbmdp bmUtPnByZWVtcHRfY29udGV4dDsKPi0JCWlmIChjZSkKPi0JCQljZS0+b3BzLT5yZXNldChjZSk7 Cj4tCj4gCQllbmdpbmUtPnNlcmlhbCsrOyAvKiBrZXJuZWwgY29udGV4dCBsb3N0ICovCj4gCQll cnIgPSBlbmdpbmUtPnJlc3VtZShlbmdpbmUpOwo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+aW5kZXggZWVlY2RhZDBlM2NhLi4wMmVhYTE1ZDQ3YzAgMTAwNjQ0Cj4tLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPkBAIC0yMDE3LDExICsyMDE3LDYgQEAgc3RhdGljIGludCBpOTE1 X2d1Y19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPgo+IAlzZXFfcHJpbnRm KG0sICJcbkd1QyBleGVjYnVmIGNsaWVudCBAICVwOlxuIiwgZ3VjLT5leGVjYnVmX2NsaWVudCk7 Cj4gCWk5MTVfZ3VjX2NsaWVudF9pbmZvKG0sIGRldl9wcml2LCBndWMtPmV4ZWNidWZfY2xpZW50 KTsKPi0JaWYgKGd1Yy0+cHJlZW1wdF9jbGllbnQpIHsKPi0JCXNlcV9wcmludGYobSwgIlxuR3VD IHByZWVtcHQgY2xpZW50IEAgJXA6XG4iLAo+LQkJCSAgIGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+ LQkJaTkxNV9ndWNfY2xpZW50X2luZm8obSwgZGV2X3ByaXYsIGd1Yy0+cHJlZW1wdF9jbGllbnQp Owo+LQl9Cj4KPiAJLyogQWRkIG1vcmUgYXMgcmVxdWlyZWQgLi4uICovCj4KPmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+aW5kZXggMDJkZDlmOWYzYTg5Li4xY2RkMDY1MzlkYzUgMTAwNjQ0Cj4tLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj5AQCAtMTM3OCw4ICsxMzc4LDYgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgewo+IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmVbSTkxNV9OVU1fRU5HSU5F U107Cj4gCS8qIENvbnRleHQgdXNlZCBpbnRlcm5hbGx5IHRvIGlkbGUgdGhlIEdQVSBhbmQgc2V0 dXAgaW5pdGlhbCBzdGF0ZSAqLwo+IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2VybmVsX2Nv bnRleHQ7Cj4tCS8qIENvbnRleHQgb25seSB0byBiZSB1c2VkIGZvciBpbmplY3RpbmcgcHJlZW1w dGlvbiBjb21tYW5kcyAqLwo+LQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqcHJlZW1wdF9jb250 ZXh0Owo+IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmVfY2xhc3NbTUFYX0VOR0lORV9D TEFTUyArIDFdCj4gCQkJCQkgICAgW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTsKPgo+ZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmMKPmluZGV4IGM0MGE2ZWZkZDMzYS4uNTAxYjc0ZjQ0Mzc0IDEwMDY0 NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMKPisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCj5AQCAtMTAxLDggKzEwMSw2IEBAIHZvaWQgaW50ZWxf Z3VjX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+Cj4gc3RhdGljIGludCBndWNf aW5pdF93cShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gewo+LQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+LQo+IAkvKgo+IAkgKiBHdUMgbG9n IGJ1ZmZlciBmbHVzaCB3b3JrIGl0ZW0gaGFzIHRvIGRvIHJlZ2lzdGVyIGFjY2VzcyB0bwo+IAkg KiBzZW5kIHRoZSBhY2sgdG8gR3VDIGFuZCB0aGlzIHdvcmsgaXRlbSwgaWYgbm90IHN5bmNlZCBi ZWZvcmUKPkBAIC0xMjIsMzEgKzEyMCw2IEBAIHN0YXRpYyBpbnQgZ3VjX2luaXRfd3Eoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+IAkJcmV0dXJuIC1FTk9NRU07Cj4gCX0KPgo+LQkvKgo+LQkgKiBF dmVuIHRob3VnaCBib3RoIHNlbmRpbmcgR3VDIGFjdGlvbiwgYW5kIGFkZGluZyBhIG5ldyB3b3Jr aXRlbSB0bwo+LQkgKiBHdUMgd29ya3F1ZXVlIGFyZSBzZXJpYWxpemVkIChlYWNoIHdpdGggaXRz IG93biBsb2NraW5nKSwgc2luY2UKPi0JICogd2UncmUgdXNpbmcgbXV0bGlwbGUgZW5naW5lcywg aXQncyBwb3NzaWJsZSB0aGF0IHdlJ3JlIGdvaW5nIHRvCj4tCSAqIGlzc3VlIGEgcHJlZW1wdCBy ZXF1ZXN0IHdpdGggdHdvIChvciBtb3JlIC0gZWFjaCBmb3IgZGlmZmVyZW50Cj4tCSAqIGVuZ2lu ZSkgd29ya2l0ZW1zIGluIEd1QyBxdWV1ZS4gSW4gdGhpcyBzaXR1YXRpb24sIEd1QyBtYXkgc3Vi bWl0Cj4tCSAqIGFsbCBvZiB0aGVtLCB3aGljaCB3aWxsIG1ha2UgdXMgdmVyeSBjb25mdXNlZC4K Pi0JICogT3VyIHByZWVtcHRpb24gY29udGV4dHMgbWF5IGV2ZW4gYWxyZWFkeSBiZSBjb21wbGV0 ZSAtIGJlZm9yZSB3ZQo+LQkgKiBldmVuIGhhZCB0aGUgY2hhbmNlIHRvIHNlbnQgdGhlIHByZWVt cHQgYWN0aW9uIHRvIEd1QyEuIFJhdGhlcgo+LQkgKiB0aGFuIGludHJvZHVjaW5nIHlldCBhbm90 aGVyIGxvY2ssIHdlIGNhbiBqdXN0IHVzZSBvcmRlcmVkIHdvcmtxdWV1ZQo+LQkgKiB0byBtYWtl IHN1cmUgd2UncmUgYWx3YXlzIHNlbmRpbmcgYSBzaW5nbGUgcHJlZW1wdGlvbiByZXF1ZXN0IHdp dGggYQo+LQkgKiBzaW5nbGUgd29ya2l0ZW0uCj4tCSAqLwo+LQlpZiAoSEFTX0xPR0lDQUxfUklO R19QUkVFTVBUSU9OKGRldl9wcml2KSAmJgo+LQkgICAgVVNFU19HVUNfU1VCTUlTU0lPTihkZXZf cHJpdikpIHsKPi0JCWd1Yy0+cHJlZW1wdF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJp OTE1LWd1Y19wcmVlbXB0IiwKPi0JCQkJCQkJICBXUV9ISUdIUFJJKTsKPi0JCWlmICghZ3VjLT5w cmVlbXB0X3dxKSB7Cj4tCQkJZGVzdHJveV93b3JrcXVldWUoZ3VjLT5sb2cucmVsYXkuZmx1c2hf d3EpOwo+LQkJCURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgd29ya3F1ZXVlIGZvciBHdUMg Igo+LQkJCQkgICJwcmVlbXB0aW9uXG4iKTsKPi0JCQlyZXR1cm4gLUVOT01FTTsKPi0JCX0KPi0J fQo+LQo+IAlyZXR1cm4gMDsKPiB9Cj4KPkBAIC0xNTQsMTAgKzEyNyw2IEBAIHN0YXRpYyB2b2lk IGd1Y19maW5pX3dxKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiB7Cj4gCXN0cnVjdCB3b3JrcXVl dWVfc3RydWN0ICp3cTsKPgo+LQl3cSA9IGZldGNoX2FuZF96ZXJvKCZndWMtPnByZWVtcHRfd3Ep Owo+LQlpZiAod3EpCj4tCQlkZXN0cm95X3dvcmtxdWV1ZSh3cSk7Cj4tCj4gCXdxID0gZmV0Y2hf YW5kX3plcm8oJmd1Yy0+bG9nLnJlbGF5LmZsdXNoX3dxKTsKPiAJaWYgKHdxKQo+IAkJZGVzdHJv eV93b3JrcXVldWUod3EpOwo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPmluZGV4IGQ5MWM5NjY3 OWRiYi4uZWMxMDM4YzFmNTBlIDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjLmgKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj5AQCAtMzcs MTEgKzM3LDYgQEAKPgo+IHN0cnVjdCBfX2d1Y19hZHNfYmxvYjsKPgo+LXN0cnVjdCBndWNfcHJl ZW1wdF93b3JrIHsKPi0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4tCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPi19Owo+LQo+IC8qCj4gICogVG9wIGxldmVsIHN0cnVjdHVyZSBv ZiBHdUMuIEl0IGhhbmRsZXMgZmlybXdhcmUgbG9hZGluZyBhbmQgbWFuYWdlcyBjbGllbnQKPiAg KiBwb29sIGFuZCBkb29yYmVsbHMuIGludGVsX2d1YyBvd25zIGEgaW50ZWxfZ3VjX2NsaWVudCB0 byByZXBsYWNlIHRoZSBsZWdhY3kKPkBAIC03NiwxMCArNzEsNiBAQCBzdHJ1Y3QgaW50ZWxfZ3Vj IHsKPiAJdm9pZCAqc2hhcmVkX2RhdGFfdmFkZHI7Cj4KPiAJc3RydWN0IGludGVsX2d1Y19jbGll bnQgKmV4ZWNidWZfY2xpZW50Owo+LQlzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqcHJlZW1wdF9j bGllbnQ7Cj4tCj4tCXN0cnVjdCBndWNfcHJlZW1wdF93b3JrIHByZWVtcHRfd29ya1tJOTE1X05V TV9FTkdJTkVTXTsKPi0Jc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnByZWVtcHRfd3E7Cj4KPiAJ REVDTEFSRV9CSVRNQVAoZG9vcmJlbGxfYml0bWFwLCBHVUNfTlVNX0RPT1JCRUxMUyk7Cj4gCS8q IEN5Y2xpYyBjb3VudGVyIG1vZCBwYWdlc2l6ZQkqLwo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfc3VibWlzc2lvbi5jCj5pbmRleCAxMmMyMjM1OWZkYWMuLjg1MjBiYjIyNDE3NSAx MDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMK PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPkBAIC00 NiwxMSArNDYsMTAgQEAgZW51bSB7Cj4gICoKPiAgKiBHdUMgY2xpZW50Ogo+ICAqIEEgaW50ZWxf Z3VjX2NsaWVudCByZWZlcnMgdG8gYSBzdWJtaXNzaW9uIHBhdGggdGhyb3VnaCBHdUMuIEN1cnJl bnRseSwgdGhlcmUKPi0gKiBhcmUgdHdvIGNsaWVudHMuIE9uZSBvZiB0aGVtICh0aGUgZXhlY2J1 Zl9jbGllbnQpIGlzIGNoYXJnZWQgd2l0aCBhbGwKPi0gKiBzdWJtaXNzaW9ucyB0byB0aGUgR3VD LCB0aGUgb3RoZXIgb25lIChwcmVlbXB0X2NsaWVudCkgaXMgcmVzcG9uc2libGUgZm9yCj4tICog cHJlZW1wdGluZyB0aGUgZXhlY2J1Zl9jbGllbnQuIFRoaXMgc3RydWN0IGlzIHRoZSBvd25lciBv ZiBhIGRvb3JiZWxsLCBhCj4tICogcHJvY2VzcyBkZXNjcmlwdG9yIGFuZCBhIHdvcmtxdWV1ZSAo YWxsIG9mIHRoZW0gaW5zaWRlIGEgc2luZ2xlIGdlbSBvYmplY3QKPi0gKiB0aGF0IGNvbnRhaW5z IGFsbCByZXF1aXJlZCBwYWdlcyBmb3IgdGhlc2UgZWxlbWVudHMpLgo+KyAqIGlzIG9ubHkgb25l IGNsaWVudCwgd2hpY2ggaXMgY2hhcmdlZCB3aXRoIGFsbCBzdWJtaXNzaW9ucyB0byB0aGUgR3VD LiBUaGlzCj4rICogc3RydWN0IGlzIHRoZSBvd25lciBvZiBhIGRvb3JiZWxsLCBhIHByb2Nlc3Mg ZGVzY3JpcHRvciBhbmQgYSB3b3JrcXVldWUgKGFsbAo+KyAqIG9mIHRoZW0gaW5zaWRlIGEgc2lu Z2xlIGdlbSBvYmplY3QgdGhhdCBjb250YWlucyBhbGwgcmVxdWlyZWQgcGFnZXMgZm9yIHRoZXNl Cj4rICogZWxlbWVudHMpLgo+ICAqCj4gICogR3VDIHN0YWdlIGRlc2NyaXB0b3I6Cj4gICogRHVy aW5nIGluaXRpYWxpemF0aW9uLCB0aGUgZHJpdmVyIGFsbG9jYXRlcyBhIHN0YXRpYyBwb29sIG9m IDEwMjQgc3VjaAo+QEAgLTg4LDEyICs4Nyw2IEBAIGVudW0gewo+ICAqCj4gICovCj4KPi1zdGF0 aWMgaW5saW5lIHUzMiBpbnRlbF9od3NfcHJlZW1wdF9kb25lX2FkZHJlc3Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+LXsKPi0JcmV0dXJuIChpOTE1X2dndHRfb2Zmc2V0KGVuZ2lu ZS0+c3RhdHVzX3BhZ2Uudm1hKSArCj4tCQlJOTE1X0dFTV9IV1NfUFJFRU1QVF9BRERSKTsKPi19 Cj4tCj4gc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJpb2xpc3Qoc3Ry dWN0IHJiX25vZGUgKnJiKQo+IHsKPiAJcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9w cmlvbGlzdCwgbm9kZSk7Cj5AQCAtNTYzLDEyNiArNTU2LDYgQEAgc3RhdGljIHZvaWQgZmx1c2hf Z2d0dF93cml0ZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gCQlpbnRlbF91bmNvcmVfcG9zdGlu Z19yZWFkX2Z3KCZpOTE1LT51bmNvcmUsIEdVQ19TVEFUVVMpOwo+IH0KPgo+LXN0YXRpYyB2b2lk IGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+LXsKPi0J c3RydWN0IGd1Y19wcmVlbXB0X3dvcmsgKnByZWVtcHRfd29yayA9Cj4tCQljb250YWluZXJfb2Yo d29yaywgdHlwZW9mKCpwcmVlbXB0X3dvcmspLCB3b3JrKTsKPi0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcHJlZW1wdF93b3JrLT5lbmdpbmU7Cj4tCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9IGNvbnRhaW5lcl9vZihwcmVlbXB0X3dvcmssIHR5cGVvZigqZ3VjKSwKPi0JCQkJCSAg ICAgcHJlZW1wdF93b3JrW2VuZ2luZS0+aWRdKTsKPi0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQg KmNsaWVudCA9IGd1Yy0+cHJlZW1wdF9jbGllbnQ7Cj4tCXN0cnVjdCBndWNfc3RhZ2VfZGVzYyAq c3RhZ2VfZGVzYyA9IF9fZ2V0X3N0YWdlX2Rlc2MoY2xpZW50KTsKPi0Jc3RydWN0IGludGVsX2Nv bnRleHQgKmNlID0gZW5naW5lLT5wcmVlbXB0X2NvbnRleHQ7Cj4tCXUzMiBkYXRhWzddOwo+LQo+ LQlpZiAoIWNlLT5yaW5nLT5lbWl0KSB7IC8qIHJlY3JlYXRlIHVwb24gbG9hZC9yZXN1bWUgKi8K Pi0JCXUzMiBhZGRyID0gaW50ZWxfaHdzX3ByZWVtcHRfZG9uZV9hZGRyZXNzKGVuZ2luZSk7Cj4t CQl1MzIgKmNzOwo+LQo+LQkJY3MgPSBjZS0+cmluZy0+dmFkZHI7Cj4tCQlpZiAoZW5naW5lLT5j bGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKPi0JCQljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRlX3Jj cyhjcywKPi0JCQkJCQkgICAgICBHVUNfUFJFRU1QVF9GSU5JU0hFRCwKPi0JCQkJCQkgICAgICBh ZGRyLAo+LQkJCQkJCSAgICAgIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Cj4tCQl9IGVsc2Ugewo+ LQkJCWNzID0gZ2VuOF9lbWl0X2dndHRfd3JpdGUoY3MsCj4tCQkJCQkJICBHVUNfUFJFRU1QVF9G SU5JU0hFRCwKPi0JCQkJCQkgIGFkZHIsCj4tCQkJCQkJICAwKTsKPi0JCQkqY3MrKyA9IE1JX05P T1A7Cj4tCQkJKmNzKysgPSBNSV9OT09QOwo+LQkJfQo+LQkJKmNzKysgPSBNSV9VU0VSX0lOVEVS UlVQVDsKPi0JCSpjcysrID0gTUlfTk9PUDsKPi0KPi0JCWNlLT5yaW5nLT5lbWl0ID0gR1VDX1BS RUVNUFRfQlJFQURDUlVNQl9CWVRFUzsKPi0JCUdFTV9CVUdfT04oKHZvaWQgKiljcyAtIGNlLT5y aW5nLT52YWRkciAhPSBjZS0+cmluZy0+ZW1pdCk7Cj4tCj4tCQlmbHVzaF9nZ3R0X3dyaXRlcyhj ZS0+cmluZy0+dm1hKTsKPi0JfQo+LQo+LQlzcGluX2xvY2tfaXJxKCZjbGllbnQtPndxX2xvY2sp Owo+LQlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCBlbmdpbmUtPmd1Y19pZCwgbG93ZXJfMzJf Yml0cyhjZS0+bHJjX2Rlc2MpLAo+LQkJCSAgIEdVQ19QUkVFTVBUX0JSRUFEQ1JVTUJfQllURVMg LyBzaXplb2YodTY0KSwgMCk7Cj4tCXNwaW5fdW5sb2NrX2lycSgmY2xpZW50LT53cV9sb2NrKTsK Pi0KPi0JLyoKPi0JICogSWYgR3VDIGZpcm13YXJlIHBlcmZvcm1zIGFuIGVuZ2luZSByZXNldCB3 aGlsZSB0aGF0IGVuZ2luZSBoYWQKPi0JICogYSBwcmVlbXB0aW9uIHBlbmRpbmcsIGl0IHdpbGwg c2V0IHRoZSB0ZXJtaW5hdGVkIGF0dHJpYnV0ZSBiaXQKPi0JICogb24gb3VyIHByZWVtcHRpb24g c3RhZ2UgZGVzY3JpcHRvci4gR3VDIGZpcm13YXJlIHJldGFpbnMgYWxsCj4tCSAqIHBlbmRpbmcg d29yayBpdGVtcyBmb3IgYSBoaWdoLXByaW9yaXR5IEd1QyBjbGllbnQsIHVubGlrZSB0aGUKPi0J ICogbm9ybWFsLXByaW9yaXR5IEd1QyBjbGllbnQgd2hlcmUgd29yayBpdGVtcyBhcmUgZHJvcHBl ZC4gSXQKPi0JICogd2FudHMgdG8gbWFrZSBzdXJlIHRoZSBwcmVlbXB0LXRvLWlkbGUgd29yayBk b2Vzbid0IHJ1biB3aGVuCj4tCSAqIHNjaGVkdWxpbmcgcmVzdW1lcywgYW5kIHVzZXMgdGhpcyBi aXQgdG8gaW5mb3JtIGl0cyBzY2hlZHVsZXIKPi0JICogYW5kIHByZXN1bWFibHkgdXMgYXMgd2Vs bC4gT3VyIGpvYiBpcyB0byBjbGVhciBpdCBmb3IgdGhlIG5leHQKPi0JICogcHJlZW1wdGlvbiBh ZnRlciByZXNldCwgb3RoZXJ3aXNlIHRoYXQgYW5kIGZ1dHVyZSBwcmVlbXB0aW9ucwo+LQkgKiB3 aWxsIG5ldmVyIGNvbXBsZXRlLiBXZSdsbCBqdXN0IGNsZWFyIGl0IGV2ZXJ5IHRpbWUuCj4tCSAq Lwo+LQlzdGFnZV9kZXNjLT5hdHRyaWJ1dGUgJj0gfkdVQ19TVEFHRV9ERVNDX0FUVFJfVEVSTUlO QVRFRDsKPi0KPi0JZGF0YVswXSA9IElOVEVMX0dVQ19BQ1RJT05fUkVRVUVTVF9QUkVFTVBUSU9O Owo+LQlkYXRhWzFdID0gY2xpZW50LT5zdGFnZV9pZDsKPi0JZGF0YVsyXSA9IElOVEVMX0dVQ19Q UkVFTVBUX09QVElPTl9EUk9QX1dPUktfUSB8Cj4tCQkgIElOVEVMX0dVQ19QUkVFTVBUX09QVElP Tl9EUk9QX1NVQk1JVF9ROwo+LQlkYXRhWzNdID0gZW5naW5lLT5ndWNfaWQ7Cj4tCWRhdGFbNF0g PSBndWMtPmV4ZWNidWZfY2xpZW50LT5wcmlvcml0eTsKPi0JZGF0YVs1XSA9IGd1Yy0+ZXhlY2J1 Zl9jbGllbnQtPnN0YWdlX2lkOwo+LQlkYXRhWzZdID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1 YywgZ3VjLT5zaGFyZWRfZGF0YSk7Cj4tCj4tCWlmIChXQVJOX09OKGludGVsX2d1Y19zZW5kKGd1 YywgZGF0YSwgQVJSQVlfU0laRShkYXRhKSkpKSB7Cj4tCQlpbnRlbF93cml0ZV9zdGF0dXNfcGFn ZShlbmdpbmUsCj4tCQkJCQlJOTE1X0dFTV9IV1NfUFJFRU1QVCwKPi0JCQkJCUdVQ19QUkVFTVBU X05PTkUpOwo+LQkJdGFza2xldF9zY2hlZHVsZSgmZW5naW5lLT5leGVjbGlzdHMudGFza2xldCk7 Cj4tCX0KPi0KPi0JKHZvaWQpSTkxNV9TRUxGVEVTVF9PTkxZKGVuZ2luZS0+ZXhlY2xpc3RzLnBy ZWVtcHRfaGFuZy5jb3VudCsrKTsKPi19Cj4tCj4tLyoKPi0gKiBXZSdyZSB1c2luZyB1c2VyIGlu dGVycnVwdCBhbmQgSFdTUCB2YWx1ZSB0byBtYXJrIHRoYXQgcHJlZW1wdGlvbiBoYXMKPi0gKiBm aW5pc2hlZCBhbmQgR1BVIGlzIGlkbGUuIE5vcm1hbGx5LCB3ZSBjb3VsZCB1bndpbmQgYW5kIGNv bnRpbnVlIHNpbWlsYXIgdG8KPi0gKiBleGVjbGlzdHMgc3VibWlzc2lvbiBwYXRoLiBVbmZvcnR1 bmF0ZWx5LCB3aXRoIEd1QyB3ZSBhbHNvIG5lZWQgdG8gd2FpdCBmb3IKPi0gKiBpdCB0byBmaW5p c2ggaXRzIG93biBwb3N0cHJvY2Vzc2luZywgYmVmb3JlIGF0dGVtcHRpbmcgdG8gc3VibWl0LiBP dGhlcndpc2UKPi0gKiBHdUMgbWF5IHNpbGVudGx5IGlnbm9yZSBvdXIgc3VibWlzc2lvbnMsIGFu ZCB0aHVzIHdlIHJpc2sgbG9zaW5nIHJlcXVlc3QgYXQKPi0gKiBiZXN0LCBleGVjdXRpbmcgb3V0 LW9mLW9yZGVyIGFuZCBjYXVzaW5nIGtlcm5lbCBwYW5pYyBhdCB3b3JzdC4KPi0gKi8KPi0jZGVm aW5lIEdVQ19QUkVFTVBUX1BPU1RQUk9DRVNTX0RFTEFZX01TIDEwCj4tc3RhdGljIHZvaWQgd2Fp dF9mb3JfZ3VjX3ByZWVtcHRfcmVwb3J0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK Pi17Cj4tCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZlbmdpbmUtPmk5MTUtPmd1YzsKPi0Jc3Ry dWN0IGd1Y19zaGFyZWRfY3R4X2RhdGEgKmRhdGEgPSBndWMtPnNoYXJlZF9kYXRhX3ZhZGRyOwo+ LQlzdHJ1Y3QgZ3VjX2N0eF9yZXBvcnQgKnJlcG9ydCA9Cj4tCQkmZGF0YS0+cHJlZW1wdF9jdHhf cmVwb3J0W2VuZ2luZS0+Z3VjX2lkXTsKPi0KPi0JaWYgKHdhaXRfZm9yX2F0b21pYyhyZXBvcnQt PnJlcG9ydF9yZXR1cm5fc3RhdHVzID09Cj4tCQkJICAgIElOVEVMX0dVQ19SRVBPUlRfU1RBVFVT X0NPTVBMRVRFLAo+LQkJCSAgICBHVUNfUFJFRU1QVF9QT1NUUFJPQ0VTU19ERUxBWV9NUykpCj4t CQlEUk1fRVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBHdUMgcHJlZW1wdGlvbiByZXBvcnRc biIpOwo+LQkvKgo+LQkgKiBHdUMgaXMgZXhwZWN0aW5nIHRoYXQgd2UncmUgYWxzbyBnb2luZyB0 byBjbGVhciB0aGUgYWZmZWN0ZWQgY29udGV4dAo+LQkgKiBjb3VudGVyLCBsZXQncyBhbHNvIHJl c2V0IHRoZSByZXR1cm4gc3RhdHVzIHRvIG5vdCBkZXBlbmQgb24gR3VDCj4tCSAqIHJlc2V0dGlu ZyBpdCBhZnRlciByZWNpZXZpbmcgYW5vdGhlciBwcmVlbXB0IGFjdGlvbgo+LQkgKi8KPi0JcmVw b3J0LT5hZmZlY3RlZF9jb3VudCA9IDA7Cj4tCXJlcG9ydC0+cmVwb3J0X3JldHVybl9zdGF0dXMg PSBJTlRFTF9HVUNfUkVQT1JUX1NUQVRVU19VTktOT1dOOwo+LX0KPi0KPi1zdGF0aWMgdm9pZCBj b21wbGV0ZV9wcmVlbXB0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ LXsKPi0Jc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyA9ICZlbmdpbmUt PmV4ZWNsaXN0czsKPi0KPi0JaWYgKGluamVjdF9wcmVlbXB0X2hhbmcoZXhlY2xpc3RzKSkKPi0J CXJldHVybjsKPi0KPi0JZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7 Cj4tCWV4ZWNsaXN0c191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhleGVjbGlzdHMpOwo+LQo+ LQl3YWl0X2Zvcl9ndWNfcHJlZW1wdF9yZXBvcnQoZW5naW5lKTsKPi0JaW50ZWxfd3JpdGVfc3Rh dHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfUFJFRU1QVCwgR1VDX1BSRUVNUFRfTk9ORSk7 Cj4tfQo+LQo+IHN0YXRpYyB2b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAo+IAkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipvdXQsCj4gCQkgICAgICAg c3RydWN0IGk5MTVfcmVxdWVzdCAqKmVuZCkKPkBAIC03NDIsMjEgKzYxNSw2IEBAIHN0YXRpYyB2 b2lkIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IAlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKPgo+IAlpZiAobGFzdCkgewo+ LQkJaWYgKGludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdpbmUpKSB7Cj4tCQkJc3RydWN0 IGd1Y19wcmVlbXB0X3dvcmsgKnByZWVtcHRfd29yayA9Cj4tCQkJCSZlbmdpbmUtPmk5MTUtPmd1 Yy5wcmVlbXB0X3dvcmtbZW5naW5lLT5pZF07Cj4tCQkJaW50IHByaW8gPSBleGVjbGlzdHMtPnF1 ZXVlX3ByaW9yaXR5X2hpbnQ7Cj4tCj4tCQkJaWYgKGk5MTVfc2NoZWR1bGVyX25lZWRfcHJlZW1w dChwcmlvLCBycV9wcmlvKGxhc3QpKSkgewo+LQkJCQlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShl bmdpbmUsCj4tCQkJCQkJCUk5MTVfR0VNX0hXU19QUkVFTVBULAo+LQkJCQkJCQlHVUNfUFJFRU1Q VF9JTlBST0dSRVNTKTsKPi0JCQkJcXVldWVfd29yayhlbmdpbmUtPmk5MTUtPmd1Yy5wcmVlbXB0 X3dxLAo+LQkJCQkJICAgJnByZWVtcHRfd29yay0+d29yayk7Cj4tCQkJCXJldHVybjsKPi0JCQl9 Cj4tCQl9Cj4tCj4gCQlpZiAoKisrZmlyc3QpCj4gCQkJcmV0dXJuOwo+Cj5AQCAtODIwLDEyICs2 NzgsNyBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcg ZGF0YSkKPiAJCW1lbW1vdmUoZXhlY2xpc3RzLT5pbmZsaWdodCwgcG9ydCwgcmVtICogc2l6ZW9m KCpwb3J0KSk7Cj4gCX0KPgo+LQlpZiAoaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5 MTVfR0VNX0hXU19QUkVFTVBUKSA9PQo+LQkgICAgR1VDX1BSRUVNUFRfRklOSVNIRUQpCj4tCQlj b21wbGV0ZV9wcmVlbXB0X2NvbnRleHQoZW5naW5lKTsKPi0KPi0JaWYgKCFpbnRlbF9yZWFkX3N0 YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFQpKQo+LQkJX19ndWNfZGVxdWV1 ZShlbmdpbmUpOwo+KwlfX2d1Y19kZXF1ZXVlKGVuZ2luZSk7Cj4KPiAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwo+IH0KPkBAIC04NDYsMTYgKzY5 OSw2IEBAIHN0YXRpYyB2b2lkIGd1Y19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAJICogcHJldmVudHMgdGhlIHJhY2UuCj4gCSAqLwo+IAlfX3Rhc2tsZXRf ZGlzYWJsZV9zeW5jX29uY2UoJmV4ZWNsaXN0cy0+dGFza2xldCk7Cj4tCj4tCS8qCj4tCSAqIFdl J3JlIHVzaW5nIHdvcmtlciB0byBxdWV1ZSBwcmVlbXB0aW9uIHJlcXVlc3RzIGZyb20gdGhlIHRh c2tsZXQgaW4KPi0JICogR3VDIHN1Ym1pc3Npb24gbW9kZS4KPi0JICogRXZlbiB0aG91Z2ggdGFz a2xldCB3YXMgZGlzYWJsZWQsIHdlIG1heSBzdGlsbCBoYXZlIGEgd29ya2VyIHF1ZXVlZC4KPi0J ICogTGV0J3MgbWFrZSBzdXJlIHRoYXQgYWxsIHdvcmtlcnMgc2NoZWR1bGVkIGJlZm9yZSBkaXNh YmxpbmcgdGhlCj4tCSAqIHRhc2tsZXQgYXJlIGNvbXBsZXRlZCBiZWZvcmUgY29udGludWluZyB3 aXRoIHRoZSByZXNldC4KPi0JICovCj4tCWlmIChlbmdpbmUtPmk5MTUtPmd1Yy5wcmVlbXB0X3dx KQo+LQkJZmx1c2hfd29ya3F1ZXVlKGVuZ2luZS0+aTkxNS0+Z3VjLnByZWVtcHRfd3EpOwo+IH0K Pgo+IHN0YXRpYyB2b2lkIGd1Y19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IGJvb2wgc3RhbGxlZCkKPkBAIC0xMTEyLDcgKzk1NSw2IEBAIHN0YXRpYyBpbnQgZ3VjX2NsaWVu dHNfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAJc3RydWN0IGludGVsX2d1Y19jbGll bnQgKmNsaWVudDsKPgo+IAlHRU1fQlVHX09OKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+LQlHRU1f QlVHX09OKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+Cj4gCWNsaWVudCA9IGd1Y19jbGllbnRfYWxs b2MoZGV2X3ByaXYsCj4gCQkJCSAgSU5URUxfSU5GTyhkZXZfcHJpdiktPmVuZ2luZV9tYXNrLAo+ QEAgLTExMjQsMjAgKzk2Niw2IEBAIHN0YXRpYyBpbnQgZ3VjX2NsaWVudHNfY3JlYXRlKHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKPiAJfQo+IAlndWMtPmV4ZWNidWZfY2xpZW50ID0gY2xpZW50Owo+ Cj4tCWlmIChkZXZfcHJpdi0+cHJlZW1wdF9jb250ZXh0KSB7Cj4tCQljbGllbnQgPSBndWNfY2xp ZW50X2FsbG9jKGRldl9wcml2LAo+LQkJCQkJICBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZW5naW5l X21hc2ssCj4tCQkJCQkgIEdVQ19DTElFTlRfUFJJT1JJVFlfS01EX0hJR0gsCj4tCQkJCQkgIGRl dl9wcml2LT5wcmVlbXB0X2NvbnRleHQpOwo+LQkJaWYgKElTX0VSUihjbGllbnQpKSB7Cj4tCQkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEd1QyBjbGllbnQgZm9yIHByZWVtcHRpb24hXG4i KTsKPi0JCQlndWNfY2xpZW50X2ZyZWUoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4tCQkJZ3VjLT5l eGVjYnVmX2NsaWVudCA9IE5VTEw7Cj4tCQkJcmV0dXJuIFBUUl9FUlIoY2xpZW50KTsKPi0JCX0K Pi0JCWd1Yy0+cHJlZW1wdF9jbGllbnQgPSBjbGllbnQ7Cj4tCX0KPi0KPiAJcmV0dXJuIDA7Cj4g fQo+Cj5AQCAtMTE0NSwxMCArOTczLDYgQEAgc3RhdGljIHZvaWQgZ3VjX2NsaWVudHNfZGVzdHJv eShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gewo+IAlzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAq Y2xpZW50Owo+Cj4tCWNsaWVudCA9IGZldGNoX2FuZF96ZXJvKCZndWMtPnByZWVtcHRfY2xpZW50 KTsKPi0JaWYgKGNsaWVudCkKPi0JCWd1Y19jbGllbnRfZnJlZShjbGllbnQpOwo+LQo+IAljbGll bnQgPSBmZXRjaF9hbmRfemVybygmZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gCWlmIChjbGllbnQp Cj4gCQlndWNfY2xpZW50X2ZyZWUoY2xpZW50KTsKPkBAIC0xMTkxLDI4ICsxMDE1LDExIEBAIHN0 YXRpYyB2b2lkIF9fZ3VjX2NsaWVudF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQpCj4KPiBzdGF0aWMgaW50IGd1Y19jbGllbnRzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4gewo+LQlpbnQgcmV0Owo+LQo+LQlyZXQgPSBfX2d1Y19jbGllbnRfZW5hYmxlKGd1 Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+LQlpZiAocmV0KQo+LQkJcmV0dXJuIHJldDsKPi0KPi0JaWYg KGd1Yy0+cHJlZW1wdF9jbGllbnQpIHsKPi0JCXJldCA9IF9fZ3VjX2NsaWVudF9lbmFibGUoZ3Vj LT5wcmVlbXB0X2NsaWVudCk7Cj4tCQlpZiAocmV0KSB7Cj4tCQkJX19ndWNfY2xpZW50X2Rpc2Fi bGUoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4tCQkJcmV0dXJuIHJldDsKPi0JCX0KPi0JfQo+LQo+ LQlyZXR1cm4gMDsKPisJcmV0dXJuIF9fZ3VjX2NsaWVudF9lbmFibGUoZ3VjLT5leGVjYnVmX2Ns aWVudCk7Cj4gfQo+Cj4gc3RhdGljIHZvaWQgZ3VjX2NsaWVudHNfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCj4gewo+LQlpZiAoZ3VjLT5wcmVlbXB0X2NsaWVudCkKPi0JCV9fZ3VjX2Ns aWVudF9kaXNhYmxlKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+LQo+IAlpZiAoZ3VjLT5leGVjYnVm X2NsaWVudCkKPiAJCV9fZ3VjX2NsaWVudF9kaXNhYmxlKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+ IH0KPkBAIC0xMjIzLDkgKzEwMzAsNiBAQCBzdGF0aWMgdm9pZCBndWNfY2xpZW50c19kaXNhYmxl KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgKi8KPiBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gewo+LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Cj4tCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IAlpbnQgcmV0Owo+Cj4gCWlm IChndWMtPnN0YWdlX2Rlc2NfcG9vbCkKPkBAIC0xMjQ1LDExICsxMDQ5LDYgQEAgaW50IGludGVs X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+IAlpZiAocmV0KQo+ IAkJZ290byBlcnJfcG9vbDsKPgo+LQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwg aWQpIHsKPi0JCWd1Yy0+cHJlZW1wdF93b3JrW2lkXS5lbmdpbmUgPSBlbmdpbmU7Cj4tCQlJTklU X1dPUksoJmd1Yy0+cHJlZW1wdF93b3JrW2lkXS53b3JrLCBpbmplY3RfcHJlZW1wdF9jb250ZXh0 KTsKPi0JfQo+LQo+IAlyZXR1cm4gMDsKPgo+IGVycl9wb29sOgo+QEAgLTEyNTksMTMgKzEwNTgs NiBAQCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4KPiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+IHsKPi0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUo Z3VjKTsKPi0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+LQllbnVtIGludGVsX2Vu Z2luZV9pZCBpZDsKPi0KPi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+ LQkJY2FuY2VsX3dvcmtfc3luYygmZ3VjLT5wcmVlbXB0X3dvcmtbaWRdLndvcmspOwo+LQo+IAln dWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Cj4gCVdBUk5fT04oIWd1Y192ZXJpZnlfZG9vcmJlbGxz KGd1YykpOwo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jCj5p bmRleCA2Y2E4NTg0Y2Q2NGMuLjFhMTkxNWU0NGY2YiAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9ndWMuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jCj5AQCAtMTAzLDEzICsxMDMsMTAgQEAgc3RhdGljIGlu dCByaW5nX2Rvb3JiZWxsX25vcChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+IC8q Cj4gICogQmFzaWMgY2xpZW50IHNhbml0eSBjaGVjaywgaGFuZHkgdG8gdmFsaWRhdGUgY3JlYXRl X2NsaWVudHMuCj4gICovCj4tc3RhdGljIGludCB2YWxpZGF0ZV9jbGllbnQoc3RydWN0IGludGVs X2d1Y19jbGllbnQgKmNsaWVudCwKPi0JCQkgICBpbnQgY2xpZW50X3ByaW9yaXR5LAo+LQkJCSAg IGJvb2wgaXNfcHJlZW1wdF9jbGllbnQpCj4rc3RhdGljIGludCB2YWxpZGF0ZV9jbGllbnQoc3Ry dWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCwgaW50IGNsaWVudF9wcmlvcml0eSkKPiB7Cj4g CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGNsaWVudC0+ Z3VjKTsKPi0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eF9vd25lciA9IGlzX3ByZWVtcHRf Y2xpZW50ID8KPi0JCQlkZXZfcHJpdi0+cHJlZW1wdF9jb250ZXh0IDogZGV2X3ByaXYtPmtlcm5l bF9jb250ZXh0Owo+KwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4X293bmVyID0gZGV2X3By aXYtPmtlcm5lbF9jb250ZXh0Owo+Cj4gCWlmIChjbGllbnQtPm93bmVyICE9IGN0eF9vd25lciB8 fAo+IAkgICAgY2xpZW50LT5lbmdpbmVzICE9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5lbmdpbmVf bWFzayB8fAo+QEAgLTE2Myw3ICsxNjAsNyBAQCBzdGF0aWMgaW50IGlndF9ndWNfY2xpZW50cyh2 b2lkICphcmdzKQo+IAkgKi8KPiAJZ3VjX2NsaWVudHNfZGlzYWJsZShndWMpOwo+IAlndWNfY2xp ZW50c19kZXN0cm95KGd1Yyk7Cj4tCWlmIChndWMtPmV4ZWNidWZfY2xpZW50IHx8IGd1Yy0+cHJl ZW1wdF9jbGllbnQpIHsKPisJaWYgKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpIHsKPiAJCXByX2Vycigi Z3VjX2NsaWVudHNfZGVzdHJveSBsaWVkIVxuIik7Cj4gCQllcnIgPSAtRUlOVkFMOwo+IAkJZ290 byB1bmxvY2s7Cj5AQCAtMTc3LDI0ICsxNzQsMTQgQEAgc3RhdGljIGludCBpZ3RfZ3VjX2NsaWVu dHModm9pZCAqYXJncykKPiAJR0VNX0JVR19PTighZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4KPiAJ ZXJyID0gdmFsaWRhdGVfY2xpZW50KGd1Yy0+ZXhlY2J1Zl9jbGllbnQsCj4tCQkJICAgICAgR1VD X0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMLCBmYWxzZSk7Cj4rCQkJICAgICAgR1VDX0NMSUVO VF9QUklPUklUWV9LTURfTk9STUFMKTsKPiAJaWYgKGVycikgewo+IAkJcHJfZXJyKCJleGVjYnVn IGNsaWVudCB2YWxpZGF0aW9uIGZhaWxlZFxuIik7Cj4gCQlnb3RvIG91dDsKPiAJfQo+Cj4tCWlm IChndWMtPnByZWVtcHRfY2xpZW50KSB7Cj4tCQllcnIgPSB2YWxpZGF0ZV9jbGllbnQoZ3VjLT5w cmVlbXB0X2NsaWVudCwKPi0JCQkJICAgICAgR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSCwg dHJ1ZSk7Cj4tCQlpZiAoZXJyKSB7Cj4tCQkJcHJfZXJyKCJwcmVlbXB0IGNsaWVudCB2YWxpZGF0 aW9uIGZhaWxlZFxuIik7Cj4tCQkJZ290byBvdXQ7Cj4tCQl9Cj4tCX0KPi0KPi0JLyogZWFjaCBj bGllbnQgc2hvdWxkIG5vdyBoYXZlIHJlc2VydmVkIGEgZG9vcmJlbGwgKi8KPi0JaWYgKCFoYXNf ZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkgfHwKPi0JICAgIChndWMtPnByZWVtcHRfY2xp ZW50ICYmICFoYXNfZG9vcmJlbGwoZ3VjLT5wcmVlbXB0X2NsaWVudCkpKSB7Cj4rCS8qIHRoZSBj bGllbnQgc2hvdWxkIG5vdyBoYXZlIHJlc2VydmVkIGEgZG9vcmJlbGwgKi8KPisJaWYgKCFoYXNf ZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKPiAJCXByX2VycigiZ3VjX2NsaWVudHNf Y3JlYXRlIGRpZG4ndCByZXNlcnZlIGRvb3JiZWxsc1xuIik7Cj4gCQllcnIgPSAtRUlOVkFMOwo+ IAkJZ290byBvdXQ7Cj5AQCAtMjA0LDggKzE5MSw3IEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19jbGll bnRzKHZvaWQgKmFyZ3MpCj4gCWd1Y19jbGllbnRzX2VuYWJsZShndWMpOwo+Cj4gCS8qIGVhY2gg Y2xpZW50IHNob3VsZCBub3cgaGF2ZSByZWNlaXZlZCBhIGRvb3JiZWxsICovCj4tCWlmICghY2xp ZW50X2Rvb3JiZWxsX2luX3N5bmMoZ3VjLT5leGVjYnVmX2NsaWVudCkgfHwKPi0JICAgICFjbGll bnRfZG9vcmJlbGxfaW5fc3luYyhndWMtPnByZWVtcHRfY2xpZW50KSkgewo+KwlpZiAoIWNsaWVu dF9kb29yYmVsbF9pbl9zeW5jKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpKSB7Cj4gCQlwcl9lcnIoImZh aWxlZCB0byBpbml0aWFsaXplIHRoZSBkb29yYmVsbHNcbiIpOwo+IAkJZXJyID0gLUVJTlZBTDsK PiAJCWdvdG8gb3V0Owo+QEAgLTMwMCw4ICsyODYsNyBAQCBzdGF0aWMgaW50IGlndF9ndWNfZG9v cmJlbGxzKHZvaWQgKmFyZykKPiAJCQlnb3RvIG91dDsKPiAJCX0KPgo+LQkJZXJyID0gdmFsaWRh dGVfY2xpZW50KGNsaWVudHNbaV0sCj4tCQkJCSAgICAgIGkgJSBHVUNfQ0xJRU5UX1BSSU9SSVRZ X05VTSwgZmFsc2UpOwo+KwkJZXJyID0gdmFsaWRhdGVfY2xpZW50KGNsaWVudHNbaV0sIGkgJSBH VUNfQ0xJRU5UX1BSSU9SSVRZX05VTSk7Cj4gCQlpZiAoZXJyKSB7Cj4gCQkJcHJfZXJyKCJbJWRd IGNsaWVudF9hbGxvYyBzYW5pdHkgY2hlY2sgZmFpbGVkIVxuIiwgaSk7Cj4gCQkJZXJyID0gLUVJ TlZBTDsKPi0tIAo+Mi4yMC4xCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4