From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D97589B4D for ; Thu, 7 Mar 2019 16:25:37 +0000 (UTC) References: <20190305131611.2367-1-andi.shyti@intel.com> <20190305131611.2367-3-andi.shyti@intel.com> <20190307134248.GB1418@intel.intel> <6f8893d4-62f9-0fe5-b211-da8cbe2c1ebe@linux.intel.com> <155197076776.27405.6772601628097971220@skylake-alporthouse-com> From: Tvrtko Ursulin Message-ID: <1f0bf9ad-8012-c2e2-4537-b4d3be7b6e1c@linux.intel.com> Date: Thu, 7 Mar 2019 16:25:35 +0000 MIME-Version: 1.0 In-Reply-To: <155197076776.27405.6772601628097971220@skylake-alporthouse-com> Content-Language: en-US Subject: Re: [igt-dev] [RFC PATCH v10 2/6] lib/i915: add gem_engine_topology library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , Andi Shyti Cc: IGT dev , Andi Shyti List-ID: Ck9uIDA3LzAzLzIwMTkgMTQ6NTksIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTAzLTA3IDE0OjE2OjEzKQo+Pgo+PiBPbiAwNy8wMy8yMDE5IDEzOjQy LCBBbmRpIFNoeXRpIHdyb3RlOgo+Pj4gSGkgVHZydGtvLAo+Pj4KPj4+Pj4gKyNpbmNsdWRlICJk cm10ZXN0LmgiCj4+Pj4+ICsjaW5jbHVkZSAiaWd0X2d0LmgiCj4+Pj4+ICsjaW5jbHVkZSAiaW9j dGxfd3JhcHBlcnMuaCIKPj4+Pj4gKwo+Pj4+PiArI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oIgo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0gICBvZmZz ZXRvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMsIFwKPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfaW5zdGFuY2VbSTkxNV9FWEVDX1JJTkdf TUFTSyArIDFdKQo+Pj4+PiArI2RlZmluZSBTSVpFT0ZfUVVFUlkgICAgICAgICAgICAgICBvZmZz ZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8sIFwKPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lc1tJOTE1X0VYRUNfUklOR19NQVNLICsg MV0pCj4+Pj4KPj4+PiBUaGVyZSBpcyBubyByZWxhdGlvbnNoaXAgYmV0d2VlbiBJOTE1X0VYRUNf UklOR19NQVNLIGFuZCB0aGUgbnVtYmVyIG9mCj4+Pj4gZW5naW5lcyB3ZSBjYW4gcXVlcnkuIEkn bGwgc3VnZ2VzdCBob3cgSSB0aGluayBpdCBzaG91bGQgd29yayBhIGJpdCBsYXRlci4KPj4+Cj4+ PiBJOTE1X0VYRUNfUklOR19NQVNLIGlzIHRoZSB1cHBlciBsaW1pdCBjaGVja2VkIGluIHRoZSBk cml2ZXIsCj4+PiB0aGF0J3Mgd2h5IEkgdXNlZCB0aGF0IG9uZS4gSSBjb3VsZCBoYXZlIGhhcmRj b2RlZCBpdCB0byA2NCwgYnV0Cj4+PiBJIHdhbnRlZCB0byBrZWVwIGl0IGNvbnNpc3RlbnQgdG8g dGhlIGRyaXZlci4KPj4KPj4gSSdsbCBhcmd1ZSB3aXRoIENocmlzIHRvIHJlbW92ZSB0aGlzIGxp bWl0IGZyb20gdGhlIGVuZ2luZSBtYXAgKGNvbWUgZWIzCj4+IG1pZ2h0IG5vdCBiZSByZWxldmFu dCBhbnkgbW9yZSkgLSBuZXZlcnRoZWxlc3MgdGhlIHF1ZXJ5IGRvZXMgbm90IGhhdmUKPj4gdGhp cyBsaW1pdCBzbyBJIHRoaW5rIGl0IHdvdWxkIGJlIGJlc3QgdG8gZGVjb3VwbGUgdGhlIGNvZGUg ZnJvbSB0aGUgc3RhcnQuCj4gCj4gQXQgdGhlIG1vbWVudCBpdCBmaXRzIGluIGEgdTY0IGFuZCBJ IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgZmxleGlibGUKPiBiaXRtYXBzLiBJdCdzIGEgYnJp ZGdlIHRvIGNyb3NzIGxhdGVyLCB3ZSd2ZSBwbGVudHkgb2Ygc3BhY2UgaW4gdGhlIGVudW0KPiBh cGkgdG8gdmVyc2lvbiBhIG5ldyBpbnRlcmZhY2UuCgpMb2FkIGJhbGFuY2luZyBtYXNrPyBPciBl bmdpbmUtPm1hc2s/IElzIHRoZSBsYXR0ZXIgcmVsZXZhbnQgd2hlbiBub3QgCmxvYWQgYmFsYW5j aW5nPwoKPj4KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqaW50ZWxfYWN0aXZlX2VuZ2luZXMyOwo+Pj4+PiArCj4+Pj4+ICtpbnQgX19nZW1fcXVl cnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCj4+Pj4+ICt7Cj4+Pj4+ICsgICBp bnQgZXJyID0gMDsKPj4+Pj4gKwo+Pj4+PiArICAgaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RM X0k5MTVfUVVFUlksIHEpKQo+Pj4+PiArICAgICAgICAgICBlcnIgPSAtZXJybm87Cj4+Pj4+ICsK Pj4+Pj4gKyAgIGVycm5vID0gMDsKPj4+Pj4gKyAgIHJldHVybiBlcnI7Cj4+Pj4+ICt9Cj4+Pj4+ ICsKPj4+Pj4gK3ZvaWQgZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpx KQo+Pj4+PiArewo+Pj4+PiArICAgaWd0X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDAp Owo+Pj4+PiArfQo+Pj4+Cj4+Pj4gSSB3b3VsZCBrZWVwIHRoZXNlIHR3byBzdGF0aWMgaWYgdGhl cmUgYXJlIG5vIGV4dGVybmFsIGNhbGxlcnMgZm9yIG5vdy4KPj4+Cj4+PiBZZXMsIEkgY2FuIG1h a2UgdGhlbSBzdGF0aWMsIEkgdGhvdWdodCBzb21lb25lIG1pZ2h0IG5lZWQgdGhlbSBpbgo+Pj4g dGhlIGZ1dHVyZS4KPj4KPj4gQ291bGQgYmUgYnV0IGl0IHdpbGwgYmUgZWFzeSB0byBleHBvcnQg dGhlbSBhdCB0aGF0IHBvaW50LiBJIHdhbnRlZCB0bwo+PiBrZWVwIHRoZSBwYXRjaCBzbWFsbGVz dCBwb3NzaWJsZSBmb3Igbm93IHNvIEkgY2FuIGZvY3VzIG9uIHJldmlld2luZyB0aGUKPj4gaW1w b3J0YW50IGJpdHMuCj4+Cj4+Pgo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgdm9pZCBxdWVyeV9lbmdp bmVzKGludCBmZCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9x dWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lcykKPj4+Pj4gK3sKPj4+Pj4gKyAgIHN0cnVj dCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7IH07Cj4+Pj4+ICsgICBzdHJ1Y3QgZHJtX2k5 MTVfcXVlcnkgcXVlcnkgPSB7IH07Cj4+Pj4+ICsKPj4+Pj4gKyAgIGl0ZW0ucXVlcnlfaWQgPSBE Uk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKPj4+Pj4gKyAgIHF1ZXJ5Lml0ZW1zX3B0ciA9IHRv X3VzZXJfcG9pbnRlcigmaXRlbSk7Cj4+Pj4+ICsgICBxdWVyeS5udW1faXRlbXMgPSAxOwo+Pj4+ PiArICAgaXRlbS5sZW5ndGggPSBTSVpFT0ZfUVVFUlk7Cj4+Pj4KPj4+PiBJIHRoaW5rIG1ha2lu ZyB0aGlzIGZ1bmN0aW9uIHRha2UgYnVmZmVyIHNpemUgYW5kIHJldHVybiB0aGUgcXVlcmllZCBz aXplCj4+Pj4gd291bGQgYmUgc2ltcGxlc3QuCj4+Pgo+Pj4gSSBoYXZlbid0IHJlYWxseSB1bmRl cnN0b29kLCBkbyB5b3UgbWVhbiBkb2luZyBzb21ldGhpbmcgbGlrZToKPj4+Cj4+PiBzdGF0aWMg aW50IHF1ZXJ5X2VuZ2luZXMoLi4uLiwgaW50IHNpemUpCj4+PiB7Cj4+PiAgICAgIFsuLi5dCj4+ PiAgICAgIHJldHVybiBzaXplOwo+Pj4gfQo+Pj4KPj4+IG9yIGNhbGxpbmcgdGhlIGdlbV9xdWVy eSB0d2ljZSwgZmlyc3QgdGltZSBmb3IgZ2V0dGluZyB0aGUgc2l6ZQo+Pj4gYW5kIHNlY29uZCB0 aW1lIGZvciBhbGxvY2F0aW5nIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzLgo+Pj4KPj4+IEJlY2F1 c2UgaW4gdGhlIGZpcnN0IGNhc2UsIHdlIGhhdmUgdGhlIHNpemUgaW4gcXVlcnlfZW5naW5lcywg aXMKPj4+IHRoYXQgcmlnaHQ/Cj4+Pgo+Pj4gV2hpbGUgaWYgeW91IG1lYW4gdGhlIHNlY29uZCBj YXNlLCB0aGlzIGlzIGhvdyBJIGRpZCBpdCBhdCB0aGUKPj4+IHZlcnkgYmVnaW5uaW5nLCBidXQg dGhlbiB3aXRoIENocmlzIHdlIGFncmVlZCB0aGF0IDY0Cj4+PiAoSTkxNV9FWEVDX1JJTkdfTUFT SykgaXMgImJpZyBlbm91Z2giLiBJZiB5b3UgYXJlIHN0cm9uZyB3aXRoIGl0LAo+Pj4gSSBjYW4g cmV2ZXJ0IGl0IGJhY2suCj4+Cj4+IEhtLi4gd2hhdCBoYXBwZW5lZCB0byB0aGUgb2xkIENocmlz IT8gOikpIEkgYW0gbm90IG9iamVjdGluZyB0aGF0Cj4+IHN0cm9uZ2x5LiBFc3BlY2lhbGx5IGlm IHlvdSBhbHJlYWR5IGNoYW5nZWQgaXQgb25jZSB0aGVuIGp1c3QgbGVhdmUgaXQuCj4+IEl0IGNh biBiZSBjaGFuZ2VkIGxhdGVyIGlmIHNvbWVvbmUgZ2V0cyB0aGUgZGVzaXJlIHRvIHRpZHkuLgo+ IAo+IElmIEkgcmVjYWxsLCBteSBwb3NpdGlvbiBpcyB0aGF0IHlvdSBjYW4gaGF2ZSBhIGZpeGVk IHN0YWNrIGFuZCB0aGVuCj4gZmFsbGJhY2sgdG8gYSBoZWFwLiBCdXQgZm9yIHRoZXNlIGludGVy ZmFjZXMgd2hlcmUgd2UgaGF2ZSB0byByZXR1cm4gYQo+IGhlYXAgcG9pbnRlciwgd2UgbWlnaHQg YXMgd2VsbCB1c2UgaGVhcHMgYW5kIGJlIGZsZXhpYmxlLgo+IAo+Pgo+Pj4+PiArCj4+Pj4+ICsg ICBpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKHF1ZXJ5X2VuZ2luZXMpOwo+Pj4+PiAr Cj4+Pj4+ICsgICBnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4g K2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3kodm9pZCkKPj4+Pj4gK3sKPj4+Pj4gKyAgIHJl dHVybiBpbnRlbF9hY3RpdmVfZW5naW5lczIgIT0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOwo+ Pj4+Cj4+Pj4gQSBwcm9ibGVtIGZvciB0aGUgZXhwb3J0ZWQgQVBJIGlmIGluaXRfZW5naW5lX2xp c3QgaGFzbid0IGJlZW4gY2FsbGVkIHlldD8KPj4+PiBNYXliZToKPj4+Pgo+Pj4+ICAgICAgIGlm ICghaW50ZWxfYWN0aXZlX2VuZ2luZXMyKQo+Pj4+ICAgICAgICAgICAgICAgaW5pdF9lbmdpbmVf bGlzdChmZCk7Cj4+Pj4KPj4+PiAgICAgICByZXR1cm4gaW50ZWxfYWN0aXZlX2VuZ2luZXMyICE9 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsKPj4+Pgo+Pj4+ID8KPj4+Cj4+PiBZZXMsIGl0J3Mg aW5kZWVkIHByb25lIHRvIGJlIG1pc3VzZWQsIEkgd291bGQgbmVlZCB0byBtYWtlIGEgbW9yZQo+ Pj4gZ2VuZXJpYyB3YXksIGJlY2F1c2UgdGhlIHR3byBsaW5lcwo+Pj4KPj4+ICAgICAgaWYgKCFp bnRlbF9hY3RpdmVfZW5naW5lczIpCj4+PiAgICAgICAgICAgICBpbml0X2VuZ2luZV9saXN0KGZk KTsKPj4+Cj4+PiBhcmUgY2FsbGVkIHNvIG1hbnkgdGltZXMgdGhhdCBJJ20gaGF2aW5nIGFuIG92 ZXJkb3NlIG9mIHRoZW0gOikKPj4KPj4gWWVzIHRoZSBjYWxsIGNoYWlucyBhbmQgcmVzcG9uc2li aWxpdGllcyBkbyBmZWVsIGEgYml0IHVub2J2aW91cy4KPiAKPiBJIHJlYWxseSBkb24ndCB3YW50 IGluaXRfZW5naW5lX2xpc3QoZmQpIGF0IGFsbCA6KSBJZGVhbGx5IHRoZSBxdWVyeQo+IGludGVy ZmFjZSBpcyBjaGVhcCBlbm91Z2ggdGhhdCBpdCBkb2Vzbid0IG1hdHRlciAob3RoZXIgdGhhbiBk ZWJ1ZyBub2lzZQo+IGluIHN0cmFjZSkgYW5kIGlmIHdlIGNhbid0IG1ha2UgaXQgdGhhdCBjaGVh cCwgaXQgaXMgY2FjaGVkIGluIHNlbnNpYmxlCj4gc2NvcGVzLgoKTWF5YmUgaXQgd291bGQgaW5k ZWVkIGJlIG1vcmUgZnV0dXJlIHByb29mIHRvIGVudW1lcmF0ZSBldmVyeSB0aW1lIApiZWZvcmUg aXRlcmF0aW5nLCBidXQgd2UgYWxzbyBkb24ndCBuZWNlc3NhcmlseSBoYXZlIHRvIGRvIHRoYXQg cmlnaHQgCm5vdy4gRm9yIGluc3RhbmNlIEkgdGhpbmsgdGhlIHByb2JsZW0gb2YgdGVzdCBlbnVt ZXJhdGlvbiB3aWxsIGxpa2VseSAKY29tZSBiYWNrIHRvIHRyb3VibGUgdXMgYXMgbG9uZyBhcyB3 ZSBhcmUgbm90IGFsbG93ZWQgdG8gZW51bWVyYXRlIApkeW5hbWljYWxseS4KCj4gVGhhdCBtYXkg YmUgYW4gaWd0X2RldmljZSBjbGFzcyAoaTkxNV9kZXZpY2Ugc3ViY2xhc3MpLgoKRm9yIHNvbWV0 aGluZyB0aGF0IG5lZWRzIHRvIGJlIGRlbGl2ZXJlZCBuZXh0IHdlZWsgd2UgaGF2ZSB0byBiZSAK cHJhZ21hdGljYWwgYW5kIGtlZXAgdGhlIHdpc2ggbGlzdCBpbiBjaGVjay4gOikKCj4+Cj4+Pgo+ Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgdm9pZCBzZXRfY3R4X3BhcmFtX2VuZ2luZXMo aW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCj4+Pj4+ICt7Cj4+Pj4+ICsgICBzdHJ1Y3QgaTkxNV9j b250ZXh0X3BhcmFtX2VuZ2luZXMgKmN0eF9lbmdpbmU7Cj4+Pj4+ICsgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtOwo+Pj4+PiArICAgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsKPj4+Pj4gKyAgIHVpbnQ4X3QgYnVmZltTSVpFT0Zf Q1RYX1BBUkFNXSA9IHsgfTsKPj4+Pj4gKyAgIGludCBpOwo+Pj4+PiArCj4+Pj4+ICsgICBpZiAo IWdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KCkpCj4+Pj4+ICsgICAgICAgICAgIHJldHVybjsKPj4+ Pgo+Pj4+IEFGQUlDUyB0aGlzIGNhbiBiZSBhc3NlcnQgaGVyZS4KPj4+Cj4+PiBJIHRoaW5rIHRo aXMgY2hlY2sgaXMgcmVkdW5kYW50IGFzIGl0J3MgbmV2ZXIgZ29pbmcgdG8gaGFwcGVuLgo+Pj4g VGhpcyBmdW5jdGlvbiBpcyAnc3RhdGljJyBhbmQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gY2hlY2tz IHRoYXQKPj4+IGFscmVhZHkuIEkgd2lsbCByZW1vdmUgaXQuCj4+Cj4+IEJldHRlciB0byBoYXZl IGl0IGFzIGFzc2VydCBidXQgYXMgeW91IHdpc2guIEkgZ3Vlc3MgZXZlbiB3aXRob3V0IGFuCj4+ IGFzc2VydCBpdCB3b3VsZCBzZWdmYXVsdCB3aGVuIGl0IHRyaWVzIHRvIGl0ZXJhdGUgaW50ZWxf YWN0aXZlX2VuZ2luZXMyLgo+Pgo+Pj4KPj4+Pj4gKwo+Pj4+PiArICAgY3R4X2VuZ2luZSA9IChz dHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKikgYnVmZjsKPj4+Pj4gKwo+Pj4+PiAr ICAgY3R4X3BhcmFtLmN0eF9pZCA9IGN0eF9pZDsKPj4+Pj4gKyAgIGN0eF9wYXJhbS5wYXJhbSA9 IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOwo+Pj4+PiArCj4+Pj4+ICsgICBjdHhfZW5naW5l LT5leHRlbnNpb25zID0gMDsKPj4+Pj4gKyAgIGZvciAoaSA9IDAsIGUyID0gaW50ZWxfYWN0aXZl X2VuZ2luZXMyOyBlMi0+bmFtZTsgaSsrLCBlMisrKSB7Cj4+Pj4KPj4+PiBIZXJlIEkgdGhpbmsg aXMgdGhlIHBsYWNlIHdoZXJlIHdlIGNoZWNrIHRoYXQgdGhlIHRvdGFsIG51bWJlciBvZiBlbmdp bmVzCj4+Pj4gZG9lcyBub3QgZXhjZWVkIHRoZSBlbmdpbmUgbWFwIGV4ZWNidWYgaW5kZXguCj4+ Pj4KPj4+PiAgICAgICBpZ3RfcmVxdWlyZShpIDw9IEk5MTVfRVhFQ19SSU5HX01BU0spOwo+Pj4+ Cj4+Pj4gPwo+Pj4KPj4+IEkgY2FuIGFkZCB0aGF0LCBidXQgaXQgd291bGQgYmUgcmVkdW5kYW50 IGFzIHRoZSBsaXN0IHdvdWxkIGhhdmUKPj4+IG5ldmVyIGJlZW4gY3JlYXRlZCBvdGhlcndpc2Uu Li4gYW55d2F5LCBiZXR0ZXIgYmUgc2FmZSB0aGFuIHNvcnJ5IDopCj4+Cj4+IFllcyBJIGtub3cs IEkgd3JvdGUgdGhhdCBiZWNhdXNlIEkgd2FzIHN1Z2dlc3RpbmcgdG8gcmVtb3ZlIHRoZSA2NAo+ PiBlbmdpbmUgbGltaXQgZnJvbSB0aGUgcXVlcnkgYW5kIGp1c3QgaGF2ZSBpdCBpbiB0aGUgZW5n aW5lIG1hcC4KPj4KPj4gQnV0IGFzIHNhaWQgaWYgeW91IGFscmVhZHkgZGlzY3Vzc2VkIHRoYXQg cG9pbnQgdGhlbiBsZWF2ZSBpdC4KPj4KPj4+IEJUVywgZ2l2ZW4gbXkgbmF0dXJhbCBjb25mdXNp b24gYmV0d2VlbiAncmVxdWlyZScgYW5kICdhc3NlcnQnLAo+Pj4geW91IG1lYW50ICdhc3NlcnQn LCByaWdodD8KPj4KPj4gSSBtZWFudCByZXF1aXJlLiBCdXQgSSBkb24ndCBrbm93IGVpdGhlciwg aXQncyBzbyBoYXJkIHRvIGNob29zZQo+PiBzb21ldGltZXMuIDopCj4+Cj4+Pj4+ICsgICAgICAg ICAgIGN0eF9lbmdpbmUtPmNsYXNzX2luc3RhbmNlW2ldLmVuZ2luZV9jbGFzcyA9IGUyLT5jbGFz czsKPj4+Pj4gKyAgICAgICAgICAgY3R4X2VuZ2luZS0+Y2xhc3NfaW5zdGFuY2VbaV0uZW5naW5l X2luc3RhbmNlID0gZTItPmluc3RhbmNlOwo+Pj4+PiArICAgfQo+Pj4+PiArCj4+Pj4+ICsgICBj dHhfcGFyYW0uc2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqY3R4X2VuZ2luZSksIGNsYXNzX2luc3Rh bmNlW2kgKyAxXSk7Cj4+Pj4+ICsgICBjdHhfcGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIo Y3R4X2VuZ2luZSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgIGdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmN0eF9wYXJhbSk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gKy8qCj4+Pj4+ICsgKiBJbml0aWFs aXplcyB0aGUgbGlzdCBvZiBlbmdpbmVzLgo+Pj4+PiArICoKPj4+Pj4gKyAqIFJldHVybnM6Cj4+ Pj4+ICsgKgo+Pj4+PiArICogIC0gMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIHRoZSBnZXQvc2V0 X3BhcmFtIGlvY3RscyBhcmUgaW1wbGVtZW50ZWQKPj4+Pj4gKyAqICAtIC1FTk9ERVYgaW4gY2Fz ZSBvZiBzdWNjZXNzIGJ1dCBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBpcyBub3QKPj4+Pj4g KyAqICAgIGltcGxlbWVudGVkIGluIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFN IGlvY3RsLgo+Pj4+PiArICovCj4+Pj4+ICtzdGF0aWMgaW50IGluaXRfZW5naW5lX2xpc3QoaW50 IGZkKQo+Pj4+PiArewo+Pj4+PiArICAgY29uc3QgY2hhciAqY2xhc3NfbmFtZXNbXSA9IHsgInJj cyIsICJiY3MiLCAidmNzIiwgInZlY3MiIH07Cj4+Pj4+ICsgICBzdHJ1Y3QgZHJtX2k5MTVfcXVl cnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZTsKPj4+Pj4gKyAgIHVuc2lnbmVkIGNoYXIgcXVl cnlfYnVmZmVyW1NJWkVPRl9RVUVSWV0gPSB7IH07Cj4+Pj4+ICsgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtID0gewo+Pj4+PiArICAgICAgICAgICAucGFyYW0g PSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKPj4+Pj4gKyAgIH07Cj4+Pj4+ICsgICBpbnQg aTsKPj4+Pj4gKwo+Pj4+PiArICAgLyogdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAq Lwo+Pj4+PiArICAgaWYgKGludGVsX2FjdGl2ZV9lbmdpbmVzMikKPj4+Pj4gKyAgICAgICAgICAg cmV0dXJuIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KCkgPyAwIDogLUVOT0RFVjsKPj4+Pj4gKwo+ Pj4+PiArICAgLyoKPj4+Pj4gKyAgICAqIFdlIGNoZWNrIGZpcnN0IHdoZXRoZXIgdGhlIEk5MTVf Q09OVEVYVF9QQVJBTV9FTkdJTkVTIHBhcmFtZXRlciBpcwo+Pj4+PiArICAgICogc3VwcG9ydGVk IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSWYgbm90LCBfX2dlbV9jb250ZXh0X2dldF9wYXJhbSgp Cj4+Pj4+ICsgICAgKiB3aWxsIHJldHVybiAtRUlOVkFMIHdoaWNoLCBhdCB0aGlzIHBvaW50LCBp cyBub3QgbmVjZXNzYXJpbHkgYQo+Pj4+PiArICAgICogZmFpbHVyZSBidXQgaXQgbWVhbnMgdGhh dCB3ZSBuZWVkIHRvIGZhbGwgYmVjayB0byBwb2xsaW5nIHRoZSBlbmdpbmVzCj4+Pj4+ICsgICAg KiBkaXJlY3RseSBmcm9tIGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdLgo+Pj4+PiArICAgICoK Pj4+Pj4gKyAgICAqIFdlIHdpbGwgcmV0dXJuIC1FTk9ERVYgd2l0aCB0aGUgbWVhbmluZyBvZiBt aXNzaW5nIGludGVyZmFjZQo+Pj4+PiArICAgICovCj4+Pj4+ICsgICBpZiAoX19nZW1fY29udGV4 dF9nZXRfcGFyYW0oZmQsICZjdHhfcGFyYW0pKSB7Cj4+Pj4+ICsgICAgICAgICAgIGludGVsX2Fj dGl2ZV9lbmdpbmVzMiA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsKPj4+Pj4gKyAgICAgICAg ICAgcmV0dXJuIC1FTk9ERVY7Cj4+Pj4+ICsgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgIHF1ZXJ5X2Vu Z2luZSA9IChzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikgcXVlcnlfYnVmZmVy Owo+Pj4+PiArICAgcXVlcnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lKTsKPj4+Pgo+Pj4+IERv IGEgdHdvIHN0YWdlIHF1ZXJ5IGhlcmUgLSBmaXJzdCBhc2sgZm9yIHJlcXVpcmVkIGJ1ZmZlciBz aXplLCB0aGVuCj4+Pj4gYWxsb2NhdGUgaXQgYW5kIHF1ZXJ5Ogo+Pj4+Cj4+Pj4gICAgICAgc2l6 ZSA9IHF1ZXJ5X2VuZ2luZXMoZmQsIE5VTEwsIDApOwo+Pj4+ICAgICAgIHF1ZXJ5X2VuZ2luZSA9 IG1hbGxvYyhzaXplKTsKPj4+PiAgICAgICBxdWVyeV9lbmdpbmVzKGZkLCBxdWVyeV9lbmdpbmUs IHNpemUpOwo+Pj4KPj4+IEFzIGFib3ZlIDopIHRoaXMgaXMgaG93IEkgZGlkIGl0IGF0IHRoZSBi ZWdpbm5pbmcgYW5kIHdpdGggQ2hyaXMKPj4+IHdlIGFncmVlZCB0aGF0IDY0IGlzIGJpZyBlbm91 Z2gsIGFuZCB0aGVuIHdlIGhhZCBzb21lIHJldmlldwo+Pj4gcm91bmRzIG9uIGFncmVlaW5nIG9u IGJ1ZmZlciBzaXplLCBuYW1lLCBjYWxjdWxhdGlvbiBhbmQgc28KPj4+IG9uLgo+Pj4KPj4+IFNo YWxsIEkgbW92ZSBiYWNrPyBIb25lc3RseSBJIGxpa2UgdGhlIGRvdWJsZSBjYWxsLCBhcyB3ZWxs Lgo+Pgo+PiBMZWF2ZSBpdCBhdCBsZWFzdCBmb3Igbm93IHRoZW4uCj4+Cj4+Pj4+ICsKPj4+Pj4g KyAgIGlndF9hc3NlcnQocXVlcnlfZW5naW5lLT5udW1fZW5naW5lcyA8IEk5MTVfRVhFQ19SSU5H X01BU0sgKyAxKTsKPj4+Pgo+Pj4+IFJlbW92ZSB0aGlzIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8g bGltaXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IGR1cmluZyB0aGUKPj4+PiBxdWVyeS4gSXQgaXMg b25seSB0aGUgZW5naW5lIG1hcCB0aGF0IGhhcyB0aGUgbGltaXRhdGlvbi4KPj4+Cj4+PiBUaGlz IGNhbWUgYWZ0ZXIgb25lIG9mIHRoZSAxMCByb3VuZHMgb2YgcmV2aWV3IGFzIHdlbGwgOikKPj4+ IEl0J3MgaW5kZWVkIGEgYml0IHJlZHVuZGFudCwgSXQncyBtYWlubHkgZm9yIHRoZSBtYWxsb2Ms Cj4+PiB0byBhdm9pZCBjcmF6eSBhbGxvY2F0aW9uIGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3Jv bmcuCj4+Pgo+Pj4+PiArCj4+Pj4+ICsgICBpbnRlbF9hY3RpdmVfZW5naW5lczIgPSBtYWxsb2Mo KHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXMgKyAxKSAqCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKCppbnRlbF9hY3RpdmVfZW5naW5lczIpKTsKPj4+Pj4g KyAgIGlndF9hc3NlcnQoaW50ZWxfYWN0aXZlX2VuZ2luZXMyKTsKPj4+Pj4gKwo+Pj4+PiArICAg Zm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykgewo+Pj4+PiAr ICAgICAgICAgICBjaGFyICpuYW1lOwo+Pj4+PiArICAgICAgICAgICBpbnQgY2xhc3MgPSBxdWVy eV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2NsYXNzOwo+Pj4+PiArICAgICAgICAgICBpbnQg aW5zdGFuY2UgPSBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlOwo+Pj4+ Cj4+Pj4gQ291bGQgdXNlIF9fdTE2IHRvIG1hdGNoIHVhcGkuCj4+Pgo+Pj4gU3VyZSEKPj4+Cj4+ Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ldLmNsYXNzID0g Y2xhc3M7Cj4+Pj4+ICsgICAgICAgICAgIGludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5pbnN0YW5j ZSA9IGluc3RhbmNlOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgIC8qIGlmIHdlIGRvbid0IHJl Y29nbmlzZSB0aGUgY2xhc3MsIHRoZW4gd2UgbWFyayBpdCBhcyAidW5rIiAqLwo+Pj4+PiArICAg ICAgICAgICBpZiAoY2xhc3MgPj0gQVJSQVlfU0laRShjbGFzc19uYW1lcykgfHwgIWNsYXNzX25h bWVzW2NsYXNzXSkKPj4+Pgo+Pj4+IFNlY29uZCBjb25kaXRpb24gc2VlbXMgdG8gYmUgbm90IG5l ZWRlZCBhdCB0aGUgbW9tZW50Lgo+Pj4KPj4+IFllcywgb2YgY291cnNlLCBpdCBtdXN0IGJlIGEg bGVmdG92ZXIuCj4+Pgo+Pj4+PiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpnZXRf YWN0aXZlX2VuZ2luZXMoaW50IGZkKQo+Pj4+Cj4+Pj4gVW5leHBvcnQgdGhpcyBvbmU/Cj4+Pgo+ Pj4gSSB0aG91Z2h0IHNvbWVvbmUgbWlnaHQgbmVlZCBpdCwgSSB3aWxsIGRvIGl0IHN0YXRpYyBh bmQgcmV3b3JrCj4+PiBpdCB3aXRoIHRoZSBib29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KCkg YXMgdGhleSB3b3VsZCBiZWNvbWUKPj4+IHZlcnkgc2ltaWxhci4KPj4+Cj4+Pj4+ICt7Cj4+Pj4+ ICsgICBpZiAoaW5pdF9lbmdpbmVfbGlzdChmZCkpIHsKPj4+Pj4gKyAgICAgICAgICAgaWd0X2lu Zm8oInVzaW5nIHByZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3RcbiIpOwo+Pj4+PiArICAgICAgICAg ICByZXR1cm4gTlVMTDsKPj4+Pj4gKyAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgcmV0dXJuIGludGVs X2FjdGl2ZV9lbmdpbmVzMjsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICpnZW1fc2V0X2NvbnRleHRfZ2V0X2VuZ2luZXMoaW50IGZkLAo+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGN0eF9pZCkKPj4+Pgo+Pj4+IEkgZmluZCB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0 aW9uIHJlYWxseSBjb25mdXNpbmcgKHNldCBnZXQgd2hhdD8pLiBDYW4gSQo+Pj4+IHN1Z2dlc3Qg X19nZW1fcHJlcGFyZV9jb250ZXh0X2VuZ2luZXMgb3Igc29tZXRoaW5nIGxpa2UgdGhhdD8KPj4+ Cj4+PiBUaGUgbmFtZSBtZWFucyAic2V0IGNvbnRleHQgYW5kIGdldCBlbmdpbmVzIiwgYXMgaXQn cyBhICJnZXRfIgo+Pj4ga2luZCBvZiBmdW5jdGlvbi4gQnV0IGFzIGl0IGNhbWUgb3V0LCBJIGhh dmUgYSB2ZXJ5IGxpbWl0ZWQKPj4+IGltYWdpbmF0aW9uIGZvciBuYW1lcyBjaG9pY2UuIEkgd2ls bCBjYWxsIGl0Cj4+PiBfX2dlbV9wcmVwYXJlX2NvbnRleHRfZW5naW5lcygpLCB0aGVuLgo+Pj4K Pj4+Pj4gK3sKPj4+Pj4gKyAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqYWN0aXZl X2VuZ2luZXMgPSBnZXRfYWN0aXZlX2VuZ2luZXMoZmQpOwo+Pj4+PiArCj4+Pj4+ICsgICBpZiAo IWFjdGl2ZV9lbmdpbmVzKQo+Pj4+PiArICAgICAgICAgICByZXR1cm4gaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyOwo+Pj4+Cj4+Pj4gU28gd2l0aG91dCBlbmdpbmUgZGlzY292ZXJ5IHRoZSBmdW5j dGlvbiB3aWxsIG5vdCBjb25maWd1cmUgdGhlIGVuZ2luZSBtYXAuCj4+Pj4gSG93IHdpbGwgdGhl IGNvZGUgaW5zaWRlIGZvcl9lYWNoX2VuZ2luZTIgYmUgYWJsZSB0byB3b3JrIHRoZW4/Cj4+Pgo+ Pj4gSXQncyB0aGlzIHBhcnQgb2YgdGhlIGZvcl9lYWNoX2VuZ2luZTIgdGhhdCB3b3VsZCBtYWtl IGl0IHdvcms6Cj4+Pgo+Pj4gICAgZm9yX2lmIChnZW1faGFzX2VuZ2luZV90b3BvbG9neSgpIHx8 IFwKPj4+ICAgICAgICAgICAgZ2VtX2hhc19lbmdpbmUoZmQsIGUyX18tPmNsYXNzLCBlMl9fLT5p bnN0YW5jZSkpCj4+Pgo+Pj4gV2UgaGFkIHF1aXRlIHNvbWUgZGlzY3Vzc2lvbnMgYWJvdXQgYmFj a3dhcmQgY29tcGF0aWJpbGl0eSBhbmQKPj4+IHRoZSB3aG9sZSB0aGluZyBpcyBkZXNpZ25lZCB0 byBiZSBiYWNrd2FyZCBjb21wYXRpYmxlLCBvdGhlcndpc2UsCj4+PiBJIHdvdWxkIGhhdmUgcmVt b3ZlZCBxdWl0ZSBzb21lIGNvZGUgZnJvbSB0aGUgYWJvdmUuCj4+Cj4+IFllcywgSSBjb21tZW50 IG9uIHRoYXQgaW4gdGhlIG90aGVyIHJlcGx5Lgo+Pgo+Pj4+IEkgZ3Vlc3MgaXQncyBva2F5IHNp bmNlIHdlIGRvbid0IGV4cGVjdCB0byBzZWUgYSBrZXJuZWwgd2l0aCBjdHggZW5naW5lIG1hcAo+ Pj4+IHN1cHBvcnQgYW5kIG5vIGVuZ2luZSBkaXNjb3ZlcnkgYnV0IGl0IGZlZWxzIGEgYml0IHVu bmF0dXJhbC4KPj4+Pgo+Pj4+IEJ1dCBJIHRoaW5rIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHlvdSBz aG91bGQgaGF2ZSBpZ3RfcmVxdWlyZV9nZW1fZW5naW5lX2xpc3QKPj4+PiBpbiBoZXJlIHNpbmNl IGl0IGlzIG90aGVyd2lzZSBub3QgdXNhYmxlIGZyb20gdGhlIGZvcl9lYWNoX2VuZ2luZTIgaXRl cmF0b3IuCj4+Pj4KPj4+Pj4gKwo+Pj4+PiArICAgc2V0X2N0eF9wYXJhbV9lbmdpbmVzKGZkLCBj dHhfaWQpOwo+Pj4+Cj4+Pj4gWW91IG5lZWQgdG8gaGFuZGxlIHRoZSB1c2UgY2FzZSB3aGVyZSB0 aGUgY29udGV4dCBhbHJlYWR5IGhhcyBhIG1hcAo+Pj4+IGNvbmZpZ3VyZWQgaW5zdGVhZCBvZiBv dmVycmlkaW5nIGl0LiBTaG91bGQgYmUgZWFzeS4KPj4+Cj4+PiBZZXMsIHRoaXMgaXMgcmVsZXZh bnQgdG8geW91ciBjb21tZW50IGFib3ZlLCBhYm91dCB0aGUKPj4+IGlndF9yZXF1aXJlKDxuZXdf YXBpPikuIFRoaXMgcGFydCBpcyBjaGVja2VkIGluCj4+PiAnZ2V0X2FjdGl2ZV9lbmdpbmVzKGZk KScsIHRoYXQgcmV0dXJucyBOVUxMIGlmIHdlIGRvIG5vdCBoYXZlIHRoZQo+Pj4gbmV3IHVhcGkg YW5kIHRoZXJlZm9yZSBpdCByZXR1cm5zIHRoZSBvbGQgbGlzdCBvZiBlbmdpbmVzLgo+Pj4KPj4+ IGFkZGluZyB0aGUgaWd0X3JlcXVpcmUoKSAoYXNzZXQ/KSB3b3VsZCBiZSByZWR1bmRhbnQuCj4+ PiBBbSBJIG1pc3NpbmcgYW55IHVzZSBjYXNlPwo+Pgo+PiBBRkFJUiBDaHJpcyB3YW50ZWQgaXQg dG8gc3VwcG9ydCB0aGUgdXNlIGNhc2Ugd2hlcmUgaGUgY29uZmlndXJlcyB0aGUKPj4gZW5naW5l IG1hcCBhbmQgcGFzc2VzIHRoZSBjb250ZXh0IHRvIGZvcl9lYWNoX2VuZ2luZTIuIE1heWJlIGhl IGNoYW5nZWQKPj4gaGlzIG1pbmQ/Cj4gCj4gSSB3YW50IHRvIGNoYW5nZSBlbmdpbmUgbWFwcyBv biB0aGUgZmx5LCBoYXZlIG11bHRpcGxlIGNvbnRleHRzIHdpdGgKPiBkaWZmZXJlbnQgZW5naW5l cywgYW5kIGhhdmUgbXVsdGlwbGUgZGV2aWNlcywgYW5kIGhhdmUgaXQgYWxsIHdvcmsuCj4gICAK Pj4gSXQgd291bGQgYmUgdHJpY2t5IHRvIGRvIHNpbmNlIHRoZW4gdGhlcmUgaXMgbm8gaW50ZWxf YWN0aXZlX2VuZ2luZQo+PiBhcnJheSB0byB3YWxrLi4gQ291bGQgb25seSBkZWZpbmUgdGhlIGl0 ZXJhdG9yIHRoYXQgdGhlIHBvaW50ZXIgdG8KPj4gZW5naW5lIGlzIHNvbWV0aW1lcyBub3QgdmFs aWQgKG11c3QgYmUgY2hlY2tlZCkgYW5kIGFkZGVkIGluZGV4IHVzZWQgdG8KPj4gc3VibWl0LiBO b3Qgc3VyZSwgZGVwZW5kcyBpZiBDaHJpcyBzdGlsbCB3YW50cyB0aGlzIGZlYXR1cmUuCj4gCj4g SnVzdCBjb25zdHJ1Y3QgdGhlIGVuZ2luZSBhcnJheSBpbiB0aGUgaXRlcmF0b3IuIERPIE5PVCBV U0UgQSBTVEFUSUMKPiBNQVAhIDopCgpNdWx0aXBsZSBkZXZpY2VzIEkgdGhpbmsgd2UgcmVhbGx5 IG5lZWQgdG8gcHVudCBmb3IgbGF0ZXIuCgpJbiBwbGFjZSBlbmdpbmUgZGlzY292ZXJ5IGhhcyBz b21lIHZhbHVlIHRvIHRyeSBpZiBBbmRpIHdhbnRzIHRvIHRyeS4KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2