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 2C0456E82B for ; Fri, 29 Mar 2019 11:34:09 +0000 (UTC) References: <20190328192206.1591-1-andi.shyti@intel.com> <20190328192206.1591-5-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: <4e44b45c-dc37-b4c2-0f13-b14b2fb5ccd9@linux.intel.com> Date: Fri, 29 Mar 2019 11:34:06 +0000 MIME-Version: 1.0 In-Reply-To: <20190328192206.1591-5-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v16 4/8] lib/i915: add gem_engine_topology library and for_each loop definition 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: Ck9uIDI4LzAzLzIwMTkgMTk6MjIsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBUaGUgZ2VtX2VuZ2luZV90b3BvbG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNv bWUgaXRlcmF0aW9uIGhlbHBlcnM6Cj4gCj4gICAtIGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgp OiBwcm92aWRlcyB0aGUgY3VycmVudCBlbmdpbmUgaW4gdGhlCj4gICAgIGl0ZXJhdGlvbi4KPiAK PiAgIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBj dXJyZW50Cj4gICAgIHBoeXNpY2FsIGVuZ2luZSwgaWYgdGhlIGN1cnJlbnQgZW5naW5lIGlzIGEg dmlydHVhbCBlbmdpbmUsCj4gICAgIGl0IG1vdmVzIGZvcndhcmQgdW50aWwgaXQgZmluZHMgYSBw aHlzaWNhbCBlbmdpbmUuCj4gCj4gICAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVzdCBpbmNy ZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKPiAgICAgcG9pbnRzIHRvIHRoZSBuZXh0IGVu Z2luZS4KPiAKPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UnIHNv IHRoYXQgaXQgY2FuIGxvb3AKPiB1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9saXN0 KCknIGFuZCByZW5hbWUgaXQgdG8KPiAnZm9yX2VhY2hfY29udGV4dF9lbmdpbmUnLgo+IAo+IE1v dmUgJ19fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlJyB0byBnZW1fZW5naW5lX3RvcG9s b2d5LmgKPiBhbmQgcmVuYW1lIGl0IHRvICdfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUnLgo+IAo+ IFVwZGF0ZSBhY2NvcmRpbmdseSB0ZXN0cy9wZXJmX3BtdS5jIHRvIHVzZSBjb3JyZWN0bHkgdGhl IG5ldwo+IGZvcl9lYWNoIGxvb3BzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFu ZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAg ICAgIHwgICAyICsKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyB8IDI1MiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuaCB8ICA2NSArKysrKysrKysKPiAgIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCj4gICBsaWIvaWd0X2d0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICAg bGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIDYgZmlsZXMgY2hhbmdl ZCwgMzIzIGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5n aW5lX3RvcG9sb2d5LmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9s aWIvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IGUwMDM0N2Y5NDVjNS4uNDEzMzFjMmYyYjgwIDEw MDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGliL01ha2VmaWxlLnNv dXJjZXMKPiBAQCAtMTMsNiArMTMsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKPiAgIAlpOTE1 L2dlbV9yaW5nLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uYwlcCj4gICAJaTkxNS9nZW1fbW1hbi5o CVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oCVwKPiAgIAlpOTE1XzNkLmgJCVwKPiAgIAlpOTE1X3JlZy5oCQlcCj4gICAJaTkx NV9wY2lpZHMuaAkJXAo+IGRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5 LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNGQyNzIzN2JjZjY0Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwo+IEBAIC0wLDAgKzEsMjUyIEBACj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJ TiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImRybXRlc3QuaCIKPiArI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmgiCj4gKwo+ICsvKgo+ICsgKiBMaW1pdCB3aGF0IHdlIHN1cHBvcnQgZm9yIHNp bXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UKPiArICogY2FuIGFkZHJlc3Mg dmlhIGV4ZWNidWYyLgo+ICsgKi8KPiArI2RlZmluZSBHRU1fTUFYX0VOR0lORVMJCUk5MTVfRVhF Q19SSU5HX01BU0sgKyAxCj4gKwo+ICsjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0b2Yo c3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCj4gKwkJCQkJY2xhc3NfaW5zdGFu Y2VbR0VNX01BWF9FTkdJTkVTXSkKPiArI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9mKHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAo+ICsJCQkJCWVuZ2luZXNbR0VNX01B WF9FTkdJTkVTXSkKPiArCj4gK3N0YXRpYyBpbnQgX19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3Qg ZHJtX2k5MTVfcXVlcnkgKnEpCj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCWlmIChpZ3Rf aW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X1FVRVJZLCBxKSkKPiArCQllcnIgPSAtZXJybm87Cj4g Kwo+ICsJZXJybm8gPSAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg Z2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQo+ICt7Cj4gKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5KGZkLCBxKSwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAo+ICsJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdp bmVfaW5mbyAqcXVlcnlfZW5naW5lcywKPiArCQkJICBpbnQgbGVuZ3RoKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1 ZXJ5IHF1ZXJ5ID0geyB9Owo+ICsKPiArCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9F TkdJTkVfSU5GTzsKPiArCXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRlbSk7 Cj4gKwlxdWVyeS5udW1faXRlbXMgPSAxOwo+ICsJaXRlbS5sZW5ndGggPSBsZW5ndGg7Cj4gKwo+ ICsJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKPiArCj4g KwlnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGN0eF9tYXBf ZW5naW5lcyhpbnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQsCj4gKwkJCSAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnBhcmFtKQo+ICt7Cj4gKwlzdHJ1Y3Qg aTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKmVuZ2luZXMgPQo+ICsJCQkoc3RydWN0IGk5MTVf Y29udGV4dF9wYXJhbV9lbmdpbmVzKikgcGFyYW0tPnZhbHVlOwo+ICsJaW50IGkgPSAwOwo+ICsK PiArCWZvciAodHlwZW9mKGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdKSAqcCA9Cj4gKwkJCSZl bmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXTsKPiArCQkJCQkJaSA8IGVkLT5uZW5naW5lczsgaSsr LCBwKyspIHsKPiArCQlwLT5lbmdpbmVfY2xhc3MgPSBlZC0+ZW5naW5lc1tpXS5jbGFzczsKPiAr CQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBlZC0+ZW5naW5lc1tpXS5pbnN0YW5jZTsKPiArCX0KPiAr Cj4gKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqZW5naW5lcyksIGNsYXNzX2luc3Rh bmNlW2ldKTsKPiArCWVuZ2luZXMtPmV4dGVuc2lvbnMgPSAwOwo+ICsKPiArCWdlbV9jb250ZXh0 X3NldF9wYXJhbShmZCwgcGFyYW0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbml0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyLAo+ICsJCQlpbnQgY2xhc3MsIGlu dCBpbnN0YW5jZSwgdWludDY0X3QgZmxhZ3MpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqX19lMjsKPiArCXN0YXRpYyBjb25zdCBjaGFyICp1bmtub3duX25h bWUgPSAidW5rbm93biIsCj4gKwkJCSAgKnZpcnR1YWxfbmFtZSA9ICJ2aXJ0dWFsIjsKPiArCj4g KwllMi0+Y2xhc3MgICAgPSBjbGFzczsKPiArCWUyLT5pbnN0YW5jZSA9IGluc3RhbmNlOwo+ICsJ ZTItPmZsYWdzICAgID0gZmxhZ3M7Cj4gKwo+ICsJLyogZW5naW5lIGlzIGEgdmlydHVhbCBlbmdp bmUgKi8KPiArCWlmIChjbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEKSB7Cj4gKwkJ ZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7Cj4gKwkJZTItPmlzX3ZpcnR1YWwgPSB0cnVlOwo+ICsJ CXJldHVybjsKPiArCX0KPiArCj4gKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoX19lMikKPiAr CQlpZiAoX19lMi0+Y2xhc3MgPT0gY2xhc3MgJiYgX19lMi0+aW5zdGFuY2UgPT0gaW5zdGFuY2Up Cj4gKwkJCWJyZWFrOwo+ICsKPiArCWlmIChfX2UyLT5uYW1lKSB7Cj4gKwkJZTItPm5hbWUgPSBf X2UyLT5uYW1lOwo+ICsJfSBlbHNlIHsKPiArCQlpZ3Rfd2FybigiZm91bmQgdW5rbm93biBlbmdp bmUgKCVkLCAlZCkiLCBjbGFzcywgaW5zdGFuY2UpOwo+ICsJCWUyLT5uYW1lID0gdW5rbm93bl9u YW1lOwo+ICsJfQo+ICsKPiArCS8qIGp1c3QgdG8gcmVtYXJrIGl0ICovCj4gKwllMi0+aXNfdmly dHVhbCA9IGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChp bnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCj4gK3sKPiArCXVpbnQ4X3QgYnVm ZltTSVpFT0ZfUVVFUlldID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9p bmZvICpxdWVyeV9lbmdpbmUgPQo+ICsJCQkoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9p bmZvICopIGJ1ZmY7Cj4gKwlpbnQgaTsKPiArCj4gKwlxdWVyeV9lbmdpbmVzKGZkLCBxdWVyeV9l bmdpbmUsIFNJWkVPRl9RVUVSWSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2lu ZS0+bnVtX2VuZ2luZXM7IGkrKykKPiArCQlpbml0X2VuZ2luZSgmZWQtPmVuZ2luZXNbaV0sCj4g KwkJCSAgICBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2NsYXNzLAo+ICsJCQkgICAg cXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZSwgaSk7Cj4gKwo+ICsJZWQt Pm5lbmdpbmVzID0gcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsKPiArfQo+ICsKPiArc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCj4gKyppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiArewo+ICsJcmV0dXJuIGVkLT5jdXJyZW50X2Vu Z2luZTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2RhdGEgKmVkKQo+ICt7Cj4gKwlpZiAoZWQtPm4gKyAxIDwgZWQtPm5lbmdpbmVzKSB7Cj4g KwkJZWQtPm4rKzsKPiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQtPmVuZ2luZXNbZWQtPm5d Owo+ICsJfSBlbHNlIHsKPiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOwo+ICsJfQo+ICt9 Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKPiArKmludGVsX2dldF9jdXJy ZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQo+ICt7Cj4g KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7Cj4gKwo+ICsJZm9yIChlID0gaW50 ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKGVkKTsKPiArCSAgICAgZSAmJiBlLT5pc192aXJ0dWFsOwo+ ICsJICAgICBpbnRlbF9uZXh0X2VuZ2luZShlZCkpCj4gKwkJOwo+ICsKPiArCWVkLT5jdXJyZW50 X3BoeXNfZW5naW5lID0gZTsKPiArCj4gKwlyZXR1cm4gZTsKPiArfQo+ICsKPiArc3RydWN0IGlu dGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBj dHhfaWQpCj4gK3sKPiArCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVz LCBHRU1fTUFYX0VOR0lORVMpOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZV9k YXRhID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0g ewo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAo+ICsJCS5jdHhfaWQg PSBjdHhfaWQsCj4gKwkJLnNpemUgPSBTSVpFT0ZfQ1RYX1BBUkFNLAo+ICsJCS52YWx1ZSA9IHRv X3VzZXJfcG9pbnRlcigmZW5naW5lcyksCj4gKwl9Owo+ICsJaW50IGk7Cj4gKwl1bnNpZ25lZCBp bnQgbmVuZ2luZXM7Cj4gKwo+ICsJaWYoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZwYXJh bSkpIHsKPiArCQkvKiBpZiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4dCBt YXBwaW5nICovCj4gKwkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsK PiArCj4gKwkJaWd0X2RlYnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsK PiArCj4gKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGUyKSB7Cj4gKwkJCXN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqX19lMjsKPiArCj4gKwkJCV9fZTIgPSAmZW5naW5lX2RhdGEu ZW5naW5lc1tlbmdpbmVfZGF0YS5uZW5naW5lc107Cj4gKwkJCV9fZTItPmZsYWdzID0gZ2VtX2Ns YXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLAo+ICsJCQkJCQllMi0+Y2xhc3MsIGUyLT5pbnN0 YW5jZSk7CgpPbmNlIHdlIGFkZCBtb3JlIGVuZ2luZXMgdG8gdGhlIHN0YXRpYyBsaXN0IHRoZXkg d291bGQgaGF2ZSBsZWdhY3kgZWIgCmVuZ2luZSBzZWxlY3Rvci4gU28gSSB0aGluayB0aGlzIHdp bGwgaGF2ZSB0byBiZSBjaGFuZ2VkIHNvIHRoYXQgaXQgCnNraXBzIHRob3NlIGhlcmUgcmF0aGVy IHRoYW4gaGl0cyB0aGUgYXNzZXJ0IGluIApnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3Mu Cgo+ICsKPiArCQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTItPmZsYWdzKSkKPiArCQkJCWNv bnRpbnVlOwo+ICsKPiArCQkJX19lMi0+bmFtZSAgICAgICA9IGUyLT5uYW1lOwo+ICsJCQlfX2Uy LT5pbnN0YW5jZSAgID0gZTItPmluc3RhbmNlOwo+ICsJCQlfX2UyLT5jbGFzcyAgICAgID0gZTIt PmNsYXNzOwo+ICsJCQlfX2UyLT5pc192aXJ0dWFsID0gZmFsc2U7Cj4gKwo+ICsJCQllbmdpbmVf ZGF0YS5uZW5naW5lcysrOwo+ICsJCX0KPiArCQlnb3RvIGV4aXQ7Cj4gKwl9Cj4gKwo+ICsJbmVu Z2luZXMgPSBwYXJhbS5zaXplID4gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5n aW5lcykgPwo+ICsJCSAgIChwYXJhbS5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRf cGFyYW1fZW5naW5lcykpIC8KPiArCQkgICBzaXplb2YoZW5naW5lcy5jbGFzc19pbnN0YW5jZVsw XSkgOgo+ICsJCSAgIDA7Cj4gKwo+ICsJaWd0X2Fzc2VydF9mKG5lbmdpbmVzIDwgR0VNX01BWF9F TkdJTkVTLCAidW5zdXBwb3J0ZWQgZW5naW5lIGNvdW50XG4iKTsKClNob3VsZCB0aGlzIGJlIDw9 ID8KCj4gKwo+ICsJaWYgKCFwYXJhbS5zaXplKSB7Cj4gKwkJLyogZWxzZSBpZiBjb250ZXh0IGRv ZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5lcyAqLwo+ICsJCXF1ZXJ5X2VuZ2luZV9saXN0KGZkLCAm ZW5naW5lX2RhdGEpOwo+ICsJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFy YW0pOwo+ICsKPiArCX0gZWxzZSB7Cj4gKwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9mIG1hcHBl ZCBlbmdpbmVzICovCj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBuZW5naW5lczsgaSsrKQo+ICsJ CQlpbml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKPiArCQkJCSAgICBlbmdpbmVz LmNsYXNzX2luc3RhbmNlW2ldLmVuZ2luZV9jbGFzcywKPiArCQkJCSAgICBlbmdpbmVzLmNsYXNz X2luc3RhbmNlW2ldLmVuZ2luZV9pbnN0YW5jZSwKPiArCQkJCSAgICBpKTsKPiArCj4gKwkJZW5n aW5lX2RhdGEubmVuZ2luZXMgPSBpOwo+ICsJfQo+ICsKPiArZXhpdDoKPiArCWVuZ2luZV9kYXRh LmN1cnJlbnRfZW5naW5lID0gJmVuZ2luZV9kYXRhLmVuZ2luZXNbMF07Cj4gKwllbmdpbmVfZGF0 YS5jdXJyZW50X3BoeXNfZW5naW5lID0KPiArCQlpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9l bmdpbmUoJmVuZ2luZV9kYXRhKTsKPiArCj4gKwlyZXR1cm4gZW5naW5lX2RhdGE7Cj4gK30KPiAr Cj4gK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7Cj4gKwkJLnBhcmFtID0gSTkxNV9D T05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwl9Owo+ICsKPiArCXJldHVybiAhX19nZW1fY29udGV4 dF9nZXRfcGFyYW0oZmQsICZwYXJhbSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQzMjc1NzM3YWRkNAo+IC0t LSAvZGV2L251bGwKPiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiBAQCAt MCwwICsxLDY1IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4g KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBHRU1f RU5HSU5FX1RPUE9MT0dZX0gKPiArI2RlZmluZSBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKPiArCj4g KyNpbmNsdWRlICJpZ3RfZ3QuaCIKPiArI2luY2x1ZGUgImk5MTVfZHJtLmgiCj4gKwo+ICtzdHJ1 Y3QgaW50ZWxfZW5naW5lX2RhdGEgewo+ICsJdWludDMyX3QgbmVuZ2luZXM7Cj4gKwl1aW50MzJf dCBuOwo+ICsJaW50IGVycm9yOwo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpj dXJyZW50X2VuZ2luZTsKPiArCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqY3VycmVu dF9waHlzX2VuZ2luZTsKClRoaXMgZmllbGQgc2VlbSBvbmx5IGV2ZXIgYXNzaWduZWQsIG5ldmVy IG90aGVyd2lzZSB1c2VkLiBEbyB5b3UgbmVlZCBpdCAKZm9yIHNvbWV0aGluZyBsYXRlcj8KCj4g KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tJOTE1X0VYRUNfUklOR19N QVNLICsgMV07Cj4gK307Cj4gKwo+ICtib29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KGludCBm ZCk7Cj4gK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGlu dCBmZCwgdWludDMyX3QgY3R4X2lkKTsKPiArCj4gKy8qIGl0ZXJhdGlvbiBmdW5jdGlvbnMgKi8K PiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCj4gKyppbnRlbF9nZXRfY3VycmVudF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIKPiArKmludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKPiArCj4gK3ZvaWQgaW50ZWxfbmV4dF9lbmdp bmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7Cj4gKwo+ICsjZGVmaW5lIF9fZm9yX2Vh Y2hfc3RhdGljX2VuZ2luZShlX18pIFwKPiArCWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25f ZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9j b250ZXh0X2VuZ2luZShmZF9fLCBjdHhfXywgZV9fKSBcCj4gKwlmb3IgKHN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIGN0eF9fKTsgXAo+ ICsJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoJmlfXykpOyBcCj4gKwkg ICAgIGludGVsX25leHRfZW5naW5lKCZpX18pKQo+ICsKCkkgd291bGQgcHJvYmFibHkgaGF2ZSB0 aGUgcGh5c2ljYWwgdnMgdmlydHVhbCBsb2dpYyBpbiB0aGUgIm5leHQiIGhlbHBlciAKYW5kIGp1 c3Qgb25lIGludGVsX2dldF9jdXJyZW50X2VuZ2luZSBidXQgaXQgaXMgbm90IHZlcnkgcmVsZXZh bnQuCgo+ICsvKiBuZWVkcyB0byByZXBsYWNlICJmb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUiIHdo ZW4gY29uZmxpY3RzIGFyZSBmaXhlZCAqLwo+ICsjZGVmaW5lIF9fZm9yX2VhY2hfcGh5c2ljYWxf ZW5naW5lKGZkX18sIGVfXykgXAo+ICsJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9f ID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCAwKTsgXAo+ICsJICAgICAoKGVfXykgPSBp bnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoJmlfXykpOyBcCj4gKwkgICAgIGludGVs X25leHRfZW5naW5lKCZpX18pKQo+ICsKPiArI2VuZGlmIC8qIEdFTV9FTkdJTkVfVE9QT0xPR1lf SCAqLwo+IGRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKPiBpbmRleCA2NjU0YTY1 OWMwNjIuLjAzZjE5Y2EyZGZiNiAxMDA2NDQKPiAtLS0gYS9saWIvaWd0LmgKPiArKysgYi9saWIv aWd0LmgKPiBAQCAtNTMsNSArNTMsNiBAQAo+ICAgI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKPiAg ICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCj4gICAjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgo+ ICsjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCj4gICAKPiAgICNlbmRpZiAv KiBJR1RfSCAqLwo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIvaWd0X2d0LmgKPiBp bmRleCA0NzVjMGIzYzNjYzYuLjUyYjJmMWVhOTVhNSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2d0 LmgKPiArKysgYi9saWIvaWd0X2d0LmgKPiBAQCAtOTUsNiArOTUsOCBAQCBleHRlcm4gY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsKPiAgIAljb25zdCBjaGFyICpuYW1lOwo+ ICAgCWludCBjbGFzczsKPiAgIAlpbnQgaW5zdGFuY2U7Cj4gKwl1aW50NjRfdCBmbGFnczsKPiAr CWJvb2wgaXNfdmlydHVhbDsKPiAgIH0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyW107Cj4gICAK PiAgIHVuc2lnbmVkIGludAo+IGRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVz b24uYnVpbGQKPiBpbmRleCA4OWRlMDZlNjkyNGEuLjkzYzAxZGFhNDIyMiAxMDA2NDQKPiAtLS0g YS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9saWIvbWVzb24uYnVpbGQKPiBAQCAtNSw2ICs1LDcg QEAgbGliX3NvdXJjZXMgPSBbCj4gICAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycsCj4gICAJJ2k5 MTUvZ2VtX3JpbmcuYycsCj4gICAJJ2k5MTUvZ2VtX21tYW4uYycsCj4gKwknaTkxNS9nZW1fZW5n aW5lX3RvcG9sb2d5LmMnLAo+ICAgCSdpZ3RfY29sb3JfZW5jb2RpbmcuYycsCj4gICAJJ2lndF9k ZWJ1Z2ZzLmMnLAo+ICAgCSdpZ3RfZGV2aWNlLmMnLAo+IAoKTG9va3MgbW9zdGx5IGFzIGV4cGVj dGVkLiBJIHRydXN0IHlvdSB0ZXN0ZWQgaXQgd29ya3MuIDopIFdpdGggdGhlIAphc3NlcnQgZml4 ZWQgYW5kIHVudXNlZCBzdHJ1Y3QgbWVtYmVyIHJlbW92ZWQ6CgpSZXZpZXdlZC1ieTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWls aW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2