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 C7CD2899C4 for ; Tue, 19 Mar 2019 10:18:52 +0000 (UTC) References: <20190318232812.1307-1-andi.shyti@intel.com> <20190318232812.1307-6-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: <4e154615-802d-71da-46c9-8c7614d46492@linux.intel.com> Date: Tue, 19 Mar 2019 10:18:49 +0000 MIME-Version: 1.0 In-Reply-To: <20190318232812.1307-6-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v12 5/7] 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: Ck9uIDE4LzAzLzIwMTkgMjM6MjgsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBUaGUgbGlicmFyeSBwcm92aWRlcyB0aHJlZSBoZWxwZXIgZnVuY3Rpb25z Ogo+IAo+IDEuIGdlbV90b3BvbG9neV9oYXNfZW5naW5lKCk6IGNoZWNrcyBpZiB0aGUgZW5naW5l IGlzIHByZXNlbnQgYnkKPiAgICAgcXVlcnlpbmcgdGhlIGRyaXZlciBpbiBhIHdheSB0aGF0IHRo ZSBjYWxsZXIgZnVuY3Rpb24gd291bGRuJ3QKPiAgICAga25vdyBpZiB0aGUgYWJvdmUgaW9jdGxz IGFyZSBpbXBsZW1lbnRlZC4KPiAKPiAyLiBnZW1fc2V0X2ViX2ZsYWdzKCk6IHNldHMgdGhlIGV4 ZWN1dGlvbiBidWZmZXIgZmxhZyBkZXBlbmRpbmcKPiAgICAgd2hldGhlciBpdCByZWZlcnMgdG8g Y29udGV4dC1lbmdpbmUgbWFwcGluZyBvciBub3QuCj4gCj4gMy4gZ2VtX2NvbnRleHRfZXhlY2J1 ZigpOiBpcyBhIHdyYXBwZXIgdGhhdCBleGVjdXRlcyB0aGUgYnVmZmVyCj4gICAgIGluIGEgd2F5 IHRoYXQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gZG9lc24ndCBrbm93IGFib3V0IHRoZQo+ICAgICBp b2N0bHMgaW4gdGhlIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRp LnNoeXRpQGludGVsLmNvbT4KPiAtLS0KPiAgIGxpYi9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAg ICB8ICAgMiArCj4gICBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMgfCAyMTAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9s b2d5LmggfCAgNTIgKysrKysrKysKPiAgIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8 ICAgMSArCj4gICA0IGZpbGVzIGNoYW5nZWQsIDI2NSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4gCj4gZGlmZiAtLWdpdCBh L2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiBpbmRleCBjZjI3 MjA5ODE3MDcuLjc1N2JkN2ExN2ViZSAxMDA2NDQKPiAtLS0gYS9saWIvTWFrZWZpbGUuc291cmNl cwo+ICsrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTEzLDYgKzEzLDggQEAgbGliX3Nv dXJjZV9saXN0ID0JIAlcCj4gICAJaTkxNS9nZW1fcmluZy5jCVwKPiAgIAlpOTE1L2dlbV9tbWFu LmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uaAlcCj4gKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku YwlcCj4gKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAlcCj4gICAJaTkxNV8zZC5oCQlcCj4g ICAJaTkxNV9yZWcuaAkJXAo+ICAgCWk5MTVfcGNpaWRzLmgJCVwKPiBkaWZmIC0tZ2l0IGEvbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmU4MzZiMzc0 NWUwNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5 LmMKPiBAQCAtMCwwICsxLDIxMCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgo+ICsKPiAr I2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgo+ICsKPiArI2RlZmluZSBTSVpF T0ZfQ1RYX1BBUkFNCW9mZnNldG9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywg XAo+ICsJCQkJCWNsYXNzX2luc3RhbmNlW0k5MTVfRVhFQ19SSU5HX01BU0sgKyAxXSkKPiArI2Rl ZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVf aW5mbywgXAo+ICsJCQkJCWVuZ2luZXNbSTkxNV9FWEVDX1JJTkdfTUFTSyArIDFdKQo+ICsKPiAr c3RhdGljIGludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkK PiArewo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RM X0k5MTVfUVVFUlksIHEpKQo+ICsJCWVyciA9IC1lcnJubzsKPiArCj4gKwllcnJubyA9IDA7Cj4g KwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW1fcXVlcnkoaW50IGZkLCBz dHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCj4gK3sKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fcXVl cnkoZmQsIHEpLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lcyhpbnQg ZmQsCj4gKwkJCSAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdp bmVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9Owo+ICsJ c3RydWN0IGRybV9pOTE1X3F1ZXJ5IHF1ZXJ5ID0geyB9Owo+ICsKPiArCWl0ZW0ucXVlcnlfaWQg PSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKPiArCXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmaXRlbSk7Cj4gKwlxdWVyeS5udW1faXRlbXMgPSAxOwo+ICsJaXRlbS5sZW5n dGggPSBTSVpFT0ZfUVVFUlk7Cj4gKwo+ICsJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRl cihxdWVyeV9lbmdpbmVzKTsKPiArCj4gKwlnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHNldF9jdHhfcGFyYW1fZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2RhdGEgKmVkKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKmN0 eF9lbmdpbmU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFt Owo+ICsJdWludDhfdCBidWZmW1NJWkVPRl9DVFhfUEFSQU1dID0geyB9Owo+ICsJaW50IGk7Cj4g Kwo+ICsJY3R4X2VuZ2luZSA9IChzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKikg YnVmZjsKClRpbnkgZGV0YWlsIC0geW91IGNvdWxkIG1vdmUgYXNzaWdubWVudCB0byBkZWNsYXJh dGlvbiBvZiB5b3UgcmVvcmRlciB0aGVtLgoKPiArCj4gKwljdHhfZW5naW5lLT5leHRlbnNpb25z ID0gMDsKCk5vIG5lZWQgc2luY2UgY2xlYXJlZCB3aGVuIGRlY2xhcmVkLgoKPiArCWZvciAoaSA9 IDA7IGkgPCBlZC0+bmVuZ2luZXM7IGkrKykgewo+ICsJCWN0eF9lbmdpbmUtPmNsYXNzX2luc3Rh bmNlW2ldLmVuZ2luZV9jbGFzcyA9Cj4gKwkJCQkJCQllZC0+ZW5naW5lc1tpXS5jbGFzczsKPiAr CQljdHhfZW5naW5lLT5jbGFzc19pbnN0YW5jZVtpXS5lbmdpbmVfaW5zdGFuY2UgPQo+ICsJCQkJ CQkJZWQtPmVuZ2luZXNbaV0uaW5zdGFuY2U7CgpDb3VsZCBtYWtlIHRoZSBhc3NpZ25tZW50cyBt b3JlIHJlYWRhYmxlIGJ5IGhhdmluZyBhIHBvaW50ZXIgcCA9IAomY3R4X2VuZ2luZS0+Y2xhc3Nf aW5zdGFuY2VbMF0gYW5kIHArKyBpbiB0aGUgZm9yIGxvb3AuCgo+ICsJfQo+ICsKPiArCWN0eF9w YXJhbS5zaXplICAgPSBvZmZzZXRvZih0eXBlb2YoKmN0eF9lbmdpbmUpLCBjbGFzc19pbnN0YW5j ZVtpICsgMV0pOwo+ICsJY3R4X3BhcmFtLnZhbHVlICA9IHRvX3VzZXJfcG9pbnRlcihjdHhfZW5n aW5lKTsKPiArCWN0eF9wYXJhbS5jdHhfaWQgPSBlZC0+Y3R4Owo+ICsJY3R4X3BhcmFtLnBhcmFt ICA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOwo+ICsKPiArCWdlbV9jb250ZXh0X3NldF9w YXJhbShlZC0+ZmQsICZjdHhfcGFyYW0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbml0X2Vu Z2luZV9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCj4gK3sKPiArCWNvbnN0IGNo YXIgKmNsYXNzX25hbWVzW10gPSB7ICJyY3MiLCAiYmNzIiwgInZjcyIsICJ2ZWNzIiB9Owo+ICsJ c3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmU7Cj4gKwl1bnNp Z25lZCBjaGFyIHF1ZXJ5X2J1ZmZlcltTSVpFT0ZfUVVFUlldID0geyB9OwoKWW91IHVzZWQgdWlu dDhfdCBhYm92ZS4gSSBkb24ndCBtaW5kIHdoaWNoIG9uZSBhcyBsb25nIGFzIGl0IGlzIGNvbnNp c3RlbnQuCgo+ICsJaW50IGk7Cj4gKwo+ICsJcXVlcnlfZW5naW5lID0gKHN0cnVjdCBkcm1faTkx NV9xdWVyeV9lbmdpbmVfaW5mbyAqKSBxdWVyeV9idWZmZXI7CgpDb3VsZCBhbHNvIGFzc2lnbiBp biB0aGUgZGVjbGFyYXRpb24uCgo+ICsJcXVlcnlfZW5naW5lcyhlZC0+ZmQsIHF1ZXJ5X2VuZ2lu ZSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkr Kykgewo+ICsJCWNoYXIgKm5hbWU7Cj4gKwkJX191MTYgY2xhc3MgPSBxdWVyeV9lbmdpbmUtPmVu Z2luZXNbaV0uZW5naW5lX2NsYXNzOwo+ICsJCV9fdTE2IGluc3RhbmNlID0gcXVlcnlfZW5naW5l LT5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZTsKPiArCj4gKwkJZWQtPmVuZ2luZXNbaV0uY2xh c3MgPSBjbGFzczsKPiArCQllZC0+ZW5naW5lc1tpXS5pbnN0YW5jZSA9IGluc3RhbmNlOwo+ICsK PiArCQkvKiBpZiB3ZSBkb24ndCByZWNvZ25pc2UgdGhlIGNsYXNzLCB0aGVuIHdlIG1hcmsgaXQg YXMgInVuayIgKi8KPiArCQlpZiAoY2xhc3MgPj0gQVJSQVlfU0laRShjbGFzc19uYW1lcykpCj4g KwkJCWlndF9hc3NlcnQoYXNwcmludGYoJm5hbWUsICJ1bmstJWQ6JWQiLAo+ICsJCQkJCSAgICBj bGFzcywgaW5zdGFuY2UpID4gMCk7Cj4gKwkJZWxzZQo+ICsJCQlpZ3RfYXNzZXJ0KGFzcHJpbnRm KCZuYW1lLCAiJXMlZCIsCj4gKwkJCQkJICAgIGNsYXNzX25hbWVzW2NsYXNzXSwgaW5zdGFuY2Up ID4gMCk7CgpOYW1lcyBsZWFrIHBlciBpdGVyYXRvciBJIHRoaW5rLiBCdW1tZXIsIGFwYXJ0IGZy b20gdXNpbmcgYSBiaWcgc3RhdGljIAp0YWJsZSBvZiBhbGwgcG9zc2libGUgbmFtZXMsIGFuZCBi b3Jyb3dpbmcgdGhvc2UgcG9pbnRlcnMgaGVyZSwgSSBkb24ndCAKaGF2ZSBhbnkgYmV0dGVyIGlk ZWFzIGF0IHRoZSBtb21lbnQuIE1pZ2h0IGFjdHVhbGx5IGJlIG9rYXkuCgo+ICsKPiArCQllZC0+ ZW5naW5lc1tpXS5uYW1lID0gbmFtZTsKPiArCX0KPiArCj4gKwllZC0+bmVuZ2luZXMgPSBxdWVy eV9lbmdpbmUtPm51bV9lbmdpbmVzOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCkKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGN0eF9wYXJhbSA9IHsKPiArCQku cGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKPiArCQkuY3R4X2lkID0gY3R4X2lk LAo+ICsJfTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsKPiAr CQkubiA9IDAsCgpObyBuZWVkLgoKPiArCQkuZmQgPSBmZCwKPiArCQkuY3R4ID0gY3R4X2lkLAo+ ICsJfTsKPiArCj4gKwlpZiAoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZjdHhfcGFyYW0p KSB7Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsKPiArCj4g KwkJaWd0X2RlYnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKPiArCj4g KwkJX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZTIpIHsKPiArCQkJaWYgKCFnZW1f aGFzX2VuZ2luZShmZCwgZTItPmNsYXNzLCBlMi0+aW5zdGFuY2UpKQo+ICsJCQkJY29udGludWU7 Cj4gKwo+ICsJCQllbmdpbmVfZGF0YS5lbmdpbmVzW2VuZ2luZV9kYXRhLm5lbmdpbmVzXS5uYW1l ID0KPiArCQkJCQkJCQllMi0+bmFtZTsKPiArCQkJZW5naW5lX2RhdGEuZW5naW5lc1tlbmdpbmVf ZGF0YS5uZW5naW5lc10uaW5zdGFuY2UgPQo+ICsJCQkJCQkJCWUyLT5pbnN0YW5jZTsKPiArCQkJ ZW5naW5lX2RhdGEuZW5naW5lc1tlbmdpbmVfZGF0YS5uZW5naW5lc10uY2xhc3MgPQo+ICsJCQkJ CQkJCWUyLT5jbGFzczsKCkFsc28gY291bGQga2VlcCBhIHBvaW50ZXIgdG8gZW5naW5lX2RhdGEu ZW5naW5lc1s8Y3VycmVudD5dIGZvciBtb3JlIApyZWFkYWJsZSBhc3NpZ25tZW50cy4KCj4gKwkJ CWVuZ2luZV9kYXRhLm5lbmdpbmVzKys7Cj4gKwkJfQo+ICsKPiArCQlyZXR1cm4gZW5naW5lX2Rh dGE7Cj4gKwl9Cj4gKwo+ICsJaW5pdF9lbmdpbmVfbGlzdCgmZW5naW5lX2RhdGEpOwoKQXMgZmFy IGFzIEkgY2FuIHNlZSB5b3UgbWlzc2VkIHRoZSB1c2UgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIGl0 ZXJhdGUgCm92ZXIgZW5naW5lcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIGNvbnRleHQgZW5naW5l IG1hcC4KClNvIEkgdGhpbmsgaWYgdGhlIGFib3ZlIF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtIHN1 Y2NlZWRzIHdpdGggbm9uLXplcm8gCnNpemUgcmV0dXJuZWQsIHlvdSBuZWVkIHRvIGJ1aWxkIGVu Z2luZV9kYXRhIGJhc2VkIG9uIHRob3NlIGVuZ2luZXMuCgo+ICsKPiArCWlmIChjdHhfcGFyYW0u c2l6ZSA9PSBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSkKPiArCQlz ZXRfY3R4X3BhcmFtX2VuZ2luZXMoJmVuZ2luZV9kYXRhKTsKPiArCgpTbyB0aGlzIHdvdWxkIGNo YW5nZSB0byBzb21ldGhpbmcgbGlrZToKCmlmIChyZXQgPT0gMCAmJiBjdHhfcGFyYW0uc2l6ZSA9 PSAwKQoJaW5pdF9lbmdpbmVfbGlzdCgmZW5naW5lX2RhdGEpOwoJc2V0X21hcCA9IHRydWU7CmVs c2UgaWYgKHJldCA9PSAwKQoJaW5pdF9lbmdpbmVfbGlzdF9mcm9tX2N0eF9lbmdpbmVfbWFwKCZl bmdpbmVfZGF0YSwgY3R4X3BhcmFtKTsKZWxzZQoJaW5pdF9lbmdpbmVfbGlzdF9mcm9tX3N0YXRp Y190YWJsZXMoLi4pOwoJc2V0X21hcCA9IHRydWU7CgppZiAoc2V0X21hcCkKCXNldF9jdHhfcGFy YW0oLi4uKTsKCj4gKwlyZXR1cm4gZW5naW5lX2RhdGE7Cj4gK30KPiArCj4gK2Jvb2wgZ2VtX3Rv cG9sb2d5X2hhc19lbmdpbmUoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCj4gKwkJCSAgICAgdWludDhfdCBpLCB1aW50MzJfdCBjdHgpCj4gK3sKCldoeSBkbyB3ZSBu ZWVkIHRoaXMgaGVscGVyPwoKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBj dHhfcGFyYW0gPSB7Cj4gKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4g Kwl9Owo+ICsKPiArCWlmICghZSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKF9fZ2Vt X2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmY3R4X3BhcmFtKSkKPiArCQlyZXR1cm4gZ2VtX2hhc19l bmdpbmUoZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7Cj4gKwo+ICsJcmV0dXJuIGdlbV9jb250 ZXh0X2hhc19lbmdpbmUoZmQsIGksIGN0eCk7Cj4gK30KPiArCj4gK3ZvaWQgZ2VtX3NldF9lYl9m bGFncyhpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmViLAo+ICsJCSAg ICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlMiwKPiArCQkgICAgICB1aW50OF90 IGVuZ2luZSwgdWludDMyX3QgY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gY3R4X3BhcmFtID0gewo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9F TkdJTkVTLAo+ICsJfTsKPiArCj4gKwlpZiAoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZj dHhfcGFyYW0pKSB7Cj4gKwkJZWItPmZsYWdzIHw9IChJOTE1X0VYRUNfUklOR19NQVNLICYgZW5n aW5lKTsKPiArCQllYi0+cnN2ZDEgPSBjdHg7Cj4gKwl9IGVsc2Ugewo+ICsJCWViLT5mbGFncyB8 PSBnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3MoZmQsIGUyLmNsYXNzLAo+ICsJCQkJCQkJ ICAgIGUyLmluc3RhbmNlKTsKPiArCX0KPiArfQoKU3RvcmUgZmxhZ3MgaW4gc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyIHdoaWxlIGJ1aWxkaW5nIHRoZSBsaXN0IAphbmQgdGhlbiBqdXN0 IGViLT5mbGFncyB8PSBlMi0+ZWJfZmxhZ3MgaW4gdGVzdHM/Cgo+ICsKPiAraW50IF9fZ2VtX2Nv bnRleHRfZXhlY2J1ZihpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmVi LAo+ICsJCQkgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlMiwKPiArCQkJICB1aW50 OF90IGVuZ2luZSwgdWludDMyX3QgY3R4KQo+ICt7Cj4gKwlnZW1fc2V0X2ViX2ZsYWdzKGZkLCBl YiwgZTIsIGVuZ2luZSwgY3R4KTsKPiArCXJldHVybiBfX2dlbV9leGVjYnVmKGZkLCBlYik7Cj4g K30KPiArCj4gK3ZvaWQgZ2VtX2NvbnRleHRfZXhlY2J1ZihpbnQgZmQsIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgKmViLAo+ICsJCQkgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyIGUyLAo+ICsJCQkgdWludDhfdCBpbmRleF9tYXAsIHVpbnQzMl90IGN0eCkKPiArewo+ICsJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2V4ZWNidWYoZmQsIGViLCBlMiwgaW5kZXhfbWFw LCBjdHgpLCAwKTsKPiArfQoKUHJvYmFibHkgbm90IHdhbnQgdGhlc2UgdHdvIGVpdGhlci4KCj4g ZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCBiL2xpYi9pOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi42NTdiOTM5N2ExODEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5oCj4gQEAgLTAsMCArMSw1MiBAQAo+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+ ICsgKi8KPiArCj4gKyNpZm5kZWYgR0VNX0VOR0lORV9UT1BPTE9HWV9ICj4gKyNkZWZpbmUgR0VN X0VOR0lORV9UT1BPTE9HWV9ICj4gKwo+ICsjaW5jbHVkZSAiaWd0X2d0LmgiCj4gKwo+ICtzdHJ1 Y3QgaW50ZWxfZW5naW5lX2RhdGEgewo+ICsJaW50IGZkOwo+ICsJdWludDMyX3QgY3R4Owo+ICsK PiArCXVpbnQzMl90IG5lbmdpbmVzOwo+ICsJdWludDMyX3QgbjsKClRoaXMgaXMgdGhlIGN1cnJl bnQgZW5naW5lIGluZGV4PyBDb3VsZCBpdCBjb21lIGhhbmR5IHRvIGFsc28gaGF2ZSBhIApwb2lu dGVyIHRvIGN1cnJlbnQgZW5naW5lIGluIHRoZSBpdGVyYXRvcj8gV2lsbCBzZWUgaW4gbGF0ZXIg cGF0Y2hlcy4uCgo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGVuZ2luZXNbSTkx NV9FWEVDX1JJTkdfTUFTSyArIDFdOwo+ICt9Owo+ICsKPiArc3RydWN0IGludGVsX2VuZ2luZV9k YXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOwo+ICti b29sIGdlbV90b3BvbG9neV9oYXNfZW5naW5lKGludCBmZCwgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAo+ICsJCQkgICAgIHVpbnQ4X3QgaSwgdWludDMyX3QgY3R4KTsKPiArCj4g K3ZvaWQgZ2VtX3NldF9lYl9mbGFncyhpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1 ZmZlcjIgKmViLAo+ICsJCSAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlMiwK PiArCQkgICAgICB1aW50OF90IGVuZ2luZSwgdWludDMyX3QgY3R4KTsKPiAraW50IF9fZ2VtX2Nv bnRleHRfZXhlY2J1ZihpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmVi LAo+ICsJCQkgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlMiwKPiArCQkJICB1aW50 OF90IGVuZ2luZSwgdWludDMyX3QgY3R4KTsKPiArdm9pZCBnZW1fY29udGV4dF9leGVjYnVmKGlu dCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZWIsCj4gKwkJCSBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZTIsCj4gKwkJCSB1aW50OF90IGluZGV4X21hcCwgdWlu dDMyX3QgY3R4KTsKPiArCj4gKyNlbmRpZiAvKiBHRU1fRU5HSU5FX1RPUE9MT0dZX0ggKi8KPiBk aWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCj4gaW5kZXggMGVi NTU4NWQ3MmI5Li4zY2M1MmY5N2M4YmYgMTAwNjQ0Cj4gLS0tIGEvbGliL21lc29uLmJ1aWxkCj4g KysrIGIvbGliL21lc29uLmJ1aWxkCj4gQEAgLTUsNiArNSw3IEBAIGxpYl9zb3VyY2VzID0gWwo+ ICAgCSdpOTE1L2dlbV9zdWJtaXNzaW9uLmMnLAo+ICAgCSdpOTE1L2dlbV9yaW5nLmMnLAo+ICAg CSdpOTE1L2dlbV9tbWFuLmMnLAo+ICsJJ2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jJywKPiAg IAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAo+ICAgCSdpZ3RfZGVidWdmcy5jJywKPiAgIAknaWd0 X2RldmljZS5jJywKPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2