From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 21/29] drm/i915: Switch back to an array of logical per-engine HW contexts Date: Thu, 11 Apr 2019 14:05:19 +0100 Message-ID: References: <20190408091728.20207-1-chris@chris-wilson.co.uk> <20190408091728.20207-21-chris@chris-wilson.co.uk> <155491310295.28388.10433520197102264232@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89D5289831 for ; Thu, 11 Apr 2019 13:05:22 +0000 (UTC) In-Reply-To: <155491310295.28388.10433520197102264232@skylake-alporthouse-com> 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 Ck9uIDEwLzA0LzIwMTkgMTc6MTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTA0LTEwIDE2OjMyOjE4KQo+Pgo+PiBPbiAwOC8wNC8yMDE5IDEwOjE3 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYwo+Pj4gaW5kZXggM2Y3OTRiYzcxOTU4Li4wZGYzYzUyMzhjMDQgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4+IEBAIC03MTYs NyArNzE2LDcgQEAgc3RhdGljIGludCBwaW5fY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAo+Pj4gICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPj4+ICAgICAgICBp bnQgZXJyOwo+Pj4gICAgCj4+PiAtICAgICBjZSA9IGludGVsX2NvbnRleHRfaW5zdGFuY2UoY3R4 LCBlbmdpbmUpOwo+Pj4gKyAgICAgY2UgPSBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdpbmUoY3R4 LCBlbmdpbmUtPmlkKTsKPj4KPj4gU3RheWluZyB3aXRoIGludGVsX2NvbnRleHRfaW5zdGFuY2Ug d291bGRuJ3QgaGVscCB0byByZWR1Y2UgdGhlIGNodXJuPwo+IAo+IEJ1dCBpdCB0YWtlcyB0aGUg R0VNIGNvbnRleHQgOnwKPiAKPiBpbnRlbF9jb250ZXh0X2xvb2t1cCgpID8gQnV0IGl0IHdvbid0 IGJlIHBhcnQgb2YgZ3QvaW50ZWxfY29udGV4dC5oCj4gQW5kIEknZCBsaWtlIHRvIGhhdmUgJ2dl dCcgaW4gdGhlcmUgZm9yIGNvbnNpc3RlbmN5IChhbHRob3VnaCBvdGhlcgo+IG9iamVjdCBsb29r dXAgZnVuY3Rpb25zIHJldHVybiBhIG5ldyByZWZlcmVuY2UsIHNvIHRoYXQgbWF5IG5vdCBiZSBh Cj4gc29saWQgYXJndW1lbnQpLgo+IAo+IEl0IGhhcyBhbm5veWVkIG1lIHRoYXQgdGhpcyBkb2Vz IHJlcXVpcmUgdGhlIEdFTSBjb250ZXh0LCBidXQgdGhhdCdzIHRoZQo+IG5hdHVyZSBvZiB0aGUg YmVhc3QuCgpMZWF2ZSBpdCBhcyBpcyB0aGVuLgoKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ Pj4gaW5kZXggNTAyNjZlODdjMjI1Li4yMWI0YTA0YzQyNGIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCj4+PiBAQCAtNDMxMiw4ICs0MzEyLDkgQEAgaW50IGk5MTVfZ2VtX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAgCj4+PiAgICBzdGF0 aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4+PiAgICB7Cj4+PiAtICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4Owo+Pj4gICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4+ICsgICAg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4+PiArICAgICBzdHJ1Y3QgaTkxNV9nZW1f ZW5naW5lcyAqZTsKPj4+ICAgICAgICBlbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPj4+ICAgICAg ICBpbnQgZXJyID0gMDsKPj4+ICAgIAo+Pj4gQEAgLTQzMzAsMTggKzQzMzEsMjYgQEAgc3RhdGlj IGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+Pj4gICAgICAgIGlmIChJU19FUlIoY3R4KSkKPj4+ICAgICAgICAgICAgICAg IHJldHVybiBQVFJfRVJSKGN0eCk7Cj4+PiAgICAKPj4+ICsgICAgIGUgPSBpOTE1X2dlbV9jb250 ZXh0X2VuZ2luZV9saXN0X2xvY2soY3R4KTsKPj4+ICsKPj4+ICAgICAgICBmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgewo+Pgo+PiBEbyB3ZSBuZWVkIGk5MTUgdmVyc2lvbiBvZiBm b3JfZWFjaF9jb250ZXh0X2VuZ2luZT8gSWYgYWxsIGNhbGwgc2l0ZXMKPj4gd2lsbCBkb2luZyB0 aGlzICJsb2NrIGN0eCIgLT4gIndhbGsgcGh5c2ljYWwgZW5naW5lcyIgLT4gImxvb2t1cCBpbgo+ PiBjb250ZXh0IiB0aGVuIGl0IHNlZW1zIGEgYml0IGRpc2Nvbm5lY3RlZC4KPiAKPiBJdCdzIHJh cmUsIGEgY291cGxlIG9mIG9kZCBjYXNlcyBpbW8uCgpPaywgY2FuIHJlLWV2YWx1YXRlIGF0IHRo ZSBlbmQuCgo+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlLT5l bmdpbmVzW2lkXTsKPj4KPj4gSG93IHdpbGwgaW5kZXggYnkgZW5naW5lLT5pZCB3b3JrIGZvciBl bmdpbmUgbWFwPwo+IAo+IEl0IGRvZXNuJ3QsIHRoYXQncyB0aGUgcG9pbnQgb2YgdGhlc2UgYmVp bmcgdGhlIG9kZCBjYXNlcy4gOikKPiAKPj4+ICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwo+Pj4gICAgCj4+PiAtICAgICAgICAgICAgIHJxID0gaTkxNV9yZXF1ZXN0X2Fs bG9jKGVuZ2luZSwgY3R4KTsKPj4+ICsgICAgICAgICAgICAgZXJyID0gaW50ZWxfY29udGV4dF9w aW4oY2UpOwo+Pj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIGdvdG8gZXJyX2FjdGl2ZTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgcnEgPSBpOTE1X3Jl cXVlc3RfY3JlYXRlKGNlKTsKPj4+ICsgICAgICAgICAgICAgaW50ZWxfY29udGV4dF91bnBpbihj ZSk7Cj4+Cj4+IEtpbmQgb2YgdmVyYm9zZSwgbm8/IERvIHlvdSB3YW50IHRvIGFkZCBzb21lCj4+ IG1pZGRsZS1ncm91bmQtYmV0d2Vlbi1yZXF1ZXN0LWFsbG9jLWFuZC1jcmVhdGUgaGVscGVyPwo+ IAo+IFRoZXJlJ3MgMiBjYWxsZXJzIG9mIGk5MTVfcmVxdWVzdF9jcmVhdGUoKSBpbiB0aGlzIHN0 eWxlLgo+IChFeGVjYnVmIGhhcyBhIHN0eWxlIGFsbCBvZiBpdHMgb3duLikKPiAKPiBBdCB0aGUg bW9tZW50IEkgZG9uJ3QgaGF2ZSBhIGdvb2QgbmFtZSBmb3IgdGhlIGhhcHB5IG1pZGRsZSBncm91 bmQsIHNvCj4gSSdtIHdpbGxpbmcgdG8gcGF5IHRoZSBwcmljZSBmb3IgZm9yY2luZyBjb250cm9s IG92ZXIgdGhlIHBpbiB0byB0aGUKPiB1c2VyLgo+IAo+IC4uLgo+IAo+IERvZXMgaXQgcmVhbGx5 IG1ha2UgYW55IGRpZmZlcmVuY2UgZm9yIHRoZSBwZXJtYS1waW5uZWQga2VybmVsIGNvbnRleHRz Pwo+IEFjdHVhbGx5IG5vLi4uCj4gCj4gSG1tLiBUaGUgZnVuZGFtZW50YWwgb2JqZWN0aXZlIHdh cyBiZWluZyBhYmxlIHRvIHBhc3MgY2UgYW5kIGF2b2lkCj4gc3RydWN0X211dGV4IC0tIGJ1dCB3 ZSBhbHJlYWR5IGF2b2lkIHN0cnVjdF9tdXRleCBmb3IgcGlubmluZyB0b2RheSBhcwo+IHRoZSBj b250ZXh0IGlzIGFscmVhZHkgcGlubmVkLgo+IAo+IFRoZSBkb3duc2lkZSBpcyB0aGF0IGl0IGFk ZHMgcmVkdW5kYW50IHN0ZXBzIHRvIGV4ZWNidWYsIGFuZAo+IF9faTkxNV9yZXF1ZXN0X2NyZWF0 ZSgpIGlzIGFscmVhZHkgdGFrZW4uLi4gQW5kIEkgaG9wZSB5b3Ugd291bGQgc2F5IG5vCj4gaWYg SSBzdWdnZXN0IF9fX19pOTE1X3JlcXVlc3RfY3JlYXRlIDopCj4gCj4+PiArc3RhdGljIHN0cnVj dCBpOTE1X2dlbV9lbmdpbmVzICpkZWZhdWx0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Cj4+PiArICAgICBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZTsKPj4+ICsgICAgIGVudW0gaW50 ZWxfZW5naW5lX2lkIGlkOwo+Pj4gKwo+Pj4gKyAgICAgZSA9IGt6YWxsb2Moc3RydWN0X3NpemUo ZSwgZW5naW5lcywgSTkxNV9OVU1fRU5HSU5FUyksIEdGUF9LRVJORUwpOwo+Pj4gKyAgICAgaWYg KCFlKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+ICsKPj4+ ICsgICAgIGUtPmk5MTUgPSBjdHgtPmk5MTU7Cj4+PiArICAgICBmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBjdHgtPmk5MTUsIGlkKSB7Cj4+PiArICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZTsKPj4+ICAgIAo+Pj4gKyAgICAgICAgICAgICBjZSA9IGludGVsX2NvbnRleHRfY3Jl YXRlKGN0eCwgZW5naW5lKTsKPj4+ICsgICAgICAgICAgICAgaWYgKElTX0VSUihjZSkpIHsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICBmcmVlX2VuZ2luZXNfbihlLCBpZCk7Cj4+Cj4+IEkgZGlz bGlrZSBwaWdneS1iYWNrIG9mIG4gaW50byBlLiBIb3cgYWJvdXQ6Cj4+Cj4+IF9fZnJlZV9lbmdp bmVzKGUsIG4pCj4+IHsKPj4gICAgICAgICAgLi4uCj4+IH0KPj4KPj4gZnJlZV9lbmdpbmVzKGUp Cj4+IHsKPj4gICAgICAgICAgX19mcmVfZW5naW5lcyhlLCBlLT5udW1fZW5naW5lcyk6Cj4+IH0K Pj4KPj4gPwo+IAo+IE9rLgo+ICAgCj4+IE9yIGV2ZW4geW91IGNvdWxkIGUtPm51bV9lbmdpbmVz KysgaW4gdGhlIGFib3ZlIGxvb3AgYW5kIGp1c3QgaGF2ZSBvbmUKPj4gZnJlZV9lbmdpbmVzLgo+ IAo+IEkgdGhvdWdodCBpdCB3YXMgY2xlYW5lciB0byBhdm9pZCBoYXZpbmcgbXVsdGlwbGUgY291 bnRlcnMgZm9yIHRoZSBzYW1lCj4gbG9vcC4gZnJlZV9lbmdpbmVzX24oKSBlbmRlZCB1cCB3aXRo IDUgdXNlcnMuCj4gCj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9DQVNUKGNl KTsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICBlLT5lbmdpbmVz W2lkXSA9IGNlOwo+Pgo+PiBFYWNoIGNvbnRleHQgd291bGQgaGF2ZSBhIHNwYXJzZSBhcnJheSBv ZiBlbmdpbmVzLCBvbiBtb3N0IHBsYXRmb3Jtcy4KPj4gV291bGQgaXQgYmUgd29ya2FibGUgdG8g aW5zdGVhZCBjcmVhdGUgYSBjb21wYWN0IGFycmF5IHBlciBjb250ZXh0LCBhbmQKPj4ganVzdCBo YXZlIGEgcGVyIGRldmljZSB0cmFuc2xhdGlvbiB0YWJsZSBvZiBpZHggdG8gZW5naW5lLT5pZD8g T3IKPj4gdmljZS12ZXJzYSwgSSBjYW4ndCBmaWd1cmUgb3V0IHN0cmFpZ2h0IGZyb20gdGhlIGJh dCB3aGljaCBvbmUgd291bGQgeW91Cj4+IG5lZWQuCj4gCj4gQXMgc3BhcnNlIGFzIHdlIGRvIHRv ZGF5LiBJIHdvcmtpbmcgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBnb2luZwo+IGZvcndhcmRz LCB0aGUgZGVmYXVsdCBtYXAgd291bGQgYmUgdGhlIG9kZGl0eS4gQnV0IHRoYXQgaXMgYmV0dGVy IHRoYW4KPiB0aGUgc3BhcnNlIGZpeGVkIGFycmF5W10gd2UgcHJldmlvdXNseSBlbWJlZGRlZCBp bnRvIHRoZSBHRU0gY29udGV4dCwgc28KPiBvdmVyYWxsIEkgdGhpbmsgc3RpbGwgYW4gaW1wcm92 ZW1lbnQgZm9yIG9sZCBwbGF0Zm9ybXMuCgpUcnVlLgoKPiBXZSBjYW4gdHJpbSB0aGUgbnVtX2Vu Z2luZXMsIGkuZS4gd2UgbmVlZCBvbmx5IGFsbG9jYXRlIFtyY3MwXSBvbiBnZW4zCj4gYXMgYW55 IGlkPnJjczAgd2lsbCBiZWNvbWUgLUVJTlZBTC4KPiAKPiBPbmUgcGxhbiBJIGRpZCBoYXZlIHdh cyB0byByZW1vdmUgdGhlIHNwYXJzZSBlbmdpbmUtPmlkIChzaW5jZSB0aGF0Cj4gc2hvdWxkIGJl IGFuIGludGVybmFsIGlkKSwgYnV0IHRoZW4gd2UgZW5kIHVwIHdpdGggbm90IGJlaW5nIGFibGUg dG8gdXNlCj4gc3RhdGljIGNvbnN0YW50cyBmb3Igb3VyIFZDU3ggZXRjLgoKQmVzdCBsZWF2ZSB0 aGF0IGZvciBub3cuCgo+PiBJIGd1ZXNzIGluIHRoaXMgc2NoZW1lIHlvdSB3b3VsZCBuZWVkIHNv bWUgdHJhbnNsYXRpb24gYXMgd2VsbCB0bwo+PiBzdXBwb3J0IGN1c3RvbWlzZWQgZW5naW5lIG1h cHMuLiB3aWxsIHNlZSBpZiBJIHdpbGwgc3BvdCB0aGF0IGxhdGVyIGluCj4+IHRoZSBwYXRjaC4K PiAKPiBJbiB0aGUgc2NoZW1lIGluIHRoaXMgcGF0Y2gsIHdlIGp1c3QgcmVwbGFjZSBjdHgtPmVu Z2luZXNbXSBmb3IgdGhlCj4gY3VzdG9tIG1hcCB3aXRoIHNlcGFyYXRlIGludGVsX2NvbnRleHRz IGZvciBlYWNoIGluc3RhbmNlIG9mIGEgc3BlY2lmaWMKPiBlbmdpbmUuCj4KPj4+IC0gICAgIHJi dHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShjZSwgbmV4dCwgJmN0eC0+aHdfY29u dGV4dHMsIG5vZGUpIHsKPj4+IC0gICAgICAgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0gY2UtPmVuZ2luZTsKPj4+ICsgICAgIGUgPSBpOTE1X2dlbV9jb250ZXh0X2VuZ2lu ZV9saXN0X2xvY2soY3R4KTsKPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBlLT5udW1fZW5naW5l czsgaSsrKSB7Cj4+PiArICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGUt PmVuZ2luZXNbaV07Cj4+PiAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsK Pj4+ICAgIAo+Pj4gLSAgICAgICAgICAgICBpZiAoIShlbmdpbmUtPm1hc2sgJiBlbmdpbmVzKSkK Pj4+ICsgICAgICAgICAgICAgaWYgKCFjZSB8fCAhKGNlLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmVz KSkKPj4KPj4gRGVmaW5pdGVseSBsb29rcyBsaWtlIGEgY2FzZSBmb3IgZm9yX2VhY2hfY29udGV4 dF9lbmdpbmUuCj4gCj4gZm9yX2VhY2hfY29udGV4dF9lbmdpbmUoY2UsIGUsIGkpCj4gZm9yX2Vh Y2hfY29udGV4dF9tYXNrZWQoY2UsIGUsIG1hc2ssIGkpCj4gCj4gSG1tLiBJIGRvIHJlZ3JldCBm b3JfZWFjaC4uLigpIHRoYXQgcmVxdWlyZSB0ZW1wb3Jhcmllcy4KPiAKPiBXZSBjYW4ndCBzdHVm ZiB0aGUgbG9jayBpbiB0aGVyZSwgd2l0aG91dCBhIGJpdCBvZiB3b3JrLi4uCj4gCj4gZ2VtX2Zv cl9lYWNoX2NvbnRleHRfZW5naW5lKGl0ZXIsIGN0eCkgewo+IAlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UgPSBpdGVyLmNvbnRleHQ7Cj4gCj4gd2l0aAo+IGZvciAoaW5pdF9pdGVyKCZpdGVyLCBj dHgpOzsgbmV4dF9pdGVyKCZpdGVyKSkKPiAKPiBKdXN0IHRvIGhpZGUgdGhlIGxvY2tpbmcuIFBy b2JhYmx5IHdvcnRoIGl0LgoKRG9uJ3QgZ28gdG8gd2lsZCEgOikgV2UgZ290IHVzZWQgdG8gdGVt cG9yYXJpZXMgc28gY291bGQgYWxzbyBjbGVhbiBhbGwgCm9mIHRoZW0gbGF0ZXIgaWYgdG9vIGJv cmVkLgoKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+ICsKPj4+ICsgICAg ICAgICAgICAgaWYgKCFpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4gICAgCj4+PiAgICAgICAgICAgICAgICBpZiAoSTkx NV9TRUxGVEVTVF9PTkxZKGNvbnRleHRfYmFycmllcl9pbmplY3RfZmF1bHQgJgo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZS0+bWFzaykpIHsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZS0+ZW5naW5lLT5tYXNrKSkgewo+Pj4g ICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAtRU5YSU87Cj4+PiAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+Pj4gICAgICAgICAgICAgICAgfQo+Pj4gICAgCj4+PiAtICAgICAgICAg ICAgIHJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPj4+ICsgICAgICAgICAg ICAgZXJyID0gaW50ZWxfY29udGV4dF9waW4oY2UpOwo+Pj4gKyAgICAgICAgICAgICBpZiAoZXJy KQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAg ICBycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoY2UpOwo+Pj4gKyAgICAgICAgICAgICBpbnRlbF9j b250ZXh0X3VucGluKGNlKTsKPj4KPj4gWWVwIGFzIG1lbnRpb25lZCBzb21ld2hlcmUgYWJvdmUu IEkgZGVmaW5pdGVseSB0aGluayBhbm90aGVyIGhlbHBlcgo+PiB3b3VsZCBoZWxwIGNvZGUgYmFz ZSByZWRhYmlsaXR5LiBFdmVuIGlmIGNhbGxlZCB1bmltYWdpbmF0aXZlbHkgYXMKPj4gX19pOTE1 X3JlcXVlc3RfYWRkLgo+IAo+IEl0IGlzIGp1c3QgdGhlc2UgdHdvIChiYXNlZCBvbiBhIHF1aWNr IGdyZXApLgo+IAo+IE1heWJlIGludGVsX2NvbnRleHRfY3JlYXRlX3JlcXVlc3QoKSA/Cj4gCj4g SG1tLCBidXQgaXNuJ3QgdGhhdCB3aGF0IGk5MTVfcmVxdWVzdF9jcmVhdGUoKSBpcy4gUXVpZXQh CgpXaHkgbm90IF9faTkxNV9yZXF1ZXN0X2FkZD8gaTkxNV9yZXF1ZXN0X2FkZCB3b3VsZCB0aGVu IGJlIGp1c3Qgd2VkZ2VkIApjaGVjayBjYWxsaW5nIF9faTkxNV9yZXF1ZXN0X2FkZCwgbm8/IChH b2luZyBmcm9tIG1lbW9yeS4uIG1pZ2h0IG5vdCBiZSAKcmVsaWFibGUuKQoKPj4+ICtzdHJ1Y3Qg aTkxNV9nZW1fZW5naW5lcyB7Cj4+PiArICAgICBzdHJ1Y3QgcmN1X3dvcmsgcmN1Owo+Pj4gKyAg ICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4+PiArICAgICB1bnNpZ25lZCBsb25n IG51bV9lbmdpbmVzOwo+Pgo+PiB1bnNpZ25lZCBpbnQ/Cj4gCj4gUG9pbnRlciBiZWZvcmUsIGFy cmF5IG9mIHBvaW50ZXJzIGFmdGVyLCBsZWZ0IGFuIHVuc2lnbmVkIGxvbmcgaG9sZS4KPiAKPiBJ IHdhcyBqdXN0IGZpbGxpbmcgdGhlIHNwYWNlLgoKV2VsbCBsb25nIG1ha2VzIG1lIHRoaW5rIHRo ZXJlJ3MgYSByZWFzb24gaW50IGlzIG5vdCBlbm91Z2guIFdoaWNoIGluIAp0aGlzIGNhc2UgdGhl cmUgaXNuJ3QuIFNvIEkgd291bGQgc3RpbGwgZ28gZm9yIGFuIGludCByZWdhcmRsZXNzIG9mIHRo ZSAKaG9sZSBvciBub3QuIFRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGZpbGxpbmcg c3BhY2UuIENvdWxkIGV2ZW4gCmJlIHdvcnNlIGlmIHNvbWUgaW5zdHJ1Y3Rpb25zIGV4cGFuZCB0 byBsb25nZXIgb3Bjb2Rlcy4gOikKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4