From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/8] drm/i915: Keep contexts pinned until after the next kernel context switch Date: Wed, 12 Jun 2019 16:29:48 +0300 Message-ID: <875zpb9bjn.fsf@gaia.fi.intel.com> References: <20190612093111.11684-1-chris@chris-wilson.co.uk> <20190612093111.11684-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5246B8955D for ; Wed, 12 Jun 2019 13:29:52 +0000 (UTC) In-Reply-To: <20190612093111.11684-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+IHdyaXRlczoKCj4gV2UgbmVl ZCB0byBrZWVwIHRoZSBjb250ZXh0IGltYWdlIHBpbm5lZCBpbiBtZW1vcnkgdW50aWwgYWZ0ZXIg dGhlIEdQVQo+IGhhcyBmaW5pc2hlZCB3cml0aW5nIGludG8gaXQuIFNpbmNlIGl0IGNvbnRpbnVl cyB0byB3cml0ZSBhcyB3ZSBzaWduYWwKPiB0aGUgZmluYWwgYnJlYWRjcnVtYiwgd2UgbmVlZCB0 byBrZWVwIGl0IHBpbm5lZCB1bnRpbCB0aGUgcmVxdWVzdCBhZnRlcgo+IGl0IGlzIGNvbXBsZXRl LiBDdXJyZW50bHkgd2Uga25vdyB0aGUgb3JkZXIgaW4gd2hpY2ggcmVxdWVzdHMgZXhlY3V0ZSBv bgo+IGVhY2ggZW5naW5lLCBhbmQgc28gdG8gcmVtb3ZlIHRoYXQgcHJlc3VtcHRpb24gd2UgbmVl ZCB0byBpZGVudGlmeSBhCj4gcmVxdWVzdC9jb250ZXh0LXN3aXRjaCB3ZSBrbm93IG11c3Qgb2Nj dXIgYWZ0ZXIgb3VyIGNvbXBsZXRpb24uIEFueQo+IHJlcXVlc3QgcXVldWVkIGFmdGVyIHRoZSBz aWduYWwgbXVzdCBpbXBseSBhIGNvbnRleHQgc3dpdGNoLCBmb3IKPiBzaW1wbGljaXR5IHdlIHVz ZSBhIGZyZXNoIHJlcXVlc3QgZnJvbSB0aGUga2VybmVsIGNvbnRleHQuCj4KPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgMjQgKystLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmggICB8ICAxIC0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgICAgICAgIHwgMjAgKysrKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwgODAgKysr KysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmggICAgICAgfCAgMyArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRf dHlwZXMuaCB8ICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5o ICAgICAgICB8ICAyIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMgICAgIHwgMjMgKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9wbS5jICAgICB8ICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3R5cGVzLmggIHwgMTMgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5j ICAgICAgICAgICB8IDYyICsrLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3JpbmdidWZmZXIuYyAgICB8IDQ0ICstLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvbW9ja19lbmdpbmUuYyAgICAgICAgIHwgMTEgKy0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmMgICAgICAgICAgICB8IDgwICsrKysrKysrKysrKysrKysrKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCAgICAgICAgICAgIHwgIDUgKysK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaCAgICAgIHwgIDMgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgNCAtCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8IDE1IC0tLS0K PiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgIDEgLQo+ ICAxOSBmaWxlcyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMTg1IGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXgg Yzg2Y2E5ZjIxNTMyLi42MjAwMDYwYWVmMDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNjkyLDE3ICs2OTIsNiBAQCBpbnQgaTkxNV9n ZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtdm9pZCBpOTE1X2dlbV9jb250ZXh0c19sb3N0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQo+IC0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKPiAtCQlpbnRlbF9lbmdpbmVfbG9zdF9jb250 ZXh0KGVuZ2luZSk7Cj4gLX0KPiAtCj4gIHZvaWQgaTkxNV9nZW1fY29udGV4dHNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gQEAgLTEyMDMsMTAgKzExOTIsNiBAQCBnZW44X21v ZGlmeV9ycGNzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX3NzZXUgc3Nl dSkKPiAgCWlmIChyZXQpCj4gIAkJZ290byBvdXRfYWRkOwo+ICAKPiAtCXJldCA9IGdlbjhfZW1p dF9ycGNzX2NvbmZpZyhycSwgY2UsIHNzZXUpOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIG91dF9h ZGQ7Cj4gLQo+ICAJLyoKPiAgCSAqIEd1YXJhbnRlZSBjb250ZXh0IGltYWdlIGFuZCB0aGUgdGlt ZWxpbmUgcmVtYWlucyBwaW5uZWQgdW50aWwgdGhlCj4gIAkgKiBtb2RpZnlpbmcgcmVxdWVzdCBp cyByZXRpcmVkIGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCj4gQEAgLTEyMTQs OSArMTE5OSwxMiBAQCBnZW44X21vZGlmeV9ycGNzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwg c3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAgCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gdGFrZSBv bmUgcGluIG9uIHRoZSBhY2NvdW50IG9mIGl0LiBPciBpbiBvdGhlcgo+ICAJICogd29yZHMgdHJh bnNmZXIgdGhlIHBpbm5lZCBjZSBvYmplY3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KPiAg CSAqLwo+IC0JaWYgKCFpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCZjZS0+YWN0aXZlX3RyYWNr ZXIpKQo+IC0JCV9faW50ZWxfY29udGV4dF9waW4oY2UpOwo+IC0JX19pOTE1X2FjdGl2ZV9yZXF1 ZXN0X3NldCgmY2UtPmFjdGl2ZV90cmFja2VyLCBycSk7Cj4gKwlHRU1fQlVHX09OKGk5MTVfYWN0 aXZlX2lzX2lkbGUoJmNlLT5hY3RpdmUpKTsKPiArCXJldCA9IGk5MTVfYWN0aXZlX3JlZigmY2Ut PmFjdGl2ZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxKTsKCgpXaHkgdGhlIHBsYWNlIHRvIGtlZXAg dGhlIGNvbnRleHQgYWxpdmUgaXMgdGhpcyBmdW5jdGlvbj8KCkluIG90aGVyIHdvcmRzLCBpZiB0 aGUgc3NldSBzdGF0ZSBpcyBub3QgY2hhbmdlZCwgd2UgYmFpbCBvdXQgZWFybHkKYW5kIGRvbid0 IHNldHVwIHRoZSB0cmFja2VyIGFuZCB0aHVzIGZhaWwgaW4gcHJvbWlzZSBmb3Iga2VlcGluZyBp dCBhbGl2ZS4KCj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0X2FkZDsKPiArCj4gKwlyZXQgPSBn ZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKPiAgCj4gIG91dF9hZGQ6Cj4gIAlp OTE1X3JlcXVlc3RfYWRkKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9jb250ZXh0LmgKPiBpbmRleCA2MzAzOTJjNzdlNDguLjk2OTFkZDA2MmY3MiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAo+IEBAIC0xMzQsNyAr MTM0LDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAo+ICAvKiBpOTE1X2dlbV9jb250ZXh0LmMg Ki8KPiAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaTkxNV9nZW1fY29udGV4dHNfbG9zdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfZ2VtX2NvbnRl eHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgCj4gIGludCBp OTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBpbmRleCBmNDBmMTNjMGI4YjcuLjU5 YjZkNDViMTkzNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4g QEAgLTEwLDYgKzEwLDIyIEBACj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAi aTkxNV9nbG9iYWxzLmgiCj4gIAo+ICtzdGF0aWMgdm9pZCBjYWxsX2lkbGVfYmFycmllcnMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgbGxpc3Rfbm9kZSAq bm9kZSwgKm5leHQ7Cj4gKwo+ICsJbGxpc3RfZm9yX2VhY2hfc2FmZShub2RlLCBuZXh0LCBsbGlz dF9kZWxfYWxsKCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpKSB7Cj4gKwkJc3RydWN0IGk5MTVfYWN0 aXZlX3JlcXVlc3QgKmFjdGl2ZSA9Cj4gKwkJCWNvbnRhaW5lcl9vZigoc3RydWN0IGxpc3RfaGVh ZCAqKW5vZGUsCj4gKwkJCQkgICAgIHR5cGVvZigqYWN0aXZlKSwgbGluayk7Cj4gKwo+ICsJCUlO SVRfTElTVF9IRUFEKCZhY3RpdmUtPmxpbmspOwo+ICsJCVJDVV9JTklUX1BPSU5URVIoYWN0aXZl LT5yZXF1ZXN0LCBOVUxMKTsKPiArCj4gKwkJYWN0aXZlLT5yZXRpcmUoYWN0aXZlLCBOVUxMKTsK PiArCX0KPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l Owo+IEBAIC0xNyw4ICszMywxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9wYXJrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKQo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQljYWxsX2lk bGVfYmFycmllcnMoZW5naW5lKTsgLyogY2xlYW51cCBhZnRlciB3ZWRnaW5nICovCj4gIAkJaTkx NV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICsJfQo+ICAKPiAg CWk5MTVfdGltZWxpbmVzX3BhcmsoaTkxNSk7Cj4gIAlpOTE1X3ZtYV9wYXJrZWQoaTkxNSk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwo+IGluZGV4IGM3OGVjMGI1OGU3 Ny4uYzEwZWI0OTA0MjY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuYwo+IEBAIC02MSw3ICs2MSw2IEBAIGludCBfX2ludGVsX2NvbnRleHRfZG9fcGluKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgCj4gIAkJaTkxNV9nZW1fY29udGV4dF9nZXQoY2UtPmdl bV9jb250ZXh0KTsgLyogZm9yIGN0eC0+cHBndHQgKi8KPiAgCj4gLQkJaW50ZWxfY29udGV4dF9n ZXQoY2UpOwo+ICAJCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOyAvKiBmbHVzaCBwaW4gYmVmb3Jl IGl0IGlzIHZpc2libGUgKi8KPiAgCX0KPiAgCj4gQEAgLTg5LDIwICs4OCw0NSBAQCB2b2lkIGlu dGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAJCWNlLT5vcHMt PnVucGluKGNlKTsKPiAgCj4gIAkJaTkxNV9nZW1fY29udGV4dF9wdXQoY2UtPmdlbV9jb250ZXh0 KTsKPiAtCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gKwkJaW50ZWxfY29udGV4dF9pbmFjdGl2 ZShjZSk7Cj4gIAl9Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZjZS0+cGluX211dGV4KTsKPiAgCWlu dGVsX2NvbnRleHRfcHV0KGNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfY29udGV4 dF9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKPiAtCQkJCSBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArc3RhdGljIGludCBfX2NvbnRleHRfcGluX3N0YXRlKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UgPQo+IC0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2Up LCBhY3RpdmVfdHJhY2tlcik7Cj4gKwlpbnQgZXJyOwo+ICAKPiAtCWludGVsX2NvbnRleHRfdW5w aW4oY2UpOwo+ICsJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgZmxhZ3MgfCBQSU5fR0xP QkFMKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwkvKgo+ICsJICogQW5k IG1hcmsgaXQgYXMgYSBnbG9iYWxseSBwaW5uZWQgb2JqZWN0IHRvIGxldCB0aGUgc2hyaW5rZXIg a25vdwo+ICsJICogaXQgY2Fubm90IHJlY2xhaW0gdGhlIG9iamVjdCB1bnRpbCB3ZSByZWxlYXNl IGl0Lgo+ICsJICovCj4gKwl2bWEtPm9iai0+cGluX2dsb2JhbCsrOwo+ICsJdm1hLT5vYmotPm1t LmRpcnR5ID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg X19jb250ZXh0X3VucGluX3N0YXRlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4gKwl2bWEt Pm9iai0+cGluX2dsb2JhbC0tOwo+ICsJX19pOTE1X3ZtYV91bnBpbih2bWEpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFj dGl2ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gY29udGFpbmVyX29mKGFj dGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZSk7Cj4gKwo+ICsJaWYgKGNlLT5zdGF0ZSkKPiArCQlf X2NvbnRleHRfdW5waW5fc3RhdGUoY2UtPnN0YXRlKTsKPiArCj4gKwlpbnRlbF9jb250ZXh0X3B1 dChjZSk7Cj4gIH0KPiAgCj4gIHZvaWQKPiBAQCAtMTI1LDggKzE0OSw0NiBAQCBpbnRlbF9jb250 ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAKPiAgCW11dGV4X2luaXQoJmNl LT5waW5fbXV0ZXgpOwo+ICAKPiAtCWk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgmY2UtPmFjdGl2 ZV90cmFja2VyLAo+IC0JCQkJIE5VTEwsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKPiArCWk5MTVf YWN0aXZlX2luaXQoY3R4LT5pOTE1LCAmY2UtPmFjdGl2ZSwgaW50ZWxfY29udGV4dF9yZXRpcmUp Owo+ICt9Cj4gKwo+ICtpbnQgaW50ZWxfY29udGV4dF9hY3RpdmUoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLCB1bnNpZ25lZCBsb25nIGZsYWdzKQoKCkkgY2FuIGRpZ2VzdCB0aGlzIGJ1dCB3YXMg bWlzc2luZyB0aGUgdmVyYiBpbiB0aGlzIGFuZCB0aG91Z2h0CmludGVsX2NvbnRleHRfYWN0aXZh dGV8ZGVhY3RpdmF0ZS4KCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKCFpOTE1X2FjdGl2 ZV9hY3F1aXJlKCZjZS0+YWN0aXZlKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlpbnRlbF9jb250 ZXh0X2dldChjZSk7Cj4gKwo+ICsJaWYgKCFjZS0+c3RhdGUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJZXJyID0gX19jb250ZXh0X3Bpbl9zdGF0ZShjZS0+c3RhdGUsIGZsYWdzKTsKPiArCWlmIChl cnIpIHsKPiArCQlpOTE1X2FjdGl2ZV9jYW5jZWwoJmNlLT5hY3RpdmUpOwo+ICsJCWludGVsX2Nv bnRleHRfcHV0KGNlKTsKPiArCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCS8qIFByZWFsbG9j YXRlIHRyYWNraW5nIG5vZGVzICovCj4gKwlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVs KGNlLT5nZW1fY29udGV4dCkpIHsKPiArCQllcnIgPSBpOTE1X2FjdGl2ZV9hY3F1aXJlX3ByZWFs bG9jYXRlX2JhcnJpZXIoJmNlLT5hY3RpdmUsCj4gKwkJCQkJCQkgICAgICBjZS0+ZW5naW5lKTsK PiArCQlpZiAoZXJyKSB7Cj4gKwkJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNlLT5hY3RpdmUpOwo+ ICsJCQlyZXR1cm4gZXJyOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArdm9pZCBpbnRlbF9jb250ZXh0X2luYWN0aXZlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK PiArewo+ICsJLyogTm9kZXMgcHJlYWxsb2NhdGVkIGluIGludGVsX2NvbnRleHRfYWN0aXZlKCkg Ki8KPiArCWk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmllcigmY2UtPmFjdGl2ZSk7Cj4gKwlpOTE1 X2FjdGl2ZV9yZWxlYXNlKCZjZS0+YWN0aXZlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTkx NV9nbG9iYWxfY29udGV4dF9zaHJpbmsodm9pZCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dC5oCj4gaW5kZXggNmQ1NDUzYmEyYzFlLi40ZGU0YmEyZGY3ZDQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gQEAgLTEwMiw2ICsxMDIsOSBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF9leGl0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKPiAgCQljZS0+b3BzLT5leGl0KGNlKTsKPiAgfQo+ICAKPiAraW50IGludGVsX2Nv bnRleHRfYWN0aXZlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgdW5zaWduZWQgbG9uZyBmbGFn cyk7Cj4gK3ZvaWQgaW50ZWxfY29udGV4dF9pbmFjdGl2ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpOwo+ICsKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqaW50ZWxfY29u dGV4dF9nZXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICB7Cj4gIAlrcmVmX2dldCgmY2Ut PnJlZik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHRfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMu aAo+IGluZGV4IDgyNWZjZjBhYzljNC4uZTk1YmU0YmU5NjEyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IEBAIC01NiwxMCArNTYsMTAg QEAgc3RydWN0IGludGVsX2NvbnRleHQgewo+ICAJaW50ZWxfZW5naW5lX21hc2tfdCBzYXR1cmF0 ZWQ7IC8qIHN1Ym1pdHRpbmcgc2VtYXBob3JlcyB0b28gbGF0ZT8gKi8KPiAgCj4gIAkvKioKPiAt CSAqIGFjdGl2ZV90cmFja2VyOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFj dGl2aXR5Cj4gLQkgKiBvbiB0aGlzIGludGVsX2NvbnRleHQgb2JqZWN0Lgo+ICsJICogYWN0aXZl OiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIHJxIGFjdGl2aXR5IChpbmMuIGV4dGVybmFsKSBvbiB0 aGlzCj4gKwkgKiBpbnRlbF9jb250ZXh0IG9iamVjdC4KPiAgCSAqLwo+IC0Jc3RydWN0IGk5MTVf YWN0aXZlX3JlcXVlc3QgYWN0aXZlX3RyYWNrZXI7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0 aXZlOwo+ICAKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqb3BzOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAo+IGluZGV4IDIwMWJiZDJhNGZhZi4u YjlmZDg4ZjIxNjA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgK PiBAQCAtNDY2LDggKzQ2Niw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcmVz ZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICBib29sIGludGVsX2VuZ2luZV9p c19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIGJvb2wgaW50ZWxfZW5n aW5lc19hcmVfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAt dm9pZCBpbnRlbF9lbmdpbmVfbG9zdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7Cj4gLQo+ICB2b2lkIGludGVsX2VuZ2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9u KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgdW5zaWduZWQgaW50IGludGVsX2Vu Z2luZXNfaGFzX2NvbnRleHRfaXNvbGF0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRl eCBjMGQ5ODZkYjVhNzUuLjVhMDgwMzZhZTc3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTYxMSw2ICs2MTEsOCBAQCBzdGF0aWMgaW50IGlu dGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICB7Cj4gIAlpbnQgZXJyOwo+ICAKPiArCWluaXRfbGxpc3RfaGVhZCgmZW5naW5lLT5iYXJyaWVy X3Rhc2tzKTsKPiArCj4gIAllcnIgPSBpbml0X3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4gIAlpZiAo ZXJyKQo+ICAJCXJldHVybiBlcnI7Cj4gQEAgLTg3MCw2ICs4NzIsNyBAQCB2b2lkIGludGVsX2Vu Z2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlp ZiAoZW5naW5lLT5wcmVlbXB0X2NvbnRleHQpCj4gIAkJaW50ZWxfY29udGV4dF91bnBpbihlbmdp bmUtPnByZWVtcHRfY29udGV4dCk7Cj4gIAlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+a2Vy bmVsX2NvbnRleHQpOwo+ICsJR0VNX0JVR19PTighbGxpc3RfZW1wdHkoJmVuZ2luZS0+YmFycmll cl90YXNrcykpOwo+ICAKPiAgCWk5MTVfdGltZWxpbmVfZmluaSgmZW5naW5lLT50aW1lbGluZSk7 Cj4gIAo+IEBAIC0xMjAxLDI2ICsxMjA0LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2Rl ZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCQllbmdp bmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24oZW5naW5lKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAq IGludGVsX2VuZ2luZV9sb3N0X2NvbnRleHQ6IGNhbGxlZCB3aGVuIHRoZSBHUFUgaXMgcmVzZXQg aW50byB1bmtub3duIHN0YXRlCj4gLSAqIEBlbmdpbmU6IHRoZSBlbmdpbmUKPiAtICoKPiAtICog V2UgaGF2ZSBlaXRoZXIgcmVzZXQgdGhlIEdQVSBvciBvdGhlcndpc2UgYWJvdXQgdG8gbG9zZSBz dGF0ZSB0cmFja2luZyBvZgo+IC0gKiB0aGUgY3VycmVudCBHUFUgbG9naWNhbCBzdGF0ZSAoZS5n LiBzdXNwZW5kKS4gT24gbmV4dCB1c2UsIGl0IGlzIHRoZXJlZm9yZQo+IC0gKiBpbXBlcmF0aXZl IHRoYXQgd2UgbWFrZSBubyBwcmVzdW1wdGlvbnMgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgYW5k IGxvYWQKPiAtICogZnJvbSBzY3JhdGNoLgo+IC0gKi8KPiAtdm9pZCBpbnRlbF9lbmdpbmVfbG9z dF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAtewo+IC0Jc3RydWN0 IGludGVsX2NvbnRleHQgKmNlOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JY2UgPSBmZXRjaF9hbmRfemVybygmZW5n aW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCk7Cj4gLQlpZiAoY2UpCj4gLQkJaW50ZWxfY29udGV4 dF91bnBpbihjZSk7Cj4gLX0KPiAtCj4gIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29y ZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCXN3aXRjaCAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfcG0uYwo+IGluZGV4IGNjZjAzNDc2NDc0MS4uM2M0NDhhMDYxYWJkIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPiBAQCAtODgsNiArODgsOCBAQCBz dGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAKPiAgCS8qIENoZWNrIGFnYWluIG9uIHRoZSBuZXh0IHJldGlyZW1lbnQu ICovCj4gIAllbmdpbmUtPndha2VyZWZfc2VyaWFsID0gZW5naW5lLT5zZXJpYWwgKyAxOwo+ICsK PiArCWk5MTVfcmVxdWVzdF9hZGRfYmFycmllcnMocnEpOwo+ICAJX19pOTE1X3JlcXVlc3RfY29t bWl0KHJxKTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBpbmRleCAwMTIyMzg2NDIzN2EuLjMzYTMxYWEyZDJh ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlw ZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o Cj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2lycV93b3JrLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9sbGlzdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiAgCj4gICNp bmNsdWRlICJpOTE1X2dlbS5oIgo+IEBAIC0yODgsNiArMjg5LDcgQEAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwo+ICAKPiAgCXN0cnVjdCBp OTE1X3RpbWVsaW5lIHRpbWVsaW5lOwo+ICsJc3RydWN0IGxsaXN0X2hlYWQgYmFycmllcl90YXNr czsKPiAgCj4gIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqa2VybmVsX2NvbnRleHQ7IC8qIHBpbm5l ZCAqLwo+ICAJc3RydWN0IGludGVsX2NvbnRleHQgKnByZWVtcHRfY29udGV4dDsgLyogcGlubmVk OyBvcHRpb25hbCAqLwo+IEBAIC00MzUsMTcgKzQzNyw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3Mgewo+ICAKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIGV4ZWNsaXN0czsKPiAg Cj4gLQkvKiBDb250ZXh0cyBhcmUgcGlubmVkIHdoaWxzdCB0aGV5IGFyZSBhY3RpdmUgb24gdGhl IEdQVS4gVGhlIGxhc3QKPiAtCSAqIGNvbnRleHQgZXhlY3V0ZWQgcmVtYWlucyBhY3RpdmUgd2hp bHN0IHRoZSBHUFUgaXMgaWRsZSAtIHRoZQo+IC0JICogc3dpdGNoIGF3YXkgYW5kIHdyaXRlIHRv IHRoZSBjb250ZXh0IG9iamVjdCBvbmx5IG9jY3VycyBvbiB0aGUKPiAtCSAqIG5leHQgZXhlY3V0 aW9uLiAgQ29udGV4dHMgYXJlIG9ubHkgdW5waW5uZWQgb24gcmV0aXJlbWVudCBvZiB0aGUKPiAt CSAqIGZvbGxvd2luZyByZXF1ZXN0IGVuc3VyaW5nIHRoYXQgd2UgY2FuIGFsd2F5cyB3cml0ZSB0 byB0aGUgb2JqZWN0Cj4gLQkgKiBvbiB0aGUgY29udGV4dCBzd2l0Y2ggZXZlbiBhZnRlciBpZGxp bmcuIEFjcm9zcyBzdXNwZW5kLCB3ZSBzd2l0Y2gKPiAtCSAqIHRvIHRoZSBrZXJuZWwgY29udGV4 dCBhbmQgdHJhc2ggaXQgYXMgdGhlIHNhdmUgbWF5IG5vdCBoYXBwZW4KPiAtCSAqIGJlZm9yZSB0 aGUgaGFyZHdhcmUgaXMgcG93ZXJlZCBkb3duLgo+IC0JICovCj4gLQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqbGFzdF9yZXRpcmVkX2NvbnRleHQ7Cj4gLQo+ICAJLyogc3RhdHVzX25vdGlmaWVyOiBs aXN0IG9mIGNhbGxiYWNrcyBmb3IgY29udGV4dC1zd2l0Y2ggY2hhbmdlcyAqLwo+ICAJc3RydWN0 IGF0b21pY19ub3RpZmllcl9oZWFkIGNvbnRleHRfc3RhdHVzX25vdGlmaWVyOwo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IGI4ZjU1OTJkYTE4Zi4uMDU1MjQ0ODk2 MTVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMTQyMiw2MCAr MTQyMiwxMSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBr cmVmICprcmVmKQo+ICAJaW50ZWxfY29udGV4dF9mcmVlKGNlKTsKPiAgfQo+ICAKPiAtc3RhdGlj IGludCBfX2NvbnRleHRfcGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IC17Cj4gLQl1bnNpZ25l ZCBpbnQgZmxhZ3M7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCWZsYWdzID0gUElOX0dMT0JBTCB8IFBJ Tl9ISUdIOwo+IC0JZmxhZ3MgfD0gUElOX09GRlNFVF9CSUFTIHwgaTkxNV9nZ3R0X3Bpbl9iaWFz KHZtYSk7Cj4gLQo+IC0JZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgZmxhZ3MpOwo+IC0J aWYgKGVycikKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCXZtYS0+b2JqLT5waW5fZ2xvYmFsKys7 Cj4gLQl2bWEtPm9iai0+bW0uZGlydHkgPSB0cnVlOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4g LQo+IC1zdGF0aWMgdm9pZCBfX2NvbnRleHRfdW5waW4oc3RydWN0IGk5MTVfdm1hICp2bWEpCj4g LXsKPiAtCXZtYS0+b2JqLT5waW5fZ2xvYmFsLS07Cj4gLQlfX2k5MTVfdm1hX3VucGluKHZtYSk7 Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucGluKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l Owo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgdGFza2xldCBtYXkgc3RpbGwgYmUgdXNpbmcgYSBwb2lu dGVyIHRvIG91ciBzdGF0ZSwgdmlhIGFuCj4gLQkgKiBvbGQgcmVxdWVzdC4gSG93ZXZlciwgc2lu Y2Ugd2Uga25vdyB3ZSBvbmx5IHVucGluIHRoZSBjb250ZXh0Cj4gLQkgKiBvbiByZXRpcmVtZW50 IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWVzdCwgd2Uga25vdyB0aGF0IHRoZSBsYXN0Cj4gLQkgKiBy ZXF1ZXN0IHJlZmVyZW5jaW5nIHVzIHdpbGwgaGF2ZSBoYWQgYSBjb21wbGV0aW9uIENTIGludGVy cnVwdC4KPiAtCSAqIElmIHdlIHNlZSB0aGF0IGl0IGlzIHN0aWxsIGFjdGl2ZSwgaXQgbWVhbnMg dGhhdCB0aGUgdGFza2xldCBoYXNuJ3QKPiAtCSAqIGhhZCB0aGUgY2hhbmNlIHRvIHJ1biB5ZXQ7 IGxldCBpdCBydW4gYmVmb3JlIHdlIHRlYXJkb3duIHRoZQo+IC0JICogcmVmZXJlbmNlIGl0IG1h eSB1c2UuCj4gLQkgKi8KPiAtCWVuZ2luZSA9IFJFQURfT05DRShjZS0+aW5mbGlnaHQpOwo+IC0J aWYgKHVubGlrZWx5KGVuZ2luZSkpIHsKPiAtCQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAt CQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gLQkJ cHJvY2Vzc19jc2IoZW5naW5lKTsKPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAtCj4gLQkJR0VNX0JVR19PTihSRUFEX09OQ0UoY2Ut PmluZmxpZ2h0KSk7Cj4gLQl9Cj4gLQo+ICAJaTkxNV9nZW1fY29udGV4dF91bnBpbl9od19pZChj ZS0+Z2VtX2NvbnRleHQpOwo+IC0KPiAtCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwo+IC0K PiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+IC0JX19jb250 ZXh0X3VucGluKGNlLT5zdGF0ZSk7Cj4gKwlpbnRlbF9yaW5nX3VucGluKGNlLT5yaW5nKTsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtMTUxMiw3ICsxNDYzLDEwIEBAIF9fZXhlY2xpc3Rz X2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgCQlnb3RvIGVycjsKPiAg CUdFTV9CVUdfT04oIWNlLT5zdGF0ZSk7Cj4gIAo+IC0JcmV0ID0gX19jb250ZXh0X3BpbihjZS0+ c3RhdGUpOwo+ICsJcmV0ID0gaW50ZWxfY29udGV4dF9hY3RpdmUoY2UsCj4gKwkJCQkgICBlbmdp bmUtPmk5MTUtPmdndHQucGluX2JpYXMgfAo+ICsJCQkJICAgUElOX09GRlNFVF9CSUFTIHwKPiAr CQkJCSAgIFBJTl9ISUdIKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnI7Cj4gIAo+IEBAIC0x NTIxLDcgKzE0NzUsNyBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UsCj4gIAkJCQkJSTkxNV9NQVBfT1ZFUlJJREUpOwo+ICAJaWYgKElTX0VSUih2YWRk cikpIHsKPiAgCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKPiAtCQlnb3RvIHVucGluX3ZtYTsKPiAr CQlnb3RvIHVucGluX2FjdGl2ZTsKPiAgCX0KPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX3Bpbihj ZS0+cmluZyk7Cj4gQEAgLTE1NDIsOCArMTQ5Niw4IEBAIF9fZXhlY2xpc3RzX2NvbnRleHRfcGlu KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcp Owo+ICB1bnBpbl9tYXA6Cj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+ b2JqKTsKPiAtdW5waW5fdm1hOgo+IC0JX19jb250ZXh0X3VucGluKGNlLT5zdGF0ZSk7Cj4gK3Vu cGluX2FjdGl2ZToKPiArCWludGVsX2NvbnRleHRfaW5hY3RpdmUoY2UpOwo+ICBlcnI6Cj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZm ZXIuYwo+IGluZGV4IGM4MzRkMDE2Yzk2NS4uN2FiMjhiNmY2MmExIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xMzQ5LDQ1ICsxMzQ5LDkg QEAgc3RhdGljIHZvaWQgX19jb250ZXh0X3VucGluX3BwZ3R0KHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gIAkJZ2VuNl9wcGd0dF91bnBpbihpOTE1X3ZtX3RvX3BwZ3R0KHZtKSk7Cj4g IH0KPiAgCj4gLXN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IC0JaW50IGVycjsKPiAtCj4gLQl2 bWEgPSBjZS0+c3RhdGU7Cj4gLQlpZiAoIXZtYSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQllcnIg PSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fR0xPQkFMIHwgUElOX0hJR0gpOwo+IC0JaWYg KGVycikKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCS8qCj4gLQkgKiBBbmQgbWFyayBpcyBhcyBh IGdsb2JhbGx5IHBpbm5lZCBvYmplY3QgdG8gbGV0IHRoZSBzaHJpbmtlciBrbm93Cj4gLQkgKiBp dCBjYW5ub3QgcmVjbGFpbSB0aGUgb2JqZWN0IHVudGlsIHdlIHJlbGVhc2UgaXQuCj4gLQkgKi8K PiAtCXZtYS0+b2JqLT5waW5fZ2xvYmFsKys7Cj4gLQl2bWEtPm9iai0+bW0uZGlydHkgPSB0cnVl Owo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfX2NvbnRleHRfdW5w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKPiAtCj4gLQl2bWEgPSBjZS0+c3RhdGU7Cj4gLQlpZiAoIXZtYSkKPiAtCQlyZXR1cm47Cj4g LQo+IC0Jdm1hLT5vYmotPnBpbl9nbG9iYWwtLTsKPiAtCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4g LX0KPiAtCj4gIHN0YXRpYyB2b2lkIHJpbmdfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UpCj4gIHsKPiAgCV9fY29udGV4dF91bnBpbl9wcGd0dChjZS0+Z2VtX2NvbnRleHQp Owo+IC0JX19jb250ZXh0X3VucGluKGNlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpOTE1 X3ZtYSAqCj4gQEAgLTE0NzcsMTggKzE0NDEsMTggQEAgc3RhdGljIGludCByaW5nX2NvbnRleHRf cGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgCQljZS0+c3RhdGUgPSB2bWE7Cj4gIAl9 Cj4gIAo+IC0JZXJyID0gX19jb250ZXh0X3BpbihjZSk7Cj4gKwllcnIgPSBpbnRlbF9jb250ZXh0 X2FjdGl2ZShjZSwgUElOX0hJR0gpOwo+ICAJaWYgKGVycikKPiAgCQlyZXR1cm4gZXJyOwo+ICAK PiAgCWVyciA9IF9fY29udGV4dF9waW5fcHBndHQoY2UtPmdlbV9jb250ZXh0KTsKPiAgCWlmIChl cnIpCj4gLQkJZ290byBlcnJfdW5waW47Cj4gKwkJZ290byBlcnJfYWN0aXZlOwo+ICAKPiAgCXJl dHVybiAwOwo+ICAKPiAtZXJyX3VucGluOgo+IC0JX19jb250ZXh0X3VucGluKGNlKTsKPiArZXJy X2FjdGl2ZToKPiArCWludGVsX2NvbnRleHRfaW5hY3RpdmUoY2UpOwo+ICAJcmV0dXJuIGVycjsK PiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdp bmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKPiBpbmRleCA2ZDc1 NjI3NjllYjIuLmI3Njc1ZWYxODUyMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9tb2NrX2VuZ2luZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19l bmdpbmUuYwo+IEBAIC0xNDYsMTIgKzE0NiwxOCBAQCBzdGF0aWMgdm9pZCBtb2NrX2NvbnRleHRf ZGVzdHJveShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICAKPiAgc3RhdGljIGludCBtb2NrX2NvbnRleHRf cGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgewo+ICsJaW50IHJldDsKPiArCj4gIAlp ZiAoIWNlLT5yaW5nKSB7Cj4gIAkJY2UtPnJpbmcgPSBtb2NrX3JpbmcoY2UtPmVuZ2luZSk7Cj4g IAkJaWYgKCFjZS0+cmluZykKPiAgCQkJcmV0dXJuIC1FTk9NRU07Cj4gIAl9Cj4gIAo+ICsJcmV0 ID0gaW50ZWxfY29udGV4dF9hY3RpdmUoY2UsIFBJTl9ISUdIKTsKPiArCWlmIChyZXQpCj4gKwkJ cmV0dXJuIHJldDsKPiArCj4gIAltb2NrX3RpbWVsaW5lX3BpbihjZS0+cmluZy0+dGltZWxpbmUp Owo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMzI4LDE0ICszMzQsOSBAQCB2b2lkIG1vY2tfZW5n aW5lX2ZyZWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3Qg bW9ja19lbmdpbmUgKm1vY2sgPQo+ICAJCWNvbnRhaW5lcl9vZihlbmdpbmUsIHR5cGVvZigqbW9j ayksIGJhc2UpOwo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAKPiAgCUdFTV9CVUdf T04odGltZXJfcGVuZGluZygmbW9jay0+aHdfZGVsYXkpKTsKPiAgCj4gLQljZSA9IGZldGNoX2Fu ZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKPiAtCWlmIChjZSkKPiAtCQlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAtCj4gIAlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2lu ZS0+a2VybmVsX2NvbnRleHQpOwo+ICAKPiAgCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJz KGVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZl LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gaW5kZXggODYzYWUxMjcw N2JhLi4xMDBlNDBhZmM5ZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9hY3RpdmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKPiBA QCAtMTAwLDcgKzEwMCw3IEBAIGFjdGl2ZV9pbnN0YW5jZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZiwgdTY0IGlkeCkKPiAgCQlwYXJlbnQgPSAqcDsKPiAgCj4gIAkJbm9kZSA9IHJiX2VudHJ5KHBh cmVudCwgc3RydWN0IGFjdGl2ZV9ub2RlLCBub2RlKTsKPiAtCQlpZiAobm9kZS0+dGltZWxpbmUg PT0gaWR4KQo+ICsJCWlmIChub2RlLT50aW1lbGluZSA9PSBpZHggJiYgIUlTX0VSUihub2RlLT5i YXNlLnJlcXVlc3QpKQoKSXMgdGhpcyByZWxhdGVkIGNoYW5nZT8KCi1NaWthCgo+ICAJCQlnb3Rv IHJlcGxhY2U7Cj4gIAo+ICAJCWlmIChub2RlLT50aW1lbGluZSA8IGlkeCkKPiBAQCAtMTU3LDYg KzE1Nyw3IEBAIHZvaWQgaTkxNV9hY3RpdmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAgCXJlZi0+cmV0aXJlID0gcmV0aXJlOwo+ICAJcmVmLT50cmVlID0gUkJfUk9PVDsK PiAgCWk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgmcmVmLT5sYXN0LCBOVUxMLCBsYXN0X3JldGly ZSk7Cj4gKwlpbml0X2xsaXN0X2hlYWQoJnJlZi0+YmFycmllcnMpOwo+ICAJcmVmLT5jb3VudCA9 IDA7Cj4gIH0KPiAgCj4gQEAgLTI2Myw2ICsyNjQsODMgQEAgdm9pZCBpOTE1X2FjdGl2ZV9maW5p KHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICB9Cj4gICNlbmRpZgo+ICAKPiAraW50IGk5MTVf YWN0aXZlX2FjcXVpcmVfcHJlYWxsb2NhdGVfYmFycmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZiwKPiArCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiArCXVuc2lnbmVk IGxvbmcgdG1wOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJR0VNX0JVR19PTighZW5naW5lLT5t YXNrKTsKPiArCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBpOTE1LCBlbmdpbmUtPm1h c2ssIHRtcCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICprY3R4ID0gZW5naW5lLT5rZXJu ZWxfY29udGV4dDsKPiArCQlzdHJ1Y3QgYWN0aXZlX25vZGUgKm5vZGU7Cj4gKwo+ICsJCW5vZGUg PSBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX2NhY2hlLCBHRlBfS0VSTkVMKTsKPiArCQlp ZiAodW5saWtlbHkoIW5vZGUpKSB7Cj4gKwkJCWVyciA9IC1FTk9NRU07Cj4gKwkJCWJyZWFrOwo+ ICsJCX0KPiArCj4gKwkJaTkxNV9hY3RpdmVfcmVxdWVzdF9pbml0KCZub2RlLT5iYXNlLAo+ICsJ CQkJCSAodm9pZCAqKWVuZ2luZSwgbm9kZV9yZXRpcmUpOwo+ICsJCW5vZGUtPnRpbWVsaW5lID0g a2N0eC0+cmluZy0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQ7Cj4gKwkJbm9kZS0+cmVmID0gcmVm Owo+ICsJCXJlZi0+Y291bnQrKzsKPiArCj4gKwkJbGxpc3RfYWRkKChzdHJ1Y3QgbGxpc3Rfbm9k ZSAqKSZub2RlLT5iYXNlLmxpbmssCj4gKwkJCSAgJnJlZi0+YmFycmllcnMpOwo+ICsJfQo+ICsK PiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9hY3RpdmVfYWNxdWlyZV9iYXJy aWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICt7Cj4gKwlzdHJ1Y3QgbGxpc3Rfbm9kZSAq cG9zLCAqbmV4dDsKPiArCj4gKwlpOTE1X2FjdGl2ZV9hY3F1aXJlKHJlZik7Cj4gKwo+ICsJbGxp c3RfZm9yX2VhY2hfc2FmZShwb3MsIG5leHQsIGxsaXN0X2RlbF9hbGwoJnJlZi0+YmFycmllcnMp KSB7Cj4gKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJCXN0cnVjdCBhY3Rp dmVfbm9kZSAqbm9kZTsKPiArCQlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpwYXJlbnQ7Cj4gKwo+ICsJ CW5vZGUgPSBjb250YWluZXJfb2YoKHN0cnVjdCBsaXN0X2hlYWQgKilwb3MsCj4gKwkJCQkgICAg dHlwZW9mKCpub2RlKSwgYmFzZS5saW5rKTsKPiArCj4gKwkJZW5naW5lID0gKHZvaWQgKilyY3Vf YWNjZXNzX3BvaW50ZXIobm9kZS0+YmFzZS5yZXF1ZXN0KTsKPiArCQlSQ1VfSU5JVF9QT0lOVEVS KG5vZGUtPmJhc2UucmVxdWVzdCwgRVJSX1BUUigtRUFHQUlOKSk7Cj4gKwo+ICsJCXBhcmVudCA9 IE5VTEw7Cj4gKwkJcCA9ICZyZWYtPnRyZWUucmJfbm9kZTsKPiArCQl3aGlsZSAoKnApIHsKPiAr CQkJcGFyZW50ID0gKnA7Cj4gKwkJCWlmIChyYl9lbnRyeShwYXJlbnQsCj4gKwkJCQkgICAgIHN0 cnVjdCBhY3RpdmVfbm9kZSwKPiArCQkJCSAgICAgbm9kZSktPnRpbWVsaW5lIDwgbm9kZS0+dGlt ZWxpbmUpCj4gKwkJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7Cj4gKwkJCWVsc2UKPiArCQkJCXAg PSAmcGFyZW50LT5yYl9sZWZ0Owo+ICsJCX0KPiArCQlyYl9saW5rX25vZGUoJm5vZGUtPm5vZGUs IHBhcmVudCwgcCk7Cj4gKwkJcmJfaW5zZXJ0X2NvbG9yKCZub2RlLT5ub2RlLCAmcmVmLT50cmVl KTsKPiArCj4gKwkJbGxpc3RfYWRkKChzdHJ1Y3QgbGxpc3Rfbm9kZSAqKSZub2RlLT5iYXNlLmxp bmssCj4gKwkJCSAgJmVuZ2luZS0+YmFycmllcl90YXNrcyk7Cj4gKwl9Cj4gKwlpOTE1X2FjdGl2 ZV9yZWxlYXNlKHJlZik7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9yZXF1ZXN0X2FkZF9iYXJyaWVy cyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPiArCXN0cnVjdCBsbGlzdF9ub2RlICpub2RlLCAqbmV4 dDsKPiArCj4gKwlsbGlzdF9mb3JfZWFjaF9zYWZlKG5vZGUsIG5leHQsIGxsaXN0X2RlbF9hbGwo JmVuZ2luZS0+YmFycmllcl90YXNrcykpCj4gKwkJbGlzdF9hZGRfdGFpbCgoc3RydWN0IGxpc3Rf aGVhZCAqKW5vZGUsICZycS0+YWN0aXZlX2xpc3QpOwo+ICt9Cj4gKwo+ICBpbnQgaTkxNV9hY3Rp dmVfcmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKPiAgCQkJ ICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Fj dGl2ZS5oCj4gaW5kZXggN2Q3NTg3MTljZTM5Li5kNTVkMzc2NzM5NDQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmgKPiBAQCAtNDA2LDQgKzQwNiw5IEBAIHZvaWQgaTkxNV9hY3Rp dmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X2FjdGl2ZV9maW5pKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKSB7IH0KPiAgI2VuZGlmCj4g IAo+ICtpbnQgaTkxNV9hY3RpdmVfYWNxdWlyZV9wcmVhbGxvY2F0ZV9iYXJyaWVyKHN0cnVjdCBp OTE1X2FjdGl2ZSAqcmVmLAo+ICsJCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwo+ICt2b2lkIGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmllcihzdHJ1Y3QgaTkxNV9hY3Rp dmUgKnJlZik7Cj4gK3ZvaWQgaTkxNV9yZXF1ZXN0X2FkZF9iYXJyaWVycyhzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSk7Cj4gKwo+ICAjZW5kaWYgLyogX0k5MTVfQUNUSVZFX0hfICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZV90eXBlcy5oCj4gaW5kZXggYjY3OTI1M2I1M2E1Li5j MDI1OTkxYjkyMzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3Rp dmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVz LmgKPiBAQCAtNyw2ICs3LDcgQEAKPiAgI2lmbmRlZiBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8KPiAg I2RlZmluZSBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8KPiAgCj4gKyNpbmNsdWRlIDxsaW51eC9sbGlz dC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yY3Vw ZGF0ZS5oPgo+ICAKPiBAQCAtMzEsNiArMzIsOCBAQCBzdHJ1Y3QgaTkxNV9hY3RpdmUgewo+ICAJ dW5zaWduZWQgaW50IGNvdW50Owo+ICAKPiAgCXZvaWQgKCpyZXRpcmUpKHN0cnVjdCBpOTE1X2Fj dGl2ZSAqcmVmKTsKPiArCj4gKwlzdHJ1Y3QgbGxpc3RfaGVhZCBiYXJyaWVyczsKPiAgfTsKPiAg Cj4gICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCBlOTgwYzFlZTNkY2YuLjA2NjNmMmRmNjVkNiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC0xMTk3LDEwICsxMTk3LDYgQEAgdm9pZCBpOTE1X2dlbV9zYW5p dGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCWludGVsX3J1 bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+IC0KPiAtCW11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fY29udGV4dHNfbG9zdChpOTE1KTsKPiAtCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIH0KPiAgCj4gIHZvaWQgaTkx NV9nZW1faW5pdF9zd2l6emxpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggZTliNTllZWE0ZjEwLi45ZWZm OWRlN2ZhMTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0yMTMs MTggKzIxMyw2IEBAIHN0YXRpYyB2b2lkIF9fcmV0aXJlX2VuZ2luZV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7Cj4gIAo+ ICAJbG9jYWxfaXJxX2VuYWJsZSgpOwo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgYmFja2luZyBvYmpl Y3QgZm9yIHRoZSBjb250ZXh0IGlzIGRvbmUgYWZ0ZXIgc3dpdGNoaW5nIHRvIHRoZQo+IC0JICog Km5leHQqIGNvbnRleHQuIFRoZXJlZm9yZSB3ZSBjYW5ub3QgcmV0aXJlIHRoZSBwcmV2aW91cyBj b250ZXh0IHVudGlsCj4gLQkgKiB0aGUgbmV4dCBjb250ZXh0IGhhcyBhbHJlYWR5IHN0YXJ0ZWQg cnVubmluZy4gSG93ZXZlciwgc2luY2Ugd2UKPiAtCSAqIGNhbm5vdCB0YWtlIHRoZSByZXF1aXJl ZCBsb2NrcyBhdCBpOTE1X3JlcXVlc3Rfc3VibWl0KCkgd2UKPiAtCSAqIGRlZmVyIHRoZSB1bnBp bm5pbmcgb2YgdGhlIGFjdGl2ZSBjb250ZXh0IHRvIG5vdywgcmV0aXJlbWVudCBvZgo+IC0JICog dGhlIHN1YnNlcXVlbnQgcmVxdWVzdC4KPiAtCSAqLwo+IC0JaWYgKGVuZ2luZS0+bGFzdF9yZXRp cmVkX2NvbnRleHQpCj4gLQkJaW50ZWxfY29udGV4dF91bnBpbihlbmdpbmUtPmxhc3RfcmV0aXJl ZF9jb250ZXh0KTsKPiAtCWVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQgPSBycS0+aHdfY29u dGV4dDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19yZXRpcmVfZW5naW5lX3VwdG8oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IEBAIC03NTksOSArNzQ3LDYgQEAgX19pOTE1X3Jl cXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgZ2ZwX3QgZ2ZwKQo+ICAKPiAg CXJxLT5pbmZpeCA9IHJxLT5yaW5nLT5lbWl0OyAvKiBlbmQgb2YgaGVhZGVyOyBzdGFydCBvZiB1 c2VyIHBheWxvYWQgKi8KPiAgCj4gLQkvKiBLZWVwIGEgc2Vjb25kIHBpbiBmb3IgdGhlIGR1YWwg cmV0aXJlbWVudCBhbG9uZyBlbmdpbmUgYW5kIHJpbmcgKi8KPiAtCV9faW50ZWxfY29udGV4dF9w aW4oY2UpOwo+IC0KPiAgCWludGVsX2NvbnRleHRfbWFya19hY3RpdmUoY2UpOwo+ICAJcmV0dXJu IHJxOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jCj4gaW5kZXggYjdmM2ZiYjRhZTg5Li5hOTZkMGMwMTJkNDYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gQEAg LTU2LDcgKzU2LDYgQEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAKPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAJbW9ja19kZXZpY2VfZmx1c2goaTkxNSk7Cj4gLQlpOTE1X2dlbV9jb250ZXh0c19sb3N0 KGk5MTUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4g IAlmbHVzaF93b3JrKCZpOTE1LT5nZW0uaWRsZV93b3JrKTsKPiAtLSAKPiAyLjIwLjEKPgo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=