From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Engine discovery query Date: Mon, 1 Oct 2018 17:21:56 +0100 Message-ID: References: <20181001161524.8104-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 885CC6E238 for ; Mon, 1 Oct 2018 16:25:07 +0000 (UTC) In-Reply-To: <20181001161524.8104-1-tvrtko.ursulin@linux.intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKTWVkaWEgZXhwZXJ0cyBwbGVhc2Ugc2Nyb2xsIGRvd24uLi4KCk9uIDAxLzEwLzIwMTgg MTc6MTUsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gCj4gRW5naW5lIGRpc2NvdmVyeSBxdWVyeSBhbGxvd3Mg dXNlcnNwYWNlIHRvIGVudW1lcmF0ZSBlbmdpbmVzLCBwcm9iZSB0aGVpcgo+IGNvbmZpZ3VyYXRp b24gZmVhdHVyZXMsIGFsbCB3aXRob3V0IG5lZWRpbmcgdG8gbWFpbnRhaW4gdGhlIGludGVybmFs IFBDSQo+IElEIGJhc2VkIGRhdGFiYXNlLgo+IAo+IEEgbmV3IHF1ZXJ5IGZvciB0aGUgZ2VuZXJp YyBpOTE1IHF1ZXJ5IGlvY3RsIGlzIGFkZGVkIG5hbWVkCj4gRFJNX0k5MTVfUVVFUllfRU5HSU5F X0lORk8sIHRvZ2V0aGVyIHdpdGggYWNjb21wYW55aW5nIHN0cnVjdHVyZQo+IGRybV9pOTE1X3F1 ZXJ5X2VuZ2luZV9pbmZvLiBUaGUgYWRkcmVzcyBvZiBsYXR0ZXIgc2hvdWxkIGJlIHBhc3NlZCB0 byB0aGUKPiBrZXJuZWwgaW4gdGhlIHF1ZXJ5LmRhdGFfcHRyIGZpZWxkLCBhbmQgc2hvdWxkIGJl IGxhcmdlIGVub3VnaCBmb3IgdGhlCj4ga2VybmVsIHRvIGZpbGwgb3V0IGFsbCBrbm93biBlbmdp bmVzIGFzIHN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbwo+IGVsZW1lbnRzIHRyYWlsaW5nIHRo ZSBxdWVyeS4KPiAKPiBBcyB3aXRoIG90aGVyIHF1ZXJpZXMsIHNldHRpbmcgdGhlIGl0ZW0gcXVl cnkgbGVuZ3RoIHRvIHplcm8gYWxsb3dzCj4gdXNlcnNwYWNlIHRvIHF1ZXJ5IG1pbmltdW0gcmVx dWlyZWQgYnVmZmVyIHNpemUuCj4gCj4gRW51bWVyYXRlZCBlbmdpbmVzIGhhdmUgY29tbW9uIHR5 cGUgbWFzayB3aGljaCBjYW4gYmUgdXNlZCB0byBxdWVyeSBhbGwKPiBoYXJkd2FyZSBlbmdpbmVz LCB2ZXJzdXMgZW5naW5lcyB1c2Vyc3BhY2UgY2FuIHN1Ym1pdCB0byB1c2luZyB0aGUgZXhlY2J1 Zgo+IHVBUEkuCj4gCj4gRW5naW5lcyBhbHNvIGhhdmUgY2FwYWJpbGl0aWVzIHdoaWNoIGFyZSBw ZXIgZW5naW5lIGNsYXNzIG5hbWVzcGFjZSBvZgo+IGJpdHMgZGVzY3JpYmluZyBmZWF0dXJlcyBu b3QgcHJlc2VudCBvbiBhbGwgZW5naW5lIGluc3RhbmNlcy4KPiAKPiB2MjoKPiAgICogRml4ZWQg SEVWQyBhc3NpZ25tZW50Lgo+ICAgKiBSZW9yZGVyIHNvbWUgZmllbGRzLCByZW5hbWUgdHlwZSB0 byBmbGFncywgaW5jcmVhc2Ugd2lkdGguIChMaW9uZWwpCj4gICAqIE5vIG5lZWQgdG8gYWxsb2Nh dGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaWYgd2UgZG8gaXQgZW5naW5lIGJ5IGVuZ2luZS4KPiAgICAg KExpb25lbCkKPiAKPiB2MzoKPiAgICogRGVzY3JpYmUgZW5naW5lIGZsYWdzIGFuZCBtYXJrIG1i eiBmaWVsZHMuIChMaW9uZWwpCj4gICAqIEhFVkMgb25seSBhcHBsaWVzIHRvIFZDUy4KPiAKPiB2 NDoKPiAgICogU3F1YXNoIFNGQyBmbGFnIGludG8gbWFpbiBwYXRjaC4KPiAgICogVGlkeSBzb21l IGNvbW1lbnRzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IENjOiBKb24gQmxvb21maWVsZCA8am9uLmJsb29tZmllbGRAaW50ZWwuY29tPgo+IENj OiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgo+IENjOiBM aW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4gQ2M6IEpv b25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogVG9u eSBZZSA8dG9ueS55ZUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3F1ZXJ5LmMgICAgICAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgfCAgOSArKysrCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgMyArKwo+ICAgaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrCj4g ICA0IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcXVlcnkuYwo+IGluZGV4IDU4MjEwMDJjYWQ0Mi4uMjk0ZjgxOTVlZmE3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+IEBAIC04NCw5ICs4NCw3MiBAQCBzdGF0aWMgaW50IHF1 ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg CXJldHVybiB0b3RhbF9sZW5ndGg7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludAo+ICtxdWVyeV9l bmdpbmVfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkgIHN0cnVjdCBk cm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfZW5naW5lX2luZm8gX191c2VyICpxdWVyeV9wdHIgPQo+ICsJCQkJdTY0X3RvX3VzZXJf cHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKTsKPiArCXN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5m byBfX3VzZXIgKmluZm9fcHRyID0gJnF1ZXJ5X3B0ci0+ZW5naW5lc1swXTsKPiArCXN0cnVjdCBk cm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyBxdWVyeTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJaW50IGxlbjsKPiAr Cj4gKwlpZiAocXVlcnlfaXRlbS0+ZmxhZ3MpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ bGVuID0gc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbykgKwo+ICsJICAg ICAgSTkxNV9OVU1fRU5HSU5FUyAqIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZW5naW5lX2luZm8p Owo+ICsKPiArCWlmICghcXVlcnlfaXRlbS0+bGVuZ3RoKQo+ICsJCXJldHVybiBsZW47Cj4gKwll bHNlIGlmIChxdWVyeV9pdGVtLT5sZW5ndGggPCBsZW4pCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJaWYgKGNvcHlfZnJvbV91c2VyKCZxdWVyeSwgcXVlcnlfcHRyLCBzaXplb2YocXVlcnkp KSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwlpZiAocXVlcnkubnVtX2VuZ2luZXMgfHwg cXVlcnkucnN2ZFswXSB8fCBxdWVyeS5yc3ZkWzFdIHx8Cj4gKwkgICAgcXVlcnkucnN2ZFsyXSkK PiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUs IHF1ZXJ5X3B0ciwgcXVlcnlfaXRlbS0+bGVuZ3RoKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiAr Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCXN0cnVjdCBkcm1f aTkxNV9lbmdpbmVfaW5mbyBpbmZvOwo+ICsKPiArCQlpZiAoX19jb3B5X2Zyb21fdXNlcigmaW5m bywgaW5mb19wdHIsIHNpemVvZihpbmZvKSkpCj4gKwkJCXJldHVybiAtRUZBVUxUOwo+ICsKPiAr CQlpZiAoaW5mby5mbGFncyB8fCBpbmZvLmNsYXNzIHx8IGluZm8uaW5zdGFuY2UgfHwKPiArCQkg ICAgaW5mby5jYXBhYmlsaXRpZXMgfHwgaW5mby5yc3ZkMCB8fCBpbmZvLnJzdmQxWzBdIHx8Cj4g KwkJICAgIGluZm8ucnN2ZDFbMV0pCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQlpbmZv LmNsYXNzID0gZW5naW5lLT51YWJpX2NsYXNzOwo+ICsJCWluZm8uaW5zdGFuY2UgPSBlbmdpbmUt Pmluc3RhbmNlOwo+ICsJCWluZm8uZmxhZ3MgPSBJOTE1X0VOR0lORV9GTEFHX1BIWVNJQ0FMIHwg STkxNV9FTkdJTkVfRkxBR19BQkk7Cj4gKwkJaW5mby5jYXBhYmlsaXRpZXMgPSBlbmdpbmUtPmNh cGFiaWxpdGllczsKPiArCj4gKwkJaWYgKF9fY29weV90b191c2VyKGluZm9fcHRyLCAmaW5mbywg c2l6ZW9mKGluZm8pKSkKPiArCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsJCXF1ZXJ5Lm51bV9l bmdpbmVzKys7Cj4gKwkJaW5mb19wdHIrKzsKPiArCX0KPiArCj4gKwlpZiAoX19jb3B5X3RvX3Vz ZXIocXVlcnlfcHRyLCAmcXVlcnksIHNpemVvZihxdWVyeSkpKQo+ICsJCXJldHVybiAtRUZBVUxU Owo+ICsKPiArCXJldHVybiBsZW47Cj4gK30KPiArCj4gICBzdGF0aWMgaW50ICgqIGNvbnN0IGk5 MTVfcXVlcnlfZnVuY3NbXSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg CQkJCQlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVlcnlfaXRlbSkgPSB7Cj4gICAJcXVl cnlfdG9wb2xvZ3lfaW5mbywKPiArCXF1ZXJ5X2VuZ2luZV9pbmZvLAo+ICAgfTsKPiAgIAo+ICAg aW50IGk5MTVfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwg c3RydWN0IGRybV9maWxlICpmaWxlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCj4gaW5kZXggMWM2MTQzYmRmNWE0Li45N2I0YWNmOGFmNWMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0yOTQsNiArMjk0LDE1IEBAIGludGVsX2Vu Z2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJZW5naW5l LT5tbWlvX2Jhc2UgPSBfX2VuZ2luZV9tbWlvX2Jhc2UoZGV2X3ByaXYsIGluZm8tPm1taW9fYmFz ZXMpOwo+ICAgCWVuZ2luZS0+Y2xhc3MgPSBpbmZvLT5jbGFzczsKPiAgIAllbmdpbmUtPmluc3Rh bmNlID0gaW5mby0+aW5zdGFuY2U7Cj4gKwlpZiAoZW5naW5lLT5jbGFzcyA9PSBWSURFT19ERUNP REVfQ0xBU1MpIHsKPiArCQkvKiBIRVZDIHN1cHBvcnQgaXMgcHJlc2VudCBvbmx5IG9uIHZjczAu ICovCj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiBpbmZvLT5pbnN0YW5jZSA9 PSAwKQo+ICsJCQllbmdpbmUtPmNhcGFiaWxpdGllcyA9IEk5MTVfVkNTX0NMQVNTX0NBUEFCSUxJ VFlfSEVWQzsKPiArCj4gKwkJLyogU0ZDIHN1cHBvcnQgaXMgd2lyZWQgb25seSB0byBldmVuIFZD UyBpbnN0YW5jZXMuICovCj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiAhKGlu Zm8tPmluc3RhbmNlICYgMSkpCj4gKwkJCWVuZ2luZS0+Y2FwYWJpbGl0aWVzIHw9IEk5MTVfVkNT X0NMQVNTX0NBUEFCSUxJVFlfU0ZDOwo+ICsJfQoKLi4uIHRvIGhlcmUhIDopCgpJIG5lZWQgaGVs cCB3aXRoIHRoZSBhYm92ZSB0d28gY2FwYWJpbGl0aWVzIGFzc2lnbm1lbnRzLiBQcmltYXJpbHkg YXJlIAp0aGV5IGNvcnJlY3Q/IEhFVkMgc2l0dWF0aW9uIG1pZ2h0IGJlIGRpZmZlcmVudCBvbiBH ZW4xMSBmb3IgaW5zdGFuY2U/CgpPdGhlcndpc2UgaXQgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIHBh dGNoIEkgc2VudCBtb250aHMgYWdvIHNvIAplc3NlbnRpYWxseSBzZW5kaW5nIGl0IGFnYWluIGp1 c3QgZm9yIGFub3RoZXIgcmV2aWV3IHBhc3MsIGlmIHNvbWVvbmUgCndpbGwgaGF2ZSBzb21lIG5l dyBjb21tZW50cy4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gICAKPiAgIAllbmdpbmUtPnVhYmlfaWQg PSBpbmZvLT51YWJpX2lkOwo+ICAgCWVuZ2luZS0+dWFiaV9jbGFzcyA9IGludGVsX2VuZ2luZV9j bGFzc2VzW2luZm8tPmNsYXNzXS51YWJpX2NsYXNzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKPiBpbmRleCAxNTM0ZGU1YmI4NTIuLjkwY2Y0ZWVhMGRlMiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMzcwLDYgKzM3MCw5 IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAgCj4gICAJdTggY2xhc3M7Cj4gICAJdTgg aW5zdGFuY2U7Cj4gKwo+ICsJdTMyIGNhcGFiaWxpdGllczsKPiArCj4gICAJdTMyIGNvbnRleHRf c2l6ZTsKPiAgIAl1MzIgbW1pb19iYXNlOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDI5 OGIyZTE5Nzc0NC4uYzQyOTJlNWZlZDUyIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0xNjUw LDYgKzE2NTAsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcgewo+ICAgc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gewo+ICAgCV9fdTY0IHF1ZXJ5X2lkOwo+ICAgI2RlZmluZSBE Uk1fSTkxNV9RVUVSWV9UT1BPTE9HWV9JTkZPICAgIDEKPiArI2RlZmluZSBEUk1fSTkxNV9RVUVS WV9FTkdJTkVfSU5GTwkyCj4gICAKPiAgIAkvKgo+ICAgCSAqIFdoZW4gc2V0IHRvIHplcm8gYnkg dXNlcnNwYWNlLCB0aGlzIGlzIGZpbGxlZCB3aXRoIHRoZSBzaXplIG9mIHRoZQo+IEBAIC0xNzQ3 LDYgKzE3NDgsNTkgQEAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3RvcG9sb2d5X2luZm8gewo+ICAg CV9fdTggZGF0YVtdOwo+ICAgfTsKPiAgIAo+ICsvKioKPiArICogc3RydWN0IGRybV9pOTE1X2Vu Z2luZV9pbmZvCj4gKyAqCj4gKyAqIERlc2NyaWJlcyBvbmUgZW5naW5lIGtub3duIHRvIHRoZSBk cml2ZXIsIHdoZXRoZXIgb3Igbm90IGl0IGlzIGFuIHVzZXItCj4gKyAqIGFjY2Vzc2libGUgb3Ig aGFyZHdhcmUgb25seSBlbmdpbmUsIGFuZCB3aGF0IGFyZSBpdCdzIGNhcGFiaWxpdGllcyB3aGVy ZQo+ICsgKiBhcHBsaWNhYmxlLgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZv IHsKPiArCS8qKgo+ICsJICogRW5naW5lIGZsYWdzLgo+ICsJICoKPiArCSAqIEk5MTVfRU5HSU5F X0ZMQUdfUEhZU0lDQUwgLSBlbmdpbmUgZXhpc3RzIGluIHRoZSBoYXJkd2FyZQo+ICsJICogSTkx NV9FTkdJTkVfRkxBR19BQkkgLSBlbmdpbmUgY2FuIGJlIHN1Ym1pdHRlZCB0byB2aWEgZXhlY2J1 Zgo+ICsJICovCj4gKwlfX3U2NCBmbGFnczsKPiArI2RlZmluZSBJOTE1X0VOR0lORV9GTEFHX1BI WVNJQ0FMCSgxIDw8IDApCj4gKyNkZWZpbmUgSTkxNV9FTkdJTkVfRkxBR19BQkkJCSgxIDw8IDEp Cj4gKwo+ICsJLyoqIEVuZ2luZSBjbGFzcyBhcyBpbiBlbnVtIGRybV9pOTE1X2dlbV9lbmdpbmVf Y2xhc3MuICovCj4gKwlfX3UxNiBjbGFzczsKPiArCj4gKwkvKiogRW5naW5lIGluc3RhbmNlIG51 bWJlci4gKi8KPiArCV9fdTE2IGluc3RhbmNlOwo+ICsKPiArCS8qKiBSZXNlcnZlZCBmaWVsZCBt dXN0IGJlIGNsZWFyZWQgdG8gemVyby4gKi8KPiArCV9fdTMyIHJzdmQwOwo+ICsKPiArCS8qKiBD YXBhYmlsaXRpZXMgb2YgdGhpcyBlbmdpbmUuICovCj4gKwlfX3U2NCBjYXBhYmlsaXRpZXM7Cj4g KyNkZWZpbmUgSTkxNV9WQ1NfQ0xBU1NfQ0FQQUJJTElUWV9IRVZDCSgxIDw8IDApCj4gKyNkZWZp bmUgSTkxNV9WQ1NfQ0xBU1NfQ0FQQUJJTElUWV9TRkMJKDEgPDwgMSkKPiArCj4gKwkvKiogUmVz ZXJ2ZWQgZmllbGRzIG11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLiAqLwo+ICsJX191NjQgcnN2ZDFb Ml07Cj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9p bmZvCj4gKyAqCj4gKyAqIEVuZ2luZSBpbmZvIHF1ZXJ5IGVudW1lcmF0ZXMgYWxsIGVuZ2luZXMg a25vd24gdG8gdGhlIGRyaXZlciBieSBmaWxsaW5nIGluCj4gKyAqIGFuIGFycmF5IG9mIHN0cnVj dCBkcm1faTkxNV9lbmdpbmVfaW5mbyBzdHJ1Y3R1cmVzLgo+ICsgKi8KPiArc3RydWN0IGRybV9p OTE1X3F1ZXJ5X2VuZ2luZV9pbmZvIHsKPiArCS8qKiBOdW1iZXIgb2Ygc3RydWN0IGRybV9pOTE1 X2VuZ2luZV9pbmZvIHN0cnVjdHMgZm9sbG93aW5nLiAqLwo+ICsJX191MzIgbnVtX2VuZ2luZXM7 Cj4gKwo+ICsJLyoqIE1CWiAqLwo+ICsJX191MzIgcnN2ZFszXTsKPiArCj4gKwkvKiogTWFya2Vy IGZvciBkcm1faTkxNV9lbmdpbmVfaW5mbyBzdHJ1Y3R1cmVzLiAqLwo+ICsJc3RydWN0IGRybV9p OTE1X2VuZ2luZV9pbmZvIGVuZ2luZXNbXTsKPiArfTsKPiArCj4gICAjaWYgZGVmaW5lZChfX2Nw bHVzcGx1cykKPiAgIH0KPiAgICNlbmRpZgo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK