From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 02/19] drm/i915: Defer final intel_wakeref_put to process context Date: Thu, 08 Aug 2019 17:47:07 +0300 Message-ID: <87ef1vhfys.fsf@gaia.fi.intel.com> References: <20190808074207.18274-1-chris@chris-wilson.co.uk> <20190808074207.18274-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A28136E855 for ; Thu, 8 Aug 2019 14:47:45 +0000 (UTC) In-Reply-To: <20190808074207.18274-2-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 ZW1lbHkgbG91ZCBhbmQgY29tcGxhaW5lZCBhYm91dCBtYW55IHRoaW5ncyEKPgo+IEJ1Z3ppbGxh OiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyOTUKPiBS ZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0x MTEyNDUKPiBSZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVn LmNnaT9pZD0xMTEyNTYKPiBGaXhlczogMTgzOTg5MDRjYTllICgiZHJtL2k5MTU6IE9ubHkgcmVj b3ZlciBhY3RpdmUgZW5naW5lcyIpCj4gRml4ZXM6IDUxZmJkOGRlODdkYyAoImRybS9pOTE1L3Bt dTogQXRvbWljYWxseSBhY3F1aXJlIHRoZSBndF9wbSB3YWtlcmVmIikKPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+CgpPaywgdGhpcyB3YXMgZGlzY3Vzc2VkIG9uIHRo ZSBvdGhlciBzdWJtaXNzaW9uIHRocmVhZCBhbmQKY29uZnVzaW9uIGNsZWFyZWQuIFRoZXJlIHdh cyBubyBhaW0gZm9yIGltcGxpY2l0IHN5bmMKZm9yIGdlbV93YWl0IGJ1dCByYXRoZXIgcmVmaW5l IHRoZSByZXNvbHV0aW9uLgoKVGhlIHRlc3QgbG9va2VkIHZpY2lvdXMgZW5vdWdoLCBmb3IgYm90 aCBkb21haW5zIHNvCndlIHNob3VsZCBub3RpY2UgaWYgdGhpbmdzIGZseSBhcGFydC4KClJldmll d2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jICAgICAgICB8IDEz ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jICAgICB8IDM4 ICsrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaCAg ICAgfCAxOCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgICAg ICAgICB8IDI4ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0u aCAgICAgICAgIHwgMjIgKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJj LmMgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf ZW5naW5lLmMgICAgIHwgMjggKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9lbmdpbmUuaCAgICAgfCAxNCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2VuZ2luZV9wbS5jICB8IDgzICsrKysrKysrKysrKysrKysrKysKPiAgLi4uL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgIDQgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDQgKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAyNiArLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5jICAgICAgICAgIHwgODIgKysrKysrKysrKysr Ky0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dha2VyZWYuaCAgICAgICAgICB8 IDYyICsrKysrKysrKy0tLS0tCj4gIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3Nl bGZ0ZXN0cy5oICB8ICA1ICstCj4gIDE2IGZpbGVzIGNoYW5nZWQsIDMwMSBpbnNlcnRpb25zKCsp LCAxMzEgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jCj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwo+IGluZGV4IDcyOTIyNzAzYWY0OS4uMTdlMzYxODI0 MWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBAQCAtMTMw LDcgKzEzMCw5IEBAIHN0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAkJfQo+ICAJfSB3aGlsZSAoaTkxNV9yZXRpcmVfcmVxdWVz dHMoZ3QtPmk5MTUpICYmIHJlc3VsdCk7Cj4gIAo+IC0JR0VNX0JVR19PTihndC0+YXdha2UpOwo+ ICsJaWYgKGludGVsX2d0X3BtX3dhaXRfZm9yX2lkbGUoZ3QpKQo+ICsJCXJlc3VsdCA9IGZhbHNl Owo+ICsKPiAgCXJldHVybiByZXN1bHQ7Cj4gIH0KPiAgCj4gQEAgLTE2MSwxMyArMTYzLDYgQEAg dm9pZCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAK PiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JLyoKPiAt CSAqIEFzc2VydCB0aGF0IHdlIHN1Y2Nlc3NmdWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBhbmQK PiAtCSAqIHJlc2V0IHRoZSBHUFUgYmFjayB0byBpdHMgaWRsZSwgbG93IHBvd2VyIHN0YXRlLgo+ IC0JICovCj4gLQlHRU1fQlVHX09OKGk5MTUtPmd0LmF3YWtlKTsKPiAtCWZsdXNoX3dvcmsoJmk5 MTUtPmdlbS5pZGxlX3dvcmspOwo+IC0KPiAgCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkx NS0+Z3QuaGFuZ2NoZWNrLndvcmspOwo+ICAKPiAgCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVj dHMoaTkxNSk7Cj4gQEAgLTI0NCw4ICsyMzksNiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJR0VNX1RSQUNFKCJcbiIpOwo+ICAK PiAtCVdBUk5fT04oaTkxNS0+Z3QuYXdha2UpOwo+IC0KPiAgCW11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmk5MTUtPnVu Y29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV9jcy5jCj4gaW5kZXggODYyNDdlZWI2ZjJiLi5mZWI5ZDExNzhkMjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0xNTczLDUgKzE1 NzMsNiBAQCBpbnRlbF9lbmdpbmVfZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gIH0KPiAgCj4gICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkx NV9TRUxGVEVTVCkKPiArI2luY2x1ZGUgInNlbGZ0ZXN0X2VuZ2luZS5jIgo+ICAjaW5jbHVkZSAi c2VsZnRlc3RfZW5naW5lX2NzLmMiCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9wbS5jCj4gaW5kZXggMDMzNjIwNDk4OGQ2Li42YjE1ZTMzMzVkZDYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+IEBAIC0zNywy OCArMzcsNiBAQCBzdGF0aWMgaW50IF9fZW5naW5lX3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJl ZiAqd2YpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfcG1fZ2V0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAtewo+IC0JaW50ZWxfd2FrZXJlZl9n ZXQoJmVuZ2luZS0+aTkxNS0+cnVudGltZV9wbSwgJmVuZ2luZS0+d2FrZXJlZiwgX19lbmdpbmVf dW5wYXJrKTsKPiAtfQo+IC0KPiAtdm9pZCBpbnRlbF9lbmdpbmVfcGFyayhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCS8qCj4gLQkgKiBXZSBhcmUgY29tbWl0dGVkIG5v dyB0byBwYXJraW5nIHRoaXMgZW5naW5lLCBtYWtlIHN1cmUgdGhlcmUKPiAtCSAqIHdpbGwgYmUg bm8gbW9yZSBpbnRlcnJ1cHRzIGFycml2aW5nIGxhdGVyIGFuZCB0aGUgZW5naW5lCj4gLQkgKiBp cyB0cnVseSBpZGxlLgo+IC0JICovCj4gLQlpZiAod2FpdF9mb3IoaW50ZWxfZW5naW5lX2lzX2lk bGUoZW5naW5lKSwgMTApKSB7Cj4gLQkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdf cHJpbnRlcihfX2Z1bmNfXyk7Cj4gLQo+IC0JCWRldl9lcnIoZW5naW5lLT5pOTE1LT5kcm0uZGV2 LAo+IC0JCQkiJXMgaXMgbm90IGlkbGUgYmVmb3JlIHBhcmtpbmdcbiIsCj4gLQkJCWVuZ2luZS0+ bmFtZSk7Cj4gLQkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCwgTlVMTCk7Cj4gLQl9Cj4g LX0KPiAtCj4gIHN0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ IEBAIC0xMzYsMTIgKzExNCwxOCBAQCBzdGF0aWMgaW50IF9fZW5naW5lX3Bhcmsoc3RydWN0IGlu dGVsX3dha2VyZWYgKndmKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfZW5n aW5lX3BtX3B1dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCWludGVs X3dha2VyZWZfcHV0KCZlbmdpbmUtPmk5MTUtPnJ1bnRpbWVfcG0sICZlbmdpbmUtPndha2VyZWYs IF9fZW5naW5lX3BhcmspOwo+IC19Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfd2FrZXJl Zl9vcHMgd2Zfb3BzID0gewo+ICsJLmdldCA9IF9fZW5naW5lX3VucGFyaywKPiArCS5wdXQgPSBf X2VuZ2luZV9wYXJrLAo+ICt9Owo+ICAKPiAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9fcG0oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gLQlpbnRlbF93YWtlcmVmX2luaXQo JmVuZ2luZS0+d2FrZXJlZik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtID0gJmVu Z2luZS0+aTkxNS0+cnVudGltZV9wbTsKPiArCj4gKwlpbnRlbF93YWtlcmVmX2luaXQoJmVuZ2lu ZS0+d2FrZXJlZiwgcnBtLCAmd2Zfb3BzKTsKPiAgfQo+ICsKPiArI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICsjaW5jbHVkZSAic2VsZnRlc3RfZW5naW5lX3BtLmMi Cj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oCj4g aW5kZXggMDE1YWM3MmQ3YWQwLi43MzljNTBmZWZjZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaAo+IEBAIC0xMCwyNCArMTAsMjYgQEAKPiAgI2luY2x1 ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgo+ ICAKPiAtc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gLQo+IC12b2lkIGludGVsX2VuZ2luZV9w bV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAtdm9pZCBpbnRlbF9lbmdp bmVfcG1fcHV0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gLQo+ICBzdGF0aWMg aW5saW5lIGJvb2wKPiAgaW50ZWxfZW5naW5lX3BtX2lzX2F3YWtlKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJcmV0dXJuIGludGVsX3dha2VyZWZfaXNfYWN0 aXZlKCZlbmdpbmUtPndha2VyZWYpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wKPiAt aW50ZWxfZW5naW5lX3BtX2dldF9pZl9hd2FrZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcG1fZ2V0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJaW50ZWxfd2FrZXJlZl9nZXQoJmVuZ2luZS0+ d2FrZXJlZik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdpbmVfcG1f Z2V0X2lmX2F3YWtlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJcmV0 dXJuIGludGVsX3dha2VyZWZfZ2V0X2lmX2FjdGl2ZSgmZW5naW5lLT53YWtlcmVmKTsKPiAgfQo+ ICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfcGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX3BtX3B1dChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludGVsX3dha2VyZWZfcHV0KCZlbmdpbmUt Pndha2VyZWYpOwo+ICt9Cj4gIAo+ICB2b2lkIGludGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3BtLmMKPiBpbmRleCA2Yzg5NzAyNzFhN2YuLjEzNjNlMDY5ZWM4MyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwo+IEBAIC0xNyw3ICsxNyw3IEBAIHN0YXRpYyB2 b2lkIHBtX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHN0YXRlKQo+ ICAJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmaTkxNS0+Z3QucG1fbm90aWZpY2F0aW9u cywgc3RhdGUsIGk5MTUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGludGVsX2d0X3VucGFyayhz dHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gK3N0YXRpYyBpbnQgX19ndF91bnBhcmsoc3RydWN0 IGludGVsX3dha2VyZWYgKndmKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gY29udGFp bmVyX29mKHdmLCB0eXBlb2YoKmd0KSwgd2FrZXJlZik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGd0LT5pOTE1Owo+IEBAIC01MywxNCArNTMsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2d0X3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIAlyZXR1cm4gMDsKPiAg fQo+ICAKPiAtdm9pZCBpbnRlbF9ndF9wbV9nZXQoc3RydWN0IGludGVsX2d0ICpndCkKPiAtewo+ IC0Jc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSA9ICZndC0+aTkxNS0+cnVudGltZV9wbTsK PiAtCj4gLQlpbnRlbF93YWtlcmVmX2dldChycG0sICZndC0+d2FrZXJlZiwgaW50ZWxfZ3RfdW5w YXJrKTsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpbnRlbF9ndF9wYXJrKHN0cnVjdCBpbnRlbF93 YWtlcmVmICp3ZikKPiArc3RhdGljIGludCBfX2d0X3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYg KndmKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gIAkJY29udGFp bmVyX29mKHdmLCB0eXBlb2YoKmk5MTUpLCBndC53YWtlcmVmKTsKPiBAQCAtNzQsMjIgKzY3LDI1 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ3RfcGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4g IAlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4gIAkJZ2VuNl9ycHNfaWRsZShpOTE1KTsKPiAg Cj4gKwkvKiBFdmVyeXRoaW5nIHN3aXRjaGVkIG9mZiwgZmx1c2ggYW55IHJlc2lkdWFsIGludGVy cnVwdCBqdXN0IGluIGNhc2UgKi8KPiArCWludGVsX3N5bmNocm9uaXplX2lycShpOTE1KTsKPiAr Cj4gIAlHRU1fQlVHX09OKCF3YWtlcmVmKTsKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5 MTUsIFBPV0VSX0RPTUFJTl9HVF9JUlEsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC12b2lkIGludGVsX2d0X3BtX3B1dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+IC17Cj4g LQlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtID0gJmd0LT5pOTE1LT5ydW50aW1lX3BtOwo+ IC0KPiAtCWludGVsX3dha2VyZWZfcHV0KHJwbSwgJmd0LT53YWtlcmVmLCBpbnRlbF9ndF9wYXJr KTsKPiAtfQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3dha2VyZWZfb3BzIHdmX29wcyA9 IHsKPiArCS5nZXQgPSBfX2d0X3VucGFyaywKPiArCS5wdXQgPSBfX2d0X3BhcmssCj4gKwkuZmxh Z3MgPSBJTlRFTF9XQUtFUkVGX1BVVF9BU1lOQywKPiArfTsKPiAgCj4gIHZvaWQgaW50ZWxfZ3Rf cG1faW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICB7Cj4gLQlpbnRlbF93YWtlcmVm X2luaXQoJmd0LT53YWtlcmVmKTsKPiArCWludGVsX3dha2VyZWZfaW5pdCgmZ3QtPndha2VyZWYs ICZndC0+aTkxNS0+cnVudGltZV9wbSwgJndmX29wcyk7Cj4gKwo+ICAJQkxPQ0tJTkdfSU5JVF9O T1RJRklFUl9IRUFEKCZndC0+cG1fbm90aWZpY2F0aW9ucyk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5oCj4gaW5kZXggZThhMThkNGIyN2M5Li41NzYzM2Y1Mzhk ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmgKPiBAQCAtMTcsMTQg KzE3LDMyIEBAIGVudW0gewo+ICAJSU5URUxfR1RfUEFSSywKPiAgfTsKPiAgCj4gLXZvaWQgaW50 ZWxfZ3RfcG1fZ2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwo+IC12b2lkIGludGVsX2d0X3BtX3B1 dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiArc3RhdGljIGlubGluZSBib29sCj4gK2ludGVsX2d0 X3BtX2lzX2F3YWtlKGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXJldHVybiBp bnRlbF93YWtlcmVmX2lzX2FjdGl2ZSgmZ3QtPndha2VyZWYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfZ3RfcG1fZ2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiAr CWludGVsX3dha2VyZWZfZ2V0KCZndC0+d2FrZXJlZik7Cj4gK30KPiAgCj4gIHN0YXRpYyBpbmxp bmUgYm9vbCBpbnRlbF9ndF9wbV9nZXRfaWZfYXdha2Uoc3RydWN0IGludGVsX2d0ICpndCkKPiAg ewo+ICAJcmV0dXJuIGludGVsX3dha2VyZWZfZ2V0X2lmX2FjdGl2ZSgmZ3QtPndha2VyZWYpOwo+ ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3RfcG1fcHV0KHN0cnVjdCBpbnRl bF9ndCAqZ3QpCj4gK3sKPiArCWludGVsX3dha2VyZWZfcHV0KCZndC0+d2FrZXJlZik7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGludGVsX2d0X3BtX3dhaXRfZm9yX2lkbGUoc3RydWN0 IGludGVsX2d0ICpndCkKPiArewo+ICsJcmV0dXJuIGludGVsX3dha2VyZWZfd2FpdF9mb3JfaWRs ZSgmZ3QtPndha2VyZWYpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2d0X3BtX2luaXRfZWFybHko c3RydWN0IGludGVsX2d0ICpndCk7Cj4gIAo+ICB2b2lkIGludGVsX2d0X3Nhbml0aXplKHN0cnVj dCBpbnRlbF9ndCAqZ3QsIGJvb2wgZm9yY2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xy Yy5jCj4gaW5kZXggMmI5NzY0MWZlYWMzLi4xOTE4OTJmN2IzYTkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYwo+IEBAIC0xNDAsNiArMTQwLDcgQEAKPiAgI2luY2x1ZGUgImk5 MTVfdmdwdS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCj4gICNpbmNsdWRlICJp bnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZ3RfcG0uaCIKPiAgI2luY2x1ZGUgImludGVs X2xyY19yZWcuaCIKPiAgI2luY2x1ZGUgImludGVsX21vY3MuaCIKPiAgI2luY2x1ZGUgImludGVs X3Jlc2V0LmgiCj4gQEAgLTU1Nyw2ICs1NTgsNyBAQCBleGVjbGlzdHNfc2NoZWR1bGVfaW4oc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBpZHgpCj4gIAkJaW50ZWxfY29udGV4dF9nZXQoY2Up Owo+ICAJCWNlLT5pbmZsaWdodCA9IHJxLT5lbmdpbmU7Cj4gIAo+ICsJCWludGVsX2d0X3BtX2dl dChjZS0+aW5mbGlnaHQtPmd0KTsKPiAgCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdl KHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKPiAgCQlpbnRlbF9lbmdpbmVfY29udGV4 dF9pbihjZS0+aW5mbGlnaHQpOwo+ICAJfQo+IEBAIC01ODksNiArNTkxLDcgQEAgZXhlY2xpc3Rz X3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgCWlmICghaW50ZWxfY29u dGV4dF9pbmZsaWdodF9jb3VudChjZSkpIHsKPiAgCQlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQo Y2UtPmluZmxpZ2h0KTsKPiAgCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJ TlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7Cj4gKwkJaW50ZWxfZ3RfcG1fcHV0KGNlLT5pbmZs aWdodC0+Z3QpOwo+ICAKPiAgCQkvKgo+ICAJCSAqIElmIHRoaXMgaXMgcGFydCBvZiBhIHZpcnR1 YWwgZW5naW5lLCBpdHMgbmV4dCByZXF1ZXN0IG1heQo+IEBAIC0yNzIwLDcgKzI3MjMsNiBAQCBz dGF0aWMgdTMyICpnZW44X2VtaXRfZmluaV9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcGFyayhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCWRlbF90aW1lcl9zeW5jKCZlbmdp bmUtPmV4ZWNsaXN0cy50aW1lcik7Cj4gLQlpbnRlbF9lbmdpbmVfcGFyayhlbmdpbmUpOwo+ICB9 Cj4gIAo+ICB2b2lkIGludGVsX2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9lbmdpbmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li5mNjViMTE4ZTI2MWQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmMKPiBAQCAtMCwwICsxLDI4IEBACj4gKy8qCj4gKyAqIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKyAqCj4gKyAqIENvcHlyaWdodCDCqSAy MDE4IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImk5MTVfc2VsZnRl c3QuaCIKPiArI2luY2x1ZGUgInNlbGZ0ZXN0X2VuZ2luZS5oIgo+ICsKPiAraW50IGludGVsX2Vu Z2luZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ ICsJc3RhdGljIGludCAoKiBjb25zdCB0ZXN0c1tdKShzdHJ1Y3QgaW50ZWxfZ3QgKikgPSB7Cj4g KwkJbGl2ZV9lbmdpbmVfcG1fc2VsZnRlc3RzLAo+ICsJCU5VTEwsCj4gKwl9Owo+ICsJc3RydWN0 IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKPiArCXR5cGVvZigqdGVzdHMpICpmbjsKPiArCj4g Kwlmb3IgKGZuID0gdGVzdHM7ICpmbjsgZm4rKykgewo+ICsJCWludCBlcnI7Cj4gKwo+ICsJCWVy ciA9ICgqZm4pKGd0KTsKPiArCQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2VuZ2luZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWIzMmQw OWVjNWExCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2VuZ2luZS5oCj4gQEAgLTAsMCArMSwxNCBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgU0VMRlRFU1RfRU5HSU5FX0gKPiAr I2RlZmluZSBTRUxGVEVTVF9FTkdJTkVfSAo+ICsKPiArc3RydWN0IGludGVsX2d0Owo+ICsKPiAr aW50IGxpdmVfZW5naW5lX3BtX3NlbGZ0ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiArCj4g KyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9l bmdpbmVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjc1YzE5NzYxMjcw NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9lbmdpbmVfcG0uYwo+IEBAIC0wLDAgKzEsODMgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKPiArICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwg Q29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgo+ICsj aW5jbHVkZSAic2VsZnRlc3RfZW5naW5lLmgiCj4gKyNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X2F0 b21pYy5oIgo+ICsKPiArc3RhdGljIGludCBsaXZlX2VuZ2luZV9wbSh2b2lkICphcmcpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBhcmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCj4gKwkvKgo+ICsJICog Q2hlY2sgd2UgY2FuIGNhbGwgaW50ZWxfZW5naW5lX3BtX3B1dCBmcm9tIGFueSBjb250ZXh0LiBO bwo+ICsJICogZmFpbHVyZXMgYXJlIHJlcG9ydGVkIGRpcmVjdGx5LCBidXQgaWYgd2UgbWVzcyB1 cCBsb2NrZGVwIHNob3VsZAo+ICsJICogdGVsbCB1cy4KPiArCSAqLwo+ICsJaWYgKGludGVsX2d0 X3BtX3dhaXRfZm9yX2lkbGUoZ3QpKSB7Cj4gKwkJcHJfZXJyKCJVbmFibGUgdG8gZmx1c2ggR1Qg cG0gYmVmb3JlIHRlc3RcbiIpOwo+ICsJCXJldHVybiAtRUJVU1k7Cj4gKwl9Cj4gKwo+ICsJR0VN X0JVR19PTihpbnRlbF9ndF9wbV9pc19hd2FrZShndCkpOwo+ICsJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgZ3QtPmk5MTUsIGlkKSB7Cj4gKwkJY29uc3QgdHlwZW9mKCppZ3RfYXRvbWljX3BoYXNl cykgKnA7Cj4gKwo+ICsJCWZvciAocCA9IGlndF9hdG9taWNfcGhhc2VzOyBwLT5uYW1lOyBwKysp IHsKPiArCQkJLyoKPiArCQkJICogQWNxdWlzaXRpb24gaXMgYWx3YXlzIHN5bmNocm9ub3VzLCBl eGNlcHQgaWYgd2UKPiArCQkJICoga25vdyB0aGF0IHRoZSBlbmdpbmUgaXMgYWxyZWFkeSBhd2Fs ZSwgaW4gd2hpY2gKPiArCQkJICogd2Ugc2hvdWxkIHVzZSBpbnRlbF9lbmdpbmVfcG1fZ2V0X2lm X2F3YWtlKCkgdG8KPiArCQkJICogYXRvbWljYWxseSBncmFiIHRoZSB3YWtlcmVmLgo+ICsJCQkg Kgo+ICsJCQkgKiBJbiBwcmFjdGljZSwKPiArCQkJICogICAgaW50ZWxfZW5naW5lX3BtX2dldCgp Owo+ICsJCQkgKiAgICBpbnRlbF9lbmdpbmVfcG1fcHV0KCk7Cj4gKwkJCSAqIG9jY3VycyBpbiBv bmUgdGhyZWFkLCB3aGlsZSBzaW11bHRhbmVvdXNseQo+ICsJCQkgKiAgICBpbnRlbF9lbmdpbmVf cG1fZ2V0X2lmX2F3YWtlKCk7Cj4gKwkJCSAqICAgIGludGVsX2VuZ2luZV9wbV9wdXQoKTsKPiAr CQkJICogb2NjdXJzIGluIGF0b21pYyBjb250ZXh0IGluIGFub3RoZXIuCj4gKwkJCSAqLwo+ICsJ CQlHRU1fQlVHX09OKGludGVsX2VuZ2luZV9wbV9pc19hd2FrZShlbmdpbmUpKTsKPiArCQkJaW50 ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICsKPiArCQkJcC0+Y3JpdGljYWxfc2VjdGlvbl9i ZWdpbigpOwo+ICsJCQlpZiAoIWludGVsX2VuZ2luZV9wbV9nZXRfaWZfYXdha2UoZW5naW5lKSkK PiArCQkJCXByX2VycigiaW50ZWxfZW5naW5lX3BtX2dldF9pZl9hd2FrZSglcykgZmFpbGVkIHVu ZGVyICVzXG4iLAo+ICsJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgcC0+bmFtZSk7Cj4gKwkJCWVs c2UKPiArCQkJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCQkJaW50ZWxfZW5naW5l X3BtX3B1dChlbmdpbmUpOwo+ICsJCQlwLT5jcml0aWNhbF9zZWN0aW9uX2VuZCgpOwo+ICsKPiAr CQkJLyogZW5naW5lIHdha2VyZWYgaXMgc3luYyAoaW5zdGFudCkgKi8KPiArCQkJaWYgKGludGVs X2VuZ2luZV9wbV9pc19hd2FrZShlbmdpbmUpKSB7Cj4gKwkJCQlwcl9lcnIoIiVzIGlzIHN0aWxs IGF3YWtlIGFmdGVyIGZsdXNoaW5nIHBtXG4iLAo+ICsJCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7 Cj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJfQo+ICsKPiArCQkJLyogZ3Qgd2FrZXJlZiBp cyBhc3luYyAoZGVmZXJyZWQgdG8gd29ya3F1ZXVlKSAqLwo+ICsJCQlpZiAoaW50ZWxfZ3RfcG1f d2FpdF9mb3JfaWRsZShndCkpIHsKPiArCQkJCXByX2VycigiR1QgZmFpbGVkIHRvIGlkbGVcbiIp Owo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK2ludCBsaXZlX2VuZ2luZV9wbV9zZWxmdGVzdHMoc3RydWN0IGlu dGVsX2d0ICpndCkKPiArewo+ICsJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVz dHNbXSA9IHsKPiArCQlTVUJURVNUKGxpdmVfZW5naW5lX3BtKSwKPiArCX07Cj4gKwo+ICsJcmV0 dXJuIGludGVsX2d0X2xpdmVfc3VidGVzdHModGVzdHMsIGd0KTsKPiArfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDI4 ZjVlNTM3OWIyYy4uOGI4Mzc1MGNmOTZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gQEAgLTI5LDYgKzI5LDcgQEAKPiAg I2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2lu ZV9wbS5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiArI2luY2x1ZGUgImd0L2ludGVs X2d0X3BtLmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCj4gICNpbmNsdWRlICJp bnRlbF9ndWNfc3VibWlzc2lvbi5oIgo+ICAKPiBAQCAtNTM4LDYgKzUzOSw3IEBAIHN0YXRpYyBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpzY2hlZHVsZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg aW50IGlkeCkKPiAgCWlmICghcnEtPmh3X2NvbnRleHQtPmluZmxpZ2h0KQo+ICAJCXJxLT5od19j b250ZXh0LT5pbmZsaWdodCA9IHJxLT5lbmdpbmU7Cj4gIAlpbnRlbF9jb250ZXh0X2luZmxpZ2h0 X2luYyhycS0+aHdfY29udGV4dCk7Cj4gKwlpbnRlbF9ndF9wbV9nZXQocnEtPmVuZ2luZS0+Z3Qp Owo+ICAKPiAgCXJldHVybiBpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiAgfQo+IEBAIC01NTAsNiAr NTUyLDcgQEAgc3RhdGljIHZvaWQgc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQo+ICAJaWYgKCFpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KHJxLT5od19jb250ZXh0KSkK PiAgCQlycS0+aHdfY29udGV4dC0+aW5mbGlnaHQgPSBOVUxMOwo+ICAKPiArCWludGVsX2d0X3Bt X3B1dChycS0+ZW5naW5lLT5ndCk7Cj4gIAlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKPiAgfQo+ICAK PiBAQCAtMTA3Nyw3ICsxMDgwLDYgQEAgc3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfcmVsZWFz ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICAKPiAgc3RhdGljIHZvaWQgZ3VjX3N1Ym1pc3Npb25f cGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAtCWludGVsX2VuZ2lu ZV9wYXJrKGVuZ2luZSk7Cj4gIAlpbnRlbF9lbmdpbmVfdW5waW5fYnJlYWRjcnVtYnNfaXJxKGVu Z2luZSk7Cj4gIAllbmdpbmUtPmZsYWdzICY9IH5JOTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1C X1RBU0tMRVQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDNi MTUyNjZjNTRmZC4uNDQ0NDU1ODkzMjMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiBAQCAtNDAsNiArNDAsNyBAQAo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9wc3Iu aCIKPiAgCj4gICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfZ3RfcG0uaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX3Jlc2V0LmgiCj4gICNpbmNs dWRlICJndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oIgo+ICAKPiBAQCAtMzY2NSw2ICszNjY2 LDkgQEAgaTkxNV9kcm9wX2NhY2hlc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCQkJaTkx NV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gIAo+ICAJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJCWlmIChyZXQgPT0gMCAmJiB2YWwgJiBEUk9QX0lETEUp Cj4gKwkJCXJldCA9IGludGVsX2d0X3BtX3dhaXRfZm9yX2lkbGUoJmk5MTUtPmd0KTsKPiAgCX0K PiAgCj4gIAlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYgaW50ZWxfZ3RfdGVybWluYWxs eV93ZWRnZWQoJmk5MTUtPmd0KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAzZjg4 OGQ2ZDZhNzcuLmViYmUxYzk5MzE4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBA IC04OTMsMTkgKzg5Myw2IEBAIHZvaWQgaTkxNV9nZW1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHdhaXRf Zm9yX2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCkKPiAtewo+IC0JaWYgKHdhaXRfZm9yKGlu dGVsX2VuZ2luZXNfYXJlX2lkbGUoZ3QpLCBJOTE1X0lETEVfRU5HSU5FU19USU1FT1VUKSkgewo+ IC0JCWRldl9lcnIoZ3QtPmk5MTUtPmRybS5kZXYsCj4gLQkJCSJGYWlsZWQgdG8gaWRsZSBlbmdp bmVzLCBkZWNsYXJpbmcgd2VkZ2VkIVxuIik7Cj4gLQkJR0VNX1RSQUNFX0RVTVAoKTsKPiAtCQlp bnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKPiAtCQlyZXR1cm4gLUVJTzsKPiAtCX0KPiAtCj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIGxvbmcKPiAgd2FpdF9mb3JfdGltZWxpbmVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCSAgIHVuc2lnbmVkIGludCBmbGFncywg bG9uZyB0aW1lb3V0KQo+IEBAIC05NTMsMjcgKzk0MCwyMCBAQCBpbnQgaTkxNV9nZW1fd2FpdF9m b3JfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJICAgdW5zaWduZWQg aW50IGZsYWdzLCBsb25nIHRpbWVvdXQpCj4gIHsKPiAgCS8qIElmIHRoZSBkZXZpY2UgaXMgYXNs ZWVwLCB3ZSBoYXZlIG5vIHJlcXVlc3RzIG91dHN0YW5kaW5nICovCj4gLQlpZiAoIVJFQURfT05D RShpOTE1LT5ndC5hd2FrZSkpCj4gKwlpZiAoIWludGVsX2d0X3BtX2lzX2F3YWtlKCZpOTE1LT5n dCkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JR0VNX1RSQUNFKCJmbGFncz0leCAoJXMpLCB0aW1l b3V0PSVsZCVzLCBhd2FrZT89JXNcbiIsCj4gKwlHRU1fVFJBQ0UoImZsYWdzPSV4ICglcyksIHRp bWVvdXQ9JWxkJXNcbiIsCj4gIAkJICBmbGFncywgZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEID8g ImxvY2tlZCIgOiAidW5sb2NrZWQiLAo+IC0JCSAgdGltZW91dCwgdGltZW91dCA9PSBNQVhfU0NI RURVTEVfVElNRU9VVCA/ICIgKGZvcmV2ZXIpIiA6ICIiLAo+IC0JCSAgeWVzbm8oaTkxNS0+Z3Qu YXdha2UpKTsKPiArCQkgIHRpbWVvdXQsIHRpbWVvdXQgPT0gTUFYX1NDSEVEVUxFX1RJTUVPVVQg PyAiIChmb3JldmVyKSIgOiAiIik7Cj4gIAo+ICAJdGltZW91dCA9IHdhaXRfZm9yX3RpbWVsaW5l cyhpOTE1LCBmbGFncywgdGltZW91dCk7Cj4gIAlpZiAodGltZW91dCA8IDApCj4gIAkJcmV0dXJu IHRpbWVvdXQ7Cj4gIAo+ICAJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkgewo+IC0JCWlu dCBlcnI7Cj4gLQo+ICAJCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAKPiAtCQllcnIgPSB3YWl0X2Zvcl9lbmdpbmVzKCZpOTE1LT5ndCk7Cj4gLQkJaWYg KGVycikKPiAtCQkJcmV0dXJuIGVycjsKPiAtCj4gIAkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkx NSk7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 YWtlcmVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMKPiBpbmRleCAw NmJkOGIyMTVjYzIuLmQ0NDQzZTgxYzFjOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF93YWtlcmVmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 YWtlcmVmLmMKPiBAQCAtNCwyNSArNCwyNSBAQAo+ICAgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgo+ICAgKi8KPiAgCj4gKyNpbmNsdWRlIDxsaW51eC93YWl0X2JpdC5oPgo+ ICsKPiAgI2luY2x1ZGUgImludGVsX3J1bnRpbWVfcG0uaCIKPiAgI2luY2x1ZGUgImludGVsX3dh a2VyZWYuaCIKPiAgCj4gLXN0YXRpYyB2b2lkIHJwbV9nZXQoc3RydWN0IGludGVsX3J1bnRpbWVf cG0gKnJwbSwgc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICtzdGF0aWMgdm9pZCBycG1fZ2V0 KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAgewo+IC0Jd2YtPndha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldChycG0pOwo+ICsJd2YtPndha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dCh3Zi0+cnBtKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcnBtX3B1dChzdHJ1Y3QgaW50ZWxf cnVudGltZV9wbSAqcnBtLCBzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gK3N0YXRpYyB2b2lk IHJwbV9wdXQoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICB7Cj4gIAlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZiA9IGZldGNoX2FuZF96ZXJvKCZ3Zi0+d2FrZXJlZik7Cj4gIAo+IC0JaW50ZWxf cnVudGltZV9wbV9wdXQocnBtLCB3YWtlcmVmKTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KHdm LT5ycG0sIHdha2VyZWYpOwo+ICAJSU5URUxfV0FLRVJFRl9CVUdfT04oIXdha2VyZWYpOwo+ICB9 Cj4gIAo+IC1pbnQgX19pbnRlbF93YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfcnVudGlt ZV9wbSAqcnBtLAo+IC0JCQkgICAgICBzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsCj4gLQkJCSAg ICAgIGludCAoKmZuKShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpKQo+ICtpbnQgX19pbnRlbF93 YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsKPiAgCS8qCj4g IAkgKiBUcmVhdCBnZXQvcHV0IGFzIGRpZmZlcmVudCBzdWJjbGFzc2VzLCBhcyB3ZSBtYXkgbmVl ZCB0byBydW4KPiBAQCAtMzQsMTEgKzM0LDExIEBAIGludCBfX2ludGVsX3dha2VyZWZfZ2V0X2Zp cnN0KHN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0sCj4gIAlpZiAoIWF0b21pY19yZWFkKCZ3 Zi0+Y291bnQpKSB7Cj4gIAkJaW50IGVycjsKPiAgCj4gLQkJcnBtX2dldChycG0sIHdmKTsKPiAr CQlycG1fZ2V0KHdmKTsKPiAgCj4gLQkJZXJyID0gZm4od2YpOwo+ICsJCWVyciA9IHdmLT5vcHMt PmdldCh3Zik7Cj4gIAkJaWYgKHVubGlrZWx5KGVycikpIHsKPiAtCQkJcnBtX3B1dChycG0sIHdm KTsKPiArCQkJcnBtX3B1dCh3Zik7Cj4gIAkJCW11dGV4X3VubG9jaygmd2YtPm11dGV4KTsKPiAg CQkJcmV0dXJuIGVycjsKPiAgCQl9Cj4gQEAgLTUyLDI3ICs1Miw2NyBAQCBpbnQgX19pbnRlbF93 YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gLWludCBfX2ludGVsX3dha2VyZWZfcHV0X2xhc3Qoc3RydWN0IGludGVs X3J1bnRpbWVfcG0gKnJwbSwKPiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsCj4g LQkJCSAgICAgaW50ICgqZm4pKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikpCj4gK3N0YXRpYyB2 b2lkIF9fX19pbnRlbF93YWtlcmVmX3B1dF9sYXN0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikK PiAgewo+IC0JaW50IGVycjsKPiArCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmd2YtPmNvdW50 KSkKPiArCQlnb3RvIHVubG9jazsKPiArCj4gKwlpZiAobGlrZWx5KCF3Zi0+b3BzLT5wdXQod2Yp KSkgewo+ICsJCXJwbV9wdXQod2YpOwo+ICsJCXdha2VfdXBfdmFyKCZ3Zi0+d2FrZXJlZik7Cj4g Kwl9IGVsc2Ugewo+ICsJCS8qIG9wcy0+cHV0KCkgbXVzdCBzY2hlZHVsZSBpdHMgb3duIHJlbGVh c2Ugb24gZGVmZXJyYWwgKi8KPiArCQlhdG9taWNfc2V0X3JlbGVhc2UoJndmLT5jb3VudCwgMSk7 Cj4gKwl9Cj4gIAo+IC0JZXJyID0gZm4od2YpOwo+IC0JaWYgKGxpa2VseSghZXJyKSkKPiAtCQly cG1fcHV0KHJwbSwgd2YpOwo+IC0JZWxzZQo+IC0JCWF0b21pY19pbmMoJndmLT5jb3VudCk7Cj4g K3VubG9jazoKPiAgCW11dGV4X3VubG9jaygmd2YtPm11dGV4KTsKPiArfQo+ICsKPiArdm9pZCBf X2ludGVsX3dha2VyZWZfcHV0X2xhc3Qoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICt7Cj4g KwlJTlRFTF9XQUtFUkVGX0JVR19PTih3b3JrX3BlbmRpbmcoJndmLT53b3JrKSk7Cj4gIAo+IC0J cmV0dXJuIGVycjsKPiArCS8qIEFzc3VtZSB3ZSBhcmUgbm90IGluIHByb2Nlc3MgY29udGV4dCBh bmQgc28gY2Fubm90IHNsZWVwLiAqLwo+ICsJaWYgKHdmLT5vcHMtPmZsYWdzICYgSU5URUxfV0FL RVJFRl9QVVRfQVNZTkMgfHwKPiArCSAgICAhbXV0ZXhfdHJ5bG9jaygmd2YtPm11dGV4KSkgewo+ ICsJCXNjaGVkdWxlX3dvcmsoJndmLT53b3JrKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJ X19fX2ludGVsX3dha2VyZWZfcHV0X2xhc3Qod2YpOwo+ICB9Cj4gIAo+IC12b2lkIF9faW50ZWxf d2FrZXJlZl9pbml0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3Ziwgc3RydWN0IGxvY2tfY2xhc3Nf a2V5ICprZXkpCj4gK3N0YXRpYyB2b2lkIF9faW50ZWxfd2FrZXJlZl9wdXRfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndyaykKPiAgewo+ICsJc3RydWN0IGludGVsX3dha2VyZWYgKndmID0gY29u dGFpbmVyX29mKHdyaywgdHlwZW9mKCp3ZiksIHdvcmspOwo+ICsKPiArCWlmIChhdG9taWNfYWRk X3VubGVzcygmd2YtPmNvdW50LCAtMSwgMSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW11dGV4X2xv Y2soJndmLT5tdXRleCk7Cj4gKwlfX19faW50ZWxfd2FrZXJlZl9wdXRfbGFzdCh3Zik7Cj4gK30K PiArCj4gK3ZvaWQgX19pbnRlbF93YWtlcmVmX2luaXQoc3RydWN0IGludGVsX3dha2VyZWYgKndm LAo+ICsJCQkgIHN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0sCj4gKwkJCSAgY29uc3Qgc3Ry dWN0IGludGVsX3dha2VyZWZfb3BzICpvcHMsCj4gKwkJCSAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5 ICprZXkpCj4gK3sKPiArCXdmLT5ycG0gPSBycG07Cj4gKwl3Zi0+b3BzID0gb3BzOwo+ICsKPiAg CV9fbXV0ZXhfaW5pdCgmd2YtPm11dGV4LCAid2FrZXJlZiIsIGtleSk7Cj4gIAlhdG9taWNfc2V0 KCZ3Zi0+Y291bnQsIDApOwo+ICAJd2YtPndha2VyZWYgPSAwOwo+ICsKPiArCUlOSVRfV09SSygm d2YtPndvcmssIF9faW50ZWxfd2FrZXJlZl9wdXRfd29yayk7Cj4gK30KPiArCj4gK2ludCBpbnRl bF93YWtlcmVmX3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICt7Cj4g KwlyZXR1cm4gd2FpdF92YXJfZXZlbnRfa2lsbGFibGUoJndmLT53YWtlcmVmLAo+ICsJCQkJICAg ICAgICFpbnRlbF93YWtlcmVmX2lzX2FjdGl2ZSh3ZikpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCB3YWtlcmVmX2F1dG9fdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd2FrZXJlZi5oCj4gaW5kZXggMWQ2ZjU5ODZlNGU1Li41MzVhM2ExMjg2NGIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5oCj4gQEAgLTgsMTAgKzgsMTIg QEAKPiAgI2RlZmluZSBJTlRFTF9XQUtFUkVGX0gKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9hdG9t aWMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L211dGV4 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPgo+ICAjaW5jbHVkZSA8bGludXgvc3Rh Y2tkZXBvdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3dvcmtxdWV1ZS5oPgo+ICAKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVH KQo+ICAjZGVmaW5lIElOVEVMX1dBS0VSRUZfQlVHX09OKGV4cHIpIEJVR19PTihleHByKQo+IEBA IC0yMCwyOSArMjIsNDIgQEAKPiAgI2VuZGlmCj4gIAo+ICBzdHJ1Y3QgaW50ZWxfcnVudGltZV9w bTsKPiArc3RydWN0IGludGVsX3dha2VyZWY7Cj4gIAo+ICB0eXBlZGVmIGRlcG90X3N0YWNrX2hh bmRsZV90IGludGVsX3dha2VyZWZfdDsKPiAgCj4gK3N0cnVjdCBpbnRlbF93YWtlcmVmX29wcyB7 Cj4gKwlpbnQgKCpnZXQpKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3Zik7Cj4gKwlpbnQgKCpwdXQp KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3Zik7Cj4gKwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsK PiArI2RlZmluZSBJTlRFTF9XQUtFUkVGX1BVVF9BU1lOQyBCSVQoMCkKPiArfTsKPiArCj4gIHN0 cnVjdCBpbnRlbF93YWtlcmVmIHsKPiAgCWF0b21pY190IGNvdW50Owo+ICAJc3RydWN0IG11dGV4 IG11dGV4Owo+ICsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiArCXN0cnVjdCBp bnRlbF9ydW50aW1lX3BtICpycG07Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9vcHMg Km9wczsKPiArCj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiAgfTsKPiAgCj4gIHZvaWQg X19pbnRlbF93YWtlcmVmX2luaXQoc3RydWN0IGludGVsX3dha2VyZWYgKndmLAo+ICsJCQkgIHN0 cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0sCj4gKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX3dh a2VyZWZfb3BzICpvcHMsCj4gIAkJCSAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwo+IC0j ZGVmaW5lIGludGVsX3dha2VyZWZfaW5pdCh3ZikgZG8gewkJCQkJXAo+ICsjZGVmaW5lIGludGVs X3dha2VyZWZfaW5pdCh3ZiwgcnBtLCBvcHMpIGRvIHsJCQkJXAo+ICAJc3RhdGljIHN0cnVjdCBs b2NrX2NsYXNzX2tleSBfX2tleTsJCQkJXAo+ICAJCQkJCQkJCQlcCj4gLQlfX2ludGVsX3dha2Vy ZWZfaW5pdCgod2YpLCAmX19rZXkpOwkJCQlcCj4gKwlfX2ludGVsX3dha2VyZWZfaW5pdCgod2Yp LCAocnBtKSwgKG9wcyksICZfX2tleSk7CQlcCj4gIH0gd2hpbGUgKDApCj4gIAo+IC1pbnQgX19p bnRlbF93YWtlcmVmX2dldF9maXJzdChzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+IC0J CQkgICAgICBzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsCj4gLQkJCSAgICAgIGludCAoKmZuKShz dHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpKTsKPiAtaW50IF9faW50ZWxfd2FrZXJlZl9wdXRfbGFz dChzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtLAo+IC0JCQkgICAgIHN0cnVjdCBpbnRlbF93 YWtlcmVmICp3ZiwKPiAtCQkJICAgICBpbnQgKCpmbikoc3RydWN0IGludGVsX3dha2VyZWYgKndm KSk7Cj4gK2ludCBfX2ludGVsX3dha2VyZWZfZ2V0X2ZpcnN0KHN0cnVjdCBpbnRlbF93YWtlcmVm ICp3Zik7Cj4gK3ZvaWQgX19pbnRlbF93YWtlcmVmX3B1dF9sYXN0KHN0cnVjdCBpbnRlbF93YWtl cmVmICp3Zik7Cj4gIAo+ICAvKioKPiAgICogaW50ZWxfd2FrZXJlZl9nZXQ6IEFjcXVpcmUgdGhl IHdha2VyZWYKPiBAQCAtNjEsMTIgKzc2LDEwIEBAIGludCBfX2ludGVsX3dha2VyZWZfcHV0X2xh c3Qoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSwKPiAgICogY29kZSBvdGhlcndpc2UuCj4g ICAqLwo+ICBzdGF0aWMgaW5saW5lIGludAo+IC1pbnRlbF93YWtlcmVmX2dldChzdHJ1Y3QgaW50 ZWxfcnVudGltZV9wbSAqcnBtLAo+IC0JCSAgc3RydWN0IGludGVsX3dha2VyZWYgKndmLAo+IC0J CSAgaW50ICgqZm4pKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikpCj4gK2ludGVsX3dha2VyZWZf Z2V0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAgewo+ICAJaWYgKHVubGlrZWx5KCFhdG9t aWNfaW5jX25vdF96ZXJvKCZ3Zi0+Y291bnQpKSkKPiAtCQlyZXR1cm4gX19pbnRlbF93YWtlcmVm X2dldF9maXJzdChycG0sIHdmLCBmbik7Cj4gKwkJcmV0dXJuIF9faW50ZWxfd2FrZXJlZl9nZXRf Zmlyc3Qod2YpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTEwMiwxNiArMTE1LDEyIEBA IGludGVsX3dha2VyZWZfZ2V0X2lmX2FjdGl2ZShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4g ICAqIFJldHVybnM6IDAgaWYgdGhlIHdha2VyZWYgd2FzIHJlbGVhc2VkIHN1Y2Nlc3NmdWxseSwg b3IgYSBuZWdhdGl2ZSBlcnJvcgo+ICAgKiBjb2RlIG90aGVyd2lzZS4KPiAgICovCj4gLXN0YXRp YyBpbmxpbmUgaW50Cj4gLWludGVsX3dha2VyZWZfcHV0KHN0cnVjdCBpbnRlbF9ydW50aW1lX3Bt ICpycG0sCj4gLQkJICBzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsCj4gLQkJICBpbnQgKCpmbiko c3RydWN0IGludGVsX3dha2VyZWYgKndmKSkKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK2ludGVs X3dha2VyZWZfcHV0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAgewo+ICAJSU5URUxfV0FL RVJFRl9CVUdfT04oYXRvbWljX3JlYWQoJndmLT5jb3VudCkgPD0gMCk7Cj4gLQlpZiAoYXRvbWlj X2RlY19hbmRfbXV0ZXhfbG9jaygmd2YtPmNvdW50LCAmd2YtPm11dGV4KSkKPiAtCQlyZXR1cm4g X19pbnRlbF93YWtlcmVmX3B1dF9sYXN0KHJwbSwgd2YsIGZuKTsKPiAtCj4gLQlyZXR1cm4gMDsK PiArCWlmICh1bmxpa2VseSghYXRvbWljX2FkZF91bmxlc3MoJndmLT5jb3VudCwgLTEsIDEpKSkK PiArCQlfX2ludGVsX3dha2VyZWZfcHV0X2xhc3Qod2YpOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAt MTU0LDYgKzE2MywxOSBAQCBpbnRlbF93YWtlcmVmX2lzX2FjdGl2ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfd2FrZXJlZiAqd2YpCj4gIAlyZXR1cm4gUkVBRF9PTkNFKHdmLT53YWtlcmVmKTsKPiAgfQo+ ICAKPiArLyoqCj4gKyAqIGludGVsX3dha2VyZWZfd2FpdF9mb3JfaWRsZTogV2FpdCB1bnRpbCB0 aGUgd2FrZXJlZiBpcyBpZGxlCj4gKyAqIEB3ZjogdGhlIHdha2VyZWYKPiArICoKPiArICogV2Fp dCBmb3IgdGhlIGVhcmxpZXIgYXN5bmNocm9ub3VzIHJlbGVhc2Ugb2YgdGhlIHdha2VyZWYuIE5v dGUKPiArICogdGhpcyB3aWxsIHdhaXQgZm9yIGFueSB0aGlyZCBwYXJ0eSBhcyB3ZWxsLCBzbyBt YWtlIHN1cmUgeW91IG9ubHkgd2FpdAo+ICsgKiB3aGVuIHlvdSBoYXZlIGNvbnRyb2wgb3ZlciB0 aGUgd2FrZXJlZiBhbmQgdHJ1c3Qgbm8gb25lIGVsc2UgaXMgYWNxdWlyaW5nCj4gKyAqIGl0Lgo+ ICsgKgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBpZiBraWxsZWQuCj4g KyAqLwo+ICtpbnQgaW50ZWxfd2FrZXJlZl93YWl0X2Zvcl9pZGxlKHN0cnVjdCBpbnRlbF93YWtl cmVmICp3Zik7Cj4gKwo+ICBzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9hdXRvIHsKPiAgCXN0cnVjdCBp bnRlbF9ydW50aW1lX3BtICpycG07Cj4gIAlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVz dHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3Rz LmgKPiBpbmRleCBhODQxZDNmOWJlZGMuLjFjY2YwZjczMWFjMCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAo+IEBA IC0xMiwxMCArMTIsMTEgQEAKPiAgc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIGk5MTVfbGl2ZV9zYW5p dHljaGVjaykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8KPiAgc2VsZnRlc3QodW5j b3JlLCBpbnRlbF91bmNvcmVfbGl2ZV9zZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KHdvcmthcm91bmRz LCBpbnRlbF93b3JrYXJvdW5kc19saXZlX3NlbGZ0ZXN0cykKPiAtc2VsZnRlc3QodGltZWxpbmVz LCBpbnRlbF90aW1lbGluZV9saXZlX3NlbGZ0ZXN0cykKPiArc2VsZnRlc3QoZ3RfZW5naW5lcywg aW50ZWxfZW5naW5lX2xpdmVfc2VsZnRlc3RzKQo+ICtzZWxmdGVzdChndF90aW1lbGluZXMsIGlu dGVsX3RpbWVsaW5lX2xpdmVfc2VsZnRlc3RzKQo+ICtzZWxmdGVzdChndF9jb250ZXh0cywgaW50 ZWxfY29udGV4dF9saXZlX3NlbGZ0ZXN0cykKPiAgc2VsZnRlc3QocmVxdWVzdHMsIGk5MTVfcmVx dWVzdF9saXZlX3NlbGZ0ZXN0cykKPiAgc2VsZnRlc3QoYWN0aXZlLCBpOTE1X2FjdGl2ZV9saXZl X3NlbGZ0ZXN0cykKPiAtc2VsZnRlc3QoZ3RfY29udGV4dHMsIGludGVsX2NvbnRleHRfbGl2ZV9z ZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KG9iamVjdHMsIGk5MTVfZ2VtX29iamVjdF9saXZlX3NlbGZ0 ZXN0cykKPiAgc2VsZnRlc3QobW1hbiwgaTkxNV9nZW1fbW1hbl9saXZlX3NlbGZ0ZXN0cykKPiAg c2VsZnRlc3QoZG1hYnVmLCBpOTE1X2dlbV9kbWFidWZfbGl2ZV9zZWxmdGVzdHMpCj4gLS0gCj4g Mi4yMy4wLnJjMQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=