From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 6.mo68.mail-out.ovh.net (6.mo68.mail-out.ovh.net [46.105.63.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EFB0898AA for ; Thu, 11 Apr 2019 23:31:10 +0000 (UTC) Received: from player698.ha.ovh.net (unknown [10.109.146.132]) by mo68.mail-out.ovh.net (Postfix) with ESMTP id B37C31209DA for ; Fri, 12 Apr 2019 01:23:16 +0200 (CEST) Date: Fri, 12 Apr 2019 02:23:09 +0300 From: Andi Shyti Message-ID: <20190411232309.GD24310@jack.zhora.eu> References: <20190408161533.2421-1-andi.shyti@intel.com> <20190408161533.2421-3-andi.shyti@intel.com> <8a96c375-cf44-81bb-66a9-e00f53e01493@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <8a96c375-cf44-81bb-66a9-e00f53e01493@linux.intel.com> Subject: Re: [igt-dev] [PATCH v19 2/6] lib/i915: add gem_engine_topology library and for_each loop definition List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Tvrtko Ursulin Cc: IGT dev , Andi Shyti List-ID: T24gVGh1LCBBcHIgMTEsIDIwMTkgYXQgMDU6MDM6NThQTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMDgvMDQvMjAxOSAxNzoxNSwgQW5kaSBTaHl0aSB3cm90ZToKPiA+IFRo ZSBnZW1fZW5naW5lX3RvcG9sb2d5IGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQK PiA+IGludGVyZmFjZSB3aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxz Lgo+ID4gCj4gPiBUaGUgbGlicmFyeSdzIGFjY2VzcyBwb2ludCBpcyB0aGUgJ2ludGVsX2luaXRf ZW5naW5lX2xpc3QoKScKPiA+IGZ1bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdl bmVyYXRlcyB0aGUgbGlzdCBvZiBhY3RpdmUKPiA+IGVuZ2luZXMgYW5kIHJldHVybnMgdGhlbSBp biBhICdzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEnLiBUaGUKPiA+IHN0cnVjdHVyZSBjb250YWlu cyBvbmx5IHRoZSBlbmdpbmVzIHRoYXQgYXJlIGFjdGl2ZWx5IHByZXNlbnQgaW4KPiA+IHRoZSBH UFUuCj4gPiAKPiA+IFRoZSBmdW5jdGlvbiBjYW4gd29yayBpbiBib3RoIHRoZSBjYXNlcyB0aGF0 IHRoZSBxdWVyeSBhbmQKPiA+IGdldHBhcmFtIGlvY3RscyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90 IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiA+IGNhc2UgdGhleSBhcmUgaW1wbGVtZW50ZWQs IGEgcXVlcnkgaXMgbWFkZSB0byB0aGUgZHJpdmVyIHRvIGZldGNoCj4gPiB0aGUgbGlzdCBvZiBh Y3RpdmUgZW5naW5lcy4gSW4gY2FzZSB0aGV5IGFyZSBub3QgaW1wbGVtZW50ZWQsIHRoZQo+ID4g bGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyJyBhcnJheSBh bmQKPiA+IHN0b3JlZCBvbmx5IGFmdGVyIGNoZWNraW5nIHRoZWlyIHByZXNlbmNlLgo+ID4gCj4g PiBUaGUgZ2VtX2VuZ2luZV90b3BvbG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNvbWUgaXRlcmF0aW9u IGhlbHBlcnM6Cj4gPiAKPiA+ICAgLSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoKTogcHJvdmlk ZXMgdGhlIGN1cnJlbnQgZW5naW5lIGluIHRoZQo+ID4gICAgIGl0ZXJhdGlvbi4KPiA+IAo+ID4g ICAtIGludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZSgpOiBwcm92aWRlcyB0aGUgY3Vy cmVudAo+ID4gICAgIHBoeXNpY2FsIGVuZ2luZSwgaWYgdGhlIGN1cnJlbnQgZW5naW5lIGlzIGEg dmlydHVhbCBlbmdpbmUsCj4gPiAgICAgaXQgbW92ZXMgZm9yd2FyZCB1bnRpbCBpdCBmaW5kcyBh IHBoeXNpY2FsIGVuZ2luZS4KPiA+IAo+ID4gICAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVz dCBpbmNyZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKPiA+ICAgICBwb2ludHMgdG8gdGhl IG5leHQgZW5naW5lLgo+ID4gCj4gPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3Nf aW5zdGFuY2UnIHNvIHRoYXQgaXQgY2FuIGxvb3AKPiA+IHVzaW5nIHRoZSBuZXcgJ2ludGVsX2lu aXRfZW5naW5lX2xpc3QoKScgYW5kIHJlbmFtZSBpdCB0bwo+ID4gJ2Zvcl9lYWNoX2NvbnRleHRf ZW5naW5lJy4KPiA+IAo+ID4gTW92ZSAnX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Un IHRvIGdlbV9lbmdpbmVfdG9wb2xvZ3kuaAo+ID4gYW5kIHJlbmFtZSBpdCB0byAnX19mb3JfZWFj aF9zdGF0aWNfZW5naW5lJy4KPiA+IAo+ID4gVXBkYXRlIGFjY29yZGluZ2x5IHRlc3RzL3BlcmZf cG11LmMgdG8gdXNlIGNvcnJlY3RseSB0aGUgbmV3Cj4gPiBmb3JfZWFjaCBsb29wcy4KPiA+IAo+ ID4gU2lnbmVkLW9mZi1ieTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Cj4gPiAt LS0KPiA+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgIHwgICAyICsKPiA+ICAgbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjgxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ID4gICBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNzggKysr KysrKysrCj4gPiAgIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiAg IGxpYi9pZ3RfZ3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMiArCj4gPiAgIGxpYi9tZXNvbi5i dWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiAgIDYgZmlsZXMgY2hhbmdlZCwgMzY1IGlu c2VydGlvbnMoKykKPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuYwo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuc291cmNlcyBiL2xp Yi9NYWtlZmlsZS5zb3VyY2VzCj4gPiBpbmRleCBlMDAzNDdmOTQ1YzUuLjQxMzMxYzJmMmI4MCAx MDA2NDQKPiA+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gPiArKysgYi9saWIvTWFrZWZp bGUuc291cmNlcwo+ID4gQEAgLTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCj4g PiAgIAlpOTE1L2dlbV9yaW5nLmMJXAo+ID4gICAJaTkxNS9nZW1fbW1hbi5jCVwKPiA+ICAgCWk5 MTUvZ2VtX21tYW4uaAlcCj4gPiArCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKPiA+ICsJ aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgJXAo+ID4gICAJaTkxNV8zZC5oCQlcCj4gPiAgIAlp OTE1X3JlZy5oCQlcCj4gPiAgIAlpOTE1X3BjaWlkcy5oCQlcCj4gPiBkaWZmIC0tZ2l0IGEvbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNmY1 MzgzNzJhNGQKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuYwo+ID4gQEAgLTAsMCArMSwyODEgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK PiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiArICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKi8KPiA+ICsKPiA+ICsj aW5jbHVkZSAiZHJtdGVzdC5oIgo+ID4gKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgo+ID4g Kwo+ID4gKyNpbmNsdWRlICJpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCIKPiA+ICsKPiA+ICtz dGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQo+ ID4gK3sKPiA+ICsJaW50IGVyciA9IDA7Cj4gPiArCj4gPiArCWlmIChpZ3RfaW9jdGwoZmQsIERS TV9JT0NUTF9JOTE1X1FVRVJZLCBxKSkKPiA+ICsJCWVyciA9IC1lcnJubzsKPiA+ICsKPiA+ICsJ ZXJybm8gPSAwOwo+ID4gKwlyZXR1cm4gZXJyOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9p ZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCj4gPiArewo+ID4g KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5KGZkLCBxKSwgMCk7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAo+ID4gKwkJCSAgc3RydWN0IGRybV9p OTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmVzLAo+ID4gKwkJCSAgaW50IGxlbmd0 aCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7IH07Cj4g PiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVyeSA9IHsgfTsKPiA+ICsKPiA+ICsJaXRlbS5x dWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOwo+ID4gKwlxdWVyeS5pdGVtc19w dHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOwo+ID4gKwlxdWVyeS5udW1faXRlbXMgPSAxOwo+ ID4gKwlpdGVtLmxlbmd0aCA9IGxlbmd0aDsKPiA+ICsKPiA+ICsJaXRlbS5kYXRhX3B0ciA9IHRv X3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKPiA+ICsKPiA+ICsJZ2VtX3F1ZXJ5KGZkLCAm cXVlcnkpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjdHhfbWFwX2VuZ2luZXMoaW50 IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkLAo+ID4gKwkJCSAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnBhcmFtKQo+ID4gK3sKPiA+ICsJc3RydWN0IGk5MTVf Y29udGV4dF9wYXJhbV9lbmdpbmVzICplbmdpbmVzID0KPiA+ICsJCQkoc3RydWN0IGk5MTVfY29u dGV4dF9wYXJhbV9lbmdpbmVzICopIHBhcmFtLT52YWx1ZTsKPiA+ICsJaW50IGkgPSAwOwo+ID4g Kwo+ID4gKwlmb3IgKHR5cGVvZihlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXSkgKnAgPQo+ID4g KwkgICAgICZlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXTsKPiA+ICsJICAgICBpIDwgZWQtPm5l bmdpbmVzOyBpKyssIHArKykgewo+ID4gKwkJcC0+ZW5naW5lX2NsYXNzID0gZWQtPmVuZ2luZXNb aV0uY2xhc3M7Cj4gPiArCQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBlZC0+ZW5naW5lc1tpXS5pbnN0 YW5jZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigq ZW5naW5lcyksIGNsYXNzX2luc3RhbmNlW2ldKTsKPiA+ICsJZW5naW5lcy0+ZXh0ZW5zaW9ucyA9 IDA7Cj4gPiArCj4gPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgcGFyYW0pOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUyLAo+ID4gKwkJCWludCBjbGFzcywgaW50IGluc3RhbmNlLCB1aW50NjRfdCBm bGFncykKPiA+ICt7Cj4gPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq X19lMjsKPiA+ICsJc3RhdGljIGNvbnN0IGNoYXIgKnVua25vd25fbmFtZSA9ICJ1bmtub3duIiwK PiA+ICsJCQkgICp2aXJ0dWFsX25hbWUgPSAidmlydHVhbCI7Cj4gPiArCj4gPiArCWUyLT5jbGFz cyAgICA9IGNsYXNzOwo+ID4gKwllMi0+aW5zdGFuY2UgPSBpbnN0YW5jZTsKPiA+ICsJZTItPmZs YWdzICAgID0gZmxhZ3M7Cj4gPiArCj4gPiArCS8qIGVuZ2luZSBpcyBhIHZpcnR1YWwgZW5naW5l ICovCj4gPiArCWlmIChjbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEKSB7Cj4gPiAr CQllMi0+bmFtZSA9IHZpcnR1YWxfbmFtZTsKPiA+ICsJCWUyLT5pc192aXJ0dWFsID0gdHJ1ZTsK PiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdp bmUoX19lMikKPiA+ICsJCWlmIChfX2UyLT5jbGFzcyA9PSBjbGFzcyAmJiBfX2UyLT5pbnN0YW5j ZSA9PSBpbnN0YW5jZSkKPiA+ICsJCQlicmVhazsKPiA+ICsKPiA+ICsJaWYgKF9fZTItPm5hbWUp IHsKPiA+ICsJCWUyLT5uYW1lID0gX19lMi0+bmFtZTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWln dF93YXJuKCJmb3VuZCB1bmtub3duIGVuZ2luZSAoJWQsICVkKSIsIGNsYXNzLCBpbnN0YW5jZSk7 Cj4gPiArCQllMi0+bmFtZSA9IHVua25vd25fbmFtZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKiBq dXN0IHRvIHJlbWFyayBpdCAqLwo+ID4gKwllMi0+aXNfdmlydHVhbCA9IGZhbHNlOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChpbnQgZmQsIHN0cnVjdCBp bnRlbF9lbmdpbmVfZGF0YSAqZWQpCj4gPiArewo+ID4gKwl1aW50OF90IGJ1ZmZbU0laRU9GX1FV RVJZXSA9IHsgfTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVy eV9lbmdpbmUgPQo+ID4gKwkJCShzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikg YnVmZjsKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2Vu Z2luZSwgU0laRU9GX1FVRVJZKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2Vu Z2luZS0+bnVtX2VuZ2luZXM7IGkrKykKPiA+ICsJCWluaXRfZW5naW5lKCZlZC0+ZW5naW5lc1tp XSwKPiA+ICsJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9jbGFzcywKPiA+ ICsJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZSwgaSk7Cj4g PiArCj4gPiArCWVkLT5uZW5naW5lcyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMgo+ID4gKyppbnRlbF9n ZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiA+ICt7Cj4g PiArCWlmICghZWQtPm4pCj4gPiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQtPmVuZ2luZXNb MF07Cj4gPiArCWVsc2UgaWYgKGVkLT5uID49IGVkLT5uZW5naW5lcykKPiA+ICsJCWVkLT5jdXJy ZW50X2VuZ2luZSA9IE5VTEw7Cj4gPiArCj4gPiArCXJldHVybiBlZC0+Y3VycmVudF9lbmdpbmU7 Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhICplZCkKPiA+ICt7Cj4gPiArCWlmIChlZC0+biArIDEgPCBlZC0+bmVuZ2luZXMp IHsKPiA+ICsJCWVkLT5uKys7Cj4gCj4gVGhpcyBpcyBicm9rZW4gZm9yIG9uZSBlbmdpbmUuIEl0 IHNob3VsZCByZWFkOgoKdHJ1ZSEgSSBjb25zaWRlcmVkIGFzIGEgY2FzZSBidXQgdGhlbiBJIGZv cmdvdCB0byBmaXggaXQuCgo+IAlpZiAoKytlZC0+biA8IGVkLT5uZW5naW5lcykKCmFuIHVuY29u dHJvbGxlZCBhY2Nlc3MgdG8gaW50ZWxfbmV4dF9lbmdpbmUgd291bGQgaW5jcmVhc2UgJ24nCmlu Y29udHJvbGxhYmx5IGFzIHdlbGwuCgo+IAkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdp bmVzW2VkLT5uXTsKPiAJZWxzZQo+IAkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKCkkgc2hv dWxkIGFzc2lnbiBoZXJlICJlZC0+biA9IGVkLT5uZW5naW5lcyIuCgpBbmRpCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==