From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 32/38] drm/i915: Introduce intel_context.pin_mutex for pin management Date: Wed, 6 Mar 2019 09:45:27 +0000 Message-ID: References: <20190301140404.26690-1-chris@chris-wilson.co.uk> <20190301140404.26690-32-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6BD389854 for ; Wed, 6 Mar 2019 09:45:29 +0000 (UTC) In-Reply-To: <20190301140404.26690-32-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDAxLzAzLzIwMTkgMTQ6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbnRyb2R1Y2UgYSBt dXRleCB0byBzdGFydCBsb2NraW5nIHRoZSBIVyBjb250ZXh0cyBpbmRlcGVuZGVudGx5IG9mCj4g c3RydWN0X211dGV4LCB3aXRoIGEgdmlldyB0byByZWR1Y2luZyB0aGUgY29hcnNlIHN0cnVjdF9t dXRleC4gVGhlCj4gaW50ZWxfY29udGV4dC5waW5fbXV0ZXggaXMgdXNlZCB0byBndWFyZCB0aGUg dHJhbnNpdGlvbiB0byBhbmQgZnJvbSBiZWluZwo+IHBpbm5lZCBvbiB0aGUgZ3B1LCBhbmQgc28g aXMgcmVxdWlyZWQgYmVmb3JlIHN0YXJ0aW5nIHRvIGJ1aWxkIGFueQo+IHJlcXVlc3QsIGFuZCBy ZWxlYXNlZCB3aGVuIHRoZSBleGVjdXRpb24gaXMgY29tcGxldGVkLgoKZXhlY3V0aW9uIGlzIGNv bXBsZXRlZCBvciBjb25zdHJ1Y3Rpb24vZW1pc3Npb24gaXMgY29tcGxldGVkPwoKPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCA3NiAr KysrKysrLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0 LmMgICAgICAgICAgfCA1NiArKysrKysrKysrKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29udGV4dC5oICAgICAgICAgIHwgMzggKysrKysrLS0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29udGV4dF90eXBlcy5oICAgIHwgIDggKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICA0ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgNCArLQo+ICAgLi4uL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgIDIgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jICB8ICAyICstCj4gICA5IGZpbGVz IGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBjNmEyNWMzMjc2ZWUuLjRiYWJlYTUyNGZjOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00NzA2LDcgKzQ3MDYsNyBAQCBzdGF0aWMgaW50 IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gICAJCWlmICghc3RhdGUpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCUdFTV9C VUdfT04oY2UtPnBpbl9jb3VudCk7Cj4gKwkJR0VNX0JVR19PTihpbnRlbF9jb250ZXh0X2lzX3Bp bm5lZChjZSkpOwo+ICAgCj4gICAJCS8qCj4gICAJCSAqIEFzIHdlIHdpbGwgaG9sZCBhIHJlZmVy ZW5jZSB0byB0aGUgbG9naWNhbCBzdGF0ZSwgaXQgd2lsbAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA2MGIxN2Y2YTcyN2QuLjMyMWIyNmUzMDJlNSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTA5NiwyMyAr MTA5NiwyNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IC1nZW44X21vZGlmeV9ycGNz X2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gLQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gLQkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQo+ICtnZW44 X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9z c2V1IHNzZXUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2lu ZS0+aTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPmVuZ2luZS0+ aTkxNTsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnByZXY7Cj4gICAJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JR0VNX0JVR19PTighY2UtPnBp bl9jb3VudCk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+cGluX211dGV4KTsKPiAgIAo+ IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkvKgo+ ICsJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVk IHJlcXVlc3QgdG8gbW9kaWZ5Cj4gKwkgKiBpdHMgY29udGV4dCBpbWFnZSB2aWEgdGhlIGtlcm5l bCBjb250ZXh0LiBQcmlzdGluZSBhbmQgaWRsZSBjb250ZXh0cwo+ICsJICogd2lsbCBiZSBjb25m aWd1cmVkIG9uIHBpbm5pbmcuCj4gKwkgKi8KPiArCWlmICghaW50ZWxfY29udGV4dF9pc19waW5u ZWQoY2UpKQo+ICsJCXJldHVybiAwOwo+ICAgCj4gICAJLyogU3VibWl0dGluZyByZXF1ZXN0cyBl dGMgbmVlZHMgdGhlIGh3IGF3YWtlLiAqLwo+ICAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChpOTE1KTsKPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1 LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhjZS0+ZW5naW5l LCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJcmV0 ID0gUFRSX0VSUihycSk7Cj4gICAJCWdvdG8gb3V0X3B1dDsKPiBAQCAtMTE1Niw1MyArMTE2MCwz MCBAQCBnZW44X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gICB9 Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiAtX19pOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3Nz ZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAtCQkJCSAgICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCQkgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAr aTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJCSAg c3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2U7Cj4gICAJaW50IHJldCA9IDA7Cj4gICAKPiAtCWNlID0gaW50ZWxfY29udGV4dF9pbnN0YW5j ZShjdHgsIGVuZ2luZSk7Cj4gLQlpZiAoSVNfRVJSKGNlKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihj ZSk7Cj4gLQo+ICAgCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKPiAgIAlH RU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKPiAgIAo+ICsJY2UgPSBpbnRlbF9jb250ZXh0 X3Bpbl9sb2NrKGN0eCwgZW5naW5lKTsKPiArCWlmIChJU19FUlIoY2UpKQo+ICsJCXJldHVybiBQ VFJfRVJSKGNlKTsKPiArCj4gICAJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLwo+ ICAgCWlmICghbWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCj4gLQkJcmV0 dXJuIDA7Cj4gLQo+IC0JLyoKPiAtCSAqIElmIGNvbnRleHQgaXMgbm90IGlkbGUgd2UgaGF2ZSB0 byBzdWJtaXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlmeQo+IC0JICogaXRzIGNvbnRleHQg aW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29udGV4dC4gUHJpc3RpbmUgYW5kIGlkbGUgY29udGV4dHMK PiAtCSAqIHdpbGwgYmUgY29uZmlndXJlZCBvbiBwaW5uaW5nLgo+IC0JICovCj4gLQlpZiAoY2Ut PnBpbl9jb3VudCkKPiAtCQlyZXQgPSBnZW44X21vZGlmeV9ycGNzX2dwdShjZSwgZW5naW5lLCBz c2V1KTsKPiArCQlnb3RvIHVubG9jazsKPiAgIAo+ICsJcmV0ID0gZ2VuOF9tb2RpZnlfcnBjc19n cHUoY2UsIHNzZXUpOwoKVGhlIF9ncHUgc3VmZml4IGlzIG5vdCB0cnVlIGFueSBtb3JlIHNvIEkn ZCBkcm9wIGl0LgoKPiAgIAlpZiAoIXJldCkKPiAgIAkJY2UtPnNzZXUgPSBzc2V1Owo+ICAgCj4g LQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50Cj4gLWk5MTVfZ2VtX2NvbnRleHRf cmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+IC0JCQkJICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1 IHNzZXUpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1 cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQly ZXR1cm4gcmV0Owo+IC0KPiAtCXJldCA9IF9faTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9z c2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKPiAtCj4gLQltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICt1bmxvY2s6Cj4gKwlpbnRlbF9jb250ZXh0X3Bpbl91 bmxvY2soY2UpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBAQCAtMTYyMCwxMSArMTYw MSwxMiBAQCBzdGF0aWMgaW50IGNsb25lX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRz dCwKPiAgIAkJaWYgKCFtZW1jbXAoJnNzZXUsICZkZWZhdWx0X3NzZXUsIHNpemVvZihzc2V1KSkp Cj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCWNlID0gaW50ZWxfY29udGV4dF9pbnN0YW5jZShk c3QsIGVuZ2luZSk7Cj4gKwkJY2UgPSBpbnRlbF9jb250ZXh0X3Bpbl9sb2NrKGRzdCwgZW5naW5l KTsKPiAgIAkJaWYgKElTX0VSUihjZSkpCj4gICAJCQlyZXR1cm4gUFRSX0VSUihjZSk7Cj4gICAK PiAgIAkJY2UtPnNzZXUgPSBzc2V1Owo+ICsJCWludGVsX2NvbnRleHRfcGluX3VubG9jayhjZSk7 Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gQEAgLTE3OTAsNyArMTc3Miw2IEBAIHN0YXRp YyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ ICAgCXVuc2lnbmVkIGxvbmcgbG9va3VwOwo+IC0JaW50IHJldDsKPiAgIAo+ICAgCWlmIChhcmdz LT5zaXplID09IDApCj4gICAJCWdvdG8gb3V0Owo+IEBAIC0xODE3LDIxICsxNzk4LDE2IEBAIHN0 YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlpZiAo IWVuZ2luZSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCWNlID0gaW50ZWxfY29udGV4 dF9pbnN0YW5jZShjdHgsIGVuZ2luZSk7Cj4gKwljZSA9IGludGVsX2NvbnRleHRfcGluX2xvY2so Y3R4LCBlbmdpbmUpOyAvKiBzZXJpYWxpc2Ugd2l0aCBzZXRfc3NldSAqLwo+ICAgCWlmIChJU19F UlIoY2UpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihjZSk7Cj4gICAKPiAtCS8qIE9ubHkgdXNlIGZv ciBtdXRleCBoZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5kIHNldF9wYXJhbS4gKi8K PiAtCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gICAJdXNlcl9zc2V1 LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOwo+ICAgCXVzZXJfc3NldS5zdWJzbGlj ZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFzazsKPiAgIAl1c2VyX3NzZXUubWluX2V1c19w ZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKPiAgIAl1c2VyX3Nz ZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsK PiAgIAo+IC0JbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJ aW50ZWxfY29udGV4dF9waW5fdW5sb2NrKGNlKTsKPiAgIAo+ICAgCWlmIChjb3B5X3RvX3VzZXIo dTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwgJnVzZXJfc3NldSwKPiAgIAkJCSBzaXplb2Yo dXNlcl9zc2V1KSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHQuYwo+IGluZGV4IDdk ZTAyYmUwYjU1Mi4uN2M0MTcxMTE0ZTViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bnRleHQuYwo+IEBAIC04Niw3ICs4Niw3IEBAIHZvaWQgX19pbnRlbF9jb250ZXh0X3JlbW92ZShz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICAJc3Bpbl91bmxvY2soJmN0eC0+aHdfY29udGV4 dHNfbG9jayk7Cj4gICB9Cj4gICAKPiAtc3RydWN0IGludGVsX2NvbnRleHQgKgo+ICtzdGF0aWMg c3RydWN0IGludGVsX2NvbnRleHQgKgo+ICAgaW50ZWxfY29udGV4dF9pbnN0YW5jZShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IEBAIC0xMTAsNiArMTEwLDIxIEBAIGludGVsX2NvbnRleHRfaW5z dGFuY2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1cm4gcG9zOwo+ICAg fQo+ICAgCj4gK3N0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAraW50ZWxfY29udGV4dF9waW5fbG9j ayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICsJCSAgICAgICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gKwlfX2FjcXVpcmVzKGNlLT5waW5fbXV0ZXgpCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiArCj4gKwljZSA9IGludGVsX2NvbnRleHRfaW5z dGFuY2UoY3R4LCBlbmdpbmUpOwo+ICsJaWYgKElTX0VSUihjZSkpCj4gKwkJcmV0dXJuIGNlOwo+ ICsKPiArCW11dGV4X2xvY2soJmNlLT5waW5fbXV0ZXgpOwo+ICsJcmV0dXJuIGNlOwo+ICt9Cj4g Kwo+ICAgc3RydWN0IGludGVsX2NvbnRleHQgKgo+ICAgaW50ZWxfY29udGV4dF9waW4oc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gQEAgLTExNywxNiArMTMyLDIwIEBAIGludGVsX2NvbnRleHRfcGluKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAg CWludCBlcnI7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWNlID0gaW50ZWxfY29udGV4dF9pbnN0YW5jZShjdHgsIGVu Z2luZSk7Cj4gICAJaWYgKElTX0VSUihjZSkpCj4gICAJCXJldHVybiBjZTsKPiAgIAo+IC0JaWYg KHVubGlrZWx5KCFjZS0+cGluX2NvdW50KyspKSB7Cj4gKwlpZiAobGlrZWx5KGF0b21pY19pbmNf bm90X3plcm8oJmNlLT5waW5fY291bnQpKSkKPiArCQlyZXR1cm4gY2U7Cj4gKwo+ICsJaWYgKG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY2UtPnBpbl9tdXRleCkpCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlRSKTsKPiArCj4gKwlpZiAobGlrZWx5KCFhdG9taWNfcmVhZCgmY2UtPnBpbl9jb3Vu dCkpKSB7Cj4gICAJCWVyciA9IGNlLT5vcHMtPnBpbihjZSk7Cj4gICAJCWlmIChlcnIpCj4gLQkJ CWdvdG8gZXJyX3VucGluOwo+ICsJCQlnb3RvIGVycjsKPiAgIAo+ICAgCQltdXRleF9sb2NrKCZj dHgtPm11dGV4KTsKPiAgIAkJbGlzdF9hZGQoJmNlLT5hY3RpdmVfbGluaywgJmN0eC0+YWN0aXZl X2VuZ2luZXMpOwo+IEBAIC0xMzQsMTYgKzE1MywzNSBAQCBpbnRlbF9jb250ZXh0X3BpbihzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCj4gICAJCWk5MTVfZ2VtX2NvbnRleHRfZ2V0 KGN0eCk7Cj4gICAJCUdFTV9CVUdfT04oY2UtPmdlbV9jb250ZXh0ICE9IGN0eCk7Cj4gKwo+ICsJ CXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwoKV2h5IGlzIHRoaXMgbmVlZGVkPwoKPiAgIAl9Cj4g LQlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsgLyogbm8gb3ZlcmZsb3chICovCj4gICAKPiAr CWF0b21pY19pbmMoJmNlLT5waW5fY291bnQpOwo+ICsJR0VNX0JVR19PTighaW50ZWxfY29udGV4 dF9pc19waW5uZWQoY2UpKTsgLyogbm8gb3ZlcmZsb3chICovCj4gKwo+ICsJbXV0ZXhfdW5sb2Nr KCZjZS0+cGluX211dGV4KTsKPiAgIAlyZXR1cm4gY2U7Cj4gICAKPiAtZXJyX3VucGluOgo+IC0J Y2UtPnBpbl9jb3VudCA9IDA7Cj4gK2VycjoKPiArCW11dGV4X3VubG9jaygmY2UtPnBpbl9tdXRl eCk7Cj4gICAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAgIH0KPiAgIAo+ICt2b2lkIGludGVsX2Nv bnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICt7Cj4gKwlpZiAobGlrZWx5 KGF0b21pY19hZGRfdW5sZXNzKCZjZS0+cGluX2NvdW50LCAtMSwgMSkpKQo+ICsJCXJldHVybjsK PiArCj4gKwkvKiBXZSBtYXkgYmUgY2FsbGVkIGZyb20gaW5zaWRlIGludGVsX2NvbnRleHRfcGlu KCkgdG8gZXZpY3QgYW5vdGhlciAqLwo+ICsJbXV0ZXhfbG9ja19uZXN0ZWQoJmNlLT5waW5fbXV0 ZXgsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKPiArCj4gKwlpZiAobGlrZWx5KGF0b21pY19kZWNf YW5kX3Rlc3QoJmNlLT5waW5fY291bnQpKSkKPiArCQljZS0+b3BzLT51bnBpbihjZSk7Cj4gKwo+ ICsJbXV0ZXhfdW5sb2NrKCZjZS0+cGluX211dGV4KTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lk IGludGVsX2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUs Cj4gICAJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+IEBAIC0xNjUsNiArMjAz LDggQEAgaW50ZWxfY29udGV4dF9pbml0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAlJ TklUX0xJU1RfSEVBRCgmY2UtPnNpZ25hbF9saW5rKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmY2Ut PnNpZ25hbHMpOwo+ICAgCj4gKwltdXRleF9pbml0KCZjZS0+cGluX211dGV4KTsKPiArCj4gICAJ LyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwo+ICAgCWNlLT5zc2V1ID0gaW50 ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NvbnRleHQuaAo+IGluZGV4IGFhMzQzMTFhNDcyZS4uMzY1N2YzYTM0ZjhlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHQuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHQuaAo+IEBAIC03LDYgKzcsOCBAQAo+ICAg I2lmbmRlZiBfX0lOVEVMX0NPTlRFWFRfSF9fCj4gICAjZGVmaW5lIF9fSU5URUxfQ09OVEVYVF9I X18KPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvbG9ja2RlcC5oPgo+ICsKPiAgICNpbmNsdWRlICJp bnRlbF9jb250ZXh0X3R5cGVzLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3R5cGVzLmgi Cj4gICAKPiBAQCAtMjYsMTggKzI4LDMwIEBAIGludGVsX2NvbnRleHRfbG9va3VwKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPiAgIAo+ICAgLyoqCj4gLSAqIGludGVsX2NvbnRleHRfaW5zdGFuY2UgLSBMb29r dXAgb3IgYWxsb2NhdGUgdGhlIEhXIGNvbnRleHQgZm9yIChjdHgsIGVuZ2luZSkKPiArICogaW50 ZWxfY29udGV4dF9waW5fbG9jayAtIFN0YWJsaXNlcyB0aGUgJ3Bpbm5lZCcgc3RhdHVzIG9mIHRo ZSBIVyBjb250ZXh0Cj4gICAgKiBAY3R4IC0gdGhlIHBhcmVudCBHRU0gY29udGV4dAo+ICAgICog QGVuZ2luZSAtIHRoZSB0YXJnZXQgSFcgZW5naW5lCj4gICAgKgo+IC0gKiBSZXR1cm5zIHRoZSBl eGlzdGluZyBIVyBjb250ZXh0IGZvciB0aGlzIHBhaXIgb2YgKEdFTSBjb250ZXh0LCBlbmdpbmUp LCBvcgo+IC0gKiBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpc2VzIGEgZnJlc2ggY29udGV4dC4gT25j ZSBhbGxvY2F0ZWQsIHRoZSBIVyBjb250ZXh0Cj4gLSAqIHJlbWFpbnMgcmVzaWRlbnQgdW50aWwg dGhlIEdFTSBjb250ZXh0IGlzIGRlc3Ryb3llZC4KPiArICogQWNxdWlyZSBhIGxvY2sgb24gdGhl IHBpbm5lZCBzdGF0dXMgb2YgdGhlIEhXIGNvbnRleHQsIHN1Y2ggdGhhdCB0aGUgY29udGV4dAo+ ICsgKiBjYW4gbmVpdGhlciBiZSBib3VuZCB0byB0aGUgR1BVIG9yIHVuYm91bmQgd2hpbHN0IHRo ZSBsb2NrIGlzIGhlbGQsIGkuZS4KPiArICogaW50ZWxfY29udGV4dF9pc19waW5uZWQoKSByZW1h aW5zIHN0YWJsZS4KPiAgICAqLwo+ICAgc3RydWN0IGludGVsX2NvbnRleHQgKgo+IC1pbnRlbF9j b250ZXh0X2luc3RhbmNlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gK2ludGVsX2Nv bnRleHRfcGluX2xvY2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJICAgICAg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiArc3RhdGljIGlubGluZSBi b29sCj4gK2ludGVsX2NvbnRleHRfaXNfcGlubmVkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK PiArewo+ICsJcmV0dXJuIGF0b21pY19yZWFkKCZjZS0+cGluX2NvdW50KTsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfcGluX3VubG9jayhzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4gK19fcmVsZWFzZXMoY2UtPnBpbl9tdXRleCkKPiArewo+ICsJbXV0ZXhf dW5sb2NrKCZjZS0+cGluX211dGV4KTsKPiArfQo+ICsKPiAgIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICoKPiAgIF9faW50ZWxfY29udGV4dF9pbnNlcnQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKPiAgIAkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiBAQCAtNTAs MTggKzY0LDEwIEBAIGludGVsX2NvbnRleHRfcGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiAgIHN0YXRpYyBpbmxp bmUgdm9pZCBfX2ludGVsX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAg IHsKPiAtCUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOwo+IC0JY2UtPnBpbl9jb3VudCsrOwo+ ICsJR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKTsKPiArCWF0b21pY19p bmMoJmNlLT5waW5fY291bnQpOwoKVGhpcyBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgdGhlIG11dGV4 IGhlbGQgYnV0IG9ubHkgaWYgbm90IHplcm8sIHJpZ2h0PwoKQlVHX09OKCFhdG9taWNfaW5jX25v dF96ZXJvKCZjZS0+cGluX2NvdW50KSkgPwoKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gLXsKPiAt CUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOwo+IC0JaWYgKC0tY2UtPnBpbl9jb3VudCkKPiAt CQlyZXR1cm47Cj4gLQo+IC0JR0VNX0JVR19PTighY2UtPm9wcyk7Cj4gLQljZS0+b3BzLT51bnBp bihjZSk7Cj4gLX0KPiArdm9pZCBpbnRlbF9jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSk7Cj4gICAKPiAgICNlbmRpZiAvKiBfX0lOVEVMX0NPTlRFWFRfSF9fICovCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHRfdHlwZXMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IGluZGV4IDgwNGZhOTNk ZTg1My4uNmRjOWI0YjkwNjdiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bnRleHRfdHlwZXMuaAo+IEBAIC04LDYgKzgsNyBAQAo+ICAgI2RlZmluZSBfX0lOVEVMX0NPTlRF WFRfVFlQRVNfXwo+ICAgCj4gICAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsjaW5jbHVkZSA8 bGludXgvbXV0ZXguaD4KPiAgICNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KPiAgICNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgo+ICAgCj4gQEAgLTM4LDE0ICszOSwxOSBAQCBzdHJ1Y3QgaW50ZWxf Y29udGV4dCB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmdlbV9jb250ZXh0Owo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICphY3RpdmU7Cj4gKwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpbms7Cj4gICAJ c3RydWN0IGxpc3RfaGVhZCBzaWduYWxfbGluazsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25h bHM7Cj4gKwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqc3RhdGU7Cj4gICAJc3RydWN0IGludGVsX3Jp bmcgKnJpbmc7Cj4gKwo+ICAgCXUzMiAqbHJjX3JlZ19zdGF0ZTsKPiAgIAl1NjQgbHJjX2Rlc2M7 Cj4gLQlpbnQgcGluX2NvdW50Owo+ICsKPiArCWF0b21pY190IHBpbl9jb3VudDsKPiArCXN0cnVj dCBtdXRleCBwaW5fbXV0ZXg7IC8qIGd1YXJkcyBwaW5uaW5nIGFuZCBhc3NvY2lhdGVkIG9uLWdw dWluZyAqLwoKTm90IHBpbm5pbmcgYnV0IHRyYW5zaXRpb24gZnJvbSBwaW5uZWQgdG8gdW5waW5u ZWQgc3RhdGUgQUZBSVUuCgo+ICAgCj4gICAJLyoqCj4gICAJICogYWN0aXZlX3RyYWNrZXI6IEFj dGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+IGluZGV4IDQ3M2NmZWE0YzUwMy4uZTY5YjUyYzRkM2NlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTIzOCw3ICsxMjM4LDcgQEAgc3RhdGljIHZvaWQg X19leGVjbGlzdHNfY29udGV4dF9maW5pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIAo+ ICAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UpCj4gICB7Cj4gLQlHRU1fQlVHX09OKGNlLT5waW5fY291bnQpOwo+ICsJR0VNX0JV R19PTihpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpOwo+ICAgCj4gICAJaWYgKGNlLT5zdGF0 ZSkKPiAgIAkJX19leGVjbGlzdHNfY29udGV4dF9maW5pKGNlKTsKPiBAQCAtMTQ3Niw3ICsxNDc2 LDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyZXF1ZXN0KQo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAKPiAtCUdFTV9CVUdfT04oIXJl cXVlc3QtPmh3X2NvbnRleHQtPnBpbl9jb3VudCk7Cj4gKwlHRU1fQlVHX09OKCFpbnRlbF9jb250 ZXh0X2lzX3Bpbm5lZChyZXF1ZXN0LT5od19jb250ZXh0KSk7Cj4gICAKPiAgIAkvKgo+ICAgCSAq IEZsdXNoIGVub3VnaCBzcGFjZSB0byByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2Ygd2FpdGluZyBh ZnRlcgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA0ZjEz N2QwYTUzMTYuLmEyYmRmMTg4ZjNmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKPiBAQCAtMTM1Niw3ICsxMzU2LDcgQEAgc3RhdGljIHZvaWQgX19yaW5nX2Nv bnRleHRfZmluaShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICAKPiAgIHN0YXRpYyB2b2lk IHJpbmdfY29udGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIHsKPiAt CUdFTV9CVUdfT04oY2UtPnBpbl9jb3VudCk7Cj4gKwlHRU1fQlVHX09OKGludGVsX2NvbnRleHRf aXNfcGlubmVkKGNlKSk7Cj4gICAKPiAgIAlpZiAoY2UtPnN0YXRlKQo+ICAgCQlfX3JpbmdfY29u dGV4dF9maW5pKGNlKTsKPiBAQCAtMTkxNyw3ICsxOTE3LDcgQEAgc3RhdGljIGludCByaW5nX3Jl cXVlc3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIHsKPiAgIAlpbnQg cmV0Owo+ICAgCj4gLQlHRU1fQlVHX09OKCFyZXF1ZXN0LT5od19jb250ZXh0LT5waW5fY291bnQp Owo+ICsJR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pc19waW5uZWQocmVxdWVzdC0+aHdfY29u dGV4dCkpOwo+ICAgCUdFTV9CVUdfT04ocmVxdWVzdC0+dGltZWxpbmUtPmhhc19pbml0aWFsX2Jy ZWFkY3J1bWIpOwo+ICAgCj4gICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCAxNWYwMTZjYThlMGQuLmM2YzE0ZDFi MmNlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvbnRleHQuYwo+IEBAIC0xMDI5LDcgKzEwMjksNyBAQCBfX3NzZXVfdGVzdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIG91dF9jb250 ZXh0Owo+ICAgCj4gLQlyZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShj dHgsIGVuZ2luZSwgc3NldSk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJl X3NzZXUoY3R4LCBlbmdpbmUsIHNzZXUpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gb3V0X3Nw aW47Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUu Ywo+IGluZGV4IDY0MzRlOTY4ZWNiMC4uYzAzMmMwY2YyMGU2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiBAQCAtMTMxLDcgKzEzMSw3IEBA IHN0YXRpYyB2b2lkIG1vY2tfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cj4gICAKPiAgIHN0YXRpYyB2b2lkIG1vY2tfY29udGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKPiAgIHsKPiAtCUdFTV9CVUdfT04oY2UtPnBpbl9jb3VudCk7Cj4gKwlHRU1f QlVHX09OKGludGVsX2NvbnRleHRfaXNfcGlubmVkKGNlKSk7Cj4gICAKPiAgIAlpZiAoY2UtPnJp bmcpCj4gICAJCW1vY2tfcmluZ19mcmVlKGNlLT5yaW5nKTsKPiAKClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4