From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2] drm/i915: Keep contexts pinned until after the next kernel context switch Date: Fri, 14 Jun 2019 12:22:16 +0300 Message-ID: <87zhmk8qt3.fsf@gaia.fi.intel.com> References: <20190612093111.11684-2-chris@chris-wilson.co.uk> <20190612142625.2066-1-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 897958944A for ; Fri, 14 Jun 2019 09:22:21 +0000 (UTC) In-Reply-To: <20190612142625.2066-1-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 ZSBhIGZyZXNoIHJlcXVlc3QgZnJvbSB0aGUga2VybmVsIGNvbnRleHQuCj4KPiBUaGUgc2VxdWVu Y2Ugb2Ygb3BlcmF0aW9ucyBmb3Iga2VlcGluZyB0aGUgY29udGV4dCBwaW5uZWQgdW50aWwgc2F2 ZWQgaXM6Cj4KPiAgLSBPbiBjb250ZXh0IGFjdGl2YXRpb24sIHdlIHByZWFsbG9jYXRlIGEgbm9k ZSBmb3IgZWFjaCBwaHlzaWNhbCBlbmdpbmUKPiAgICB0aGUgY29udGV4dCBtYXkgb3BlcmF0ZSBv bi4gVGhpcyBpcyB0byBhdm9pZCBhbGxvY2F0aW9ucyBkdXJpbmcKPiAgICB1bnBpbm5pbmcsIHdo aWNoIG1heSBiZSBmcm9tIGluc2lkZSBGU19SRUNMQUlNIGNvbnRleHQgKGFrYSB0aGUKPiAgICBz aHJpbmtlcikKPgo+ICAtIE9uIGNvbnRleHQgZGVhY3RpdmF0aW9uIG9uIHJldGlyZW1lbnQgb2Yg dGhlIGxhc3QgYWN0aXZlIHJlcXVlc3QgKHdoaWNoCj4gICAgaXMgYmVmb3JlIHdlIGtub3cgdGhl IGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQpLCB3ZSBhZGQgdGhlCj4gICAgcHJlYWxsb2NhdGVkIG5v ZGUgb250byBhIGJhcnJpZXIgbGlzdCBvbiBlYWNoIGVuZ2luZQo+Cj4gIC0gT24gZW5naW5lIGlk bGluZywgd2UgZW1pdCBhIHN3aXRjaCB0byBrZXJuZWwgY29udGV4dC4gV2hlbiB0aGlzCj4gICAg c3dpdGNoIGNvbXBsZXRlcywgd2Uga25vdyB0aGF0IGFsbCBwcmV2aW91cyBjb250ZXh0cyBtdXN0 IGhhdmUgYmVlbgo+ICAgIHNhdmVkLCBhbmQgc28gb24gcmV0aXJpbmcgdGhpcyByZXF1ZXN0IHdl IGNhbiBmaW5hbGx5IHVucGluIGFsbCB0aGUKPiAgICBjb250ZXh0cyB0aGF0IHdlcmUgbWFya2Vk IGFzIGRlYWN0aXZhdGVkIHByaW9yIHRvIHRoZSBzd2l0Y2guCj4KPiBXZSBjYW4gZW5oYW5jZSB0 aGlzIGluIGZ1dHVyZSBieSBmbHVzaGluZyBhbGwgdGhlIGlkbGUgY29udGV4dHMgb24gYQo+IHJl Z3VsYXIgaGVhcnRiZWF0IHB1bHNlIG9mIGEgc3dpdGNoIHRvIGtlcm5lbCBjb250ZXh0LCB3aGlj aCB3aWxsIGFsc28KPiBiZSB1c2VkIHRvIGNoZWNrIGZvciBodW5nIGVuZ2luZXMuCj4KPiB2Mjog aW50ZWxfY29udGV4dF9hY3RpdmVfYWNxdWlyZS9fcmVsZWFzZQo+Cj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBh bGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jICAgfCAyNCArKy0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaCAgIHwgIDEgLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYyAgICAgICAgfCAyMCArKysrLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMgICAgICAgfCA4MCArKysrKysrKysrKysr KysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCAgICAgICB8 ICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oIHwg IDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAgIHwg IDIgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAy MyArLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMgICAg IHwgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAg fCAxMyArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAg IHwgNjIgKystLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Z2J1ZmZlci5jICAgIHwgNDQgKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9t b2NrX2VuZ2luZS5jICAgICAgICAgfCAxMSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9hY3RpdmUuYyAgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmggICAgICAgICAgICB8ICA1ICsrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmggICAgICB8ICAzICsKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDQgLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAxNSAtLS0tCj4gIC4uLi9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAxIC0KPiAgMTkgZmlsZXMg Y2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDE4NCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGM4NmNhOWYyMTUz Mi4uNjIwMDA2MGFlZjA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fY29udGV4dC5jCj4gQEAgLTY5MiwxNyArNjkyLDYgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRz X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXZvaWQgaTkxNV9nZW1fY29udGV4dHNfbG9zdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiAtCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBkZXZfcHJpdiwgaWQpCj4gLQkJaW50ZWxfZW5naW5lX2xvc3RfY29udGV4dChlbmdpbmUp Owo+IC19Cj4gLQo+ICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+IEBAIC0xMjAzLDEwICsxMTkyLDYgQEAgZ2VuOF9tb2RpZnlfcnBjcyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCj4gIAlpZiAo cmV0KQo+ICAJCWdvdG8gb3V0X2FkZDsKPiAgCj4gLQlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25m aWcocnEsIGNlLCBzc2V1KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBvdXRfYWRkOwo+IC0KPiAg CS8qCj4gIAkgKiBHdWFyYW50ZWUgY29udGV4dCBpbWFnZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFp bnMgcGlubmVkIHVudGlsIHRoZQo+ICAJICogbW9kaWZ5aW5nIHJlcXVlc3QgaXMgcmV0aXJlZCBi eSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0eSB0cmFja2VyLgo+IEBAIC0xMjE0LDkgKzExOTksMTIg QEAgZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRl bF9zc2V1IHNzZXUpCj4gIAkgKiBCdXQgd2Ugb25seSBuZWVkIHRvIHRha2Ugb25lIHBpbiBvbiB0 aGUgYWNjb3VudCBvZiBpdC4gT3IgaW4gb3RoZXIKPiAgCSAqIHdvcmRzIHRyYW5zZmVyIHRoZSBw aW5uZWQgY2Ugb2JqZWN0IHRvIHRyYWNrZWQgYWN0aXZlIHJlcXVlc3QuCj4gIAkgKi8KPiAtCWlm ICghaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldCgmY2UtPmFjdGl2ZV90cmFja2VyKSkKPiAtCQlf X2ludGVsX2NvbnRleHRfcGluKGNlKTsKPiAtCV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJmNl LT5hY3RpdmVfdHJhY2tlciwgcnEpOwo+ICsJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9pc19pZGxl KCZjZS0+YWN0aXZlKSk7Cj4gKwlyZXQgPSBpOTE1X2FjdGl2ZV9yZWYoJmNlLT5hY3RpdmUsIHJx LT5mZW5jZS5jb250ZXh0LCBycSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0X2FkZDsKPiAr Cj4gKwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKPiAgCj4gIG91 dF9hZGQ6Cj4gIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9jb250ZXh0LmgKPiBpbmRleCA2MzAzOTJjNzdlNDguLjk2OTFkZDA2MmY3 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4 dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAo+ IEBAIC0xMzQsNyArMTM0LDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX2NvbnRleHRf aXNfa2VybmVsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAo+ICAvKiBpOTE1X2dl bV9jb250ZXh0LmMgKi8KPiAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9jb250ZXh0c19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaTkxNV9nZW1fY29u dGV4dHNfbG9zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5 MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAgCj4gIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBpbmRleCA2ZTc1 NzAyYzU2NzEuLjE0MWYzZWEzNDlhNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9wbS5jCj4gQEAgLTEwLDYgKzEwLDIyIEBACj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ ICAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCj4gIAo+ICtzdGF0aWMgdm9pZCBjYWxsX2lkbGVf YmFycmllcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3Qg bGxpc3Rfbm9kZSAqbm9kZSwgKm5leHQ7Cj4gKwo+ICsJbGxpc3RfZm9yX2VhY2hfc2FmZShub2Rl LCBuZXh0LCBsbGlzdF9kZWxfYWxsKCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpKSB7CgpTZWVtcyB0 byBiZSBudWxsIHNhZmUuCgo+ICsJCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUg PQo+ICsJCQljb250YWluZXJfb2YoKHN0cnVjdCBsaXN0X2hlYWQgKilub2RlLAo+ICsJCQkJICAg ICB0eXBlb2YoKmFjdGl2ZSksIGxpbmspOwo+ICsKPiArCQlJTklUX0xJU1RfSEVBRCgmYWN0aXZl LT5saW5rKTsKPiArCQlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+cmVxdWVzdCwgTlVMTCk7Cj4g Kwo+ICsJCWFjdGl2ZS0+cmV0aXJlKGFjdGl2ZSwgTlVMTCk7Cj4gKwl9Cj4gK30KPiArCj4gIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiBAQCAtMTcsOCArMzMsMTAg QEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiArCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJY2FsbF9pZGxlX2JhcnJpZXJzKGVuZ2luZSk7 IC8qIGNsZWFudXAgYWZ0ZXIgd2VkZ2luZyAqLwo+ICAJCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmlu aSgmZW5naW5lLT5iYXRjaF9wb29sKTsKPiArCX0KPiAgCj4gIAlpOTE1X3RpbWVsaW5lc19wYXJr KGk5MTUpOwo+ICAJaTkxNV92bWFfcGFya2VkKGk5MTUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9jb250ZXh0LmMKPiBpbmRleCBjNzhlYzBiNThlNzcuLjhlMjk5YzYzMTU3NSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiBAQCAtNjEsNyArNjEs NiBAQCBpbnQgX19pbnRlbF9jb250ZXh0X2RvX3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cj4gIAo+ICAJCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGNlLT5nZW1fY29udGV4dCk7IC8qIGZvciBj dHgtPnBwZ3R0ICovCj4gIAo+IC0JCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKPiAgCQlzbXBfbWJf X2JlZm9yZV9hdG9taWMoKTsgLyogZmx1c2ggcGluIGJlZm9yZSBpdCBpcyB2aXNpYmxlICovCj4g IAl9Cj4gIAo+IEBAIC04OSwyMCArODgsNDUgQEAgdm9pZCBpbnRlbF9jb250ZXh0X3VucGluKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgCQljZS0+b3BzLT51bnBpbihjZSk7Cj4gIAo+ICAJ CWk5MTVfZ2VtX2NvbnRleHRfcHV0KGNlLT5nZW1fY29udGV4dCk7Cj4gLQkJaW50ZWxfY29udGV4 dF9wdXQoY2UpOwo+ICsJCWludGVsX2NvbnRleHRfYWN0aXZlX3JlbGVhc2UoY2UpOwoKTm90IGdv aW5nIHRvIGluc2lzdCBhbnkgY2hhbmdlIGluIG5hbWluZyBidXQgSSB3YXMgdGhpbmtpbmcKaGVy ZSB0aGF0IHdlIGFybSB0aGUgYmFycmllcnMuCgo+ICAJfQo+ICAKPiAgCW11dGV4X3VubG9jaygm Y2UtPnBpbl9tdXRleCk7Cj4gIAlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGludGVsX2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0 ICphY3RpdmUsCj4gLQkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3N0YXRpYyBpbnQg X19jb250ZXh0X3Bpbl9zdGF0ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdW5zaWduZWQgbG9uZyBm bGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0KPiAtCQljb250YWluZXJf b2YoYWN0aXZlLCB0eXBlb2YoKmNlKSwgYWN0aXZlX3RyYWNrZXIpOwo+ICsJaW50IGVycjsKCldo eSBub3QgcmV0PyBJIGhhdmUgc3RhcnRlZCB0byByZW1vdmluZyBlcnJzLiBBbSBJIHN3aW1taW5n IGluIHVwc3RyZWFtPyA6UAoKPiAgCj4gLQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiArCWVy ciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIGZsYWdzIHwgUElOX0dMT0JBTCk7Cj4gKwlpZiAo ZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJLyoKPiArCSAqIEFuZCBtYXJrIGl0IGFzIGEg Z2xvYmFsbHkgcGlubmVkIG9iamVjdCB0byBsZXQgdGhlIHNocmlua2VyIGtub3cKPiArCSAqIGl0 IGNhbm5vdCByZWNsYWltIHRoZSBvYmplY3QgdW50aWwgd2UgcmVsZWFzZSBpdC4KPiArCSAqLwo+ ICsJdm1hLT5vYmotPnBpbl9nbG9iYWwrKzsKPiArCXZtYS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fY29udGV4dF91bnBp bl9zdGF0ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiArewo+ICsJdm1hLT5vYmotPnBpbl9nbG9i YWwtLTsKPiArCV9faTkxNV92bWFfdW5waW4odm1hKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg aW50ZWxfY29udGV4dF9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlICphY3RpdmUpCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigq Y2UpLCBhY3RpdmUpOwo+ICsKPiArCWlmIChjZS0+c3RhdGUpCj4gKwkJX19jb250ZXh0X3VucGlu X3N0YXRlKGNlLT5zdGF0ZSk7Cj4gKwo+ICsJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICB9Cj4g IAo+ICB2b2lkCj4gQEAgLTEyNSw4ICsxNDksNDYgQEAgaW50ZWxfY29udGV4dF9pbml0KHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgCj4gIAltdXRleF9pbml0KCZjZS0+cGluX211dGV4KTsK PiAgCj4gLQlpOTE1X2FjdGl2ZV9yZXF1ZXN0X2luaXQoJmNlLT5hY3RpdmVfdHJhY2tlciwKPiAt CQkJCSBOVUxMLCBpbnRlbF9jb250ZXh0X3JldGlyZSk7Cj4gKwlpOTE1X2FjdGl2ZV9pbml0KGN0 eC0+aTkxNSwgJmNlLT5hY3RpdmUsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKPiArfQo+ICsKPiAr aW50IGludGVsX2NvbnRleHRfYWN0aXZlX2FjcXVpcmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmICghaTkx NV9hY3RpdmVfYWNxdWlyZSgmY2UtPmFjdGl2ZSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaW50 ZWxfY29udGV4dF9nZXQoY2UpOwo+ICsKPiArCWlmICghY2UtPnN0YXRlKQo+ICsJCXJldHVybiAw Owo+ICsKPiArCWVyciA9IF9fY29udGV4dF9waW5fc3RhdGUoY2UtPnN0YXRlLCBmbGFncyk7Cj4g KwlpZiAoZXJyKSB7Cj4gKwkJaTkxNV9hY3RpdmVfY2FuY2VsKCZjZS0+YWN0aXZlKTsKPiArCQlp bnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwkvKiBQ cmVhbGxvY2F0ZSB0cmFja2luZyBub2RlcyAqLwo+ICsJaWYgKCFpOTE1X2dlbV9jb250ZXh0X2lz X2tlcm5lbChjZS0+Z2VtX2NvbnRleHQpKSB7Cj4gKwkJZXJyID0gaTkxNV9hY3RpdmVfYWNxdWly ZV9wcmVhbGxvY2F0ZV9iYXJyaWVyKCZjZS0+YWN0aXZlLAo+ICsJCQkJCQkJICAgICAgY2UtPmVu Z2luZSk7Cj4gKwkJaWYgKGVycikgewo+ICsJCQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZjZS0+YWN0 aXZlKTsKCkZvciBtZSBpdCBsb29rcyBsaWtlIHdlIGFyZSBtaXNzaW5nIGNvbnRleHQgcHV0IGlu IGhlcmUuCgoKPiArCQkJcmV0dXJuIGVycjsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfY29udGV4dF9hY3RpdmVfcmVsZWFzZShzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCj4gK3sKPiArCS8qIE5vZGVzIHByZWFsbG9jYXRlZCBpbiBpbnRlbF9j b250ZXh0X2FjdGl2ZSgpICovCj4gKwlpOTE1X2FjdGl2ZV9hY3F1aXJlX2JhcnJpZXIoJmNlLT5h Y3RpdmUpOwo+ICsJaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2UtPmFjdGl2ZSk7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGk5MTVfZ2xvYmFsX2NvbnRleHRfc2hyaW5rKHZvaWQpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAo+IGluZGV4IDZkNTQ1M2JhMmMxZS4uYTQ3Mjc1 YmM0ZjAxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAo+IEBA IC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfZXhpdChz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gIAkJY2UtPm9wcy0+ZXhpdChjZSk7Cj4gIH0KPiAg Cj4gK2ludCBpbnRlbF9jb250ZXh0X2FjdGl2ZV9hY3F1aXJlKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7Cj4gK3ZvaWQgaW50ZWxfY29udGV4dF9hY3RpdmVf cmVsZWFzZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwo+ICsKPiAgc3RhdGljIGlubGluZSBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqaW50ZWxfY29udGV4dF9nZXQoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlKQo+ICB7Cj4gIAlrcmVmX2dldCgmY2UtPnJlZik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IGluZGV4IDgyNWZjZjBhYzljNC4uZTk1 YmU0YmU5NjEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Nv bnRleHRfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHRfdHlwZXMuaAo+IEBAIC01NiwxMCArNTYsMTAgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewo+ ICAJaW50ZWxfZW5naW5lX21hc2tfdCBzYXR1cmF0ZWQ7IC8qIHN1Ym1pdHRpbmcgc2VtYXBob3Jl cyB0b28gbGF0ZT8gKi8KPiAgCj4gIAkvKioKPiAtCSAqIGFjdGl2ZV90cmFja2VyOiBBY3RpdmUg dHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFjdGl2aXR5Cj4gLQkgKiBvbiB0aGlzIGludGVs X2NvbnRleHQgb2JqZWN0Lgo+ICsJICogYWN0aXZlOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIHJx IGFjdGl2aXR5IChpbmMuIGV4dGVybmFsKSBvbiB0aGlzCj4gKwkgKiBpbnRlbF9jb250ZXh0IG9i amVjdC4KPiAgCSAqLwo+IC0Jc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgYWN0aXZlX3RyYWNr ZXI7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOwo+ICAKPiAgCWNvbnN0IHN0cnVjdCBp bnRlbF9jb250ZXh0X29wcyAqb3BzOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmUuaAo+IGluZGV4IDIwMWJiZDJhNGZhZi4uYjlmZDg4ZjIxNjA5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPiBAQCAtNDY2LDggKzQ2Niw2IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAo+ICBib29sIGludGVsX2VuZ2luZV9pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cj4gIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfbG9zdF9jb250 ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gLQo+ICB2b2lkIGludGVsX2Vu Z2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KTsKPiAgdW5zaWduZWQgaW50IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRfaXNvbGF0aW9u KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCBjMGQ5ODZkYjVhNzUuLjVhMDgwMzZhZTc3 NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAg LTYxMSw2ICs2MTEsOCBAQCBzdGF0aWMgaW50IGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlpbnQgZXJyOwo+ICAKPiArCWlu aXRfbGxpc3RfaGVhZCgmZW5naW5lLT5iYXJyaWVyX3Rhc2tzKTsKPiArCj4gIAllcnIgPSBpbml0 X3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4gIAlpZiAoZXJyKQo+ICAJCXJldHVybiBlcnI7Cj4gQEAg LTg3MCw2ICs4NzIsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlpZiAoZW5naW5lLT5wcmVlbXB0X2NvbnRleHQp Cj4gIAkJaW50ZWxfY29udGV4dF91bnBpbihlbmdpbmUtPnByZWVtcHRfY29udGV4dCk7Cj4gIAlp bnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJR0VNX0JVR19P TighbGxpc3RfZW1wdHkoJmVuZ2luZS0+YmFycmllcl90YXNrcykpOwo+ICAKPiAgCWk5MTVfdGlt ZWxpbmVfZmluaSgmZW5naW5lLT50aW1lbGluZSk7Cj4gIAo+IEBAIC0xMjAxLDI2ICsxMjA0LDYg QEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCQllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24o ZW5naW5lKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIGludGVsX2VuZ2luZV9sb3N0X2NvbnRleHQ6 IGNhbGxlZCB3aGVuIHRoZSBHUFUgaXMgcmVzZXQgaW50byB1bmtub3duIHN0YXRlCj4gLSAqIEBl bmdpbmU6IHRoZSBlbmdpbmUKPiAtICoKPiAtICogV2UgaGF2ZSBlaXRoZXIgcmVzZXQgdGhlIEdQ VSBvciBvdGhlcndpc2UgYWJvdXQgdG8gbG9zZSBzdGF0ZSB0cmFja2luZyBvZgo+IC0gKiB0aGUg Y3VycmVudCBHUFUgbG9naWNhbCBzdGF0ZSAoZS5nLiBzdXNwZW5kKS4gT24gbmV4dCB1c2UsIGl0 IGlzIHRoZXJlZm9yZQo+IC0gKiBpbXBlcmF0aXZlIHRoYXQgd2UgbWFrZSBubyBwcmVzdW1wdGlv bnMgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGxvYWQKPiAtICogZnJvbSBzY3JhdGNoLgo+ IC0gKi8KPiAtdm9pZCBpbnRlbF9lbmdpbmVfbG9zdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+IC0KPiAt CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQo+IC0JY2UgPSBmZXRjaF9hbmRfemVybygmZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCk7 Cj4gLQlpZiAoY2UpCj4gLQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gLX0KPiAtCj4gIGJv b2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIHsKPiAgCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+IGluZGV4IGNjZjAzNDc2NDc0 MS4uM2M0NDhhMDYxYWJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX3BtLmMKPiBAQCAtODgsNiArODgsOCBAQCBzdGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVs X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCS8qIENoZWNr IGFnYWluIG9uIHRoZSBuZXh0IHJldGlyZW1lbnQuICovCj4gIAllbmdpbmUtPndha2VyZWZfc2Vy aWFsID0gZW5naW5lLT5zZXJpYWwgKyAxOwo+ICsKPiArCWk5MTVfcmVxdWVzdF9hZGRfYmFycmll cnMocnEpOwo+ICAJX19pOTE1X3JlcXVlc3RfY29tbWl0KHJxKTsKPiAgCj4gIAlyZXR1cm4gZmFs c2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90 eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBp bmRleCAwMTIyMzg2NDIzN2EuLjMzYTMxYWEyZDJhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2lu Y2x1ZGUgPGxpbnV4L2lycV93b3JrLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9sbGlzdC5oPgo+ICAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KPiAgCj4gICNpbmNsdWRlICJpOTE1X2dlbS5oIgo+IEBAIC0y ODgsNiArMjg5LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAlzdHJ1Y3QgaW50ZWxf cmluZyAqYnVmZmVyOwo+ICAKPiAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lIHRpbWVsaW5lOwo+ICsJ c3RydWN0IGxsaXN0X2hlYWQgYmFycmllcl90YXNrczsKPiAgCj4gIAlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqa2VybmVsX2NvbnRleHQ7IC8qIHBpbm5lZCAqLwo+ICAJc3RydWN0IGludGVsX2NvbnRl eHQgKnByZWVtcHRfY29udGV4dDsgLyogcGlubmVkOyBvcHRpb25hbCAqLwo+IEBAIC00MzUsMTcg KzQzNyw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAKPiAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIGV4ZWNsaXN0czsKPiAgCj4gLQkvKiBDb250ZXh0cyBhcmUgcGlubmVk IHdoaWxzdCB0aGV5IGFyZSBhY3RpdmUgb24gdGhlIEdQVS4gVGhlIGxhc3QKPiAtCSAqIGNvbnRl eHQgZXhlY3V0ZWQgcmVtYWlucyBhY3RpdmUgd2hpbHN0IHRoZSBHUFUgaXMgaWRsZSAtIHRoZQo+ IC0JICogc3dpdGNoIGF3YXkgYW5kIHdyaXRlIHRvIHRoZSBjb250ZXh0IG9iamVjdCBvbmx5IG9j Y3VycyBvbiB0aGUKPiAtCSAqIG5leHQgZXhlY3V0aW9uLiAgQ29udGV4dHMgYXJlIG9ubHkgdW5w aW5uZWQgb24gcmV0aXJlbWVudCBvZiB0aGUKPiAtCSAqIGZvbGxvd2luZyByZXF1ZXN0IGVuc3Vy aW5nIHRoYXQgd2UgY2FuIGFsd2F5cyB3cml0ZSB0byB0aGUgb2JqZWN0Cj4gLQkgKiBvbiB0aGUg Y29udGV4dCBzd2l0Y2ggZXZlbiBhZnRlciBpZGxpbmcuIEFjcm9zcyBzdXNwZW5kLCB3ZSBzd2l0 Y2gKPiAtCSAqIHRvIHRoZSBrZXJuZWwgY29udGV4dCBhbmQgdHJhc2ggaXQgYXMgdGhlIHNhdmUg bWF5IG5vdCBoYXBwZW4KPiAtCSAqIGJlZm9yZSB0aGUgaGFyZHdhcmUgaXMgcG93ZXJlZCBkb3du Lgo+IC0JICovCj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbGFzdF9yZXRpcmVkX2NvbnRleHQ7 Cj4gLQo+ICAJLyogc3RhdHVzX25vdGlmaWVyOiBsaXN0IG9mIGNhbGxiYWNrcyBmb3IgY29udGV4 dC1zd2l0Y2ggY2hhbmdlcyAqLwo+ICAJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNvbnRl eHRfc3RhdHVzX25vdGlmaWVyOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+ IGluZGV4IGI4ZjU1OTJkYTE4Zi4uZDBhNTE3NTIzODZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMKPiBAQCAtMTQyMiw2MCArMTQyMiwxMSBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQo+ICAJaW50ZWxfY29udGV4 dF9mcmVlKGNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfX2NvbnRleHRfcGluKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+IC17Cj4gLQl1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gLQlpbnQgZXJyOwo+ IC0KPiAtCWZsYWdzID0gUElOX0dMT0JBTCB8IFBJTl9ISUdIOwo+IC0JZmxhZ3MgfD0gUElOX09G RlNFVF9CSUFTIHwgaTkxNV9nZ3R0X3Bpbl9iaWFzKHZtYSk7Cj4gLQo+IC0JZXJyID0gaTkxNV92 bWFfcGluKHZtYSwgMCwgMCwgZmxhZ3MpOwo+IC0JaWYgKGVycikKPiAtCQlyZXR1cm4gZXJyOwo+ IC0KPiAtCXZtYS0+b2JqLT5waW5fZ2xvYmFsKys7Cj4gLQl2bWEtPm9iai0+bW0uZGlydHkgPSB0 cnVlOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfX2NvbnRleHRf dW5waW4oc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gLXsKPiAtCXZtYS0+b2JqLT5waW5fZ2xvYmFs LS07Cj4gLQlfX2k5MTVfdm1hX3VucGluKHZtYSk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgewo+IC0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgdGFz a2xldCBtYXkgc3RpbGwgYmUgdXNpbmcgYSBwb2ludGVyIHRvIG91ciBzdGF0ZSwgdmlhIGFuCj4g LQkgKiBvbGQgcmVxdWVzdC4gSG93ZXZlciwgc2luY2Ugd2Uga25vdyB3ZSBvbmx5IHVucGluIHRo ZSBjb250ZXh0Cj4gLQkgKiBvbiByZXRpcmVtZW50IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWVzdCwg d2Uga25vdyB0aGF0IHRoZSBsYXN0Cj4gLQkgKiByZXF1ZXN0IHJlZmVyZW5jaW5nIHVzIHdpbGwg aGF2ZSBoYWQgYSBjb21wbGV0aW9uIENTIGludGVycnVwdC4KPiAtCSAqIElmIHdlIHNlZSB0aGF0 IGl0IGlzIHN0aWxsIGFjdGl2ZSwgaXQgbWVhbnMgdGhhdCB0aGUgdGFza2xldCBoYXNuJ3QKPiAt CSAqIGhhZCB0aGUgY2hhbmNlIHRvIHJ1biB5ZXQ7IGxldCBpdCBydW4gYmVmb3JlIHdlIHRlYXJk b3duIHRoZQo+IC0JICogcmVmZXJlbmNlIGl0IG1heSB1c2UuCj4gLQkgKi8KPiAtCWVuZ2luZSA9 IFJFQURfT05DRShjZS0+aW5mbGlnaHQpOwo+IC0JaWYgKHVubGlrZWx5KGVuZ2luZSkpIHsKPiAt CQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5l LT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gLQkJcHJvY2Vzc19jc2IoZW5naW5lKTsKPiAtCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAt Cj4gLQkJR0VNX0JVR19PTihSRUFEX09OQ0UoY2UtPmluZmxpZ2h0KSk7Cj4gLQl9Cj4gLQo+ICAJ aTkxNV9nZW1fY29udGV4dF91bnBpbl9od19pZChjZS0+Z2VtX2NvbnRleHQpOwo+IC0KPiAtCWlu dGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwo+IC0KPiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9t YXAoY2UtPnN0YXRlLT5vYmopOwo+IC0JX19jb250ZXh0X3VucGluKGNlLT5zdGF0ZSk7Cj4gKwlp bnRlbF9yaW5nX3VucGluKGNlLT5yaW5nKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAt MTUxMiw3ICsxNDYzLDEwIEBAIF9fZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKPiAgCQlnb3RvIGVycjsKPiAgCUdFTV9CVUdfT04oIWNlLT5zdGF0ZSk7Cj4g IAo+IC0JcmV0ID0gX19jb250ZXh0X3BpbihjZS0+c3RhdGUpOwo+ICsJcmV0ID0gaW50ZWxfY29u dGV4dF9hY3RpdmVfYWNxdWlyZShjZSwKPiArCQkJCQkgICBlbmdpbmUtPmk5MTUtPmdndHQucGlu X2JpYXMgfAo+ICsJCQkJCSAgIFBJTl9PRkZTRVRfQklBUyB8Cj4gKwkJCQkJICAgUElOX0hJR0gp Owo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVycjsKPiAgCj4gQEAgLTE1MjEsNyArMTQ3NSw3IEBA IF9fZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgCQkJ CQlJOTE1X01BUF9PVkVSUklERSk7Cj4gIAlpZiAoSVNfRVJSKHZhZGRyKSkgewo+ICAJCXJldCA9 IFBUUl9FUlIodmFkZHIpOwo+IC0JCWdvdG8gdW5waW5fdm1hOwo+ICsJCWdvdG8gdW5waW5fYWN0 aXZlOwo+ICAJfQo+ICAKPiAgCXJldCA9IGludGVsX3JpbmdfcGluKGNlLT5yaW5nKTsKPiBAQCAt MTU0Miw4ICsxNDk2LDggQEAgX19leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAo+ICAJaW50ZWxfcmluZ191bnBpbihjZS0+cmluZyk7Cj4gIHVucGluX21hcDoK PiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+IC11bnBpbl92 bWE6Cj4gLQlfX2NvbnRleHRfdW5waW4oY2UtPnN0YXRlKTsKPiArdW5waW5fYWN0aXZlOgo+ICsJ aW50ZWxfY29udGV4dF9hY3RpdmVfcmVsZWFzZShjZSk7Cj4gIGVycjoKPiAgCXJldHVybiByZXQ7 Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5k ZXggYzgzNGQwMTZjOTY1Li43NDk3YzljZTY2OGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTEzNDksNDUgKzEzNDksOSBAQCBzdGF0aWMg dm9pZCBfX2NvbnRleHRfdW5waW5fcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkK PiAgCQlnZW42X3BwZ3R0X3VucGluKGk5MTVfdm1fdG9fcHBndHQodm0pKTsKPiAgfQo+ICAKPiAt c3RhdGljIGludCBfX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAtewo+ IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCXZtYSA9IGNlLT5z dGF0ZTsKPiAtCWlmICghdm1hKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWVyciA9IGk5MTVfdm1h X3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5fSElHSCk7Cj4gLQlpZiAoZXJyKQo+IC0J CXJldHVybiBlcnI7Cj4gLQo+IC0JLyoKPiAtCSAqIEFuZCBtYXJrIGlzIGFzIGEgZ2xvYmFsbHkg cGlubmVkIG9iamVjdCB0byBsZXQgdGhlIHNocmlua2VyIGtub3cKPiAtCSAqIGl0IGNhbm5vdCBy ZWNsYWltIHRoZSBvYmplY3QgdW50aWwgd2UgcmVsZWFzZSBpdC4KPiAtCSAqLwo+IC0Jdm1hLT5v YmotPnBpbl9nbG9iYWwrKzsKPiAtCXZtYS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7Cj4gLQo+IC0J cmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIF9fY29udGV4dF91bnBpbihzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IC0KPiAt CXZtYSA9IGNlLT5zdGF0ZTsKPiAtCWlmICghdm1hKQo+IC0JCXJldHVybjsKPiAtCj4gLQl2bWEt Pm9iai0+cGluX2dsb2JhbC0tOwo+IC0JaTkxNV92bWFfdW5waW4odm1hKTsKPiAtfQo+IC0KPiAg c3RhdGljIHZvaWQgcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK PiAgewo+ICAJX19jb250ZXh0X3VucGluX3BwZ3R0KGNlLT5nZW1fY29udGV4dCk7Cj4gLQlfX2Nv bnRleHRfdW5waW4oY2UpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKPiBA QCAtMTQ3NywxOCArMTQ0MSwxOCBAQCBzdGF0aWMgaW50IHJpbmdfY29udGV4dF9waW4oc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQo+ICAJCWNlLT5zdGF0ZSA9IHZtYTsKPiAgCX0KPiAgCj4gLQll cnIgPSBfX2NvbnRleHRfcGluKGNlKTsKPiArCWVyciA9IGludGVsX2NvbnRleHRfYWN0aXZlX2Fj cXVpcmUoY2UsIFBJTl9ISUdIKTsKPiAgCWlmIChlcnIpCj4gIAkJcmV0dXJuIGVycjsKPiAgCj4g IAllcnIgPSBfX2NvbnRleHRfcGluX3BwZ3R0KGNlLT5nZW1fY29udGV4dCk7Cj4gIAlpZiAoZXJy KQo+IC0JCWdvdG8gZXJyX3VucGluOwo+ICsJCWdvdG8gZXJyX2FjdGl2ZTsKPiAgCj4gIAlyZXR1 cm4gMDsKPiAgCj4gLWVycl91bnBpbjoKPiAtCV9fY29udGV4dF91bnBpbihjZSk7Cj4gK2Vycl9h Y3RpdmU6Cj4gKwlpbnRlbF9jb250ZXh0X2FjdGl2ZV9yZWxlYXNlKGNlKTsKPiAgCXJldHVybiBl cnI7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tf ZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gaW5kZXgg NmQ3NTYyNzY5ZWIyLi5kMWVmNTE1YmFjOGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21v Y2tfZW5naW5lLmMKPiBAQCAtMTQ2LDEyICsxNDYsMTggQEAgc3RhdGljIHZvaWQgbW9ja19jb250 ZXh0X2Rlc3Ryb3koc3RydWN0IGtyZWYgKnJlZikKPiAgCj4gIHN0YXRpYyBpbnQgbW9ja19jb250 ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gIHsKPiArCWludCByZXQ7Cj4gKwo+ ICAJaWYgKCFjZS0+cmluZykgewo+ICAJCWNlLT5yaW5nID0gbW9ja19yaW5nKGNlLT5lbmdpbmUp Owo+ICAJCWlmICghY2UtPnJpbmcpCj4gIAkJCXJldHVybiAtRU5PTUVNOwo+ICAJfQo+ICAKPiAr CXJldCA9IGludGVsX2NvbnRleHRfYWN0aXZlX2FjcXVpcmUoY2UsIFBJTl9ISUdIKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gIAltb2NrX3RpbWVsaW5lX3BpbihjZS0+cmlu Zy0+dGltZWxpbmUpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMzI4LDE0ICszMzQsOSBAQCB2 b2lkIG1vY2tfZW5naW5lX2ZyZWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7 Cj4gIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQo+ICAJCWNvbnRhaW5lcl9vZihlbmdpbmUs IHR5cGVvZigqbW9jayksIGJhc2UpOwo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAK PiAgCUdFTV9CVUdfT04odGltZXJfcGVuZGluZygmbW9jay0+aHdfZGVsYXkpKTsKPiAgCj4gLQlj ZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKPiAtCWlm IChjZSkKPiAtCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAtCj4gIAlpbnRlbF9jb250ZXh0 X3VucGluKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICAKPiAgCWludGVsX2VuZ2luZV9maW5p X2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfYWN0aXZlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gaW5k ZXggODYzYWUxMjcwN2JhLi4yZDAxOWFjNmRiMjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf YWN0aXZlLmMKPiBAQCAtMTU3LDYgKzE1Nyw3IEBAIHZvaWQgaTkxNV9hY3RpdmVfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCXJlZi0+cmV0aXJlID0gcmV0aXJlOwo+ICAJ cmVmLT50cmVlID0gUkJfUk9PVDsKPiAgCWk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgmcmVmLT5s YXN0LCBOVUxMLCBsYXN0X3JldGlyZSk7Cj4gKwlpbml0X2xsaXN0X2hlYWQoJnJlZi0+YmFycmll cnMpOwo+ICAJcmVmLT5jb3VudCA9IDA7Cj4gIH0KPiAgCj4gQEAgLTI2Myw2ICsyNjQsODMgQEAg dm9pZCBpOTE1X2FjdGl2ZV9maW5pKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICB9Cj4gICNl bmRpZgo+ICAKPiAraW50IGk5MTVfYWN0aXZlX2FjcXVpcmVfcHJlYWxsb2NhdGVfYmFycmllcihz dHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKPiArCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2lu ZS0+aTkxNTsKPiArCXVuc2lnbmVkIGxvbmcgdG1wOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJ R0VNX0JVR19PTighZW5naW5lLT5tYXNrKTsKPiArCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5n aW5lLCBpOTE1LCBlbmdpbmUtPm1hc2ssIHRtcCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICprY3R4ID0gZW5naW5lLT5rZXJuZWxfY29udGV4dDsKPiArCQlzdHJ1Y3QgYWN0aXZlX25vZGUg Km5vZGU7Cj4gKwo+ICsJCW5vZGUgPSBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX2NhY2hl LCBHRlBfS0VSTkVMKTsKPiArCQlpZiAodW5saWtlbHkoIW5vZGUpKSB7Cj4gKwkJCWVyciA9IC1F Tk9NRU07Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaTkxNV9hY3RpdmVfcmVxdWVzdF9p bml0KCZub2RlLT5iYXNlLAo+ICsJCQkJCSAodm9pZCAqKWVuZ2luZSwgbm9kZV9yZXRpcmUpOwo+ ICsJCW5vZGUtPnRpbWVsaW5lID0ga2N0eC0+cmluZy0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQ7 Cj4gKwkJbm9kZS0+cmVmID0gcmVmOwo+ICsJCXJlZi0+Y291bnQrKzsKPiArCj4gKwkJbGxpc3Rf YWRkKChzdHJ1Y3QgbGxpc3Rfbm9kZSAqKSZub2RlLT5iYXNlLmxpbmssCj4gKwkJCSAgJnJlZi0+ YmFycmllcnMpOwo+ICsJfQo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3ZvaWQgaTkx NV9hY3RpdmVfYWNxdWlyZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICt7Cj4g KwlzdHJ1Y3QgbGxpc3Rfbm9kZSAqcG9zLCAqbmV4dDsKPiArCj4gKwlpOTE1X2FjdGl2ZV9hY3F1 aXJlKHJlZik7Cj4gKwo+ICsJbGxpc3RfZm9yX2VhY2hfc2FmZShwb3MsIG5leHQsIGxsaXN0X2Rl bF9hbGwoJnJlZi0+YmFycmllcnMpKSB7Cj4gKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwo+ICsJCXN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZTsKPiArCQlzdHJ1Y3QgcmJfbm9kZSAq KnAsICpwYXJlbnQ7Cj4gKwo+ICsJCW5vZGUgPSBjb250YWluZXJfb2YoKHN0cnVjdCBsaXN0X2hl YWQgKilwb3MsCj4gKwkJCQkgICAgdHlwZW9mKCpub2RlKSwgYmFzZS5saW5rKTsKPiArCj4gKwkJ ZW5naW5lID0gKHZvaWQgKilyY3VfYWNjZXNzX3BvaW50ZXIobm9kZS0+YmFzZS5yZXF1ZXN0KTsK PiArCQlSQ1VfSU5JVF9QT0lOVEVSKG5vZGUtPmJhc2UucmVxdWVzdCwgRVJSX1BUUigtRUFHQUlO KSk7Cj4gKwo+ICsJCXBhcmVudCA9IE5VTEw7Cj4gKwkJcCA9ICZyZWYtPnRyZWUucmJfbm9kZTsK PiArCQl3aGlsZSAoKnApIHsKPiArCQkJcGFyZW50ID0gKnA7Cj4gKwkJCWlmIChyYl9lbnRyeShw YXJlbnQsCj4gKwkJCQkgICAgIHN0cnVjdCBhY3RpdmVfbm9kZSwKPiArCQkJCSAgICAgbm9kZSkt PnRpbWVsaW5lIDwgbm9kZS0+dGltZWxpbmUpCj4gKwkJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7 Cj4gKwkJCWVsc2UKPiArCQkJCXAgPSAmcGFyZW50LT5yYl9sZWZ0Owo+ICsJCX0KPiArCQlyYl9s aW5rX25vZGUoJm5vZGUtPm5vZGUsIHBhcmVudCwgcCk7Cj4gKwkJcmJfaW5zZXJ0X2NvbG9yKCZu b2RlLT5ub2RlLCAmcmVmLT50cmVlKTsKPiArCj4gKwkJbGxpc3RfYWRkKChzdHJ1Y3QgbGxpc3Rf bm9kZSAqKSZub2RlLT5iYXNlLmxpbmssCj4gKwkJCSAgJmVuZ2luZS0+YmFycmllcl90YXNrcyk7 Cj4gKwl9Cj4gKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKHJlZik7Cj4gK30KPiArCj4gK3ZvaWQgaTkx NV9yZXF1ZXN0X2FkZF9iYXJyaWVycyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPiArCXN0cnVjdCBs bGlzdF9ub2RlICpub2RlLCAqbmV4dDsKPiArCj4gKwlsbGlzdF9mb3JfZWFjaF9zYWZlKG5vZGUs IG5leHQsIGxsaXN0X2RlbF9hbGwoJmVuZ2luZS0+YmFycmllcl90YXNrcykpCj4gKwkJbGlzdF9h ZGRfdGFpbCgoc3RydWN0IGxpc3RfaGVhZCAqKW5vZGUsICZycS0+YWN0aXZlX2xpc3QpOwo+ICt9 Cj4gKwo+ICBpbnQgaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3Jl cXVlc3QgKmFjdGl2ZSwKPiAgCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCj4gaW5kZXggN2Q3NTg3MTljZTM5Li5kNTVkMzc2 NzM5NDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmgKPiBAQCAtNDA2LDQgKzQw Niw5IEBAIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4g IHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2FjdGl2ZV9maW5pKHN0cnVjdCBpOTE1X2FjdGl2ZSAq cmVmKSB7IH0KPiAgI2VuZGlmCj4gIAo+ICtpbnQgaTkxNV9hY3RpdmVfYWNxdWlyZV9wcmVhbGxv Y2F0ZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLAo+ICsJCQkJCSAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICt2b2lkIGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFy cmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4gK3ZvaWQgaTkxNV9yZXF1ZXN0X2FkZF9i YXJyaWVycyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7Cj4gKwo+ICAjZW5kaWYgLyogX0k5MTVf QUNUSVZFX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0 aXZlX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZV90eXBlcy5oCj4g aW5kZXggYjY3OTI1M2I1M2E1Li5jMDI1OTkxYjkyMzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKPiBAQCAtNyw2ICs3LDcgQEAKPiAgI2lmbmRlZiBfSTkx NV9BQ1RJVkVfVFlQRVNfSF8KPiAgI2RlZmluZSBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8KPiAgCj4g KyNpbmNsdWRlIDxsaW51eC9sbGlzdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgo+ICAKPiBAQCAtMzEsNiArMzIsOCBAQCBzdHJ1 Y3QgaTkxNV9hY3RpdmUgewo+ICAJdW5zaWduZWQgaW50IGNvdW50Owo+ICAKPiAgCXZvaWQgKCpy ZXRpcmUpKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKTsKPiArCj4gKwlzdHJ1Y3QgbGxpc3RfaGVh ZCBiYXJyaWVyczsKClRoaXMgbG9va3MgbGlrZSBpdCBpcyBnZW5lcmljLiBBcmUgeW91IHBsYW5u aW5nIHRvIGV4dGVuZD8KCi8qIFByZWFsbG9jYXRlZCBzbG90cyBvZiBwZXIgZW5naW5lIGJhcnJp ZXJzICovCgotTWlrYQoKPiAgfTsKPiAgCj4gICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfVFlQRVNf SF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAwZDkyODJiNjczZGUuLmMwZjVh MDBiNjU5YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMTk3LDEwICsxMTk3 LDYgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgCj4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmaTkxNS0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+IC0K PiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fY29u dGV4dHNfbG9zdChpOTE1KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gIH0KPiAgCj4gIHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6emxpbmcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4g aW5kZXggMWNiYzNlZjRmYzI3Li5jMjgwMmJiYjBjZjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuYwo+IEBAIC0yMTMsMTggKzIxMyw2IEBAIHN0YXRpYyB2b2lkIF9fcmV0aXJl X2VuZ2luZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCXNwaW5f dW5sb2NrKCZycS0+bG9jayk7Cj4gIAo+ICAJbG9jYWxfaXJxX2VuYWJsZSgpOwo+IC0KPiAtCS8q Cj4gLQkgKiBUaGUgYmFja2luZyBvYmplY3QgZm9yIHRoZSBjb250ZXh0IGlzIGRvbmUgYWZ0ZXIg c3dpdGNoaW5nIHRvIHRoZQo+IC0JICogKm5leHQqIGNvbnRleHQuIFRoZXJlZm9yZSB3ZSBjYW5u b3QgcmV0aXJlIHRoZSBwcmV2aW91cyBjb250ZXh0IHVudGlsCj4gLQkgKiB0aGUgbmV4dCBjb250 ZXh0IGhhcyBhbHJlYWR5IHN0YXJ0ZWQgcnVubmluZy4gSG93ZXZlciwgc2luY2Ugd2UKPiAtCSAq IGNhbm5vdCB0YWtlIHRoZSByZXF1aXJlZCBsb2NrcyBhdCBpOTE1X3JlcXVlc3Rfc3VibWl0KCkg d2UKPiAtCSAqIGRlZmVyIHRoZSB1bnBpbm5pbmcgb2YgdGhlIGFjdGl2ZSBjb250ZXh0IHRvIG5v dywgcmV0aXJlbWVudCBvZgo+IC0JICogdGhlIHN1YnNlcXVlbnQgcmVxdWVzdC4KPiAtCSAqLwo+ IC0JaWYgKGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpCj4gLQkJaW50ZWxfY29udGV4dF91 bnBpbihlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKPiAtCWVuZ2luZS0+bGFzdF9yZXRp cmVkX2NvbnRleHQgPSBycS0+aHdfY29udGV4dDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19y ZXRpcmVfZW5naW5lX3VwdG8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IEBAIC03 NTksOSArNzQ3LDYgQEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwgZ2ZwX3QgZ2ZwKQo+ICAKPiAgCXJxLT5pbmZpeCA9IHJxLT5yaW5nLT5lbWl0OyAvKiBl bmQgb2YgaGVhZGVyOyBzdGFydCBvZiB1c2VyIHBheWxvYWQgKi8KPiAgCj4gLQkvKiBLZWVwIGEg c2Vjb25kIHBpbiBmb3IgdGhlIGR1YWwgcmV0aXJlbWVudCBhbG9uZyBlbmdpbmUgYW5kIHJpbmcg Ki8KPiAtCV9faW50ZWxfY29udGV4dF9waW4oY2UpOwo+IC0KPiAgCWludGVsX2NvbnRleHRfbWFy a19hY3RpdmUoY2UpOwo+ICAJcmV0dXJuIHJxOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggMWU5ZmZjZWQ3OGMxLi4z NWM5MmQxZGIxOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfZ2VtX2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfZ2VtX2RldmljZS5jCj4gQEAgLTU2LDcgKzU2LDYgQEAgc3RhdGljIHZvaWQgbW9ja19k ZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJbW9ja19kZXZpY2VfZmx1c2goaTkxNSk7Cj4g LQlpOTE1X2dlbV9jb250ZXh0c19sb3N0KGk5MTUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiAgCj4gIAlmbHVzaF93b3JrKCZpOTE1LT5nZW0uaWRsZV93b3Jr KTsKPiAtLSAKPiAyLjIwLjEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4