From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] RFC drm/i915: Slaughter the thundering i915_wait_request herd Date: Fri, 27 Nov 2015 12:11:32 +0000 Message-ID: <56584874.4020003@linux.intel.com> References: <1446287672-30565-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 07E546E7ED for ; Fri, 27 Nov 2015 04:11:34 -0800 (PST) In-Reply-To: <1446287672-30565-1-git-send-email-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 CkhpLAoKT24gMzEvMTAvMTUgMTA6MzQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbmUgcGFydGlj dWxhcmx5IHN0cmVzc2Z1bCBzY2VuYXJpbyBjb25zaXN0cyBvZiBtYW55IGluZGVwZW5kZW50IHRh c2tzCj4gYWxsIGNvbXBldGluZyBmb3IgR1BVIHRpbWUgYW5kIHdhaXRpbmcgdXBvbiB0aGUgcmVz dWx0cyAoZS5nLiByZWFsdGltZQo+IHRyYW5zY29kaW5nIG9mIG1hbnksIG1hbnkgc3RyZWFtcyku IE9uZSBib3R0bGVuZWNrIGluIHBhcnRpY3VsYXIgaXMgdGhhdAo+IGVhY2ggY2xpZW50IHdhaXRz IG9uIGl0cyBvd24gcmVzdWx0cywgYnV0IGV2ZXJ5IGNsaWVudCBpcyB3b2tlbiB1cCBhZnRlcgo+ IGV2ZXJ5IGJhdGNoYnVmZmVyIC0gaGVuY2UgdGhlIHRodW5kZXIgb2YgaG9vdmVzIGFzIHRoZW4g ZXZlcnkgY2xpZW50IG11c3QKPiBkbyBpdHMgaGVhdnl3ZWlnaHQgZGFuY2UgdG8gcmVhZCBhIGNv aGVyZW50IHNlcW5vIHRvIHNlZSBpZiBpdCBpcyB0aGUKPiBsdWNreSBvbmUuIEFsdGVybmF0aXZl bHksIHdlIGNhbiBoYXZlIG9uZSB3b3JrZXIgcmVzcG9uc2libGUgZm9yIHdha2VpbmcKPiBhZnRl ciBhbiBpbnRlcnJ1cHQsIGNoZWNraW5nIHRoZSBzZXFubyBhbmQgb25seSB3YWtlaW5nIHVwIHRo ZSBjbGllbnRzCj4gd2hvIGFyZSBjb21wbGV0ZS4gVGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IGlu IHRoZSB1bmNvbnRlbmRlZCBzY2VuYXJpbwo+IChpLmUuIG9ubHkgb25lIHdhaXRlcikgd2UgaW5j dXIgYW4gZXh0cmEgY29udGV4dCBzd2l0Y2ggaW4gdGhlIHdha2V1cAo+IHBhdGggLSB0aG91Z2gg dGhhdCBzaG91bGQgYmUgbWl0aWdhdGVkIHNvbWV3aGF0IGJ5IHRoZSBidXN5d2FpdCB3ZSBkbwo+ IGZpcnN0IGJlZm9yZSBzbGVlcGluZy4KCkNvdWxkIHlvdSBleHBsYWluIHRoZSBkZXNpZ24gaW4g YSBiaXQgbW9yZSBkZXRhaWwgaW4gdGhlIGNvbW1pdCBtZXNzYWdlPwoKQW5kIGFkZCBzb21lIG1v cmUgY29tbWVudHMgaW4gdGhlIGNvZGUsIHdoZXJlIGtleSB0aGluZ3MgYXJlIGhhcHBlbmluZywg Cm5ldyBzdHJ1Y3QgbWVtYmVycywgZXRjPwoKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogIlJvZ296aGtpbiwgRG1pdHJ5IFYiIDxk bWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgo+IENjOiAiR29uZywgWmhpcGVuZyIgPHpoaXBl bmcuZ29uZ0BpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICB8ICA5MiArKysrLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaCB8ICAgNiArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgICAgICAgIHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYyB8IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICA5ICsrCj4gICA2IGZpbGVz IGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCkFuZCByZWJhc2Ug YWdhaW5zdCBuaWdodGx5IHNpbmNlIEkgd2FudCB0byByZXZpZXcgaXQuCgpBcyBpdCBoYXBwZW5z IEkgc3RhcnRlZCB3b3JraW5nIG9uIHNvbWV0aGluZyBzaW1pbGFyIHllc3RlcmRheSBmb3IgYSAK ZGlmZmVyZW50IG1vdGl2YXRpb24uIFNvIEkgdGhpbmsgd2UgbmVlZCB0aGlzIGZvciBtb3JlIHRo YW4gb25lIHJlYXNvbi4KCkp1c3Qgc29tZSBwcmVsaW1pbmFyeSBjb21tZW50cyBiZWxvdyBhdCB0 aGlzIHBvaW50LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAzZDRjNDIyYjM1ODcu LmZlMGQ1ZGRhZDQ5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNDQyLDcg KzE0NDIsNyBAQCBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3Igewo+ICAgI2RlZmluZSBJOTE1X1NUT1Bf UklOR19BTExPV19XQVJOICAgICAgKDEgPDwgMzApCj4KPiAgIAkvKiBGb3IgbWlzc2VkIGlycS9z ZXFubyBzaW11bGF0aW9uLiAqLwo+IC0JdW5zaWduZWQgaW50IHRlc3RfaXJxX3JpbmdzOwo+ICsJ dW5zaWduZWQgbG9uZyB0ZXN0X2lycV9yaW5nczsKPiAgIH07Cj4KPiAgIGVudW0gbW9kZXNldF9y ZXN0b3JlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAyOWJkNTIzOGI4MjQuLjFh ODllN2NjNzZkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMTQ0LDE3ICsx MTQ0LDYgQEAgaTkxNV9nZW1fY2hlY2tfd2VkZ2UodW5zaWduZWQgcmVzZXRfY291bnRlciwKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBmYWtlX2lycSh1bnNpZ25lZCBsb25n IGRhdGEpCj4gLXsKPiAtCXdha2VfdXBfcHJvY2Vzcygoc3RydWN0IHRhc2tfc3RydWN0ICopZGF0 YSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBib29sIG1pc3NlZF9pcnEoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IC0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KQo+IC17Cj4gLQlyZXR1cm4gdGVzdF9iaXQocmluZy0+aWQsICZkZXZfcHJpdi0+Z3B1X2Vycm9y Lm1pc3NlZF9pcnFfcmluZ3MpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBfX2k5MTVfc3Bpbl9y ZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCXVuc2ln bmVkIGxvbmcgdGltZW91dDsKPiBAQCAtMTE5OSwyNyArMTE4OCwxNyBAQCBpbnQgX19pOTE1X3dh aXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCXM2NCAq dGltZW91dCwKPiAgIAkJCXN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMpCj4gICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhy ZXEpOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1Owo+ IC0JY29uc3QgYm9vbCBpcnFfdGVzdF9pbl9wcm9ncmVzcyA9Cj4gLQkJQUNDRVNTX09OQ0UoZGV2 X3ByaXYtPmdwdV9lcnJvci50ZXN0X2lycV9yaW5ncykgJiBpbnRlbF9yaW5nX2ZsYWcocmluZyk7 Cj4gICAJREVGSU5FX1dBSVQod2FpdCk7Cj4gLQl1bnNpZ25lZCBsb25nIHRpbWVvdXRfZXhwaXJl Owo+ICsJdW5zaWduZWQgbG9uZyB0aW1lb3V0X3JlbWFpbjsKPiAgIAlzNjQgYmVmb3JlLCBub3c7 Cj4gICAJaW50IHJldDsKPgo+IC0JV0FSTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSwg IklSUXMgZGlzYWJsZWQiKTsKPiAtCj4gLQlpZiAobGlzdF9lbXB0eSgmcmVxLT5saXN0KSkKPiAt CQlyZXR1cm4gMDsKPiAtCj4gICAJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwg dHJ1ZSkpCj4gICAJCXJldHVybiAwOwo+Cj4gLQl0aW1lb3V0X2V4cGlyZSA9IHRpbWVvdXQgPwo+ IC0JCWppZmZpZXMgKyBuc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoKHU2NCkqdGltZW91dCkgOiAw Owo+ICsJdGltZW91dF9yZW1haW4gPSB0aW1lb3V0ID8gbnNlY3NfdG9famlmZmllc190aW1lb3V0 KCh1NjQpKnRpbWVvdXQpIDogMDsKPgo+IC0JaW50ZWxfcnBzX2Jvb3N0KGRldl9wcml2LCBycHMs IHJlcS0+ZW1pdHRlZF9qaWZmaWVzKTsKPiArCWludGVsX3Jwc19ib29zdChyZXEtPmk5MTUsIHJw cywgcmVxLT5lbWl0dGVkX2ppZmZpZXMpOwo+Cj4gICAJLyogUmVjb3JkIGN1cnJlbnQgdGltZSBp biBjYXNlIGludGVycnVwdGVkIGJ5IHNpZ25hbCwgb3Igd2VkZ2VkICovCj4gICAJdHJhY2VfaTkx NV9nZW1fcmVxdWVzdF93YWl0X2JlZ2luKHJlcSk7Cj4gQEAgLTEyMzAsNjcgKzEyMDksMzQgQEAg aW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs Cj4gICAJaWYgKHJldCA9PSAwKQo+ICAgCQlnb3RvIG91dDsKPgo+IC0JaWYgKCFpcnFfdGVzdF9p bl9wcm9ncmVzcyAmJiBXQVJOX09OKCFyaW5nLT5pcnFfZ2V0KHJpbmcpKSkgewo+IC0JCXJldCA9 IC1FTk9ERVY7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+ICsJaW50ZWxfZW5naW5lX2FkZF93 YWtldXAocmVxKTsKPiAgIAlmb3IgKDs7KSB7Cj4gLQkJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7 Cj4gLQo+IC0JCXByZXBhcmVfdG9fd2FpdCgmcmluZy0+aXJxX3F1ZXVlLCAmd2FpdCwKPiAtCQkJ CWludGVycnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElCTEUgOiBUQVNLX1VOSU5URVJSVVBUSUJM RSk7Cj4gKwkJaW50IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/IFRBU0tfSU5URVJSVVBUSUJMRSA6 IFRBU0tfVU5JTlRFUlJVUFRJQkxFOwo+Cj4gLQkJLyogV2UgbmVlZCB0byBjaGVjayB3aGV0aGVy IGFueSBncHUgcmVzZXQgaGFwcGVuZWQgaW4gYmV0d2Vlbgo+IC0JCSAqIHRoZSBjYWxsZXIgZ3Jh YmJpbmcgdGhlIHNlcW5vIGFuZCBub3cgLi4uICovCj4gLQkJaWYgKHJlcS0+cmVzZXRfY291bnRl ciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3IpKSB7Cj4gLQkJCS8q IEFzIHdlIGRvIG5vdCByZXF1ZXVlIHRoZSByZXF1ZXN0IG92ZXIgYSBHUFUgcmVzZXQsCj4gLQkJ CSAqIGlmIG9uZSBkb2VzIG9jY3VyIHdlIGtub3cgdGhhdCB0aGUgcmVxdWVzdCBpcwo+IC0JCQkg KiBlZmZlY3RpdmVseSBjb21wbGV0ZS4KPiAtCQkJICovCj4gLQkJCXJldCA9IDA7Cj4gLQkJCWJy ZWFrOwo+IC0JCX0KPiArCQlwcmVwYXJlX3RvX3dhaXQoJnJlcS0+d2FpdCwgJndhaXQsIHN0YXRl KTsKPgo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKSkgewo+ ICsJCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpIHx8Cj4gKwkJICAg IHJlcS0+cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJnJlcS0+aTkxNS0+Z3B1 X2Vycm9yKSkgewo+ICAgCQkJcmV0ID0gMDsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4KPiAtCQlp ZiAoaW50ZXJydXB0aWJsZSAmJiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewo+ICsJCWlmIChz aWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3VycmVudCkpIHsKPiAgIAkJCXJldCA9IC1FUkVT VEFSVFNZUzsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4KPiAtCQlpZiAodGltZW91dCAmJiB0aW1l X2FmdGVyX2VxKGppZmZpZXMsIHRpbWVvdXRfZXhwaXJlKSkgewo+IC0JCQlyZXQgPSAtRVRJTUU7 Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCj4gLQkJaTkxNV9xdWV1ZV9oYW5nY2hlY2soZGV2X3By aXYpOwo+IC0KPiAtCQl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X3dhaXRfc2xlZXAocmVxKTsKPiAt Cj4gLQkJdGltZXIuZnVuY3Rpb24gPSBOVUxMOwo+IC0JCWlmICh0aW1lb3V0IHx8IG1pc3NlZF9p cnEoZGV2X3ByaXYsIHJpbmcpKSB7Cj4gLQkJCXVuc2lnbmVkIGxvbmcgZXhwaXJlOwo+IC0KPiAt CQkJc2V0dXBfdGltZXJfb25fc3RhY2soJnRpbWVyLCBmYWtlX2lycSwgKHVuc2lnbmVkIGxvbmcp Y3VycmVudCk7Cj4gLQkJCWV4cGlyZSA9IG1pc3NlZF9pcnEoZGV2X3ByaXYsIHJpbmcpID8gamlm ZmllcyArIDEgOiB0aW1lb3V0X2V4cGlyZTsKPiAtCQkJbW9kX3RpbWVyKCZ0aW1lciwgZXhwaXJl KTsKPiAtCQl9Cj4gLQo+IC0JCWlvX3NjaGVkdWxlKCk7Cj4gLQo+IC0JCWlmICh0aW1lci5mdW5j dGlvbikgewo+IC0JCQlkZWxfc2luZ2xlc2hvdF90aW1lcl9zeW5jKCZ0aW1lcik7Cj4gLQkJCWRl c3Ryb3lfdGltZXJfb25fc3RhY2soJnRpbWVyKTsKPiAtCQl9Cj4gKwkJaWYgKHRpbWVvdXQpIHsK PiArCQkJdGltZW91dF9yZW1haW4gPSBpb19zY2hlZHVsZV90aW1lb3V0KHRpbWVvdXRfcmVtYWlu KTsKPiArCQkJaWYgKHRpbWVvdXRfcmVtYWluID09IDApIHsKPiArCQkJCXJldCA9IC1FVElNRTsK PiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfSBlbHNlCj4gKwkJCWlvX3NjaGVkdWxlKCk7Cj4g ICAJfQo+IC0JaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcykKPiAtCQlyaW5nLT5pcnFfcHV0KHJp bmcpOwo+IC0KPiAtCWZpbmlzaF93YWl0KCZyaW5nLT5pcnFfcXVldWUsICZ3YWl0KTsKPiArCWZp bmlzaF93YWl0KCZyZXEtPndhaXQsICZ3YWl0KTsKPiArCWludGVsX2VuZ2luZV9yZW1vdmVfd2Fr ZXVwKHJlcSk7Cj4KPiAgIG91dDoKPiAgIAlub3cgPSBrdGltZV9nZXRfcmF3X25zKCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IGluZGV4IGE1ZTI3YjdkZTkzYS4u NmZjMjk1ZDViYTBmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu aAo+IEBAIC0yNyw2ICsyNyw3IEBACj4KPiAgICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gICAj aW5jbHVkZSA8bGludXgva3JlZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+Cj4KPiAg IHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGU7Cj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdDsKPiBAQCAtNjAsNiArNjEsMTEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsK PiAgIAkvKiogR0VNIHNlcXVlbmNlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0 LiAqLwo+ICAgCXVpbnQzMl90IHNlcW5vOwo+Cj4gKwkvKiogTGlzdCBvZiBjbGllbnRzIHdhaXRp bmcgZm9yIGNvbXBsZXRpb24gb2YgdGhpcyByZXF1ZXN0ICovCj4gKwl3YWl0X3F1ZXVlX2hlYWRf dCB3YWl0Owo+ICsJc3RydWN0IHJiX25vZGUgaXJxX25vZGU7Cj4gKwl1bnNpZ25lZCBpcnFfY291 bnQ7Cj4gKwo+ICAgCS8qKiBQb3NpdGlvbiBpbiB0aGUgcmluZ2J1ZmZlciBvZiB0aGUgcmVxdWVz dCAqLwo+ICAgCXUzMiBoZWFkLCB0YWlsLCB3YV90YWlsOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBpbmRleCA3MGNhMjBlY2JmZjQuLjQ0MzY2MTZjMDBiOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gQEAgLTIwMjQsNiArMjAyNCw3IEBAIHN0YXRpYyBpbnQgbG9naWNh bF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluCj4gICAJcmluZy0+YnVmZmVyID0gTlVMTDsKPgo+ICAgCXJpbmctPmRldiA9IGRldjsK PiArCXJpbmctPmk5MTUgPSB0b19pOTE1KGRldik7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmct PnJlcXVlc3RfbGlzdCk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KHJpbmcsICZyaW5n LT5iYXRjaF9wb29sKTsKPiAgIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUp Owo+IEBAIC0yMDMyLDYgKzIwMzMsOCBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbgo+ICAgCUlO SVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9jb21wbGV0ZWQpOwo+ICAgCXNwaW5fbG9ja19p bml0KCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKPgo+ICsJaW50ZWxfZW5naW5lX2luaXRfd2FrZXVw KHJpbmcpOwo+ICsKPiAgIAlyZXQgPSBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHJpbmcpOwo+ ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyb3I7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwo+IGluZGV4IGYzZmVhNjg4ZDJlNS4uNmNiOWEwYWVlODMzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0zMyw2ICszMywxNjIg QEAKPiAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi Cj4KPiArc3RhdGljIGJvb2wgbWlzc2VkX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK3sKPiArCXJldHVybiB0ZXN0X2JpdChlbmdpbmUtPmlkLCAmZW5naW5lLT5pOTE1LT5n cHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIF9faXJx X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWlmICh0ZXN0 X2JpdChlbmdpbmUtPmlkLCAmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3Mp KQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoIWludGVsX2lycXNfZW5hYmxlZChlbmdp bmUtPmk5MTUpKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlyZXR1cm4gZW5naW5lLT5pcnFf Z2V0KGVuZ2luZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKmlycV9maXJzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWlm IChlbmdpbmUtPmlycV9maXJzdCA9PSBOVUxMKSB7Cj4gKwkJc3RydWN0IHJiX25vZGUgKnJiOwo+ ICsKPiArCQlpZiAoUkJfRU1QVFlfUk9PVCgmZW5naW5lLT5pcnFfcmVxdWVzdHMpKQo+ICsJCQly ZXR1cm4gTlVMTDsKPiArCj4gKwkJcmIgPSByYl9maXJzdCgmZW5naW5lLT5pcnFfcmVxdWVzdHMp Owo+ICsJCWVuZ2luZS0+aXJxX2ZpcnN0ID0gcmJfZW50cnkocmIsIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCwgaXJxX25vZGUpOwo+ICsJfQo+ICsKPiArCXJldHVybiBlbmdpbmUtPmlycV9m aXJzdDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2lycV93YWtldXAoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUgPQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzLCBp cnFfd29yayk7Cj4gKwljb25zdCBib29sIGZha2VfaXJxID0gIV9faXJxX2VuYWJsZShlbmdpbmUp Owo+ICsJREVGSU5FX1dBSVQod2FpdCk7Cj4gKwo+ICsJZm9yICg7Oykgewo+ICsJCXN0cnVjdCB0 aW1lcl9saXN0IHRpbWVyOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dDsKPiArCj4gKwkJcHJlcGFyZV90b193YWl0KCZlbmdpbmUtPmlycV9xdWV1ZSwgJndhaXQsIFRB U0tfSU5URVJSVVBUSUJMRSk7Cj4gKwo+ICsJCXNwaW5fbG9jaygmZW5naW5lLT5pcnFfbG9jayk7 Cj4gKwkJcmVxdWVzdCA9IGlycV9maXJzdChlbmdpbmUpOwo+ICsJCXdoaWxlIChyZXF1ZXN0KSB7 Cj4gKwkJCXN0cnVjdCByYl9ub2RlICpyYjsKPiArCj4gKwkJCWlmIChyZXF1ZXN0LT5yZXNldF9j b3VudGVyID09IGk5MTVfcmVzZXRfY291bnRlcigmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3IpICYm Cj4gKwkJCSAgICAhaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCwgZmFsc2UpKQo+ ICsJCQkJYnJlYWs7Cj4gKwo+ICsJCQlyYiA9IHJiX25leHQoJnJlcXVlc3QtPmlycV9ub2RlKTsK PiArCQkJcmJfZXJhc2UoJnJlcXVlc3QtPmlycV9ub2RlLCAmZW5naW5lLT5pcnFfcmVxdWVzdHMp Owo+ICsJCQlSQl9DTEVBUl9OT0RFKCZyZXF1ZXN0LT5pcnFfbm9kZSk7Cj4gKwo+ICsJCQl3YWtl X3VwX2FsbCgmcmVxdWVzdC0+d2FpdCk7Cj4gKwo+ICsJCQlyZXF1ZXN0ID0KPiArCQkJCXJiID8K PiArCQkJCXJiX2VudHJ5KHJiLCB0eXBlb2YoKnJlcXVlc3QpLCBpcnFfbm9kZSkgOgo+ICsJCQkJ TlVMTDsKPiArCQl9Cj4gKwkJZW5naW5lLT5pcnFfZmlyc3QgPSByZXF1ZXN0Owo+ICsJCXNwaW5f dW5sb2NrKCZlbmdpbmUtPmlycV9sb2NrKTsKPiArCQlpZiAocmVxdWVzdCA9PSBOVUxMKQo+ICsJ CQlicmVhazsKPiArCj4gKwkJaTkxNV9xdWV1ZV9oYW5nY2hlY2soZW5naW5lLT5pOTE1KTsKPiAr Cj4gKwkJdGltZXIuZnVuY3Rpb24gPSBOVUxMOwo+ICsJCWlmIChmYWtlX2lycSB8fCBtaXNzZWRf aXJxKGVuZ2luZSkpIHsKPiArCQkJc2V0dXBfdGltZXJfb25fc3RhY2soJnRpbWVyLAo+ICsJCQkJ CSAgICAgKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcpKWZha2VfaXJxLAoKS2Fib29tIHdoZW4gaXQg ZmlyZXM/IDopCgo+ICsJCQkJCSAgICAgKHVuc2lnbmVkIGxvbmcpY3VycmVudCk7Cj4gKwkJCW1v ZF90aW1lcigmdGltZXIsIGppZmZpZXMgKyAxKTsKPiArCQl9CgpJIHN0aWxsIHNlZSBubyBiZW5l Zml0IGluIGNvbXBsaWNhdGluZyB0aGluZ3Mgd2l0aCBhIHRpbWVyLiBJdCBpcyBqdXN0IGEgCm5l ZWRsZXNzbHkgY29udHJpdmVkIHdheSBvZiBkb2luZyBhIHNjaGVkdWxlX3RpbWVvdXQuIEFuZCBJ IGRvbid0IHNlZSB3ZSAKd291bGQgbmVlZCB0byBleHRlbmQgdGhlIG1lY2hhbmlzbSBmb3IgbW9y ZSBwcmVjaXNpb24gc2luY2UgaXQgb25seSAKY29tZXMgaW50byBwbGF5IGluIHN1Y2ggYm9yZGVy bGluZSBjb25kaXRpb25zIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIuCgo+ICsKPiArCQkvKiBVbmxp a2UgdGhlIGluZGl2aWR1YWwgY2xpZW50cywgd2UgZG8gbm90IHdhbnQgdGhpcwo+ICsJCSAqIGJh Y2tncm91bmQgdGhyZWFkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHN5c3RlbSBsb2FkLAo+ICsJCSAq IGkuZS4gd2UgZG8gbm90IHdhbnQgdG8gdXNlIGlvX3NjaGVkdWxlKCkgaGVyZS4KPiArCQkgKi8K PiArCQlzY2hlZHVsZSgpOwoKSSBhbSBhbHNvIHRoaW5raW5nIGFib3V0IHdoZXRoZXIgYnVzeSBz cGluIG1ha2VzIHNlbnNlIG1vcmUgaW4gd2FpdCAKcmVxdWVzdCBvciBoZXJlLiBIbS4uIFdpdGgg dGhhdCBvcHRpbWlzYXRpb24gd2hpY2ggbWFrZXMgb25seSB0aGUgd2FpdGVyIApvbiB0aGUgbmV4 dCByZXF1ZXN0IGluIHRoZSBxdWV1ZSBzcGluIGl0IGlzIE9LIHRvIGRvIGl0IHRoZXJlLgoKKFNv IHBsZWFzZSByZXNwaW4gdGhhdCBwYXRjaCBzZXJpZXMgYXMgd2VsbC4pCgpCdXQgaWYgdGhhdCBi cmluZ3MgYW4gaW1wcm92ZW1lbnQgd291bGQgYSBzaG9ydCBzcGluIGJlIGJlbmVmaWNpYWwgaGVy ZSAKYXMgd2VsbD8gTGVzcyBzbyBiZWNhdXNlIHdhaXRlcnMgYXJlIGFscmVhZHkgc2xlZXBpbmcg YnV0IGNvdWxkIGEgYml0IEkgCnN1cHBvc2UuCgo+ICsKPiArCQlpZiAodGltZXIuZnVuY3Rpb24p IHsKPiArCQkJZGVsX3NpbmdsZXNob3RfdGltZXJfc3luYygmdGltZXIpOwo+ICsJCQlkZXN0cm95 X3RpbWVyX29uX3N0YWNrKCZ0aW1lcik7Cj4gKwkJfQo+ICsJfQo+ICsJZmluaXNoX3dhaXQoJmVu Z2luZS0+aXJxX3F1ZXVlLCAmd2FpdCk7Cj4gKwlpZiAoIWZha2VfaXJxKQo+ICsJCWVuZ2luZS0+ aXJxX3B1dChlbmdpbmUpOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0X3dha2V1 cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWluaXRfd2FpdHF1ZXVl X2hlYWQoJmVuZ2luZS0+aXJxX3F1ZXVlKTsKPiArCXNwaW5fbG9ja19pbml0KCZlbmdpbmUtPmly cV9sb2NrKTsKPiArCUlOSVRfV09SSygmZW5naW5lLT5pcnFfd29yaywgaW50ZWxfZW5naW5lX2ly cV93YWtldXApOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2VuZ2luZV9hZGRfd2FrZXVwKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiArewo+ICsJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhyZXF1ZXN0KTsKPiAr Cj4gKwlzcGluX2xvY2soJmVuZ2luZS0+aXJxX2xvY2spOwo+ICsJaWYgKHJlcXVlc3QtPmlycV9j b3VudCsrID09IDApIHsKPiArCQlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpwYXJlbnQ7Cj4gKwkJYm9v bCBmaXJzdDsKPiArCj4gKwkJaWYgKFJCX0VNUFRZX1JPT1QoJmVuZ2luZS0+aXJxX3JlcXVlc3Rz KSkKPiArCQkJc2NoZWR1bGVfd29yaygmZW5naW5lLT5pcnFfd29yayk7CgpXb3J0aCB0aGlua2lu ZyBhYm91dCBhIGRlZGljYXRlZCwgbWF5YmUgZXZlbiBDUFUgbG9jYWwgd29yayBxdWV1ZSBmb3Ig Cm1heGltdW0gcmVzcG9uc2l2ZW5lc3M/Cgo+ICsKPiArCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZy ZXF1ZXN0LT53YWl0KTsKPiArCj4gKwkJZmlyc3QgPSB0cnVlOwo+ICsJCXBhcmVudCA9IE5VTEw7 Cj4gKwkJcCA9ICZlbmdpbmUtPmlycV9yZXF1ZXN0cy5yYl9ub2RlOwo+ICsJCXdoaWxlICgqcCkg ewo+ICsJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKl9fcmVxOwo+ICsKPiArCQkJcGFy ZW50ID0gKnA7Cj4gKwkJCV9fcmVxID0gcmJfZW50cnkocGFyZW50LCB0eXBlb2YoKl9fcmVxKSwg aXJxX25vZGUpOwo+ICsKPiArCQkJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHJlcXVlc3QtPnNlcW5v LCBfX3JlcS0+c2Vxbm8pKSB7Cj4gKwkJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7Cj4gKwkJCQlm aXJzdCA9IGZhbHNlOwo+ICsJCQl9IGVsc2UKPiArCQkJCXAgPSAmcGFyZW50LT5yYl9sZWZ0Owo+ ICsJCX0KPiArCQlpZiAoZmlyc3QpCj4gKwkJCWVuZ2luZS0+aXJxX2ZpcnN0ID0gcmVxdWVzdDsK PiArCj4gKwkJcmJfbGlua19ub2RlKCZyZXF1ZXN0LT5pcnFfbm9kZSwgcGFyZW50LCBwKTsKPiAr CQlyYl9pbnNlcnRfY29sb3IoJnJlcXVlc3QtPmlycV9ub2RlLCAmZW5naW5lLT5pcnFfcmVxdWVz dHMpOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2soJmVuZ2luZS0+aXJxX2xvY2spOwo+ICt9Cj4gKwo+ ICt2b2lkIGludGVsX2VuZ2luZV9yZW1vdmVfd2FrZXVwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0g aTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhyZXF1ZXN0KTsKPiArCj4gKwlpZiAoUkJfRU1QVFlf Tk9ERSgmcmVxdWVzdC0+aXJxX25vZGUpKQo+ICsJCXJldHVybjsKPiArCj4gKwlzcGluX2xvY2so JmVuZ2luZS0+aXJxX2xvY2spOwo+ICsJaWYgKC0tcmVxdWVzdC0+aXJxX2NvdW50ID09IDAgJiYg IVJCX0VNUFRZX05PREUoJnJlcXVlc3QtPmlycV9ub2RlKSkgewo+ICsJCWlmIChlbmdpbmUtPmly cV9maXJzdCA9PSByZXF1ZXN0KQo+ICsJCQllbmdpbmUtPmlycV9maXJzdCA9IE5VTEw7Cj4gKwkJ cmJfZXJhc2UoJnJlcXVlc3QtPmlycV9ub2RlLCAmZW5naW5lLT5pcnFfcmVxdWVzdHMpOwo+ICsJ fQo+ICsJc3Bpbl91bmxvY2soJmVuZ2luZS0+aXJxX2xvY2spOwo+ICt9Cj4gKwo+ICAgaW50IF9f aW50ZWxfcmluZ19zcGFjZShpbnQgaGVhZCwgaW50IHRhaWwsIGludCBzaXplKQo+ICAgewo+ICAg CWludCBzcGFjZSA9IGhlYWQgLSB0YWlsOwo+IEBAIC0yMDg3LDYgKzIyNDMsNyBAQCBzdGF0aWMg aW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAly aW5nLT5idWZmZXIgPSByaW5nYnVmOwo+Cj4gICAJcmluZy0+ZGV2ID0gZGV2Owo+ICsJcmluZy0+ aTkxNSA9IHRvX2k5MTUoZGV2KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9s aXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwo+ICAgCWk5 MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChyaW5nLCAmcmluZy0+YmF0Y2hfcG9vbCk7Cj4gQEAgLTIw OTUsNyArMjI1Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAgCXJpbmdidWYtPnJpbmcgPSByaW5nOwo+ICAgCW1lbXNldChy aW5nLT5zZW1hcGhvcmUuc3luY19zZXFubywgMCwgc2l6ZW9mKHJpbmctPnNlbWFwaG9yZS5zeW5j X3NlcW5vKSk7Cj4KPiAtCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnJpbmctPmlycV9xdWV1ZSk7Cj4g KwlpbnRlbF9lbmdpbmVfaW5pdF93YWtldXAocmluZyk7Cj4KPiAgIAlpZiAoSTkxNV9ORUVEX0dG WF9IV1MoZGV2KSkgewo+ICAgCQlyZXQgPSBpbml0X3N0YXR1c19wYWdlKHJpbmcpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA2NmI3ZjMyZmQyOTMuLjlh OTgyNjhhNTVmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiBAQCAtMTYwLDYgKzE2MCw3IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKPiAgICNkZWZp bmUgTEFTVF9VU0VSX1JJTkcgKFZFQ1MgKyAxKQo+ICAgCXUzMgkJbW1pb19iYXNlOwo+ICAgCXN0 cnVjdAkJZHJtX2RldmljZSAqZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7 Cj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKmJ1ZmZlcjsKPgo+ICAgCS8qCj4gQEAgLTI5 NSw3ICsyOTYsMTEgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+Cj4gICAJYm9vbCBncHVf Y2FjaGVzX2RpcnR5Owo+Cj4gKwlzcGlubG9ja190IGlycV9sb2NrOwo+ICsJc3RydWN0IHJiX3Jv b3QgaXJxX3JlcXVlc3RzOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICppcnFfZmly c3Q7Cj4gICAJd2FpdF9xdWV1ZV9oZWFkX3QgaXJxX3F1ZXVlOwo+ICsJc3RydWN0IHdvcmtfc3Ry dWN0IGlycV93b3JrOwo+Cj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmRlZmF1bHRfY29udGV4 dDsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbGFzdF9jb250ZXh0Owo+IEBAIC00OTksNCAr NTA0LDggQEAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4gICAvKiBMZWdhY3kgcmluZ2J1ZmZlciBzcGVjaWZpYyBw b3J0aW9uIG9mIHJlc2VydmF0aW9uIGNvZGU6ICovCj4gICBpbnQgaW50ZWxfcmluZ19yZXNlcnZl X3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7Cj4KPiArdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF93YWtldXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiArdm9pZCBpbnRlbF9lbmdpbmVfYWRkX3dha2V1cChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpOwo+ICt2b2lkIGludGVsX2VuZ2luZV9yZW1vdmVfd2FrZXVwKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7Cj4gKwo+ICAgI2VuZGlmIC8qIF9JTlRFTF9S SU5HQlVGRkVSX0hfICovCj4KClJlZ2FyZHMsCgpUdnJ0a28KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==