From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 3/3] drm/i915: Defer final intel_wakeref_put to process context Date: Wed, 07 Aug 2019 18:04:56 +0300 Message-ID: <87r25x819j.fsf@gaia.fi.intel.com> References: <20190807083702.16349-1-chris@chris-wilson.co.uk> <20190807083702.16349-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCA8A6E72A for ; Wed, 7 Aug 2019 15:05:33 +0000 (UTC) In-Reply-To: <20190807083702.16349-3-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+IHdyaXRlczoKCj4gQXMgd2Ug bmVlZCB0byBhY3F1aXJlIGEgbXV0ZXggdG8gc2VyaWFsaXNlIHRoZSBmaW5hbAo+IGludGVsX3dh a2VyZWZfcHV0LCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBpbiBwcm9jZXNzIGNvbnRl eHQgYXQKPiB0aGF0IHRpbWUuIEhvd2V2ZXIsIHdlIHdhbnQgdG8gYWxsb3cgb3BlcmF0aW9uIG9u IHRoZSBpbnRlbF93YWtlcmVmIGZyb20KPiBpbnNpZGUgdGltZXIgYW5kIG90aGVyIGhhcmRpcnEg Y29udGV4dCwgd2hpY2ggbWVhbnMgdGhhdCBuZWVkIHRvIGRlZmVyCj4gdGhhdCBmaW5hbCBwdXQg dG8gYSB3b3JrcXVldWUuCj4KPiBJbnNpZGUgdGhlIGZpbmFsIHdha2VyZWYgcHV0cywgd2UgYXJl IHNhZmUgdG8gb3BlcmF0ZSBpbiBhbnkgY29udGV4dCwgYXMKPiB3ZSBhcmUgc2ltcGx5IG1hcmtp bmcgdXAgdGhlIEhXIGFuZCBzdGF0ZSB0cmFja2luZyBmb3IgdGhlIHBvdGVudGlhbAo+IHNsZWVw LiBJdCdzIG9ubHkgdGhlIHNlcmlhbGlzYXRpb24gd2l0aCB0aGUgcG90ZW50aWFsIHNsZWVwaW5n IGdldHRpbmcKPiB0aGF0IHJlcXVpcmVzIGNhcmVmdWwgd2FpdCBhdm9pZGFuY2UuIFRoaXMgYWxs b3dzIHVzIHRvIHJldGFpbiB0aGUKPiBpbW1lZGlhdGUgcHJvY2Vzc2luZyBhcyBiZWZvcmUgKHdl IG9ubHkgbmVlZCB0byBzbGVlcCBvdmVyIHRoZSBzYW1lCj4gcmFjZXMgYXMgdGhlIGN1cnJlbnQg bXV0ZXhfbG9jaykuCj4KPiB2MjogQWRkIGEgc2VsZnRlc3QgdG8gZW5zdXJlIHdlIGV4ZXJjaXNl IHRoZSBjb2RlIHdoaWxlIGxvY2tkZXAgd2F0Y2hlcy4KPiB2MzogVGhhdCB0ZXN0IHdhcyBleHRy ZW1lbHkgbG91ZCBhbmQgY29tcGxhaW5lZCBhYm91dCBtYW55IHRoaW5ncyEKPgoKTG91ZCBpcyBn b29kIGlmIGl0IGRpZCBmb3VuZCBvdXQgc29tZXRoaW5nLCBkaWQgaXQ/IDopCgo+IEJ1Z3ppbGxh OiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyOTUKPiBS ZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0x MTEyNDUKPiBSZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVn LmNnaT9pZD0xMTEyNTYKPiBGaXhlczogMTgzOTg5MDRjYTllICgiZHJtL2k5MTU6IE9ubHkgcmVj b3ZlciBhY3RpdmUgZW5naW5lcyIpCj4gRml4ZXM6IDUxZmJkOGRlODdkYyAoImRybS9pOTE1L3Bt dTogQXRvbWljYWxseSBhY3F1aXJlIHRoZSBndF9wbSB3YWtlcmVmIikKPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9wbS5jICAgICAgICB8IDEzICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9wbS5jICAgICB8IDM4ICsrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaCAgICAgfCAxOCArKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgICAgICAgICB8IDI4ICsrKy0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaCAgICAgICAgIHwgMjIgKysrKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgIDQgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmMgICAgIHwgMjggKysrKysrKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuaCAgICAgfCAxNCArKysr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jICB8IDgzICsr KysrKysrKysrKysrKysrKysKPiAgLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3Vi bWlzc2lvbi5jIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgICAgICAgIHwgIDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAg ICAgICAgICAgfCAyNiArLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJl Zi5jICAgICAgICAgIHwgODIgKysrKysrKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dha2VyZWYuaCAgICAgICAgICB8IDYyICsrKysrKysrKy0tLS0tCj4gIC4uLi9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICA1ICstCj4gIDE2IGZp bGVzIGNoYW5nZWQsIDMwMSBpbnNlcnRpb25zKCspLCAxMzEgZGVsZXRpb25zKC0pCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYwo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2VuZ2luZV9wbS5jCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwo+ IGluZGV4IDcyOTIyNzAzYWY0OS4uMTdlMzYxODI0MWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBAQCAtMTMwLDcgKzEzMCw5IEBAIHN0YXRpYyBib29sIHN3 aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAkJfQo+ ICAJfSB3aGlsZSAoaTkxNV9yZXRpcmVfcmVxdWVzdHMoZ3QtPmk5MTUpICYmIHJlc3VsdCk7Cj4g IAo+IC0JR0VNX0JVR19PTihndC0+YXdha2UpOwo+ICsJaWYgKGludGVsX2d0X3BtX3dhaXRfZm9y X2lkbGUoZ3QpKQo+ICsJCXJlc3VsdCA9IGZhbHNlOwo+ICsKPiAgCXJldHVybiByZXN1bHQ7Cj4g IH0KPiAgCj4gQEAgLTE2MSwxMyArMTYzLDYgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JLyoKPiAtCSAqIEFzc2VydCB0aGF0IHdlIHN1Y2Nlc3Nm dWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBhbmQKPiAtCSAqIHJlc2V0IHRoZSBHUFUgYmFjayB0 byBpdHMgaWRsZSwgbG93IHBvd2VyIHN0YXRlLgo+IC0JICovCj4gLQlHRU1fQlVHX09OKGk5MTUt Pmd0LmF3YWtlKTsKPiAtCWZsdXNoX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwo+IC0KPiAg CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QuaGFuZ2NoZWNrLndvcmspOwo+ICAK PiAgCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkxNSk7Cj4gQEAgLTI0NCw4ICsyMzks NiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgewo+ICAJR0VNX1RSQUNFKCJcbiIpOwo+ICAKPiAtCVdBUk5fT04oaTkxNS0+Z3QuYXdha2Up Owo+IC0KPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQoJmk5MTUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggZDM4YzEx NGIwOTY0Li5iNTdhZGM5NzNlMmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYwo+IEBAIC0xNTY4LDUgKzE1NjgsNiBAQCBpbnRlbF9lbmdpbmVfZmluZF9h Y3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIH0KPiAgCj4g ICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiArI2luY2x1ZGUgInNl bGZ0ZXN0X2VuZ2luZS5jIgo+ICAjaW5jbHVkZSAic2VsZnRlc3RfZW5naW5lX2NzLmMiCj4gICNl bmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gaW5kZXgg MDMzNjIwNDk4OGQ2Li42YjE1ZTMzMzVkZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfcG0uYwo+IEBAIC0zNywyOCArMzcsNiBAQCBzdGF0aWMgaW50IF9fZW5n aW5lX3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfcG1fZ2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAtewo+IC0JaW50ZWxfd2FrZXJlZl9nZXQoJmVuZ2luZS0+aTkxNS0+cnVudGltZV9w bSwgJmVuZ2luZS0+d2FrZXJlZiwgX19lbmdpbmVfdW5wYXJrKTsKPiAtfQo+IC0KPiAtdm9pZCBp bnRlbF9lbmdpbmVfcGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAt CS8qCj4gLQkgKiBXZSBhcmUgY29tbWl0dGVkIG5vdyB0byBwYXJraW5nIHRoaXMgZW5naW5lLCBt YWtlIHN1cmUgdGhlcmUKPiAtCSAqIHdpbGwgYmUgbm8gbW9yZSBpbnRlcnJ1cHRzIGFycml2aW5n IGxhdGVyIGFuZCB0aGUgZW5naW5lCj4gLQkgKiBpcyB0cnVseSBpZGxlLgo+IC0JICovCj4gLQlp ZiAod2FpdF9mb3IoaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKSwgMTApKSB7Cj4gLQkJc3Ry dWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRlcihfX2Z1bmNfXyk7Cj4gLQo+IC0J CWRldl9lcnIoZW5naW5lLT5pOTE1LT5kcm0uZGV2LAo+IC0JCQkiJXMgaXMgbm90IGlkbGUgYmVm b3JlIHBhcmtpbmdcbiIsCj4gLQkJCWVuZ2luZS0+bmFtZSk7Cj4gLQkJaW50ZWxfZW5naW5lX2R1 bXAoZW5naW5lLCAmcCwgTlVMTCk7Cj4gLQl9Cj4gLX0KPiAtCj4gIHN0YXRpYyBib29sIHN3aXRj aF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsK PiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+IEBAIC0xMzYsMTIgKzExNCwxOCBAQCBzdGF0 aWMgaW50IF9fZW5naW5lX3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfZW5naW5lX3BtX3B1dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCWludGVsX3dha2VyZWZfcHV0KCZlbmdpbmUtPmk5MTUt PnJ1bnRpbWVfcG0sICZlbmdpbmUtPndha2VyZWYsIF9fZW5naW5lX3BhcmspOwo+IC19Cj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9vcHMgd2Zfb3BzID0gewo+ICsJLmdldCA9 IF9fZW5naW5lX3VucGFyaywKPiArCS5wdXQgPSBfX2VuZ2luZV9wYXJrLAo+ICt9Owo+ICAKPiAg dm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9fcG0oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICB7Cj4gLQlpbnRlbF93YWtlcmVmX2luaXQoJmVuZ2luZS0+d2FrZXJlZik7Cj4gKwlzdHJ1 Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtID0gJmVuZ2luZS0+aTkxNS0+cnVudGltZV9wbTsKPiAr Cj4gKwlpbnRlbF93YWtlcmVmX2luaXQoJmVuZ2luZS0+d2FrZXJlZiwgcnBtLCAmd2Zfb3BzKTsK PiAgfQo+ICsKPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICsj aW5jbHVkZSAic2VsZnRlc3RfZW5naW5lX3BtLmMiCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oCj4gaW5kZXggMDE1YWM3MmQ3YWQwLi43MzljNTBm ZWZjZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3BtLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaAo+ IEBAIC0xMCwyNCArMTAsMjYgQEAKPiAgI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgo+ ICAjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgo+ICAKPiAtc3RydWN0IGRybV9pOTE1X3ByaXZh dGU7Cj4gLQo+IC12b2lkIGludGVsX2VuZ2luZV9wbV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiAtdm9pZCBpbnRlbF9lbmdpbmVfcG1fcHV0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSk7Cj4gLQo+ICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgaW50ZWxfZW5naW5l X3BtX2lzX2F3YWtlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ ICAJcmV0dXJuIGludGVsX3dha2VyZWZfaXNfYWN0aXZlKCZlbmdpbmUtPndha2VyZWYpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wKPiAtaW50ZWxfZW5naW5lX3BtX2dldF9pZl9hd2Fr ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp bnRlbF9lbmdpbmVfcG1fZ2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ ICsJaW50ZWxfd2FrZXJlZl9nZXQoJmVuZ2luZS0+d2FrZXJlZik7Cj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdpbmVfcG1fZ2V0X2lmX2F3YWtlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJcmV0dXJuIGludGVsX3dha2VyZWZfZ2V0X2lmX2Fj dGl2ZSgmZW5naW5lLT53YWtlcmVmKTsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfcGFy ayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICtzdGF0aWMgaW5saW5lIHZvaWQg aW50ZWxfZW5naW5lX3BtX3B1dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sK PiArCWludGVsX3dha2VyZWZfcHV0KCZlbmdpbmUtPndha2VyZWYpOwo+ICt9Cj4gIAo+ICB2b2lk IGludGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKPiBpbmRleCA2Yzg5NzAyNzFh N2YuLjEzNjNlMDY5ZWM4MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0u Ywo+IEBAIC0xNyw3ICsxNyw3IEBAIHN0YXRpYyB2b2lkIHBtX25vdGlmeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHN0YXRlKQo+ICAJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9j aGFpbigmaTkxNS0+Z3QucG1fbm90aWZpY2F0aW9ucywgc3RhdGUsIGk5MTUpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgaW50IGludGVsX2d0X3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4g K3N0YXRpYyBpbnQgX19ndF91bnBhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICB7Cj4g IAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gY29udGFpbmVyX29mKHdmLCB0eXBlb2YoKmd0KSwgd2Fr ZXJlZik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1Owo+IEBA IC01MywxNCArNTMsNyBAQCBzdGF0aWMgaW50IGludGVsX2d0X3VucGFyayhzdHJ1Y3QgaW50ZWxf d2FrZXJlZiAqd2YpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9ndF9wbV9n ZXQoc3RydWN0IGludGVsX2d0ICpndCkKPiAtewo+IC0Jc3RydWN0IGludGVsX3J1bnRpbWVfcG0g KnJwbSA9ICZndC0+aTkxNS0+cnVudGltZV9wbTsKPiAtCj4gLQlpbnRlbF93YWtlcmVmX2dldChy cG0sICZndC0+d2FrZXJlZiwgaW50ZWxfZ3RfdW5wYXJrKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlu dCBpbnRlbF9ndF9wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiArc3RhdGljIGludCBf X2d0X3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gIAkJY29udGFpbmVyX29mKHdmLCB0eXBlb2YoKmk5MTUpLCBn dC53YWtlcmVmKTsKPiBAQCAtNzQsMjIgKzY3LDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ3RfcGFy ayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIAlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYp Cj4gIAkJZ2VuNl9ycHNfaWRsZShpOTE1KTsKPiAgCj4gKwkvKiBFdmVyeXRoaW5nIHN3aXRjaGVk IG9mZiwgZmx1c2ggYW55IHJlc2lkdWFsIGludGVycnVwdCBqdXN0IGluIGNhc2UgKi8KPiArCWlu dGVsX3N5bmNocm9uaXplX2lycShpOTE1KTsKCkRvIHdlIGRldGVjdCBpdCBncmFjZWZ1bGx5IGlm IHdlIGdldCBvbmUgZXh0cmEgYWZlciB0aGlzIGZsdXNoPwoKPiArCj4gIAlHRU1fQlVHX09OKCF3 YWtlcmVmKTsKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5MTUsIFBPV0VSX0RPTUFJTl9H VF9JUlEsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC12b2lkIGludGVs X2d0X3BtX3B1dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfcnVu dGltZV9wbSAqcnBtID0gJmd0LT5pOTE1LT5ydW50aW1lX3BtOwo+IC0KPiAtCWludGVsX3dha2Vy ZWZfcHV0KHJwbSwgJmd0LT53YWtlcmVmLCBpbnRlbF9ndF9wYXJrKTsKPiAtfQo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX3dha2VyZWZfb3BzIHdmX29wcyA9IHsKPiArCS5nZXQgPSBfX2d0 X3VucGFyaywKPiArCS5wdXQgPSBfX2d0X3BhcmssCj4gKwkuZmxhZ3MgPSBJTlRFTF9XQUtFUkVG X1BVVF9BU1lOQywKPiArfTsKPiAgCj4gIHZvaWQgaW50ZWxfZ3RfcG1faW5pdF9lYXJseShzdHJ1 Y3QgaW50ZWxfZ3QgKmd0KQo+ICB7Cj4gLQlpbnRlbF93YWtlcmVmX2luaXQoJmd0LT53YWtlcmVm KTsKPiArCWludGVsX3dha2VyZWZfaW5pdCgmZ3QtPndha2VyZWYsICZndC0+aTkxNS0+cnVudGlt ZV9wbSwgJndmX29wcyk7Cj4gKwo+ICAJQkxPQ0tJTkdfSU5JVF9OT1RJRklFUl9IRUFEKCZndC0+ cG1fbm90aWZpY2F0aW9ucyk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0X3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dF9wbS5oCj4gaW5kZXggZThhMThkNGIyN2M5Li41NzYzM2Y1MzhkZGIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmgKPiBAQCAtMTcsMTQgKzE3LDMyIEBAIGVudW0gewo+ ICAJSU5URUxfR1RfUEFSSywKPiAgfTsKPiAgCj4gLXZvaWQgaW50ZWxfZ3RfcG1fZ2V0KHN0cnVj dCBpbnRlbF9ndCAqZ3QpOwo+IC12b2lkIGludGVsX2d0X3BtX3B1dChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KTsKPiArc3RhdGljIGlubGluZSBib29sCj4gK2ludGVsX2d0X3BtX2lzX2F3YWtlKGNvbnN0 IHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXJldHVybiBpbnRlbF93YWtlcmVmX2lzX2Fj dGl2ZSgmZ3QtPndha2VyZWYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxf Z3RfcG1fZ2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCWludGVsX3dha2VyZWZfZ2V0 KCZndC0+d2FrZXJlZik7Cj4gK30KPiAgCj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9ndF9w bV9nZXRfaWZfYXdha2Uoc3RydWN0IGludGVsX2d0ICpndCkKPiAgewo+ICAJcmV0dXJuIGludGVs X3dha2VyZWZfZ2V0X2lmX2FjdGl2ZSgmZ3QtPndha2VyZWYpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfZ3RfcG1fcHV0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiAr CWludGVsX3dha2VyZWZfcHV0KCZndC0+d2FrZXJlZik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgaW50IGludGVsX2d0X3BtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2d0ICpndCkKPiAr ewo+ICsJcmV0dXJuIGludGVsX3dha2VyZWZfd2FpdF9mb3JfaWRsZSgmZ3QtPndha2VyZWYpOwo+ ICt9Cj4gKwo+ICB2b2lkIGludGVsX2d0X3BtX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d0ICpn dCk7Cj4gIAo+ICB2b2lkIGludGVsX2d0X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGJv b2wgZm9yY2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9s cmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gaW5kZXggMjMyZjQw ZmNiNDkwLi4xYTAxMTY3NTFkMTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMu Ywo+IEBAIC0xMzksNiArMTM5LDcgQEAKPiAgI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCj4gICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfZ3RfcG0uaCIKPiAgI2luY2x1ZGUgImludGVsX2xyY19yZWcuaCIKPiAgI2lu Y2x1ZGUgImludGVsX21vY3MuaCIKPiAgI2luY2x1ZGUgImludGVsX3Jlc2V0LmgiCj4gQEAgLTU1 Niw2ICs1NTcsNyBAQCBleGVjbGlzdHNfc2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEsIGludCBpZHgpCj4gIAkJaW50ZWxfY29udGV4dF9nZXQoY2UpOwo+ICAJCWNlLT5pbmZsaWdo dCA9IHJxLT5lbmdpbmU7Cj4gIAo+ICsJCWludGVsX2d0X3BtX2dldChjZS0+aW5mbGlnaHQtPmd0 KTsKPiAgCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhU X1NDSEVEVUxFX0lOKTsKPiAgCQlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihjZS0+aW5mbGlnaHQp Owo+ICAJfQo+IEBAIC01ODgsNiArNTkwLDcgQEAgZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgCWlmICghaW50ZWxfY29udGV4dF9pbmZsaWdodF9jb3Vu dChjZSkpIHsKPiAgCQlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQoY2UtPmluZmxpZ2h0KTsKPiAg CQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVE VUxFX09VVCk7Cj4gKwkJaW50ZWxfZ3RfcG1fcHV0KGNlLT5pbmZsaWdodC0+Z3QpOwo+ICAKPiAg CQkvKgo+ICAJCSAqIElmIHRoaXMgaXMgcGFydCBvZiBhIHZpcnR1YWwgZW5naW5lLCBpdHMgbmV4 dCByZXF1ZXN0IG1heQo+IEBAIC0yNzE5LDcgKzI3MjIsNiBAQCBzdGF0aWMgdTMyICpnZW44X2Vt aXRfZmluaV9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIg KmNzKQo+ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gIHsKPiAgCWRlbF90aW1lcl9zeW5jKCZlbmdpbmUtPmV4ZWNsaXN0cy50aW1l cik7Cj4gLQlpbnRlbF9lbmdpbmVfcGFyayhlbmdpbmUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVs X2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf ZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mNjViMTE4ZTI2MWQKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lLmMKPiBAQCAtMCwwICsxLDI4IEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4gKyAqCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0 aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiArI2luY2x1ZGUg InNlbGZ0ZXN0X2VuZ2luZS5oIgo+ICsKPiAraW50IGludGVsX2VuZ2luZV9saXZlX3NlbGZ0ZXN0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RhdGljIGludCAoKiBj b25zdCB0ZXN0c1tdKShzdHJ1Y3QgaW50ZWxfZ3QgKikgPSB7Cj4gKwkJbGl2ZV9lbmdpbmVfcG1f c2VsZnRlc3RzLAo+ICsJCU5VTEwsCj4gKwl9Owo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9ICZp OTE1LT5ndDsKPiArCXR5cGVvZigqdGVzdHMpICpmbjsKPiArCj4gKwlmb3IgKGZuID0gdGVzdHM7 ICpmbjsgZm4rKykgewo+ICsJCWludCBlcnI7Cj4gKwo+ICsJCWVyciA9ICgqZm4pKGd0KTsKPiAr CQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmgKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWIzMmQwOWVjNWExCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5oCj4g QEAgLTAsMCArMSwxNCBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsg Ki8KPiArCj4gKyNpZm5kZWYgU0VMRlRFU1RfRU5HSU5FX0gKPiArI2RlZmluZSBTRUxGVEVTVF9F TkdJTkVfSAo+ICsKPiArc3RydWN0IGludGVsX2d0Owo+ICsKPiAraW50IGxpdmVfZW5naW5lX3Bt X3NlbGZ0ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjc1YzE5NzYxMjcwNQo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYwo+IEBA IC0wLDAgKzEsODMgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiArICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiArICov Cj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgo+ICsjaW5jbHVkZSAic2VsZnRlc3Rf ZW5naW5lLmgiCj4gKyNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X2F0b21pYy5oIgo+ICsKPiArc3Rh dGljIGludCBsaXZlX2VuZ2luZV9wbSh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSBhcmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiArCj4gKwkvKgo+ICsJICogQ2hlY2sgd2UgY2FuIGNhbGwg aW50ZWxfZW5naW5lX3BtX3B1dCBmcm9tIGFueSBjb250ZXh0LiBObwo+ICsJICogZmFpbHVyZXMg YXJlIHJlcG9ydGVkIGRpcmVjdGx5LCBidXQgaWYgd2UgbWVzcyB1cCBsb2NrZGVwIHNob3VsZAo+ ICsJICogdGVsbCB1cy4KPiArCSAqLwo+ICsJaWYgKGludGVsX2d0X3BtX3dhaXRfZm9yX2lkbGUo Z3QpKSB7Cj4gKwkJcHJfZXJyKCJVbmFibGUgdG8gZmx1c2ggR1QgcG0gYmVmb3JlIHRlc3RcbiIp Owo+ICsJCXJldHVybiAtRUJVU1k7Cj4gKwl9Cj4gKwo+ICsJR0VNX0JVR19PTihpbnRlbF9ndF9w bV9pc19hd2FrZShndCkpOwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QtPmk5MTUsIGlk KSB7Cj4gKwkJY29uc3QgdHlwZW9mKCppZ3RfYXRvbWljX3BoYXNlcykgKnA7Cj4gKwo+ICsJCWZv ciAocCA9IGlndF9hdG9taWNfcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsKPiArCQkJLyoKPiArCQkJ ICogQWNxdWlzaXRpb24gaXMgYWx3YXlzIHN5bmNocm9ub3VzLCBleGNlcHQgaWYgd2UKPiArCQkJ ICoga25vdyB0aGF0IHRoZSBlbmdpbmUgaXMgYWxyZWFkeSBhd2FsZSwgaW4gd2hpY2gKCnMvYXdh bGUvYXdha2UKCmluIHdoaWNoIGNhc2U/Cgo+ICsJCQkgKiB3ZSBzaG91bGQgdXNlIGludGVsX2Vu Z2luZV9wbV9nZXRfaWZfYXdha2UoKSB0bwo+ICsJCQkgKiBhdG9taWNhbGx5IGdyYWIgdGhlIHdh a2VyZWYuCj4gKwkJCSAqCj4gKwkJCSAqIEluIHByYWN0aWNlLAo+ICsJCQkgKiAgICBpbnRlbF9l bmdpbmVfcG1fZ2V0KCk7Cj4gKwkJCSAqICAgIGludGVsX2VuZ2luZV9wbV9wdXQoKTsKPiArCQkJ ICogb2NjdXJzIGluIG9uZSB0aHJlYWQsIHdoaWxlIHNpbXVsdGFuZW91c2x5Cj4gKwkJCSAqICAg IGludGVsX2VuZ2luZV9wbV9nZXRfaWZfYXdha2UoKTsKPiArCQkJICogICAgaW50ZWxfZW5naW5l X3BtX3B1dCgpOwo+ICsJCQkgKiBvY2N1cnMgaW4gYXRvbWljIGNvbnRleHQgaW4gYW5vdGhlci4K PiArCQkJICovCj4gKwkJCUdFTV9CVUdfT04oaW50ZWxfZW5naW5lX3BtX2lzX2F3YWtlKGVuZ2lu ZSkpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gKwo+ICsJCQlwLT5jcml0 aWNhbF9zZWN0aW9uX2JlZ2luKCk7Cj4gKwkJCWlmICghaW50ZWxfZW5naW5lX3BtX2dldF9pZl9h d2FrZShlbmdpbmUpKQo+ICsJCQkJcHJfZXJyKCJpbnRlbF9lbmdpbmVfcG1fZ2V0X2lmX2F3YWtl KCVzKSBmYWlsZWQgdW5kZXIgJXNcbiIsCj4gKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLCBwLT5u YW1lKTsKPiArCQkJZWxzZQo+ICsJCQkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICsJ CQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gKwkJCXAtPmNyaXRpY2FsX3NlY3Rpb25f ZW5kKCk7Cj4gKwo+ICsJCQkvKiBlbmdpbmUgd2FrZXJlZiBpcyBzeW5jIChpbnN0YW50KSAqLwo+ ICsJCQlpZiAoaW50ZWxfZW5naW5lX3BtX2lzX2F3YWtlKGVuZ2luZSkpIHsKPiArCQkJCXByX2Vy cigiJXMgaXMgc3RpbGwgYXdha2UgYWZ0ZXIgZmx1c2hpbmcgcG1cbiIsCj4gKwkJCQkgICAgICAg ZW5naW5lLT5uYW1lKTsKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCQl9Cj4gKwo+ICsJCQkv KiBndCB3YWtlcmVmIGlzIGFzeW5jIChkZWZlcnJlZCB0byB3b3JrcXVldWUpICovCj4gKwkJCWlm IChpbnRlbF9ndF9wbV93YWl0X2Zvcl9pZGxlKGd0KSkgewo+ICsJCQkJcHJfZXJyKCJHVCBmYWls ZWQgdG8gaWRsZVxuIik7Cj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJfQo+ICsJCX0KPiAr CX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGxpdmVfZW5naW5lX3BtX3NlbGZ0 ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICt7Cj4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+ICsJCVNVQlRFU1QobGl2ZV9lbmdpbmVfcG0pLAo+ICsJ fTsKPiArCj4gKwlyZXR1cm4gaW50ZWxfZ3RfbGl2ZV9zdWJ0ZXN0cyh0ZXN0cywgZ3QpOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJt aXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCj4gaW5kZXggYTc4YmQ5OWJjNmNiLi5jOTExOWI5MGQ2YWEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtMjks NiArMjksNyBAQAo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfY29udGV4dC5oIgo+ICAjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ICsjaW5j bHVkZSAiZ3QvaW50ZWxfZ3RfcG0uaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIK PiAgI2luY2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9uLmgiCj4gIAo+IEBAIC01MzcsNiArNTM4 LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnNjaGVkdWxlX2luKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCBpbnQgaWR4KQo+ICAJaWYgKCFycS0+aHdfY29udGV4dC0+aW5mbGlnaHQp Cj4gIAkJcnEtPmh3X2NvbnRleHQtPmluZmxpZ2h0ID0gcnEtPmVuZ2luZTsKPiAgCWludGVsX2Nv bnRleHRfaW5mbGlnaHRfaW5jKHJxLT5od19jb250ZXh0KTsKPiArCWludGVsX2d0X3BtX2dldChy cS0+ZW5naW5lLT5ndCk7Cj4gIAo+ICAJcmV0dXJuIGk5MTVfcmVxdWVzdF9nZXQocnEpOwo+ICB9 Cj4gQEAgLTU0OSw2ICs1NTEsNyBAQCBzdGF0aWMgdm9pZCBzY2hlZHVsZV9vdXQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCj4gIAlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQocnEt Pmh3X2NvbnRleHQpKQo+ICAJCXJxLT5od19jb250ZXh0LT5pbmZsaWdodCA9IE5VTEw7Cj4gIAo+ ICsJaW50ZWxfZ3RfcG1fcHV0KHJxLT5lbmdpbmUtPmd0KTsKPiAgCWk5MTVfcmVxdWVzdF9wdXQo cnEpOwo+ICB9Cj4gIAo+IEBAIC0xMDc2LDcgKzEwNzksNiBAQCBzdGF0aWMgdm9pZCBndWNfaW50 ZXJydXB0c19yZWxlYXNlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAo+ICBzdGF0aWMgdm9pZCBn dWNfc3VibWlzc2lvbl9wYXJrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ IC0JaW50ZWxfZW5naW5lX3BhcmsoZW5naW5lKTsKPiAgCWludGVsX2VuZ2luZV91bnBpbl9icmVh ZGNydW1ic19pcnEoZW5naW5lKTsKPiAgCWVuZ2luZS0+ZmxhZ3MgJj0gfkk5MTVfRU5HSU5FX05F RURTX0JSRUFEQ1JVTUJfVEFTS0xFVDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gaW5kZXggNjNiNTk5ZjU4NGRiLi42OGE2YjAwMmM5YmEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0zOSw2ICszOSw3IEBACj4gICNpbmNsdWRlICJkaXNw bGF5L2ludGVsX3Bzci5oIgo+ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0Lmgi Cj4gKyNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfcmVz ZXQuaCIKPiAgI2luY2x1ZGUgImd0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgiCj4gIAo+IEBA IC0zNjY0LDYgKzM2NjUsOSBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQg dmFsKQo+ICAJCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsKPiAgCj4gIAkJbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkJaWYgKHJldCA9PSAwICYmIHZh bCAmIERST1BfSURMRSkKPiArCQkJcmV0ID0gaW50ZWxfZ3RfcG1fd2FpdF9mb3JfaWRsZSgmaTkx NS0+Z3QpOwo+ICAJfQo+ICAKPiAgCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAmJiBpbnRl bF9ndF90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3QpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IGluZGV4IDdlZmZmMTRiOTEzNy4uZjY3MTk3MzM2ZWU3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gQEAgLTg5NCwxOSArODk0LDYgQEAgdm9pZCBpOTE1X2dlbV9ydW50aW1lX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0 YXRpYyBpbnQgd2FpdF9mb3JfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+IC17Cj4gLQlp ZiAod2FpdF9mb3IoaW50ZWxfZW5naW5lc19hcmVfaWRsZShndCksIEk5MTVfSURMRV9FTkdJTkVT X1RJTUVPVVQpKSB7Cj4gLQkJZGV2X2VycihndC0+aTkxNS0+ZHJtLmRldiwKPiAtCQkJIkZhaWxl ZCB0byBpZGxlIGVuZ2luZXMsIGRlY2xhcmluZyB3ZWRnZWQhXG4iKTsKPiAtCQlHRU1fVFJBQ0Vf RFVNUCgpOwo+IC0JCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwo+IC0JCXJldHVybiAtRUlPOwo+ IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgbG9uZwo+ICB3YWl0X2Zv cl90aW1lbGluZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkJICAgdW5zaWdu ZWQgaW50IGZsYWdzLCBsb25nIHRpbWVvdXQpCj4gQEAgLTk1NCwyNyArOTQxLDIwIEBAIGludCBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJ CQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIGxvbmcgdGltZW91dCkKPiAgewo+ICAJLyogSWYgdGhl IGRldmljZSBpcyBhc2xlZXAsIHdlIGhhdmUgbm8gcmVxdWVzdHMgb3V0c3RhbmRpbmcgKi8KPiAt CWlmICghUkVBRF9PTkNFKGk5MTUtPmd0LmF3YWtlKSkKPiArCWlmICghaW50ZWxfZ3RfcG1faXNf YXdha2UoJmk5MTUtPmd0KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlHRU1fVFJBQ0UoImZsYWdz PSV4ICglcyksIHRpbWVvdXQ9JWxkJXMsIGF3YWtlPz0lc1xuIiwKPiArCUdFTV9UUkFDRSgiZmxh Z3M9JXggKCVzKSwgdGltZW91dD0lbGQlc1xuIiwKPiAgCQkgIGZsYWdzLCBmbGFncyAmIEk5MTVf V0FJVF9MT0NLRUQgPyAibG9ja2VkIiA6ICJ1bmxvY2tlZCIsCj4gLQkJICB0aW1lb3V0LCB0aW1l b3V0ID09IE1BWF9TQ0hFRFVMRV9USU1FT1VUID8gIiAoZm9yZXZlcikiIDogIiIsCj4gLQkJICB5 ZXNubyhpOTE1LT5ndC5hd2FrZSkpOwo+ICsJCSAgdGltZW91dCwgdGltZW91dCA9PSBNQVhfU0NI RURVTEVfVElNRU9VVCA/ICIgKGZvcmV2ZXIpIiA6ICIiKTsKPiAgCj4gIAl0aW1lb3V0ID0gd2Fp dF9mb3JfdGltZWxpbmVzKGk5MTUsIGZsYWdzLCB0aW1lb3V0KTsKPiAgCWlmICh0aW1lb3V0IDwg MCkKPiAgCQlyZXR1cm4gdGltZW91dDsKPiAgCj4gIAlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfTE9D S0VEKSB7Cj4gLQkJaW50IGVycjsKPiAtCj4gIAkJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JCWVyciA9IHdhaXRfZm9yX2VuZ2luZXMoJmk5MTUt Pmd0KTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlyZXR1cm4gZXJyOwo+IC0KCkhtbSB3aGVyZSBkb2Vz IHRoZSBpbXBsaWNpdCB3YWl0IGZvciBpZGxlIGNvbWUgZnJvbSBub3c/Cgo+ICAJCWk5MTVfcmV0 aXJlX3JlcXVlc3RzKGk5MTUpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2Fr ZXJlZi5jCj4gaW5kZXggMDZiZDhiMjE1Y2MyLi5kNDQ0M2U4MWMxYzggMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5jCj4gQEAgLTQsMjUgKzQsMjUgQEAKPiAgICogQ29weXJp Z2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiAgICovCj4gIAo+ICsjaW5jbHVkZSA8bGlu dXgvd2FpdF9iaXQuaD4KPiArCj4gICNpbmNsdWRlICJpbnRlbF9ydW50aW1lX3BtLmgiCj4gICNp bmNsdWRlICJpbnRlbF93YWtlcmVmLmgiCj4gIAo+IC1zdGF0aWMgdm9pZCBycG1fZ2V0KHN0cnVj dCBpbnRlbF9ydW50aW1lX3BtICpycG0sIHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiArc3Rh dGljIHZvaWQgcnBtX2dldChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsKPiAtCXdmLT53 YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQocnBtKTsKPiArCXdmLT53YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQod2YtPnJwbSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHJwbV9w dXQoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSwgc3RydWN0IGludGVsX3dha2VyZWYgKndm KQo+ICtzdGF0aWMgdm9pZCBycG1fcHV0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAgewo+ ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWYgPSBmZXRjaF9hbmRfemVybygmd2YtPndha2VyZWYp Owo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KHJwbSwgd2FrZXJlZik7Cj4gKwlpbnRlbF9y dW50aW1lX3BtX3B1dCh3Zi0+cnBtLCB3YWtlcmVmKTsKPiAgCUlOVEVMX1dBS0VSRUZfQlVHX09O KCF3YWtlcmVmKTsKPiAgfQo+ICAKPiAtaW50IF9faW50ZWxfd2FrZXJlZl9nZXRfZmlyc3Qoc3Ry dWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSwKPiAtCQkJICAgICAgc3RydWN0IGludGVsX3dha2Vy ZWYgKndmLAo+IC0JCQkgICAgICBpbnQgKCpmbikoc3RydWN0IGludGVsX3dha2VyZWYgKndmKSkK PiAraW50IF9faW50ZWxfd2FrZXJlZl9nZXRfZmlyc3Qoc3RydWN0IGludGVsX3dha2VyZWYgKndm KQo+ICB7Cj4gIAkvKgo+ICAJICogVHJlYXQgZ2V0L3B1dCBhcyBkaWZmZXJlbnQgc3ViY2xhc3Nl cywgYXMgd2UgbWF5IG5lZWQgdG8gcnVuCj4gQEAgLTM0LDExICszNCwxMSBAQCBpbnQgX19pbnRl bF93YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+ICAJaWYg KCFhdG9taWNfcmVhZCgmd2YtPmNvdW50KSkgewo+ICAJCWludCBlcnI7Cj4gIAo+IC0JCXJwbV9n ZXQocnBtLCB3Zik7Cj4gKwkJcnBtX2dldCh3Zik7Cj4gIAo+IC0JCWVyciA9IGZuKHdmKTsKPiAr CQllcnIgPSB3Zi0+b3BzLT5nZXQod2YpOwo+ICAJCWlmICh1bmxpa2VseShlcnIpKSB7Cj4gLQkJ CXJwbV9wdXQocnBtLCB3Zik7Cj4gKwkJCXJwbV9wdXQod2YpOwo+ICAJCQltdXRleF91bmxvY2so JndmLT5tdXRleCk7Cj4gIAkJCXJldHVybiBlcnI7Cj4gIAkJfQo+IEBAIC01MiwyNyArNTIsNjcg QEAgaW50IF9faW50ZWxfd2FrZXJlZl9nZXRfZmlyc3Qoc3RydWN0IGludGVsX3J1bnRpbWVfcG0g KnJwbSwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1pbnQgX19pbnRlbF93YWtlcmVmX3B1dF9s YXN0KHN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0sCj4gLQkJCSAgICAgc3RydWN0IGludGVs X3dha2VyZWYgKndmLAo+IC0JCQkgICAgIGludCAoKmZuKShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAq d2YpKQo+ICtzdGF0aWMgdm9pZCBfX19faW50ZWxfd2FrZXJlZl9wdXRfbGFzdChzdHJ1Y3QgaW50 ZWxfd2FrZXJlZiAqd2YpCj4gIHsKPiAtCWludCBlcnI7Cj4gKwlpZiAoIWF0b21pY19kZWNfYW5k X3Rlc3QoJndmLT5jb3VudCkpCj4gKwkJZ290byB1bmxvY2s7Cj4gKwo+ICsJaWYgKGxpa2VseSgh d2YtPm9wcy0+cHV0KHdmKSkpIHsKPiArCQlycG1fcHV0KHdmKTsKPiArCQl3YWtlX3VwX3Zhcigm d2YtPndha2VyZWYpOwo+ICsJfSBlbHNlIHsKPiArCQkvKiBvcHMtPnB1dCgpIG11c3Qgc2NoZWR1 bGUgaXRzIG93biByZWxlYXNlIG9uIGRlZmVycmFsICovCj4gKwkJYXRvbWljX3NldF9yZWxlYXNl KCZ3Zi0+Y291bnQsIDEpOwoKSSBsb3NlIHRyYWNrIGhlcmUuIE9uIGFzeW5jIGNhbGwgdG8gZ3Rf cGFyayB3ZSBlbmQgdXAgbGVhdmluZwp3aXRoIGEgY291bnQgMS4gCgo+ICsJfQo+ICAKPiAtCWVy ciA9IGZuKHdmKTsKPiAtCWlmIChsaWtlbHkoIWVycikpCj4gLQkJcnBtX3B1dChycG0sIHdmKTsK PiAtCWVsc2UKPiAtCQlhdG9taWNfaW5jKCZ3Zi0+Y291bnQpOwo+ICt1bmxvY2s6Cj4gIAltdXRl eF91bmxvY2soJndmLT5tdXRleCk7Cj4gK30KPiArCj4gK3ZvaWQgX19pbnRlbF93YWtlcmVmX3B1 dF9sYXN0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiArewo+ICsJSU5URUxfV0FLRVJFRl9C VUdfT04od29ya19wZW5kaW5nKCZ3Zi0+d29yaykpOwo+ICAKPiAtCXJldHVybiBlcnI7Cj4gKwkv KiBBc3N1bWUgd2UgYXJlIG5vdCBpbiBwcm9jZXNzIGNvbnRleHQgYW5kIHNvIGNhbm5vdCBzbGVl cC4gKi8KPiArCWlmICh3Zi0+b3BzLT5mbGFncyAmIElOVEVMX1dBS0VSRUZfUFVUX0FTWU5DIHx8 Cj4gKwkgICAgIW11dGV4X3RyeWxvY2soJndmLT5tdXRleCkpIHsKCkRpZG4ndCBmb3VuZCBhbnl0 aGluZyBpbiB0cnlsb2NrIHRoYXQgd291bGQgcHJldmVudCB5b3UKZnJvbSBzaG9vdGluZyB5b3Ug b24geW91ciBvd24gbGVnLgoKU28gaXQgaXMgdXAgdG8gY2FsbGVyIChhbmQgZXZlbnR1YWxseSBs b2NrZGVwIHNwYW0pIGlmCnRoZSBhc3luYyB1c2FnZSBmYWlscyB0byBmb2xsb3cgdGhlIHJ1bGVz PwoKPiArCQlzY2hlZHVsZV93b3JrKCZ3Zi0+d29yayk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsK PiArCV9fX19pbnRlbF93YWtlcmVmX3B1dF9sYXN0KHdmKTsKPiAgfQo+ICAKPiAtdm9pZCBfX2lu dGVsX3dha2VyZWZfaW5pdChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsIHN0cnVjdCBsb2NrX2Ns YXNzX2tleSAqa2V5KQo+ICtzdGF0aWMgdm9pZCBfX2ludGVsX3dha2VyZWZfcHV0X3dvcmsoc3Ry dWN0IHdvcmtfc3RydWN0ICp3cmspCgpObyBuZWVkIGZvciB1bmRlcnNjb3JlIGJlZm9yZSB0aGUg bmFtZSBoZXJlPwotTWlrYQoKCj4gIHsKPiArCXN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZiA9IGNv bnRhaW5lcl9vZih3cmssIHR5cGVvZigqd2YpLCB3b3JrKTsKPiArCj4gKwlpZiAoYXRvbWljX2Fk ZF91bmxlc3MoJndmLT5jb3VudCwgLTEsIDEpKQo+ICsJCXJldHVybjsKPiArCj4gKwltdXRleF9s b2NrKCZ3Zi0+bXV0ZXgpOwo+ICsJX19fX2ludGVsX3dha2VyZWZfcHV0X2xhc3Qod2YpOwo+ICt9 Cj4gKwo+ICt2b2lkIF9faW50ZWxfd2FrZXJlZl9pbml0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3 ZiwKPiArCQkJICBzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+ICsJCQkgIGNvbnN0IHN0 cnVjdCBpbnRlbF93YWtlcmVmX29wcyAqb3BzLAo+ICsJCQkgIHN0cnVjdCBsb2NrX2NsYXNzX2tl eSAqa2V5KQo+ICt7Cj4gKwl3Zi0+cnBtID0gcnBtOwo+ICsJd2YtPm9wcyA9IG9wczsKPiArCj4g IAlfX211dGV4X2luaXQoJndmLT5tdXRleCwgIndha2VyZWYiLCBrZXkpOwo+ICAJYXRvbWljX3Nl dCgmd2YtPmNvdW50LCAwKTsKPiAgCXdmLT53YWtlcmVmID0gMDsKPiArCj4gKwlJTklUX1dPUkso JndmLT53b3JrLCBfX2ludGVsX3dha2VyZWZfcHV0X3dvcmspOwo+ICt9Cj4gKwo+ICtpbnQgaW50 ZWxfd2FrZXJlZl93YWl0X2Zvcl9pZGxlKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiArewo+ ICsJcmV0dXJuIHdhaXRfdmFyX2V2ZW50X2tpbGxhYmxlKCZ3Zi0+d2FrZXJlZiwKPiArCQkJCSAg ICAgICAhaW50ZWxfd2FrZXJlZl9pc19hY3RpdmUod2YpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgd2FrZXJlZl9hdXRvX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dha2VyZWYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3dha2VyZWYuaAo+IGluZGV4IDFkNmY1OTg2ZTRlNS4uNTM1YTNhMTI4NjRi IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dha2VyZWYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dha2VyZWYuaAo+IEBAIC04LDEwICs4LDEy IEBACj4gICNkZWZpbmUgSU5URUxfV0FLRVJFRl9ICj4gIAo+ICAjaW5jbHVkZSA8bGludXgvYXRv bWljLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tdXRl eC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVmY291bnQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3N0 YWNrZGVwb3QuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC93b3JrcXVldWUuaD4KPiAgCj4gICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJV RykKPiAgI2RlZmluZSBJTlRFTF9XQUtFUkVGX0JVR19PTihleHByKSBCVUdfT04oZXhwcikKPiBA QCAtMjAsMjkgKzIyLDQyIEBACj4gICNlbmRpZgo+ICAKPiAgc3RydWN0IGludGVsX3J1bnRpbWVf cG07Cj4gK3N0cnVjdCBpbnRlbF93YWtlcmVmOwo+ICAKPiAgdHlwZWRlZiBkZXBvdF9zdGFja19o YW5kbGVfdCBpbnRlbF93YWtlcmVmX3Q7Cj4gIAo+ICtzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9vcHMg ewo+ICsJaW50ICgqZ2V0KShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpOwo+ICsJaW50ICgqcHV0 KShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpOwo+ICsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gKyNkZWZpbmUgSU5URUxfV0FLRVJFRl9QVVRfQVNZTkMgQklUKDApCj4gK307Cj4gKwo+ICBz dHJ1Y3QgaW50ZWxfd2FrZXJlZiB7Cj4gIAlhdG9taWNfdCBjb3VudDsKPiAgCXN0cnVjdCBtdXRl eCBtdXRleDsKPiArCj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gKwlzdHJ1Y3Qg aW50ZWxfcnVudGltZV9wbSAqcnBtOwo+ICsJY29uc3Qgc3RydWN0IGludGVsX3dha2VyZWZfb3Bz ICpvcHM7Cj4gKwo+ICsJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4gIH07Cj4gIAo+ICB2b2lk IF9faW50ZWxfd2FrZXJlZl9pbml0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZiwKPiArCQkJICBz dHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF93 YWtlcmVmX29wcyAqb3BzLAo+ICAJCQkgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKPiAt I2RlZmluZSBpbnRlbF93YWtlcmVmX2luaXQod2YpIGRvIHsJCQkJCVwKPiArI2RlZmluZSBpbnRl bF93YWtlcmVmX2luaXQod2YsIHJwbSwgb3BzKSBkbyB7CQkJCVwKPiAgCXN0YXRpYyBzdHJ1Y3Qg bG9ja19jbGFzc19rZXkgX19rZXk7CQkJCVwKPiAgCQkJCQkJCQkJXAo+IC0JX19pbnRlbF93YWtl cmVmX2luaXQoKHdmKSwgJl9fa2V5KTsJCQkJXAo+ICsJX19pbnRlbF93YWtlcmVmX2luaXQoKHdm KSwgKHJwbSksIChvcHMpLCAmX19rZXkpOwkJXAo+ICB9IHdoaWxlICgwKQo+ICAKPiAtaW50IF9f aW50ZWxfd2FrZXJlZl9nZXRfZmlyc3Qoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSwKPiAt CQkJICAgICAgc3RydWN0IGludGVsX3dha2VyZWYgKndmLAo+IC0JCQkgICAgICBpbnQgKCpmbiko c3RydWN0IGludGVsX3dha2VyZWYgKndmKSk7Cj4gLWludCBfX2ludGVsX3dha2VyZWZfcHV0X2xh c3Qoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSwKPiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxf d2FrZXJlZiAqd2YsCj4gLQkJCSAgICAgaW50ICgqZm4pKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3 ZikpOwo+ICtpbnQgX19pbnRlbF93YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfd2FrZXJl ZiAqd2YpOwo+ICt2b2lkIF9faW50ZWxfd2FrZXJlZl9wdXRfbGFzdChzdHJ1Y3QgaW50ZWxfd2Fr ZXJlZiAqd2YpOwo+ICAKPiAgLyoqCj4gICAqIGludGVsX3dha2VyZWZfZ2V0OiBBY3F1aXJlIHRo ZSB3YWtlcmVmCj4gQEAgLTYxLDEyICs3NiwxMCBAQCBpbnQgX19pbnRlbF93YWtlcmVmX3B1dF9s YXN0KHN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0sCj4gICAqIGNvZGUgb3RoZXJ3aXNlLgo+ ICAgKi8KPiAgc3RhdGljIGlubGluZSBpbnQKPiAtaW50ZWxfd2FrZXJlZl9nZXQoc3RydWN0IGlu dGVsX3J1bnRpbWVfcG0gKnJwbSwKPiAtCQkgIHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZiwKPiAt CQkgIGludCAoKmZuKShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpKQo+ICtpbnRlbF93YWtlcmVm X2dldChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsKPiAgCWlmICh1bmxpa2VseSghYXRv bWljX2luY19ub3RfemVybygmd2YtPmNvdW50KSkpCj4gLQkJcmV0dXJuIF9faW50ZWxfd2FrZXJl Zl9nZXRfZmlyc3QocnBtLCB3ZiwgZm4pOwo+ICsJCXJldHVybiBfX2ludGVsX3dha2VyZWZfZ2V0 X2ZpcnN0KHdmKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0xMDIsMTYgKzExNSwxMiBA QCBpbnRlbF93YWtlcmVmX2dldF9pZl9hY3RpdmUoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ ICAgKiBSZXR1cm5zOiAwIGlmIHRoZSB3YWtlcmVmIHdhcyByZWxlYXNlZCBzdWNjZXNzZnVsbHks IG9yIGEgbmVnYXRpdmUgZXJyb3IKPiAgICogY29kZSBvdGhlcndpc2UuCj4gICAqLwo+IC1zdGF0 aWMgaW5saW5lIGludAo+IC1pbnRlbF93YWtlcmVmX3B1dChzdHJ1Y3QgaW50ZWxfcnVudGltZV9w bSAqcnBtLAo+IC0JCSAgc3RydWN0IGludGVsX3dha2VyZWYgKndmLAo+IC0JCSAgaW50ICgqZm4p KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICtpbnRl bF93YWtlcmVmX3B1dChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsKPiAgCUlOVEVMX1dB S0VSRUZfQlVHX09OKGF0b21pY19yZWFkKCZ3Zi0+Y291bnQpIDw9IDApOwo+IC0JaWYgKGF0b21p Y19kZWNfYW5kX211dGV4X2xvY2soJndmLT5jb3VudCwgJndmLT5tdXRleCkpCj4gLQkJcmV0dXJu IF9faW50ZWxfd2FrZXJlZl9wdXRfbGFzdChycG0sIHdmLCBmbik7Cj4gLQo+IC0JcmV0dXJuIDA7 Cj4gKwlpZiAodW5saWtlbHkoIWF0b21pY19hZGRfdW5sZXNzKCZ3Zi0+Y291bnQsIC0xLCAxKSkp Cj4gKwkJX19pbnRlbF93YWtlcmVmX3B1dF9sYXN0KHdmKTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAg LTE1NCw2ICsxNjMsMTkgQEAgaW50ZWxfd2FrZXJlZl9pc19hY3RpdmUoY29uc3Qgc3RydWN0IGlu dGVsX3dha2VyZWYgKndmKQo+ICAJcmV0dXJuIFJFQURfT05DRSh3Zi0+d2FrZXJlZik7Cj4gIH0K PiAgCj4gKy8qKgo+ICsgKiBpbnRlbF93YWtlcmVmX3dhaXRfZm9yX2lkbGU6IFdhaXQgdW50aWwg dGhlIHdha2VyZWYgaXMgaWRsZQo+ICsgKiBAd2Y6IHRoZSB3YWtlcmVmCj4gKyAqCj4gKyAqIFdh aXQgZm9yIHRoZSBlYXJsaWVyIGFzeW5jaHJvbm91cyByZWxlYXNlIG9mIHRoZSB3YWtlcmVmLiBO b3RlCj4gKyAqIHRoaXMgd2lsbCB3YWl0IGZvciBhbnkgdGhpcmQgcGFydHkgYXMgd2VsbCwgc28g bWFrZSBzdXJlIHlvdSBvbmx5IHdhaXQKPiArICogd2hlbiB5b3UgaGF2ZSBjb250cm9sIG92ZXIg dGhlIHdha2VyZWYgYW5kIHRydXN0IG5vIG9uZSBlbHNlIGlzIGFjcXVpcmluZwo+ICsgKiBpdC4K PiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIGVycm9yIGNvZGUgaWYga2lsbGVkLgo+ ICsgKi8KPiAraW50IGludGVsX3dha2VyZWZfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfd2Fr ZXJlZiAqd2YpOwo+ICsKPiAgc3RydWN0IGludGVsX3dha2VyZWZfYXV0byB7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcnVudGltZV9wbSAqcnBtOwo+ICAJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRl c3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0 cy5oCj4gaW5kZXggYTg0MWQzZjliZWRjLi4xY2NmMGY3MzFhYzAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKPiBA QCAtMTIsMTAgKzEyLDExIEBACj4gIHNlbGZ0ZXN0KHNhbml0eWNoZWNrLCBpOTE1X2xpdmVfc2Fu aXR5Y2hlY2spIC8qIGtlZXAgZmlyc3QgKGlndCBzZWxmY2hlY2spICovCj4gIHNlbGZ0ZXN0KHVu Y29yZSwgaW50ZWxfdW5jb3JlX2xpdmVfc2VsZnRlc3RzKQo+ICBzZWxmdGVzdCh3b3JrYXJvdW5k cywgaW50ZWxfd29ya2Fyb3VuZHNfbGl2ZV9zZWxmdGVzdHMpCj4gLXNlbGZ0ZXN0KHRpbWVsaW5l cywgaW50ZWxfdGltZWxpbmVfbGl2ZV9zZWxmdGVzdHMpCj4gK3NlbGZ0ZXN0KGd0X2VuZ2luZXMs IGludGVsX2VuZ2luZV9saXZlX3NlbGZ0ZXN0cykKPiArc2VsZnRlc3QoZ3RfdGltZWxpbmVzLCBp bnRlbF90aW1lbGluZV9saXZlX3NlbGZ0ZXN0cykKPiArc2VsZnRlc3QoZ3RfY29udGV4dHMsIGlu dGVsX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3Jl cXVlc3RfbGl2ZV9zZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KGFjdGl2ZSwgaTkxNV9hY3RpdmVfbGl2 ZV9zZWxmdGVzdHMpCj4gLXNlbGZ0ZXN0KGd0X2NvbnRleHRzLCBpbnRlbF9jb250ZXh0X2xpdmVf c2VsZnRlc3RzKQo+ICBzZWxmdGVzdChvYmplY3RzLCBpOTE1X2dlbV9vYmplY3RfbGl2ZV9zZWxm dGVzdHMpCj4gIHNlbGZ0ZXN0KG1tYW4sIGk5MTVfZ2VtX21tYW5fbGl2ZV9zZWxmdGVzdHMpCj4g IHNlbGZ0ZXN0KGRtYWJ1ZiwgaTkxNV9nZW1fZG1hYnVmX2xpdmVfc2VsZnRlc3RzKQo+IC0tIAo+ IDIuMjMuMC5yYzEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4