From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F5B26E2A8 for ; Thu, 7 Mar 2019 12:05:19 +0000 (UTC) References: <20190305131611.2367-1-andi.shyti@intel.com> <20190305131611.2367-3-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: Date: Thu, 7 Mar 2019 12:05:17 +0000 MIME-Version: 1.0 In-Reply-To: <20190305131611.2367-3-andi.shyti@intel.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: Andi Shyti , IGT dev Cc: Andi Shyti List-ID: Ck9uIDA1LzAzLzIwMTkgMTM6MTYsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgdGhyZWUgbWFpbiBhY2Nlc3MgcG9pbnRzIGFyZToKPiAKPiAgIC0gZ2V0X2FjdGl2ZV9l bmdpbmVzKCkKPiAgIC0gZ2VtX3NldF9jb250ZXh0X2dldF9lbmdpbmVzKCkKPiAgIC0gaWd0X3Jl cXVpcmVfZ2VtX2VuZ2luZV9saXN0KCkKPiAKPiBUaGUgZmlyc3QgdHdvIGZ1bmN0aW9ucyBhcmUg c2ltaWxhciwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHRoZQo+ICdnZW1fc2V0X2NvbnRleHRf Z2V0X2VuZ2luZXMoKScgc2V0cyB0aGUgZW5naW5lIGJlZm9yZSByZXR1cm5pbmcKPiB0aGUgZW5n aW5lIGxpc3QgaW4gYSAnaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTInIHR5cGUgYXJyYXkuCj4gQW5v dGhlciBpbXByb3RhbnQgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBmaXJzdCBmdW5jdGlvbiB3b3Jr cwo+IG9ubHkgd2l0aCB0aGUgZ2V0cGFyYW0vc2V0cGFyYW0gYW5kIHF1ZXJ5IGlvY3RscyBhcmUg aW1wbGVtZW50ZWQKPiBhbmQgaXQgcmV0dXJuICdOVUxMJyBpbiB0aGUgb3RoZXIgY2FzZS4KPiAK PiAnZ2VtX3NldF9jb250ZXh0X2dldF9lbmdpbmVzKCknIGZ1bmN0aW9uLCBhdCB0aGUgZmlyc3Qg Y2FsbAo+IGdlbmVyYXRlcyB0aGUgYXJyYXkgb2YgYWN0aXZlIGVuZ2luZXMgKGVpdGhlciBwaHlz aWNhbCBvcgo+IHZpcnR1YWwpIGNhbGxlZCAnaW50ZWxfYWN0aXZlX2VuZ2luZXMyJy4KPiBJZiB0 aGUgZHJpdmVyIGNhbm5vdCBiZSBxdWVyaWVkLCB0aGUgJ2ludGVsX2FjdGl2ZV9lbmdpbmVzMicK PiBhcnJheSBwb2ludHMgdG8gdGhlIGV4aXNpdGluZyAnaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMy JyB3aGljaAo+IGhhcyBiZWVuIHByZXZpb3VzbHkgZGVmaW5lZC4KPiAKPiBUaGUgdmFsdWUgb2Yg dGhlICdpbnRlbF9hY3RpdmVfZW5naW5lczInIHdpbGwgYmUgdXNlZCBpbiBmdXJ0aGVyCj4gY2Fs bHMgdG8gY2hlY2sgd2hldGhlciB0aGUgYWJvdmUgbWVudGlvbmVkIGlvY3RscyBhcmUgaW1wbGVt ZW50ZWQKPiB3aXRob3V0IHRoZSBuZWVkIHRvIGNhbGwgZ2V0cGFyYW0oKS4KPiAKPiBUaGUgJ2ln dF9yZXF1aXJlX2dlbV9lbmdpbmVfbGlzdCgpJyBjYXVzZXMgdGhlIHRlc3QgdG8gZmFpbCBpbgo+ IGNhc2UgdGhlIHJlcXVpcmVkIGlvY3RscyBhcmUgbm90IGltcGxlbWVudGVkLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+ICAgbGli L01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgIHwgICAyICsKPiAgIGxpYi9pOTE1L2dlbV9lbmdp bmVfdG9wb2xvZ3kuYyB8IDE5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCB8ICAzOSArKysrKysrCj4gICBsaWIvaWd0 X2d0LmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgIGxpYi9pZ3RfZ3QuaCAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQo+ICAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwg ICAxICsKPiAgIDYgZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4g Cj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJj ZXMKPiBpbmRleCBjZjI3MjA5ODE3MDcuLjc1N2JkN2ExN2ViZSAxMDA2NDQKPiAtLS0gYS9saWIv TWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTEzLDYg KzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCj4gICAJaTkxNS9nZW1fcmluZy5jCVwKPiAg IAlpOTE1L2dlbV9tbWFuLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uaAlcCj4gKwlpOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYwlcCj4gKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAlcCj4gICAJ aTkxNV8zZC5oCQlcCj4gICAJaTkxNV9yZWcuaAkJXAo+ICAgCWk5MTVfcGNpaWRzLmgJCVwKPiBk aWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLjkzNzZiNDc5MjQ0MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmMKPiBAQCAtMCwwICsxLDE5OSBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJl Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRlICJpZ3RfZ3QuaCIK PiArI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmgiCj4gKwo+ICsjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0 b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCj4gKwkJCQkJY2xhc3NfaW5z dGFuY2VbSTkxNV9FWEVDX1JJTkdfTUFTSyArIDFdKQo+ICsjZGVmaW5lIFNJWkVPRl9RVUVSWQkJ b2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCj4gKwkJCQkJZW5n aW5lc1tJOTE1X0VYRUNfUklOR19NQVNLICsgMV0pCgpUaGVyZSBpcyBubyByZWxhdGlvbnNoaXAg YmV0d2VlbiBJOTE1X0VYRUNfUklOR19NQVNLIGFuZCB0aGUgbnVtYmVyIG9mIAplbmdpbmVzIHdl IGNhbiBxdWVyeS4gSSdsbCBzdWdnZXN0IGhvdyBJIHRoaW5rIGl0IHNob3VsZCB3b3JrIGEgYml0 IGxhdGVyLgoKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmlu dGVsX2FjdGl2ZV9lbmdpbmVzMjsKPiArCj4gK2ludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0cnVj dCBkcm1faTkxNV9xdWVyeSAqcSkKPiArewo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGln dF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfUVVFUlksIHEpKQo+ICsJCWVyciA9IC1lcnJubzsK PiArCj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICt2b2lkIGdlbV9x dWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKPiArewo+ICsJaWd0X2Fzc2Vy dF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDApOwo+ICt9CgpJIHdvdWxkIGtlZXAgdGhlc2UgdHdv IHN0YXRpYyBpZiB0aGVyZSBhcmUgbm8gZXh0ZXJuYWwgY2FsbGVycyBmb3Igbm93LgoKPiArCj4g K3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAo+ICsJCQkgIHN0cnVjdCBkcm1faTkx NV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lcykKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3F1ZXJ5X2l0ZW0gaXRlbSA9IHsgfTsKPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVy eSA9IHsgfTsKPiArCj4gKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lO Rk87Cj4gKwlxdWVyeS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOwo+ICsJcXVl cnkubnVtX2l0ZW1zID0gMTsKPiArCWl0ZW0ubGVuZ3RoID0gU0laRU9GX1FVRVJZOwoKSSB0aGlu ayBtYWtpbmcgdGhpcyBmdW5jdGlvbiB0YWtlIGJ1ZmZlciBzaXplIGFuZCByZXR1cm4gdGhlIHF1 ZXJpZWQgCnNpemUgd291bGQgYmUgc2ltcGxlc3QuCgo+ICsKPiArCWl0ZW0uZGF0YV9wdHIgPSB0 b191c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7Cj4gKwo+ICsJZ2VtX3F1ZXJ5KGZkLCAmcXVl cnkpOwo+ICt9Cj4gKwo+ICtib29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KHZvaWQpCj4gK3sK PiArCXJldHVybiBpbnRlbF9hY3RpdmVfZW5naW5lczIgIT0gaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZXMyOwoKQSBwcm9ibGVtIGZvciB0aGUgZXhwb3J0ZWQgQVBJIGlmIGluaXRfZW5naW5lX2xpc3Qg aGFzbid0IGJlZW4gY2FsbGVkIAp5ZXQ/IE1heWJlOgoKCWlmICghaW50ZWxfYWN0aXZlX2VuZ2lu ZXMyKQoJCWluaXRfZW5naW5lX2xpc3QoZmQpOwoKCXJldHVybiBpbnRlbF9hY3RpdmVfZW5naW5l czIgIT0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOwoKPwoKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgc2V0X2N0eF9wYXJhbV9lbmdpbmVzKGludCBmZCwgdWludDMyX3QgY3R4X2lkKQo+ICt7Cj4g KwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKmN0eF9lbmdpbmU7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtOwo+ICsJY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsKPiArCXVpbnQ4X3QgYnVmZltTSVpFT0ZfQ1RY X1BBUkFNXSA9IHsgfTsKPiArCWludCBpOwo+ICsKPiArCWlmICghZ2VtX2hhc19lbmdpbmVfdG9w b2xvZ3koKSkKPiArCQlyZXR1cm47CgpBRkFJQ1MgdGhpcyBjYW4gYmUgYXNzZXJ0IGhlcmUuCgo+ ICsKPiArCWN0eF9lbmdpbmUgPSAoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICop IGJ1ZmY7Cj4gKwo+ICsJY3R4X3BhcmFtLmN0eF9pZCA9IGN0eF9pZDsKPiArCWN0eF9wYXJhbS5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOwo+ICsKPiArCWN0eF9lbmdpbmUtPmV4 dGVuc2lvbnMgPSAwOwo+ICsJZm9yIChpID0gMCwgZTIgPSBpbnRlbF9hY3RpdmVfZW5naW5lczI7 IGUyLT5uYW1lOyBpKyssIGUyKyspIHsKCkhlcmUgSSB0aGluayBpcyB0aGUgcGxhY2Ugd2hlcmUg d2UgY2hlY2sgdGhhdCB0aGUgdG90YWwgbnVtYmVyIG9mIAplbmdpbmVzIGRvZXMgbm90IGV4Y2Vl ZCB0aGUgZW5naW5lIG1hcCBleGVjYnVmIGluZGV4LgoKCWlndF9yZXF1aXJlKGkgPD0gSTkxNV9F WEVDX1JJTkdfTUFTSyk7Cgo/Cgo+ICsJCWN0eF9lbmdpbmUtPmNsYXNzX2luc3RhbmNlW2ldLmVu Z2luZV9jbGFzcyA9IGUyLT5jbGFzczsKPiArCQljdHhfZW5naW5lLT5jbGFzc19pbnN0YW5jZVtp XS5lbmdpbmVfaW5zdGFuY2UgPSBlMi0+aW5zdGFuY2U7Cj4gKwl9Cj4gKwo+ICsJY3R4X3BhcmFt LnNpemUgPSBvZmZzZXRvZih0eXBlb2YoKmN0eF9lbmdpbmUpLCBjbGFzc19pbnN0YW5jZVtpICsg MV0pOwo+ICsJY3R4X3BhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGN0eF9lbmdpbmUpOwo+ ICsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmN0eF9wYXJhbSk7Cj4gK30KPiArCj4g Ky8qCj4gKyAqIEluaXRpYWxpemVzIHRoZSBsaXN0IG9mIGVuZ2luZXMuCj4gKyAqCj4gKyAqIFJl dHVybnM6Cj4gKyAqCj4gKyAqICAtIDAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCB0aGUgZ2V0L3Nl dF9wYXJhbSBpb2N0bHMgYXJlIGltcGxlbWVudGVkCj4gKyAqICAtIC1FTk9ERVYgaW4gY2FzZSBv ZiBzdWNjZXNzIGJ1dCBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBpcyBub3QKPiArICogICAg aW1wbGVtZW50ZWQgaW4gRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0gaW9jdGwu Cj4gKyAqLwo+ICtzdGF0aWMgaW50IGluaXRfZW5naW5lX2xpc3QoaW50IGZkKQo+ICt7Cj4gKwlj b25zdCBjaGFyICpjbGFzc19uYW1lc1tdID0geyAicmNzIiwgImJjcyIsICJ2Y3MiLCAidmVjcyIg fTsKPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lOwo+ ICsJdW5zaWduZWQgY2hhciBxdWVyeV9idWZmZXJbU0laRU9GX1FVRVJZXSA9IHsgfTsKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBjdHhfcGFyYW0gPSB7Cj4gKwkJLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwl9Owo+ICsJaW50IGk7Cj4gKwo+ICsJ LyogdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAqLwo+ICsJaWYgKGludGVsX2FjdGl2 ZV9lbmdpbmVzMikKPiArCQlyZXR1cm4gZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koKSA/IDAgOiAt RU5PREVWOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBjaGVjayBmaXJzdCB3aGV0aGVyIHRoZSBJOTE1 X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBwYXJhbWV0ZXIgaXMKPiArCSAqIHN1cHBvcnRlZCBieSB0 aGUgcnVubmluZyBrZXJuZWwuIElmIG5vdCwgX19nZW1fY29udGV4dF9nZXRfcGFyYW0oKQo+ICsJ ICogd2lsbCByZXR1cm4gLUVJTlZBTCB3aGljaCwgYXQgdGhpcyBwb2ludCwgaXMgbm90IG5lY2Vz c2FyaWx5IGEKPiArCSAqIGZhaWx1cmUgYnV0IGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byBmYWxs IGJlY2sgdG8gcG9sbGluZyB0aGUgZW5naW5lcwo+ICsJICogZGlyZWN0bHkgZnJvbSBpbnRlbF9l eGVjdXRpb25fZW5naW5lczJbXS4KPiArCSAqCj4gKwkgKiBXZSB3aWxsIHJldHVybiAtRU5PREVW IHdpdGggdGhlIG1lYW5pbmcgb2YgbWlzc2luZyBpbnRlcmZhY2UKPiArCSAqLwo+ICsJaWYgKF9f Z2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmY3R4X3BhcmFtKSkgewo+ICsJCWludGVsX2FjdGl2 ZV9lbmdpbmVzMiA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsKPiArCQlyZXR1cm4gLUVOT0RF VjsKPiArCX0KPiArCj4gKwlxdWVyeV9lbmdpbmUgPSAoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2Vu Z2luZV9pbmZvICopIHF1ZXJ5X2J1ZmZlcjsKPiArCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2Vu Z2luZSk7CgpEbyBhIHR3byBzdGFnZSBxdWVyeSBoZXJlIC0gZmlyc3QgYXNrIGZvciByZXF1aXJl ZCBidWZmZXIgc2l6ZSwgdGhlbiAKYWxsb2NhdGUgaXQgYW5kIHF1ZXJ5OgoKCXNpemUgPSBxdWVy eV9lbmdpbmVzKGZkLCBOVUxMLCAwKTsKCXF1ZXJ5X2VuZ2luZSA9IG1hbGxvYyhzaXplKTsKCXF1 ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSwgc2l6ZSk7Cgo+ICsKPiArCWlndF9hc3NlcnQo cXVlcnlfZW5naW5lLT5udW1fZW5naW5lcyA8IEk5MTVfRVhFQ19SSU5HX01BU0sgKyAxKTsKClJl bW92ZSB0aGlzIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gbGltaXQgdGhlIHNpemUgb2YgdGhlIGFy cmF5IGR1cmluZyAKdGhlIHF1ZXJ5LiBJdCBpcyBvbmx5IHRoZSBlbmdpbmUgbWFwIHRoYXQgaGFz IHRoZSBsaW1pdGF0aW9uLgoKPiArCj4gKwlpbnRlbF9hY3RpdmVfZW5naW5lczIgPSBtYWxsb2Mo KHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXMgKyAxKSAqCj4gKwkJCQkgICAgICAgc2l6ZW9mKCpp bnRlbF9hY3RpdmVfZW5naW5lczIpKTsKPiArCWlndF9hc3NlcnQoaW50ZWxfYWN0aXZlX2VuZ2lu ZXMyKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsg aSsrKSB7Cj4gKwkJY2hhciAqbmFtZTsKPiArCQlpbnQgY2xhc3MgPSBxdWVyeV9lbmdpbmUtPmVu Z2luZXNbaV0uZW5naW5lX2NsYXNzOwo+ICsJCWludCBpbnN0YW5jZSA9IHF1ZXJ5X2VuZ2luZS0+ ZW5naW5lc1tpXS5lbmdpbmVfaW5zdGFuY2U7CgpDb3VsZCB1c2UgX191MTYgdG8gbWF0Y2ggdWFw aS4KCj4gKwo+ICsJCWludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5jbGFzcyA9IGNsYXNzOwo+ICsJ CWludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5pbnN0YW5jZSA9IGluc3RhbmNlOwo+ICsKPiArCQkv KiBpZiB3ZSBkb24ndCByZWNvZ25pc2UgdGhlIGNsYXNzLCB0aGVuIHdlIG1hcmsgaXQgYXMgInVu ayIgKi8KPiArCQlpZiAoY2xhc3MgPj0gQVJSQVlfU0laRShjbGFzc19uYW1lcykgfHwgIWNsYXNz X25hbWVzW2NsYXNzXSkKClNlY29uZCBjb25kaXRpb24gc2VlbXMgdG8gYmUgbm90IG5lZWRlZCBh dCB0aGUgbW9tZW50LgoKPiArCQkJaWd0X2Fzc2VydChhc3ByaW50ZigmbmFtZSwgInVuay0lZDol ZCIsCj4gKwkJCQkJICAgIGNsYXNzLCBpbnN0YW5jZSkgPiAwKTsKPiArCQllbHNlCj4gKwkJCWln dF9hc3NlcnQoYXNwcmludGYoJm5hbWUsICIlcyVkIiwKPiArCQkJCQkgICAgY2xhc3NfbmFtZXNb Y2xhc3NdLCBpbnN0YW5jZSkgPiAwKTsKPiArCj4gKwkJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ld Lm5hbWUgPSBuYW1lOwo+ICsJfQo+ICsKPiArCS8qIE5VTEwgdmFsdWUgc2VudGluZWwgKi8KPiAr CWludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5uYW1lID0gTlVMTDsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpnZXRfYWN0aXZlX2Vu Z2luZXMoaW50IGZkKQoKVW5leHBvcnQgdGhpcyBvbmU/Cgo+ICt7Cj4gKwlpZiAoaW5pdF9lbmdp bmVfbGlzdChmZCkpIHsKPiArCQlpZ3RfaW5mbygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdpbmUg bGlzdFxuIik7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGludGVsX2Fj dGl2ZV9lbmdpbmVzMjsKPiArfQo+ICsKPiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICpnZW1fc2V0X2NvbnRleHRfZ2V0X2VuZ2luZXMoaW50IGZkLAo+ICsJCQkJCQkJICAgIHVpbnQz Ml90IGN0eF9pZCkKCkkgZmluZCB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uIHJlYWxseSBjb25m dXNpbmcgKHNldCBnZXQgd2hhdD8pLiBDYW4gSSAKc3VnZ2VzdCBfX2dlbV9wcmVwYXJlX2NvbnRl eHRfZW5naW5lcyBvciBzb21ldGhpbmcgbGlrZSB0aGF0PwoKPiArewo+ICsJc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICphY3RpdmVfZW5naW5lcyA9IGdldF9hY3RpdmVfZW5naW5lcyhm ZCk7Cj4gKwo+ICsJaWYgKCFhY3RpdmVfZW5naW5lcykKPiArCQlyZXR1cm4gaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZXMyOwoKU28gd2l0aG91dCBlbmdpbmUgZGlzY292ZXJ5IHRoZSBmdW5jdGlvbiB3 aWxsIG5vdCBjb25maWd1cmUgdGhlIGVuZ2luZSAKbWFwLiBIb3cgd2lsbCB0aGUgY29kZSBpbnNp ZGUgZm9yX2VhY2hfZW5naW5lMiBiZSBhYmxlIHRvIHdvcmsgdGhlbj8KCkkgZ3Vlc3MgaXQncyBv a2F5IHNpbmNlIHdlIGRvbid0IGV4cGVjdCB0byBzZWUgYSBrZXJuZWwgd2l0aCBjdHggZW5naW5l IAptYXAgc3VwcG9ydCBhbmQgbm8gZW5naW5lIGRpc2NvdmVyeSBidXQgaXQgZmVlbHMgYSBiaXQg dW5uYXR1cmFsLgoKQnV0IEkgdGhpbmsgaXQgZWZmZWN0aXZlbHkgbWVhbnMgeW91IHNob3VsZCBo YXZlIAppZ3RfcmVxdWlyZV9nZW1fZW5naW5lX2xpc3QgaW4gaGVyZSBzaW5jZSBpdCBpcyBvdGhl cndpc2Ugbm90IHVzYWJsZSAKZnJvbSB0aGUgZm9yX2VhY2hfZW5naW5lMiBpdGVyYXRvci4KCj4g Kwo+ICsJc2V0X2N0eF9wYXJhbV9lbmdpbmVzKGZkLCBjdHhfaWQpOwoKWW91IG5lZWQgdG8gaGFu ZGxlIHRoZSB1c2UgY2FzZSB3aGVyZSB0aGUgY29udGV4dCBhbHJlYWR5IGhhcyBhIG1hcCAKY29u ZmlndXJlZCBpbnN0ZWFkIG9mIG92ZXJyaWRpbmcgaXQuIFNob3VsZCBiZSBlYXN5LgoKPiArCj4g KwlyZXR1cm4gaW50ZWxfYWN0aXZlX2VuZ2luZXMyOwo+ICt9Cj4gKwo+ICt2b2lkIGlndF9yZXF1 aXJlX2dlbV9lbmdpbmVfbGlzdChpbnQgZmQpCj4gK3sKPiArCWlndF9yZXF1aXJlKCFpbml0X2Vu Z2luZV9saXN0KGZkKSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJlNWU4MTQ4MWRiYQo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiBAQCAtMCwwICsxLDM5 IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBHRU1fUVVFUllfSAo+ ICsjZGVmaW5lIEdFTV9RVUVSWV9ICgpHRU1fRU5HSU5FX1RPUE9MT0dZX0gKCj4gKwo+ICtpbnQg X19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpOwo+ICt2b2lkIGdl bV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSk7Cj4gKwo+ICtib29sIGdl bV9oYXNfZW5naW5lX3RvcG9sb2d5KHZvaWQpOwo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmdldF9hY3RpdmVfZW5naW5lcyhpbnQgZmQpOwo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmdlbV9zZXRfY29udGV4dF9nZXRfZW5naW5lcyhpbnQgZmQsCj4gKwkJCQkJ CQkgICAgdWludDMyX3QgY3R4X2lkKTsKPiArCj4gK3ZvaWQgaWd0X3JlcXVpcmVfZ2VtX2VuZ2lu ZV9saXN0KGludCBmZCk7Cj4gKwo+ICsjZGVmaW5lIGdlbV9nZXRfZW5naW5lcygpIGdlbV9jb250 ZXh0X2dldF9lbmdpbmVzKDAsIDApCj4gKwo+ICsjZW5kaWYgLyogR0VNX1FVRVlfSCAqLwo+IGRp ZmYgLS1naXQgYS9saWIvaWd0X2d0LmMgYi9saWIvaWd0X2d0LmMKPiBpbmRleCBjOThhNzU1M2I3 ZmUuLjU0YzcxZTVlNzE4NiAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2d0LmMKPiArKysgYi9saWIv aWd0X2d0LmMKPiBAQCAtNTc3LDcgKzU3Nyw3IEBAIGJvb2wgZ2VtX2Nhbl9zdG9yZV9kd29yZChp bnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUpCj4gICAJcmV0dXJuIHRydWU7Cj4gICB9Cj4gICAK PiAtY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGludGVsX2V4ZWN1dGlvbl9l bmdpbmVzMltdID0gewo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZXMyW10gPSB7CgpUaGlzIG9uZSBjYW4ndCBzdGF5IGNvbnN0PwoKPiAgIAl7 ICJyY3MwIiwgSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLCAwIH0sCj4gICAJeyAiYmNzMCIsIEk5 MTVfRU5HSU5FX0NMQVNTX0NPUFksIDAgfSwKPiAgIAl7ICJ2Y3MwIiwgSTkxNV9FTkdJTkVfQ0xB U1NfVklERU8sIDAgfSwKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5o Cj4gaW5kZXggNTRlOTVkYTk4MDg0Li5mNGJkNmMyMmE4MWEgMTAwNjQ0Cj4gLS0tIGEvbGliL2ln dF9ndC5oCj4gKysrIGIvbGliL2lndF9ndC5oCj4gQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBnZW1f cmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGludCBmZCwgdW5zaWduZWQgaW50IHJpbmcpOwo+ICAg Cj4gICBib29sIGdlbV9jYW5fc3RvcmVfZHdvcmQoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5naW5l KTsKPiAgIAo+IC1leHRlcm4gY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsK PiArZXh0ZXJuIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7Cj4gICAJY29uc3QgY2hh ciAqbmFtZTsKPiAgIAlpbnQgY2xhc3M7Cj4gICAJaW50IGluc3RhbmNlOwo+IGRpZmYgLS1naXQg YS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCAwZWI1NTg1ZDcyYjku LjNjYzUyZjk3YzhiZiAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9saWIv bWVzb24uYnVpbGQKPiBAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMgPSBbCj4gICAJJ2k5MTUv Z2VtX3N1Ym1pc3Npb24uYycsCj4gICAJJ2k5MTUvZ2VtX3JpbmcuYycsCj4gICAJJ2k5MTUvZ2Vt X21tYW4uYycsCj4gKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAo+ICAgCSdpZ3RfY29s b3JfZW5jb2RpbmcuYycsCj4gICAJJ2lndF9kZWJ1Z2ZzLmMnLAo+ICAgCSdpZ3RfZGV2aWNlLmMn LAo+IAoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXY=