From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 31/32] drm/i915/execlists: Virtual engine bonding Date: Thu, 18 Apr 2019 07:47:51 +0100 Message-ID: References: <20190417075657.19456-1-chris@chris-wilson.co.uk> <20190417075657.19456-31-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3BA506E0B5 for ; Thu, 18 Apr 2019 06:47:54 +0000 (UTC) In-Reply-To: <20190417075657.19456-31-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 Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBTb21lIHVzZXJzIHJl cXVpcmUgdGhhdCB3aGVuIGEgbWFzdGVyIGJhdGNoIGlzIGV4ZWN1dGVkIG9uIG9uZSBwYXJ0aWN1 bGFyCj4gZW5naW5lLCBhIGNvbXBhbmlvbiBiYXRjaCBpcyBydW4gc2ltdWx0YW5lb3VzbHkgb24g YSBzcGVjaWZpYyBzbGF2ZQo+IGVuZ2luZS4gRm9yIHRoaXMgcHVycG9zZSwgd2UgaW50cm9kdWNl IHZpcnR1YWwgZW5naW5lIGJvbmRpbmcsIGFsbG93aW5nCj4gbWFwcyBvZiBtYXN0ZXI6c2xhdmVz IHRvIGJlIGNvbnN0cnVjdGVkIHRvIGNvbnN0cmFpbiB3aGljaCBwaHlzaWNhbAo+IGVuZ2luZXMg YSB2aXJ0dWFsIGVuZ2luZSBtYXkgc2VsZWN0IGdpdmVuIGEgZmVuY2Ugb24gYSBtYXN0ZXIgZW5n aW5lLgo+IAo+IEZvciB0aGUgbW9tZW50LCB3ZSBjb250aW51ZSB0byBpZ25vcmUgdGhlIGlzc3Vl IG9mIHByZWVtcHRpb24gZGVmZXJyaW5nCj4gdGhlIG1hc3RlciByZXF1ZXN0IGZvciBsYXRlci4g SWRlYWxseSwgd2Ugd291bGQgbGlrZSB0byB0aGVuIGFsc28gcmVtb3ZlCj4gdGhlIHNsYXZlIGFu ZCBydW4gc29tZXRoaW5nIGVsc2UgcmF0aGVyIHRoYW4gaGF2ZSBpdCBzdGFsbCB0aGUgcGlwZWxp bmUuCj4gV2l0aCBsb2FkIGJhbGFuY2luZywgd2Ugc2hvdWxkIGJlIGFibGUgdG8gbW92ZSB3b3Jr bG9hZCBhcm91bmQgaXQsIGJ1dAo+IHRoZXJlIGlzIGEgc2ltaWxhciBzdGFsbCBvbiB0aGUgbWFz dGVyIHBpcGVsaW5lIHdoaWxlIGl0IG1heSB3YWl0IGZvcgo+IHRoZSBzbGF2ZSB0byBiZSBleGVj dXRlZC4gQXQgdGhlIGNvc3Qgb2YgbW9yZSBsYXRlbmN5IGZvciB0aGUgYm9uZGVkCj4gcmVxdWVz dCwgaXQgbWF5IGJlIGludGVyZXN0aW5nIHRvIGxhdW5jaCBib3RoIG9uIHRoZWlyIGVuZ2luZXMg aW4KPiBsb2Nrc3RlcC4gKEJ1YmJsZXMgYWJvdW5kLikKPiAKPiBPcGVuczogQWxzbyB3aGF0IGFi b3V0IGJvbmRpbmcgYW4gZW5naW5lIGFzIGl0cyBvd24gbWFzdGVyPyBJdCBkb2Vzbid0Cj4gYnJl YWsgYW55dGhpbmcgaW50ZXJuYWxseSwgc28gYWxsb3cgdGhlIHNpbGxpbmVzcy4KPiAKPiB2Mjog RW1hbmNpcGF0ZSB0aGUgYm9uZHMKPiB2MzogQ291cGxlIGluIGRlbGF5ZWQgc2NoZWR1bGluZyBm b3IgdGhlIHNlbGZ0ZXN0cwo+IHY0OiBIYW5kbGUgaW52YWxpZCBtdXR1YWxseSBleGNsdXNpdmUg Ym9uZGluZwo+IHY1OiBNZW50aW9uIHdoYXQgdGhlIHVhcGkgZG9lcwo+IHY2OiBzL25ib25kL251 bV9ib25kcy8KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o ICB8ICAgNyArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAg ICAgfCAgOTggKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMu aCAgICAgICAgICAgfCAgIDQgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf bHJjLmMgICAgICAgIHwgMTkxICsrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgIDg2ICsrKysrKysrCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbGliX3N3X2ZlbmNlLmMgfCAgIDMgKwo+ICAgaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKysKPiAgIDcg ZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IGluZGV4IDZkY2ViNzhlOTVkNy4uMThiOTE3 NTgzNWM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5 cGVzLmgKPiBAQCAtNDA1LDYgKzQwNSwxMyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAg IAkgKi8KPiAgIAl2b2lkCQkoKnN1Ym1pdF9yZXF1ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSk7Cj4gICAKPiArCS8qCj4gKwkgKiBDYWxsZWQgb24gc2lnbmFsaW5nIG9mIGEgU1VCTUlUX0ZF TkNFLCBwYXNzaW5nIGFsb25nIHRoZSBzaWduYWxpbmcKPiArCSAqIHJlcXVlc3QgZG93biB0byB0 aGUgYm9uZGVkIHBhaXJzLgo+ICsJICovCj4gKwl2b2lkICAgICAgICAgICAgKCpib25kX2V4ZWN1 dGUpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkJCXN0cnVjdCBkbWFfZmVuY2UgKnNp Z25hbCk7Cj4gKwo+ICAgCS8qCj4gICAJICogQ2FsbCB3aGVuIHRoZSBwcmlvcml0eSBvbiBhIHJl cXVlc3QgaGFzIGNoYW5nZWQgYW5kIGl0IGFuZCBpdHMKPiAgIAkgKiBkZXBlbmRlbmNpZXMgbWF5 IG5lZWQgcmVzY2hlZHVsaW5nLiBOb3RlIHRoZSByZXF1ZXN0IGl0c2VsZiBtYXkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IDU2MGExOGJiNGNiYi4uMWI1YjA5MzdiZTI1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMTkxLDYgKzE5MSwx OCBAQCBzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgewo+ICAgCQlpbnQgcHJpbzsKPiAgIAl9IG5vZGVz W0k5MTVfTlVNX0VOR0lORVNdOwo+ICAgCj4gKwkvKgo+ICsJICogS2VlcCB0cmFjayBvZiBib25k ZWQgcGFpcnMgLS0gcmVzdHJpY3Rpb25zIHVwb24gb24gb3VyIHNlbGVjdGlvbgo+ICsJICogb2Yg cGh5c2ljYWwgZW5naW5lcyBhbnkgcGFydGljdWxhciByZXF1ZXN0IG1heSBiZSBzdWJtaXR0ZWQg dG8uCj4gKwkgKiBJZiB3ZSByZWNlaXZlIGEgc3VibWl0LWZlbmNlIGZyb20gYSBtYXN0ZXIgZW5n aW5lLCB3ZSB3aWxsIG9ubHkKPiArCSAqIHVzZSBvbmUgb2Ygc2libGluZ19tYXNrIHBoeXNpY2Fs IGVuZ2luZXMuCj4gKwkgKi8KPiArCXN0cnVjdCB2ZV9ib25kIHsKPiArCQljb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICptYXN0ZXI7Cj4gKwkJaW50ZWxfZW5naW5lX21hc2tfdCBzaWJsaW5n X21hc2s7Cj4gKwl9ICpib25kczsKPiArCXVuc2lnbmVkIGludCBudW1fYm9uZHM7Cj4gKwo+ICAg CS8qIEFuZCBmaW5hbGx5LCB3aGljaCBwaHlzaWNhbCBlbmdpbmVzIHRoaXMgdmlydHVhbCBlbmdp bmUgbWFwcyBvbnRvLiAqLwo+ICAgCXVuc2lnbmVkIGludCBudW1fc2libGluZ3M7Cj4gICAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZ3NbMF07Cj4gQEAgLTk2OSw2ICs5ODEsNyBAQCBz dGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICAJCQlyYl9lcmFzZV9jYWNoZWQocmIsICZleGVjbGlzdHMtPnZpcnR1YWwpOwo+ICAg CQkJUkJfQ0xFQVJfTk9ERShyYik7Cj4gICAKPiArCQkJR0VNX0JVR19PTighKHJxLT5leGVjdXRp b25fbWFzayAmIGVuZ2luZS0+bWFzaykpOwo+ICAgCQkJcnEtPmVuZ2luZSA9IGVuZ2luZTsKPiAg IAo+ICAgCQkJaWYgKGVuZ2luZSAhPSB2ZS0+c2libGluZ3NbMF0pIHsKPiBAQCAtMzA4Miw2ICsz MDk1LDggQEAgc3RhdGljIHZvaWQgdmlydHVhbF9jb250ZXh0X2Rlc3Ryb3koc3RydWN0IGtyZWYg KmtyZWYpCj4gICAJaWYgKHZlLT5jb250ZXh0LnN0YXRlKQo+ICAgCQlfX2V4ZWNsaXN0c19jb250 ZXh0X2ZpbmkoJnZlLT5jb250ZXh0KTsKPiAgIAo+ICsJa2ZyZWUodmUtPmJvbmRzKTsKPiArCj4g ICAJaTkxNV90aW1lbGluZV9maW5pKCZ2ZS0+YmFzZS50aW1lbGluZSk7Cj4gICAJa2ZyZWUodmUp Owo+ICAgfQo+IEBAIC0zMjc3LDYgKzMyOTIsMzggQEAgc3RhdGljIHZvaWQgdmlydHVhbF9zdWJt aXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAl0YXNrbGV0X3NjaGVkdWxl KCZ2ZS0+YmFzZS5leGVjbGlzdHMudGFza2xldCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIHN0cnVj dCB2ZV9ib25kICoKPiArdmlydHVhbF9maW5kX2JvbmQoc3RydWN0IHZpcnR1YWxfZW5naW5lICp2 ZSwKPiArCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3RlcikKPiArewo+ICsJ aW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHZlLT5udW1fYm9uZHM7IGkrKykgewo+ICsJ CWlmICh2ZS0+Ym9uZHNbaV0ubWFzdGVyID09IG1hc3RlcikKPiArCQkJcmV0dXJuICZ2ZS0+Ym9u ZHNbaV07Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk Cj4gK3ZpcnR1YWxfYm9uZF9leGVjdXRlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3Qg ZG1hX2ZlbmNlICpzaWduYWwpCj4gK3sKPiArCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUgPSB0 b192aXJ0dWFsX2VuZ2luZShycS0+ZW5naW5lKTsKPiArCXN0cnVjdCB2ZV9ib25kICpib25kOwo+ ICsKPiArCWJvbmQgPSB2aXJ0dWFsX2ZpbmRfYm9uZCh2ZSwgdG9fcmVxdWVzdChzaWduYWwpLT5l bmdpbmUpOwo+ICsJaWYgKGJvbmQpIHsKPiArCQlpbnRlbF9lbmdpbmVfbWFza190IG9sZCwgbmV3 LCBjbXA7Cj4gKwo+ICsJCWNtcCA9IFJFQURfT05DRShycS0+ZXhlY3V0aW9uX21hc2spOwo+ICsJ CWRvIHsKPiArCQkJb2xkID0gY21wOwo+ICsJCQluZXcgPSBjbXAgJiBib25kLT5zaWJsaW5nX21h c2s7Cj4gKwkJfSB3aGlsZSAoKGNtcCA9IGNtcHhjaGcoJnJxLT5leGVjdXRpb25fbWFzaywgb2xk LCBuZXcpKSAhPSBvbGQpOwoKTG9vcCBpbXBsaWVzIHNvbWVvbmUgZWxzZSBtaWdodCBiZSBtb2Rp ZnlpbmcgdGhlIHJxLT5leGVjdXRpb25fbWFzayBpbiAKcGFyYWxsZWw/Cgo+ICsJfQo+ICt9Cj4g Kwo+ICAgc3RydWN0IGludGVsX2NvbnRleHQgKgo+ICAgaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92 aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCQkgICAgICAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAo+IEBAIC0zMzE1LDYgKzMzNjIsNyBAQCBpbnRl bF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgIAo+ICAgCXZlLT5iYXNlLnNjaGVkdWxlID0gaTkxNV9zY2hlZHVsZTsKPiAgIAl2ZS0+YmFz ZS5zdWJtaXRfcmVxdWVzdCA9IHZpcnR1YWxfc3VibWl0X3JlcXVlc3Q7Cj4gKwl2ZS0+YmFzZS5i b25kX2V4ZWN1dGUgPSB2aXJ0dWFsX2JvbmRfZXhlY3V0ZTsKPiAgIAo+ICAgCXZlLT5iYXNlLmV4 ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKPiAgIAl0YXNrbGV0X2luaXQo JnZlLT5iYXNlLmV4ZWNsaXN0cy50YXNrbGV0LAo+IEBAIC0zNDA0LDkgKzM0NTIsNTkgQEAgaW50 ZWxfZXhlY2xpc3RzX2Nsb25lX3ZpcnR1YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgIAlpZiAoSVNfRVJSKGRzdCkpCj4gICAJCXJldHVybiBkc3Q7Cj4gICAKPiArCWlmIChzZS0+ bnVtX2JvbmRzKSB7Cj4gKwkJc3RydWN0IHZpcnR1YWxfZW5naW5lICpkZSA9IHRvX3ZpcnR1YWxf ZW5naW5lKGRzdC0+ZW5naW5lKTsKPiArCj4gKwkJZGUtPmJvbmRzID0ga21lbWR1cChzZS0+Ym9u ZHMsCj4gKwkJCQkgICAgc2l6ZW9mKCpzZS0+Ym9uZHMpICogc2UtPm51bV9ib25kcywKPiArCQkJ CSAgICBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIWRlLT5ib25kcykgewo+ICsJCQlpbnRlbF9jb250 ZXh0X3B1dChkc3QpOwo+ICsJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCQl9Cj4gKwo+ ICsJCWRlLT5udW1fYm9uZHMgPSBzZS0+bnVtX2JvbmRzOwo+ICsJfQo+ICsKPiAgIAlyZXR1cm4g ZHN0Owo+ICAgfQo+ICAgCj4gK2ludCBpbnRlbF92aXJ0dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKm1hc3RlciwKPiArCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqc2libGluZykKPiArewo+ICsJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSA9IHRv X3ZpcnR1YWxfZW5naW5lKGVuZ2luZSk7Cj4gKwlzdHJ1Y3QgdmVfYm9uZCAqYm9uZDsKPiArCWlu dCBuOwo+ICsKPiArCS8qIFNhbml0eSBjaGVjayB0aGUgc2libGluZyBpcyBwYXJ0IG9mIHRoZSB2 aXJ0dWFsIGVuZ2luZSAqLwo+ICsJZm9yIChuID0gMDsgbiA8IHZlLT5udW1fc2libGluZ3M7IG4r KykKPiArCQlpZiAoc2libGluZyA9PSB2ZS0+c2libGluZ3Nbbl0pCj4gKwkJCWJyZWFrOwo+ICsJ aWYgKG4gPT0gdmUtPm51bV9zaWJsaW5ncykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwli b25kID0gdmlydHVhbF9maW5kX2JvbmQodmUsIG1hc3Rlcik7Cj4gKwlpZiAoYm9uZCkgewo+ICsJ CWJvbmQtPnNpYmxpbmdfbWFzayB8PSBzaWJsaW5nLT5tYXNrOwo+ICsJCXJldHVybiAwOwo+ICsJ fQo+ICsKPiArCWJvbmQgPSBrcmVhbGxvYyh2ZS0+Ym9uZHMsCj4gKwkJCXNpemVvZigqYm9uZCkg KiAodmUtPm51bV9ib25kcyArIDEpLAo+ICsJCQlHRlBfS0VSTkVMKTsKPiArCWlmICghYm9uZCkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlib25kW3ZlLT5udW1fYm9uZHNdLm1hc3RlciA9 IG1hc3RlcjsKPiArCWJvbmRbdmUtPm51bV9ib25kc10uc2libGluZ19tYXNrID0gc2libGluZy0+ bWFzazsKPiArCj4gKwl2ZS0+Ym9uZHMgPSBib25kOwo+ICsJdmUtPm51bV9ib25kcysrOwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAgdm9pZCBpbnRlbF9leGVjbGlzdHNfc2hvd19yZXF1 ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkJICAgc3RydWN0IGRy bV9wcmludGVyICptLAo+ICAgCQkJCSAgIHZvaWQgKCpzaG93X3JlcXVlc3QpKHN0cnVjdCBkcm1f cHJpbnRlciAqbSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf bHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuaAo+IGluZGV4IDU1MzA2 MDYwNTJlNS4uZTAyOWFlZTg3YWRmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2xyYy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJj LmgKPiBAQCAtMTIzLDQgKzEyMyw4IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAgIGludGVs X2V4ZWNsaXN0c19jbG9uZV92aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4g ICAJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzcmMpOwo+ICAgCj4gK2ludCBpbnRl bF92aXJ0dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3RlciwKPiAr CQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZyk7Cj4gKwo+ICAg I2VuZGlmIC8qIF9JTlRFTF9MUkNfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9scmMuYwo+IGluZGV4IDIwOWU1MWVmMTNlNi4uM2Y0NTZhOGI3MjdiIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiBAQCAtMTMsNiArMTMsNyBAQAo+ICAgI2lu Y2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfZ2VtX3V0aWxzLmgiCj4gICAjaW5jbHVkZSAic2VsZnRlc3Rz L2lndF9saXZlX3Rlc3QuaCIKPiAgICNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X3NwaW5uZXIuaCIK PiArI2luY2x1ZGUgInNlbGZ0ZXN0cy9saWJfc3dfZmVuY2UuaCIKPiAgICNpbmNsdWRlICJzZWxm dGVzdHMvbW9ja19jb250ZXh0LmgiCj4gICAKPiAgIHN0YXRpYyBpbnQgbGl2ZV9zYW5pdHljaGVj ayh2b2lkICphcmcpCj4gQEAgLTE2MTAsNiArMTYxMSwxOTUgQEAgc3RhdGljIGludCBsaXZlX3Zp cnR1YWxfbWFzayh2b2lkICphcmcpCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICtzdGF0 aWMgaW50IGJvbmRfdmlydHVhbF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3MsCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICoqc2libGluZ3MsCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgbnNpYmxp bmcsCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gKyNkZWZpbmUgQk9ORF9TQ0hF RFVMRSBCSVQoMCkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyOwo+ICsJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx WzE2XTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJdW5zaWduZWQgbG9uZyBuOwo+ ICsJaW50IGVycjsKPiArCj4gKwlHRU1fQlVHX09OKG5zaWJsaW5nID49IEFSUkFZX1NJWkUocnEp IC0gMSk7Cj4gKwo+ICsJY3R4ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7Cj4gKwlpZiAoIWN0eCkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwllcnIgPSAwOwo+ICsJcnFbMF0gPSBFUlJfUFRS KC1FTk9NRU0pOwo+ICsJZm9yX2VhY2hfZW5naW5lKG1hc3RlciwgaTkxNSwgaWQpIHsKPiArCQlz dHJ1Y3QgaTkxNV9zd19mZW5jZSBmZW5jZSA9IHt9Owo+ICsKPiArCQlpZiAobWFzdGVyLT5jbGFz cyA9PSBjbGFzcykKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCW1lbXNldF9wKCh2b2lkICopcnEs IEVSUl9QVFIoLUVJTlZBTCksIEFSUkFZX1NJWkUocnEpKTsKPiArCj4gKwkJcnFbMF0gPSBpZ3Rf cmVxdWVzdF9hbGxvYyhjdHgsIG1hc3Rlcik7Cj4gKwkJaWYgKElTX0VSUihycVswXSkpIHsKPiAr CQkJZXJyID0gUFRSX0VSUihycVswXSk7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlpOTE1 X3JlcXVlc3RfZ2V0KHJxWzBdKTsKPiArCj4gKwkJaWYgKGZsYWdzICYgQk9ORF9TQ0hFRFVMRSkg ewo+ICsJCQlvbnN0YWNrX2ZlbmNlX2luaXQoJmZlbmNlKTsKPiArCQkJZXJyID0gaTkxNV9zd19m ZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxWzBdLT5zdWJtaXQsCj4gKwkJCQkJCQkgICAgICAg JmZlbmNlLAo+ICsJCQkJCQkJICAgICAgIEdGUF9LRVJORUwpOwo+ICsJCX0KPiArCQlpOTE1X3Jl cXVlc3RfYWRkKHJxWzBdKTsKPiArCQlpZiAoZXJyIDwgMCkKPiArCQkJZ290byBvdXQ7Cj4gKwo+ ICsJCWZvciAobiA9IDA7IG4gPCBuc2libGluZzsgbisrKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9j b250ZXh0ICp2ZTsKPiArCj4gKwkJCXZlID0gaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFs KGN0eCwKPiArCQkJCQkJCSAgICBzaWJsaW5ncywKPiArCQkJCQkJCSAgICBuc2libGluZyk7Cj4g KwkJCWlmIChJU19FUlIodmUpKSB7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKHZlKTsKPiArCQkJCW9u c3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOwo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCj4g KwkJCWVyciA9IGludGVsX3ZpcnR1YWxfZW5naW5lX2F0dGFjaF9ib25kKHZlLT5lbmdpbmUsCj4g KwkJCQkJCQkgICAgICAgbWFzdGVyLAo+ICsJCQkJCQkJICAgICAgIHNpYmxpbmdzW25dKTsKPiAr CQkJaWYgKGVycikgewo+ICsJCQkJaW50ZWxfY29udGV4dF9wdXQodmUpOwo+ICsJCQkJb25zdGFj a19mZW5jZV9maW5pKCZmZW5jZSk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJ ZXJyID0gaW50ZWxfY29udGV4dF9waW4odmUpOwo+ICsJCQlpbnRlbF9jb250ZXh0X3B1dCh2ZSk7 Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCW9uc3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOwo+ICsJ CQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCj4gKwkJCXJxW24gKyAxXSA9IGk5MTVfcmVxdWVzdF9j cmVhdGUodmUpOwo+ICsJCQlpbnRlbF9jb250ZXh0X3VucGluKHZlKTsKPiArCQkJaWYgKElTX0VS UihycVtuICsgMV0pKSB7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKHJxW24gKyAxXSk7Cj4gKwkJCQlv bnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwkJ CWk5MTVfcmVxdWVzdF9nZXQocnFbbiArIDFdKTsKPiArCj4gKwkJCWVyciA9IGk5MTVfcmVxdWVz dF9hd2FpdF9leGVjdXRpb24ocnFbbiArIDFdLAo+ICsJCQkJCQkJICAgJnJxWzBdLT5mZW5jZSwK PiArCQkJCQkJCSAgIHZlLT5lbmdpbmUtPmJvbmRfZXhlY3V0ZSk7Cj4gKwkJCWk5MTVfcmVxdWVz dF9hZGQocnFbbiArIDFdKTsKPiArCQkJaWYgKGVyciA8IDApIHsKPiArCQkJCW9uc3RhY2tfZmVu Y2VfZmluaSgmZmVuY2UpOwo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJb25z dGFja19mZW5jZV9maW5pKCZmZW5jZSk7Cj4gKwo+ICsJCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChy cVswXSwKPiArCQkJCSAgICAgIEk5MTVfV0FJVF9MT0NLRUQsCj4gKwkJCQkgICAgICBIWiAvIDEw KSA8IDApIHsKPiArCQkJcHJfZXJyKCJNYXN0ZXIgcmVxdWVzdCBkaWQgbm90IGV4ZWN1dGUgKG9u ICVzKSFcbiIsCj4gKwkJCSAgICAgICBycVswXS0+ZW5naW5lLT5uYW1lKTsKPiArCQkJZXJyID0g LUVJTzsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlmb3IgKG4gPSAwOyBuIDwgbnNp Ymxpbmc7IG4rKykgewo+ICsJCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnFbbiArIDFdLAo+ICsJ CQkJCSAgICAgIEk5MTVfV0FJVF9MT0NLRUQsCj4gKwkJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJ TUVPVVQpIDwgMCkgewo+ICsJCQkJZXJyID0gLUVJTzsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9 Cj4gKwo+ICsJCQlpZiAocnFbbiArIDFdLT5lbmdpbmUgIT0gc2libGluZ3Nbbl0pIHsKPiArCQkJ CXByX2VycigiQm9uZGVkIHJlcXVlc3QgZGlkIG5vdCBleGVjdXRlIG9uIHRhcmdldCBlbmdpbmU6 IGV4cGVjdGVkICVzLCB1c2VkICVzOyBtYXN0ZXIgd2FzICVzXG4iLAo+ICsJCQkJICAgICAgIHNp YmxpbmdzW25dLT5uYW1lLAo+ICsJCQkJICAgICAgIHJxW24gKyAxXS0+ZW5naW5lLT5uYW1lLAo+ ICsJCQkJICAgICAgIHJxWzBdLT5lbmdpbmUtPm5hbWUpOwo+ICsJCQkJZXJyID0gLUVJTlZBTDsK PiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlmb3IgKG4gPSAwOyAhSVNf RVJSKHJxW25dKTsgbisrKQo+ICsJCQlpOTE1X3JlcXVlc3RfcHV0KHJxW25dKTsKPiArCQlycVsw XSA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwlmb3IgKG4gPSAwOyAh SVNfRVJSKHJxW25dKTsgbisrKQo+ICsJCWk5MTVfcmVxdWVzdF9wdXQocnFbbl0pOwo+ICsJaWYg KGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCWVyciA9IC1FSU87 Cj4gKwo+ICsJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX2JvbmQodm9pZCAqYXJnKQo+ICt7Cj4gKwlz dGF0aWMgY29uc3Qgc3RydWN0IHBoYXNlIHsKPiArCQljb25zdCBjaGFyICpuYW1lOwo+ICsJCXVu c2lnbmVkIGludCBmbGFnczsKPiArCX0gcGhhc2VzW10gPSB7Cj4gKwkJeyAiIiwgMCB9LAo+ICsJ CXsgInNjaGVkdWxlIiwgQk9ORF9TQ0hFRFVMRSB9LAo+ICsJCXsgfSwKPiArCX07Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnNpYmxpbmdzW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTsKPiArCXVuc2lnbmVkIGludCBj bGFzcywgaW5zdDsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCWlmIChVU0VTX0dVQ19TVUJNSVNT SU9OKGk5MTUpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCWZvciAoY2xhc3MgPSAwOyBjbGFzcyA8PSBNQVhfRU5HSU5F X0NMQVNTOyBjbGFzcysrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IHBoYXNlICpwOwo+ICsJCWludCBu c2libGluZzsKPiArCj4gKwkJbnNpYmxpbmcgPSAwOwo+ICsJCWZvciAoaW5zdCA9IDA7IGluc3Qg PD0gTUFYX0VOR0lORV9JTlNUQU5DRTsgaW5zdCsrKSB7Cj4gKwkJCWlmICghaTkxNS0+ZW5naW5l X2NsYXNzW2NsYXNzXVtpbnN0XSkKPiArCQkJCWJyZWFrOwo+ICsKPiArCQkJR0VNX0JVR19PTihu c2libGluZyA9PSBBUlJBWV9TSVpFKHNpYmxpbmdzKSk7Cj4gKwkJCXNpYmxpbmdzW25zaWJsaW5n KytdID0gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0XTsKPiArCQl9Cj4gKwkJaWYgKG5z aWJsaW5nIDwgMikKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWZvciAocCA9IHBoYXNlczsgcC0+ bmFtZTsgcCsrKSB7Cj4gKwkJCWVyciA9IGJvbmRfdmlydHVhbF9lbmdpbmUoaTkxNSwKPiArCQkJ CQkJICBjbGFzcywgc2libGluZ3MsIG5zaWJsaW5nLAo+ICsJCQkJCQkgIHAtPmZsYWdzKTsKPiAr CQkJaWYgKGVycikgewo+ICsJCQkJcHJfZXJyKCIlcyglcyk6IGZhaWxlZCBjbGFzcz0lZCwgbnNp Ymxpbmc9JWQsIGVycj0lZFxuIiwKPiArCQkJCSAgICAgICBfX2Z1bmNfXywgcC0+bmFtZSwgY2xh c3MsIG5zaWJsaW5nLCBlcnIpOwo+ICsJCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCQl9Cj4gKwkJ fQo+ICsJfQo+ICsKPiArb3V0X3VubG9jazoKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICAgaW50IGludGVsX2V4ZWNs aXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsK PiAgIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+IEBAIC0x NjI0LDYgKzE4MTQsNyBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCQlTVUJURVNUKGxpdmVfcHJlZW1wdF9zbW9r ZSksCj4gICAJCVNVQlRFU1QobGl2ZV92aXJ0dWFsX2VuZ2luZSksCj4gICAJCVNVQlRFU1QobGl2 ZV92aXJ0dWFsX21hc2spLAo+ICsJCVNVQlRFU1QobGl2ZV92aXJ0dWFsX2JvbmQpLAo+ICAgCX07 Cj4gICAKPiAgIAlpZiAoIUhBU19FWEVDTElTVFMoaTkxNSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDU3YjA5ZjYyNGJiNC4uNzQxOGEyNzQyZjBmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xNDkxLDgg KzE0OTEsOTQgQEAgc2V0X2VuZ2luZXNfX2xvYWRfYmFsYW5jZShzdHJ1Y3QgaTkxNV91c2VyX2V4 dGVuc2lvbiBfX3VzZXIgKmJhc2UsIHZvaWQgKmRhdGEpCj4gICAJcmV0dXJuIGVycjsKPiAgIH0K PiAgIAo+ICtzdGF0aWMgaW50Cj4gK3NldF9lbmdpbmVzX19ib25kKHN0cnVjdCBpOTE1X3VzZXJf ZXh0ZW5zaW9uIF9fdXNlciAqYmFzZSwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGk5MTVf Y29udGV4dF9lbmdpbmVzX2JvbmQgX191c2VyICpleHQgPQo+ICsJCWNvbnRhaW5lcl9vZl91c2Vy KGJhc2UsIHR5cGVvZigqZXh0KSwgYmFzZSk7Cj4gKwljb25zdCBzdHJ1Y3Qgc2V0X2VuZ2luZXMg KnNldCA9IGRhdGE7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp2aXJ0dWFsOwo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyOwo+ICsJdTE2IGNsYXNzLCBpbnN0YW5jZTsKPiAr CXUxNiBpZHgsIG51bV9ib25kczsKPiArCWludCBlcnIsIG47Cj4gKwo+ICsJaWYgKGdldF91c2Vy KGlkeCwgJmV4dC0+dmlydHVhbF9pbmRleCkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsJ aWYgKGlkeCA+PSBzZXQtPmVuZ2luZXMtPm51bV9lbmdpbmVzKSB7Cj4gKwkJRFJNX0RFQlVHKCJJ bnZhbGlkIGluZGV4IGZvciB2aXJ0dWFsIGVuZ2luZTogJWQgPj0gJWRcbiIsCj4gKwkJCSAgaWR4 LCBzZXQtPmVuZ2luZXMtPm51bV9lbmdpbmVzKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0K PiArCj4gKwlpZHggPSBhcnJheV9pbmRleF9ub3NwZWMoaWR4LCBzZXQtPmVuZ2luZXMtPm51bV9l bmdpbmVzKTsKPiArCWlmICghc2V0LT5lbmdpbmVzLT5lbmdpbmVzW2lkeF0pIHsKPiArCQlEUk1f REVCVUcoIkludmFsaWQgZW5naW5lIGF0ICVkXG4iLCBpZHgpOwo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBBIG5vbi12aXJ0dWFsIGVuZ2luZSBoYXMgMCBzaWJs aW5ncyB0byBjaG9vc2UgYmV0d2VlbjsgYW5kIHN1Ym1pdAo+ICsJICogZmVuY2Ugd2lsbCBhbHdh eXMgYmUgZGlyZWN0ZWQgdG8gdGhlIG9uZSBlbmdpbmUuCj4gKwkgKi8KPiArCXZpcnR1YWwgPSBz ZXQtPmVuZ2luZXMtPmVuZ2luZXNbaWR4XS0+ZW5naW5lOwo+ICsJaWYgKCFpbnRlbF9lbmdpbmVf aXNfdmlydHVhbCh2aXJ0dWFsKSkKPiArCQlyZXR1cm4gMDsKCkhtbSB3b3VsZG4ndCB3ZSBzdHJp Y3RseSBzcGVha2luZyBuZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdUFQSSAKZXJyb3JzIGFu ZCBhdXRvLW1hZ2ljLXNpbmdsZS12ZW5nLXJlcGxhY2VtZW50PyBMYXR0ZXIgaXMgT0sgdG8gcmV0 dXJuIApzdWNjZXNzLCBidXQgZm9ybWVyIHNob3VsZCBiZSByZXBvcnRlZCBhcyAtRUlOVkFMIEkg dGhpbmsuCgo+ICsKPiArCWVyciA9IGNoZWNrX3VzZXJfbWJ6KCZleHQtPmZsYWdzKTsKPiArCWlm IChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0la RShleHQtPm1iejY0KTsgbisrKSB7Cj4gKwkJZXJyID0gY2hlY2tfdXNlcl9tYnooJmV4dC0+bWJ6 NjRbbl0pOwo+ICsJCWlmIChlcnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJaWYg KGdldF91c2VyKGNsYXNzLCAmZXh0LT5tYXN0ZXJfY2xhc3MpKQo+ICsJCXJldHVybiAtRUZBVUxU Owo+ICsKPiArCWlmIChnZXRfdXNlcihpbnN0YW5jZSwgJmV4dC0+bWFzdGVyX2luc3RhbmNlKSkK PiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwltYXN0ZXIgPSBpbnRlbF9lbmdpbmVfbG9va3Vw X3VzZXIoc2V0LT5jdHgtPmk5MTUsIGNsYXNzLCBpbnN0YW5jZSk7Cj4gKwlpZiAoIW1hc3Rlcikg ewo+ICsJCURSTV9ERUJVRygiVW5yZWNvZ25pc2VkIG1hc3RlciBlbmdpbmU6IHsgY2xhc3M6JWQs IGluc3RhbmNlOiVkIH1cbiIsCj4gKwkJCSAgY2xhc3MsIGluc3RhbmNlKTsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlpZiAoZ2V0X3VzZXIobnVtX2JvbmRzLCAmZXh0LT5udW1f Ym9uZHMpKQo+ICsJCXJldHVybiAtRUZBVUxUOwoKU2hvdWxkIG51bV9ib25kcyA+IHZpcnR1YWwt Pm51bV9zaWJsaW5ncyBiZSBhbiBlcnJvcj8KCj4gKwo+ICsJZm9yIChuID0gMDsgbiA8IG51bV9i b25kczsgbisrKSB7Cj4gKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqYm9uZDsKPiArCQlzdHJ1 Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgY2k7Cj4gKwo+ICsJCWlmIChjb3B5X2Zyb21f dXNlcigmY2ksICZleHQtPmVuZ2luZXNbbl0sIHNpemVvZihjaSkpKQo+ICsJCQlyZXR1cm4gLUVG QVVMVDsKPiArCj4gKwkJYm9uZCA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihzZXQtPmN0eC0+ aTkxNSwKPiArCQkJCQkJY2kuZW5naW5lX2NsYXNzLAo+ICsJCQkJCQljaS5lbmdpbmVfaW5zdGFu Y2UpOwo+ICsJCWlmICghYm9uZCkgewo+ICsJCQlEUk1fREVCVUcoIlVucmVjb2duaXNlZCBlbmdp bmVbJWRdIGZvciBib25kaW5nOiB7IGNsYXNzOiVkLCBpbnN0YW5jZTogJWQgfVxuIiwKPiArCQkJ CSAgbiwgY2kuZW5naW5lX2NsYXNzLCBjaS5lbmdpbmVfaW5zdGFuY2UpOwo+ICsJCQlyZXR1cm4g LUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWVyciA9IGludGVsX3ZpcnR1YWxfZW5naW5lX2F0dGFj aF9ib25kKHZpcnR1YWwsIG1hc3RlciwgYm9uZCk7Cj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJu IGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBjb25zdCBp OTE1X3VzZXJfZXh0ZW5zaW9uX2ZuIHNldF9lbmdpbmVzX19leHRlbnNpb25zW10gPSB7Cj4gICAJ W0k5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0VdID0gc2V0X2VuZ2luZXNfX2xv YWRfYmFsYW5jZSwKPiArCVtJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfQk9ORF0gPSBzZXRfZW5n aW5lc19fYm9uZCwKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2xpYl9zd19mZW5jZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2xpYl9zd19mZW5jZS5jCj4gaW5kZXggMmJmYTcyYzE2NTRiLi5i OTc2YzEyODE3YzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2xpYl9zd19mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2xp Yl9zd19mZW5jZS5jCj4gQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBfX29uc3RhY2tfZmVuY2VfaW5p dChzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAKPiAgIHZvaWQgb25zdGFja19mZW5j ZV9maW5pKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSkKPiAgIHsKPiArCWlmICghZmVuY2Ut PmZsYWdzKQo+ICsJCXJldHVybjsKPiArCj4gICAJaTkxNV9zd19mZW5jZV9jb21taXQoZmVuY2Up Owo+ICAgCWk5MTVfc3dfZmVuY2VfZmluaShmZW5jZSk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ IGluZGV4IGZmMmFiYWJjMDk4NC4uMDkxODcyZDI0NTg4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ IEBAIC0xNTQzLDYgKzE1NDMsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IHsKPiAgICAqIHNpemVkIGFyZ3VtZW50LCB3aWxsIHJldmVydCBiYWNrIHRvIGRlZmF1bHQgc2V0 dGluZ3MuCj4gICAgKgo+ICAgICogU2VlIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5l cy4KPiArICoKPiArICogRXh0ZW5zaW9uczoKPiArICogICBpOTE1X2NvbnRleHRfZW5naW5lc19s b2FkX2JhbGFuY2UgKEk5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0UpCj4gKyAq ICAgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAoSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0JP TkQpCj4gICAgKi8KPiAgICNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMJMHhhCj4g ICAvKiBNdXN0IGJlIGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyBhbmQgd2VsbCBkb2N1bWVudGVk ICovCj4gQEAgLTE2NDUsOSArMTY0OSw0MCBAQCBzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNf bG9hZF9iYWxhbmNlIHsKPiAgIAlzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgZW5n aW5lc1tOX19dOyBcCj4gICB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIG5hbWVfXwo+ICAgCj4g Ky8qCj4gKyAqIGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQ6Cj4gKyAqCj4gKyAqIENvbnN0cnVj dGVkIGJvbmRlZCBwYWlycyBmb3IgZXhlY3V0aW9uIHdpdGhpbiBhIHZpcnR1YWwgZW5naW5lLgo+ ICsgKgo+ICsgKiBBbGwgZW5naW5lcyBhcmUgZXF1YWwsIGJ1dCBzb21lIGFyZSBtb3JlIGVxdWFs IHRoYW4gb3RoZXJzLiBHaXZlbgo+ICsgKiB0aGUgZGlzdHJpYnV0aW9uIG9mIHJlc291cmNlcyBp biB0aGUgSFcsIGl0IG1heSBiZSBwcmVmZXJhYmxlIHRvIHJ1bgo+ICsgKiBhIHJlcXVlc3Qgb24g YSBnaXZlbiBzdWJzZXQgb2YgZW5naW5lcyBpbiBwYXJhbGxlbCB0byBhIHJlcXVlc3Qgb24gYQo+ ICsgKiBzcGVjaWZpYyBlbmdpbmUuIFdlIGVuYWJsZSB0aGlzIHNlbGVjdGlvbiBvZiBlbmdpbmVz IHdpdGhpbiBhIHZpcnR1YWwKPiArICogZW5naW5lIGJ5IHNwZWNpZnlpbmcgYm9uZGluZyBwYWly cywgZm9yIGFueSBnaXZlbiBtYXN0ZXIgZW5naW5lIHdlIHdpbGwKPiArICogb25seSBleGVjdXRl IG9uIG9uZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWJsaW5ncyB3aXRoaW4gdGhlIHZpcnR1YWwg ZW5naW5lLgo+ICsgKgo+ICsgKiBUbyBleGVjdXRlIGEgcmVxdWVzdCBpbiBwYXJhbGxlbCBvbiB0 aGUgbWFzdGVyIGVuZ2luZSBhbmQgYSBzaWJsaW5nIHJlcXVpcmVzCj4gKyAqIGNvb3JkaW5hdGlv biB3aXRoIGEgSTkxNV9FWEVDX0ZFTkNFX1NVQk1JVC4KPiArICovCj4gK3N0cnVjdCBpOTE1X2Nv bnRleHRfZW5naW5lc19ib25kIHsKPiArCXN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIGJhc2U7 Cj4gKwo+ICsJX191MTYgdmlydHVhbF9pbmRleDsgLyogaW5kZXggb2YgdmlydHVhbCBlbmdpbmUg aW4gY3R4LT5lbmdpbmVzW10gKi8KPiArCV9fdTE2IG51bV9ib25kczsKPiArCj4gKwlfX3UxNiBt YXN0ZXJfY2xhc3M7Cj4gKwlfX3UxNiBtYXN0ZXJfaW5zdGFuY2U7CgpzdHJ1Y3QgaTkxNV9lbmdp bmVfY2xhc3NfaW5zdGFuY2UgbWFzdGVyOyA/Cgo+ICsKPiArCV9fdTY0IGZsYWdzOyAvKiBhbGwg dW5kZWZpbmVkIGZsYWdzIG11c3QgYmUgemVybyAqLwo+ICsJX191NjQgbWJ6NjRbNF07IC8qIHJl c2VydmVkIGZvciBmdXR1cmUgdXNlOyBtdXN0IGJlIHplcm8gKi8KPiArCj4gKwlzdHJ1Y3QgaTkx NV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgZW5naW5lc1swXTsKPiArfSBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKTsKPiArCj4gICBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgewo+ICAg CV9fdTY0IGV4dGVuc2lvbnM7IC8qIGxpbmtlZCBjaGFpbiBvZiBleHRlbnNpb24gYmxvY2tzLCAw IHRlcm1pbmF0ZXMgKi8KPiAgICNkZWZpbmUgSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURf QkFMQU5DRSAwIC8qIHNlZSBpOTE1X2NvbnRleHRfZW5naW5lc19sb2FkX2JhbGFuY2UgKi8KPiAr I2RlZmluZSBJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfQk9ORCAxIC8qIHNlZSBpOTE1X2NvbnRl eHRfZW5naW5lc19ib25kICovCj4gICAJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNl IGVuZ2luZXNbMF07Cj4gICB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwo+ICAgCj4gCgpSZWdh cmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==