From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA28689DD5 for ; Thu, 21 Mar 2019 07:18:15 +0000 (UTC) References: <20190321010015.1317-1-andi.shyti@intel.com> <20190321010015.1317-5-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: <34e42d43-c18b-d832-6971-505146fbec71@linux.intel.com> Date: Thu, 21 Mar 2019 07:18:12 +0000 MIME-Version: 1.0 In-Reply-To: <20190321010015.1317-5-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v14 4/5] 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: Ck9uIDIxLzAzLzIwMTkgMDE6MDAsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Un IHNvIHRoYXQgaXQgY2FuIGxvb3AKPiB1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9s aXN0KCknLgo+IAo+IFVwZGF0ZSBhY2NvcmRpbmdseSB0ZXN0cy9wZXJmX3BtdS5jLCB0aGF0IHVz ZXMgdGhlCj4gJ2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZSgpJyBsb29wLgo+IAo+IFNp Z25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+ICAg bGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgIHwgICAyICsKPiAgIGxpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYyB8IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCB8ICAzOCArKysrKysrCj4gICBsaWIv aWd0X2d0LmggICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KPiAgIGxpYi9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICB8ICAgMSArCj4gICB0ZXN0cy9wZXJmX3BtdS5jICAgICAgICAgICAgICAg fCAgIDggKy0KPiAgIDYgZmlsZXMgY2hhbmdlZCwgMjM2IGluc2VydGlvbnMoKyksIDcgZGVsZXRp b25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5o Cj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNv dXJjZXMKPiBpbmRleCBjZjI3MjA5ODE3MDcuLjc1N2JkN2ExN2ViZSAxMDA2NDQKPiAtLS0gYS9s aWIvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTEz LDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCj4gICAJaTkxNS9nZW1fcmluZy5jCVwK PiAgIAlpOTE1L2dlbV9tbWFuLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uaAlcCj4gKwlpOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuYwlcCj4gKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAlcCj4g ICAJaTkxNV8zZC5oCQlcCj4gICAJaTkxNV9yZWcuaAkJXAo+ICAgCWk5MTVfcGNpaWRzLmgJCVwK PiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjc5MWFmODc3Nzk1Ngo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvaTkxNS9n ZW1fZW5naW5lX3RvcG9sb2d5LmMKPiBAQCAtMCwwICsxLDE4NCBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoK PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3 YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJF Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRlICJpb2N0bF93 cmFwcGVycy5oIgo+ICsKPiArI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgo+ ICsKPiArI2RlZmluZSBTSVpFT0ZfQ1RYX1BBUkFNCW9mZnNldG9mKHN0cnVjdCBpOTE1X2NvbnRl eHRfcGFyYW1fZW5naW5lcywgXAo+ICsJCQkJCWNsYXNzX2luc3RhbmNlW0k5MTVfRVhFQ19SSU5H X01BU0sgKyAxXSkKPiArI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9mKHN0cnVjdCBkcm1f aTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAo+ICsJCQkJCWVuZ2luZXNbSTkxNV9FWEVDX1JJTkdf TUFTSyArIDFdKQo+ICsKPiArc3RhdGljIGludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBk cm1faTkxNV9xdWVyeSAqcSkKPiArewo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGlndF9p b2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfUVVFUlksIHEpKQo+ICsJCWVyciA9IC1lcnJubzsKPiAr Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBn ZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCj4gK3sKPiArCWlndF9h c3NlcnRfZXEoX19nZW1fcXVlcnkoZmQsIHEpLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg cXVlcnlfZW5naW5lcyhpbnQgZmQsCj4gKwkJCSAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2lu ZV9pbmZvICpxdWVyeV9lbmdpbmVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRl bSBpdGVtID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHF1ZXJ5ID0geyB9Owo+ICsK PiArCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKPiArCXF1ZXJ5 Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRlbSk7Cj4gKwlxdWVyeS5udW1faXRlbXMg PSAxOwo+ICsJaXRlbS5sZW5ndGggPSBTSVpFT0ZfUVVFUlk7Cj4gKwo+ICsJaXRlbS5kYXRhX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKPiArCj4gKwlnZW1fcXVlcnkoZmQs ICZxdWVyeSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGN0eF9tYXBfZW5naW5lcyhpbnQgZmQs IHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gKmN0eF9wYXJhbSkKPiArewo+ICsJc3RydWN0IGk5MTVfY29udGV4 dF9wYXJhbV9lbmdpbmVzICpjdHhfZW5naW5lID0KPiArCQkJKHN0cnVjdCBpOTE1X2NvbnRleHRf cGFyYW1fZW5naW5lcyopIGN0eF9wYXJhbS0+dmFsdWU7Cj4gKwlpbnQgaSA9IDA7Cj4gKwo+ICsJ Zm9yICh0eXBlb2YoY3R4X2VuZ2luZS0+Y2xhc3NfaW5zdGFuY2VbMF0pICpwID0KPiArCQkJJmN0 eF9lbmdpbmUtPmNsYXNzX2luc3RhbmNlWzBdOwo+ICsJCQkJCQlpIDwgZWQtPm5lbmdpbmVzOyBp KyssIHArKykgewo+ICsJCXAtPmVuZ2luZV9jbGFzcyA9IGVkLT5lbmdpbmVzW2ldLmNsYXNzOwo+ ICsJCXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5lbmdpbmVzW2ldLmluc3RhbmNlOwo+ICsJfQo+ ICsKPiArCWN0eF9wYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqY3R4X2VuZ2luZSksIGNs YXNzX2luc3RhbmNlW2ldKTsKPiArCj4gKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsIGN0eF9w YXJhbSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGluaXRfZW5naW5lKHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZTIsIGNvbnN0IGNoYXIgKm5hbWUsCj4gKwkJCXVpbnQxNl90IGNs YXNzLCB1aW50MTZfdCBpbnN0YW5jZSwgdWludDhfdCBmbGFncykKCkknZCBwcm9iYWJseSB1c2Ug dTY0IGZvciBmbGFncyB0byBtYXRjaCB0aGUgc3RydWN0dXJlLgoKPiArewo+ICsJc3RhdGljIGNv bnN0IGNoYXIgKnVua19uYW1lID0gInVuayI7Cj4gKwo+ICsJZTItPmNsYXNzICAgID0gY2xhc3M7 Cj4gKwllMi0+aW5zdGFuY2UgPSBpbnN0YW5jZTsKPiArCWUyLT5mbGFncyAgICA9IGZsYWdzOwo+ ICsKPiArCWlmIChuYW1lKSB7Cj4gKwkJZTItPm5hbWUgPSBuYW1lOwoKVGhpcyBwYXRoIGlzIHVz ZWQgb25seSBmb3IgdGhlIGxlZ2FjeSBmYWxsIGJhY2sgbW9kZSBzbyBJIGFtIApjb250ZW1wbGF0 aW5nIHdoZXRoZXIgaXMgaXMgZXZlbiB3b3J0aCBoYXZpbmcgdGhlIG5hbWUgcGFzc2VkIGluLgoK VGhlIGlmIHlvdSBmaW5kIGEgdmlydHVhbCBlbmdpbmUgaW4gdGhlIGxpc3QgKApJOTE1X0VOR0lO RV9DTEFTU19JTlZBTElEL0k5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfVklSVFVBTCkgeW91IGNv dWxkIApzZXQgdGhlIG5hbWUgdG8gInZpcnR1YWwiIG9yIHNvbWV0aGluZy4KCk5vdyBsaXN0ZW4g dG8gdGhpcy4uIGhvdyBhYm91dCB3ZSBleHBvcnQgdGhlIGVuZ2luZSBuYW1lcyB2aWEgdGhlIHF1 ZXJ5IApBUEk/IFByaW1hcmlseSBJIHdhcyB0aGlua2luZyB0byBkaXN0aW5ndWlzaCBkaWZmZXJl bmNlIGluc3RhbmNlIG9mIAp2aXJ0dWFsLCBidXQgdGhlbiBpdCB3b3VsZCBhbHNvIGxlc3NlbiB0 aGUgcmVsaWFuY2Ugb24gdGhlIHN0YXRpYyBtYXAuIApUaG91Z2h0cz8KCj4gKwl9IGVsc2Ugewo+ ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19lMjsKPiArCj4gKwkJ X19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoX19lMikKPiArCQkJaWYgKF9fZTItPmNs YXNzID09IGNsYXNzICYmIF9fZTItPmluc3RhbmNlID09IGluc3RhbmNlKQo+ICsJCQkJYnJlYWs7 Cj4gKwo+ICsJCWUyLT5uYW1lID0gX19lMi0+bmFtZSA/IF9fZTItPm5hbWUgOiB1bmtfbmFtZTsK PiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lX2xpc3QoaW50IGZkLCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQo+ICt7Cj4gKwl1aW50OF90IHF1ZXJ5X2J1ZmZl cltTSVpFT0ZfUVVFUlldID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9p bmZvICpxdWVyeV9lbmdpbmUgPQo+ICsJCQkoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9p bmZvICopIHF1ZXJ5X2J1ZmZlcjsKPiArCWludCBpOwo+ICsKPiArCXF1ZXJ5X2VuZ2luZXMoZmQs IHF1ZXJ5X2VuZ2luZSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVt X2VuZ2luZXM7IGkrKykKPiArCQlpbml0X2VuZ2luZSgmZWQtPmVuZ2luZXNbaV0sIE5VTEwsCj4g KwkJCSAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfY2xhc3MsCj4gKwkJCSAgIHF1 ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfaW5zdGFuY2UsIGkpOwo+ICsKPiArCWVkLT5u ZW5naW5lcyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7Cj4gK30KPiArCj4gK3N0cnVjdCBp bnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3Qg Y3R4X2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGE7Cj4g Kwl1aW50OF90IGJ1ZmZbU0laRU9GX0NUWF9QQVJBTV0gPSB7IH07Cj4gKwo+ICsJc3RydWN0IGk5 MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICplbmdpbmVzID0KPiArCQkoc3RydWN0IGk5MTVfY29u dGV4dF9wYXJhbV9lbmdpbmVzICopIGJ1ZmY7Cj4gKwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X3BhcmFtIHBhcmFtID0gewo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9F TkdJTkVTLAo+ICsJCS5jdHhfaWQgPSBjdHhfaWQsCj4gKwkJLnNpemUgPSBTSVpFT0ZfQ1RYX1BB UkFNLAo+ICsJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKSwKPiArCX07Cj4gKwo+ ICsJaW50IGk7Cj4gKwo+ICsJaWYgKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0p KSB7Cj4gKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgZW5naW5lL2NvbnRleHQgbWFw cGluZyAqLwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7Cj4g Kwo+ICsJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdpbmUgbGlzdFxuIik7Cj4g Kwo+ICsJCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUyKSB7Cj4gKwkJCXVpbnQ2 NF90IGZsYWdzOwo+ICsKPiArCQkJaWYgKCFnZW1faGFzX2VuZ2luZShmZCwgZTItPmNsYXNzLCBl Mi0+aW5zdGFuY2UpKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlmbGFncyA9IGdlbV9jbGFz c19pbnN0YW5jZV90b19lYl9mbGFncyhmZCwgZTItPmNsYXNzLAo+ICsJCQkJCQkJICAgICAgIGUy LT5pbnN0YW5jZSk7Cj4gKwo+ICsJCQlpbml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tl bmdpbmVfZGF0YS5uZW5naW5lc10sCj4gKwkJCQkgICAgZTItPm5hbWUsIGUyLT5jbGFzcywgZTIt Pmluc3RhbmNlLCBmbGFncyk7Cj4gKwo+ICsJCQllbmdpbmVfZGF0YS5uZW5naW5lcysrOwo+ICsJ CX0KPiArCj4gKwl9IGVsc2UgaWYgKCFwYXJhbS5zaXplKSB7Cj4gKwkJLyogZWxzZSBpZiBjb250 ZXh0IGRvZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5lcyAqLwo+ICsJCXF1ZXJ5X2VuZ2luZV9saXN0 KGZkLCAmZW5naW5lX2RhdGEpOwo+ICsJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRh LCAmcGFyYW0pOwo+ICsKPiArCX0gZWxzZSB7Cj4gKwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9m IG1hcHBlZCBlbmdpbmVzICovCj4gKwo+ICsJCXVpbnQ4X3QgbmVuZ2luZXMgPSAocGFyYW0uc2l6 ZSAtCj4gKwkJCQlzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSkgLwo+ ICsJCQkJc2l6ZW9mKGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdKTsKCkknZCBwcm9iYWJseSBq dXN0IHVzZSB1bnNpZ25lZCBpbnQuCgo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZXM7 IGkrKykKPiArCQkJaW5pdF9lbmdpbmUoJmVuZ2luZV9kYXRhLmVuZ2luZXNbaV0sIE5VTEwsCj4g KwkJCQkgICAgZW5naW5lcy0+Y2xhc3NfaW5zdGFuY2VbaV0uZW5naW5lX2NsYXNzLAo+ICsJCQkJ ICAgIGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlW2ldLmVuZ2luZV9pbnN0YW5jZSwKPiArCQkJCSAg ICBpKTsKPiArCj4gKwkJZW5naW5lX2RhdGEubmVuZ2luZXMgPSBpOwo+ICsJfQo+ICsKPiArCXJl dHVybiBlbmdpbmVfZGF0YTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmggYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzFmYTNkY2FhNDhjCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAo+IEBAIC0wLDAgKzEs MzggQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiAr ICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT Cj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIEdFTV9FTkdJTkVf VE9QT0xPR1lfSAo+ICsjZGVmaW5lIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAo+ICsKPiArI2luY2x1 ZGUgImk5MTVfZHJtLmgiCj4gKyNpbmNsdWRlICJpZ3RfZ3QuaCIKPiArCj4gK3N0cnVjdCBpbnRl bF9lbmdpbmVfZGF0YSB7Cj4gKwl1aW50MzJfdCBuZW5naW5lczsKPiArCXVpbnQzMl90IG47Cj4g KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tJOTE1X0VYRUNfUklOR19N QVNLICsgMV07Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaW50ZWxfaW5p dF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCk7Cj4gKwo+ICsjZW5kaWYgLyog R0VNX0VOR0lORV9UT1BPTE9HWV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZ3QuaCBiL2xp Yi9pZ3RfZ3QuaAo+IGluZGV4IDQ3NWMwYjNjM2NjNi4uODRlYTRhZjUzOTJkIDEwMDY0NAo+IC0t LSBhL2xpYi9pZ3RfZ3QuaAo+ICsrKyBiL2xpYi9pZ3RfZ3QuaAo+IEBAIC05NSw2ICs5NSw3IEBA IGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgewo+ICAgCWNvbnN0 IGNoYXIgKm5hbWU7Cj4gICAJaW50IGNsYXNzOwo+ICAgCWludCBpbnN0YW5jZTsKPiArCXVpbnQ2 NF90IGZsYWdzOwo+ICAgfSBpbnRlbF9leGVjdXRpb25fZW5naW5lczJbXTsKPiAgIAo+ICAgdW5z aWduZWQgaW50Cj4gQEAgLTExNyw4ICsxMTgsMTEgQEAgdm9pZCBnZW1fcmVxdWlyZV9lbmdpbmUo aW50IGdlbV9mZCwKPiAgICNkZWZpbmUgX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Uo ZV9fKSBcCj4gICAJZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXykt Pm5hbWU7IChlX18pKyspCj4gICAKPiAtI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5z dGFuY2UoZmRfXywgZV9fKSBcCj4gLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykgXAo+IC0JCWZvcl9pZiAoZ2VtX2hhc19lbmdpbmUo KGZkX18pLCAoZV9fKS0+Y2xhc3MsIChlX18pLT5pbnN0YW5jZSkpCj4gKyNpbmNsdWRlICJpOTE1 L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCIKPiArCj4gKyNkZWZpbmUgZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGZkX18sIGN0eF9fLCBlX18pIFwKPiArCWZvciAoc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCj4g KwkJKChlX18pID0gKGlfXy5uIDwgaV9fLm5lbmdpbmVzKSA/ICZpX18uZW5naW5lc1tpX18ubl0g OiBOVUxMKTsgXAo+ICsJCQlpX18ubisrKQoKRG8gd2Ugd2FudCBhIGNvbnRleHQgcGFyYW1ldGVy IGluIHRoaXMgaGVscGVyLCBvciBldmVuIHRoaXMgaGVscGVyIGF0IAphbGw/IEkgdGhvdWdodCB3 ZSBjYW4gZW5kIHVwIHdpdGggb25seSB0d28sIGZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZSBhbmQg CmZvcl9lYWNoX2NvbnRleHRfZW5naW5lIC0gYnV0IEkgZ3Vlc3MgaXQgaXMgb3BlbiBmb3IgZGlz Y3Vzc2lvbi4KCj4gICAKPiAgICNlbmRpZiAvKiBJR1RfR1RfSCAqLwo+IGRpZmYgLS1naXQgYS9s aWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCAwZWI1NTg1ZDcyYjkuLjNj YzUyZjk3YzhiZiAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9saWIvbWVz b24uYnVpbGQKPiBAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMgPSBbCj4gICAJJ2k5MTUvZ2Vt X3N1Ym1pc3Npb24uYycsCj4gICAJJ2k5MTUvZ2VtX3JpbmcuYycsCj4gICAJJ2k5MTUvZ2VtX21t YW4uYycsCj4gKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAo+ICAgCSdpZ3RfY29sb3Jf ZW5jb2RpbmcuYycsCj4gICAJJ2lndF9kZWJ1Z2ZzLmMnLAo+ICAgCSdpZ3RfZGV2aWNlLmMnLAo+ IGRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwo+IGluZGV4 IDRmNTUyYmMyYWUyOC4uYzljNjM0MDVjZGRlIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL3BlcmZfcG11 LmMKPiArKysgYi90ZXN0cy9wZXJmX3BtdS5jCj4gQEAgLTQzNCw3ICs0MzQsNyBAQCBidXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCj4gICAKPiAgIAlpID0gMDsKPiAgIAlmZFswXSA9IC0xOwo+IC0JZm9yX2VhY2hfZW5naW5l X2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKPiArCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19p bnN0YW5jZShnZW1fZmQsIDAsIGVfKSB7Cj4gICAJCWlmIChlID09IGVfKQo+ICAgCQkJYnVzeV9p ZHggPSBpOwo+ICAgCj4gQEAgLTQ5Nyw3ICs0OTcsNyBAQCBtb3N0X2J1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiAgIAl1 bnNpZ25lZCBpbnQgaWRsZV9pZHgsIGk7Cj4gICAKPiAgIAlpID0gMDsKPiAtCWZvcl9lYWNoX2Vu Z2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Cj4gKwlmb3JfZWFjaF9lbmdpbmVfY2xh c3NfaW5zdGFuY2UoZ2VtX2ZkLCAwLCBlXykgewo+ICAgCQlpZiAoZSA9PSBlXykKPiAgIAkJCWlk bGVfaWR4ID0gaTsKPiAgIAkJZWxzZSBpZiAoc3BpbikKPiBAQCAtNTU0LDcgKzU1NCw3IEBAIGFs bF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2lu ZXMsCj4gICAJdW5zaWduZWQgaW50IGk7Cj4gICAKPiAgIAlpID0gMDsKPiAtCWZvcl9lYWNoX2Vu Z2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGUpIHsKPiArCWZvcl9lYWNoX2VuZ2luZV9jbGFz c19pbnN0YW5jZShnZW1fZmQsIDAsIGUpIHsKPiAgIAkJaWYgKHNwaW4pCj4gICAJCQlfX3N1Ym1p dF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZSwgNjQpOwo+ICAgCQllbHNlCj4gQEAgLTE2ODMs NyArMTY4Myw3IEBAIGlndF9tYWluCj4gICAJCWlndF9yZXF1aXJlX2dlbShmZCk7Cj4gICAJCWln dF9yZXF1aXJlKGk5MTVfdHlwZV9pZCgpID4gMCk7Cj4gICAKPiAtCQlmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZmQsIGUpCj4gKwkJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNl KGZkLCAwLCBlKQo+ICAgCQkJbnVtX2VuZ2luZXMrKzsKPiAgIAl9Cj4gICAKPiAKCkxvb2tzIGxp a2UgdGhpcyB3b3VsZCB3b3JrLiBKdXN0IHRoZSBxdWVzdGlvbiBvZiB2aXJ0dWFsIGVuZ2luZSwg c2V0IG9mIApjaG9zZW4gaXRlcmF0b3JzLCBhbmQgbWF5YmUgc29tZSBuaXRzLgoKUmVnYXJkcywK ClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=