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 1BCC66E0A0 for ; Fri, 5 Apr 2019 08:50:54 +0000 (UTC) References: <20190405010737.19111-1-andi@etezian.org> <20190405010737.19111-8-andi@etezian.org> From: Tvrtko Ursulin Message-ID: <0649f1fc-bb78-9c42-d17a-7ecb6b2c821d@linux.intel.com> Date: Fri, 5 Apr 2019 09:50:46 +0100 MIME-Version: 1.0 In-Reply-To: <20190405010737.19111-8-andi@etezian.org> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v17 7/7] test: perf_pmu: use the 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 List-ID: Ck9uIDA1LzA0LzIwMTkgMDI6MDcsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gRnJvbTogQW5kaSBTaHl0 aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Cj4gCj4gUmVwbGFjZSB0aGUgbGVnYWN5IGZvcl9lYWNo X2VuZ2luZSogZGVmaW5lcyB3aXRoIHRoZSBvbmVzCj4gaW1wbGVtZW50ZWQgaW4gdGhlIGdlbV9l bmdpbmVfdG9wb2xvZ3kgbGlicmFyeS4KPiAKPiBVc2Ugd2hlbmV2ZXIgcG9zc2libGUgZ2VtX2Vu Z2luZV9jYW5fc3RvcmVfZHdvcmQoKSB0aGF0IGNoZWNrcwo+IGNsYXNzIGluc3RlYWQgb2YgZmxh Z3MuCj4gCj4gTm93IHRoZSBfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZSBhbmQKPiBm b3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYXJlIHVudXNlZCwgcmVtb3ZlIHRoZW0uCj4g Cj4gU2lnbmVkLW9mZi1ieTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Cj4gQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4g ICBsaWIvaWd0X2d0LmggICAgIHwgIDcgLS0tLS0tLQo+ICAgdGVzdHMvcGVyZl9wbXUuYyB8IDUz ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgMiBm aWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCj4gaW5kZXggYWY0Y2MzOGExZWY3 Li5jMmNhMDdlMDM3MzggMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9ndC5oCj4gKysrIGIvbGliL2ln dF9ndC5oCj4gQEAgLTExOSwxMSArMTE5LDQgQEAgdm9pZCBnZW1fcmVxdWlyZV9lbmdpbmUoaW50 IGdlbV9mZCwKPiAgIAlpZ3RfcmVxdWlyZShnZW1faGFzX2VuZ2luZShnZW1fZmQsIGNsYXNzLCBp bnN0YW5jZSkpOwo+ICAgfQo+ICAgCj4gLSNkZWZpbmUgX19mb3JfZWFjaF9lbmdpbmVfY2xhc3Nf aW5zdGFuY2UoZV9fKSBcCj4gLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMy OyAoZV9fKS0+bmFtZTsgKGVfXykrKykKPiAtCj4gLSNkZWZpbmUgZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGZkX18sIGVfXykgXAo+IC0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKPiAtCQlmb3JfaWYgKGdlbV9oYXNf ZW5naW5lKChmZF9fKSwgKGVfXyktPmNsYXNzLCAoZV9fKS0+aW5zdGFuY2UpKQo+IC0KPiAgICNl bmRpZiAvKiBJR1RfR1RfSCAqLwo+IGRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVz dHMvcGVyZl9wbXUuYwo+IGluZGV4IDRmNTUyYmMyYWUyOC4uYzk1NGEwZDU0YjcyIDEwMDY0NAo+ IC0tLSBhL3Rlc3RzL3BlcmZfcG11LmMKPiArKysgYi90ZXN0cy9wZXJmX3BtdS5jCj4gQEAgLTE1 OCwxMSArMTU4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtZWFzdXJlZF91c2xlZXAodW5zaWdu ZWQgaW50IHVzZWMpCj4gICAJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnRzKTsKPiAgIH0KPiAg IAo+IC1zdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gLXsKPiAtCXJldHVybiBnZW1fY2xhc3NfaW5z dGFuY2VfdG9fZWJfZmxhZ3MoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwo+IC19Cj4g LQo+ICAgI2RlZmluZSBURVNUX0JVU1kgKDEpCj4gICAjZGVmaW5lIEZMQUdfU1lOQyAoMikKPiAg ICNkZWZpbmUgVEVTVF9UUkFJTElOR19JRExFICg0KQo+IEBAIC0xNzcsNyArMTcyLDcgQEAgc3Rh dGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWdu ZWQgbG9uZyBmbGFncykKPiAgIAkJLmVuZ2luZSA9IGZsYWdzLAo+ICAgCX07Cj4gICAKPiAtCWlm IChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCj4gKwlpZiAoZ2VtX2NsYXNzX2Nhbl9z dG9yZV9kd29yZChmZCwgZmxhZ3MpKQoKZmxhZ3MgaXMgbm90IGEgY2xhc3MgaGVyZSBidXQgZWl0 aGVyIGxlZ2FjeSBlYiBmbGFncyBvciBlbmdpbmUgbWFwIGluZGV4LgoKSSB0aGluayB5b3UgY2Fu IHJlZmFjdG9yIHNvIHRoaXMgZnVuY3Rpb24gKGFuZCB0aGUgY2hhaW4gb2YgY2FsbGVycykgCnRh a2VzIGEgcG9pbnRlciB0byBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBhbmQgdGhlbiB1c2UgY2xh c3MgYW5kIGZsYWdzIAphcyBuZWVkZWQuCgpUaGUgcmVzdCBsb29rcyBva2F5IG9uIGEgcXVpY2sg cmVhZCB0aHJvdWdoLgoKUmVnYXJkcywKClR2cnRrbwoKPiAgIAkJb3B0cy5mbGFncyB8PSBJR1Rf U1BJTl9QT0xMX1JVTjsKPiAgIAo+ICAgCXJldHVybiBfX2lndF9zcGluX2JhdGNoX2ZhY3Rvcnko ZmQsICZvcHRzKTsKPiBAQCAtMjY3LDcgKzI2Miw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykK PiAgIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0 YW5jZSkpOwo+ICAgCj4gICAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQo+IC0JCXNwaW4gPSBzcGlu X3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwkJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUtPmZsYWdzKTsKPiAgIAllbHNlCj4gICAJCXNwaW4gPSBOVUxMOwo+ICAg Cj4gQEAgLTMxNiw3ICszMTEsNyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIAkgKi8KPiAgIAlzbGVlcCgyKTsKPiAg IAo+IC0Jc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwo+ ICsJc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZS0+ZmxhZ3MpOwo+ICAgCj4gICAJZmQg PSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsK PiAgIAo+IEBAIC0zNTksMTEgKzM1NCwxMSBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gICAJICogcmUtc3Vi bWlzc2lvbiBpbiBleGVjbGlzdHMgbW9kZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3Rs eQo+ICAgCSAqIHJlcG9ydGVkIHdpdGggdGhlIGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVu Z2luZSB3ZW50IGlkbGUuCj4gICAJICovCj4gLQlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2Zk LCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2Zk LCAwLCBlLT5mbGFncyk7Cj4gICAJdXNsZWVwKDUwMGUzKTsKPiAgIAlzcGluWzFdID0gX19pZ3Rf c3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAo+ICAgCQkJCSAgICAgICAuY3R4ID0gY3R4LAo+IC0JCQkJ ICAgICAgIC5lbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwkJCQkgICAgICAgLmVuZ2lu ZSA9IGUtPmZsYWdzKTsKPiAgIAo+ICAgCS8qCj4gICAJICogT3BlbiBQTVUgYXMgZmFzdCBhcyBw b3NzaWJsZSBhZnRlciB0aGUgc2Vjb25kIHNwaW4gYmF0Y2ggaW4gYXR0ZW1wdAo+IEBAIC00MzQs OCArNDI5LDggQEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAo+ICAgCj4gICAJaSA9IDA7Cj4gICAJZmRbMF0gPSAtMTsK PiAtCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Cj4gLQkJaWYg KGUgPT0gZV8pCj4gKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGVfKSB7Cj4g KwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFu Y2UpCj4gICAJCQlidXN5X2lkeCA9IGk7Cj4gICAKPiAgIAkJZmRbaSsrXSA9IG9wZW5fZ3JvdXAo STkxNV9QTVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLAo+IEBAIC00NDUsNyArNDQwLDcgQEAgYnVz eV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAo+ICAgCj4gICAJaWd0X2Fzc2VydF9lcShpLCBudW1fZW5naW5lcyk7Cj4gICAKPiAt CXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwlzcGlu ID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZS0+ZmxhZ3MpOwo+ICAgCXBtdV9yZWFkX211bHRpKGZk WzBdLCBudW1fZW5naW5lcywgdHZhbFswXSk7Cj4gICAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAo YmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKPiAgIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5H X0lETEUpCj4gQEAgLTQ3OCw3ICs0NzMsNyBAQCBfX3N1Ym1pdF9zcGluX2JhdGNoKGludCBnZW1f ZmQsIGlndF9zcGluX3QgKnNwaW4sCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiBlYiA9IHNwaW4tPmV4ZWNidWY7Cj4gICAKPiAgIAllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1 X0VYRUNfQlNEX01BU0spOwo+IC0JZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1 X0VYRUNfTk9fUkVMT0M7Cj4gKwllYi5mbGFncyB8PSBlLT5mbGFncyB8IEk5MTVfRVhFQ19OT19S RUxPQzsKPiAgIAllYi5iYXRjaF9zdGFydF9vZmZzZXQgKz0gb2Zmc2V0Owo+ICAgCj4gICAJZ2Vt X2V4ZWNidWYoZ2VtX2ZkLCAmZWIpOwo+IEBAIC00OTcsMTMgKzQ5MiwxMyBAQCBtb3N0X2J1c3lf Y2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwKPiAgIAl1bnNpZ25lZCBpbnQgaWRsZV9pZHgsIGk7Cj4gICAKPiAgIAlpID0gMDsKPiAt CWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Cj4gLQkJaWYgKGUg PT0gZV8pCj4gKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGVfKSB7Cj4gKwkJ aWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2Up Cj4gICAJCQlpZGxlX2lkeCA9IGk7Cj4gICAJCWVsc2UgaWYgKHNwaW4pCj4gICAJCQlfX3N1Ym1p dF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsKPiAgIAkJZWxzZQo+IC0JCQlzcGlu ID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOwo+ICsJCQlzcGlu ID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlLT5mbGFncyk7Cj4gICAKPiAgIAkJdmFsW2krK10g PSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlXy0+Y2xhc3MsIGVfLT5pbnN0YW5jZSk7Cj4gICAJfQo+ IEBAIC01NTQsMTEgKzU0OSwxMSBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29u c3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAo+ICAgCXVuc2lnbmVkIGludCBpOwo+ICAgCj4g ICAJaSA9IDA7Cj4gLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlKSB7 Cj4gKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGUpIHsKPiAgIAkJaWYgKHNw aW4pCj4gICAJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZSwgNjQpOwo+ICAg CQllbHNlCj4gLQkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQs IGUpKTsKPiArCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZS0+ZmxhZ3MpOwo+ICAg Cj4gICAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3Rh bmNlKTsKPiAgIAl9Cj4gQEAgLTYwMiw3ICs1OTcsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdz KQo+ICAgCW9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5FX1dBSVQoZS0+Y2xhc3MsIGUtPmluc3Rh bmNlKSwgZmQpOwo+ICAgCj4gICAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQo+IC0JCXNwaW4gPSBz cGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwkJc3BpbiA9IHNwaW5f c3luYyhnZW1fZmQsIDAsIGUtPmZsYWdzKTsKPiAgIAllbHNlCj4gICAJCXNwaW4gPSBOVUxMOwo+ ICAgCj4gQEAgLTY4OSw3ICs2ODQsNyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAo+ICAgCj4gICAJZWIuYnVmZmVyX2NvdW50 ID0gMjsKPiAgIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwo+IC0JZWIu ZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKPiArCWViLmZsYWdzID0gZS0+ZmxhZ3M7Cj4gICAK PiAgIAkvKioKPiAgIAkgKiBTdGFydCB0aGUgc2VtYXBob3JlIHdhaXQgUE1VIGFuZCBhZnRlciBz b21lIGtub3duIHRpbWUgbGV0IHRoZSBhYm92ZQo+IEBAIC04NDUsNyArODQwLDcgQEAgZXZlbnRf d2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp Cj4gICAKPiAgIAllYi5idWZmZXJfY291bnQgPSAxOwo+ICAgCWViLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKCZvYmopOwo+IC0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSB8IEk5 MTVfRVhFQ19TRUNVUkU7Cj4gKwllYi5mbGFncyA9IGUtPmZsYWdzIHwgSTkxNV9FWEVDX1NFQ1VS RTsKPiAgIAo+ICAgCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoJmRhdGEuZGlzcGxh eSwgcCwgb3V0cHV0KSB7Cj4gICAJCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3Mgd2FpdGVyID0g eyB9Owo+IEBAIC05MzYsNyArOTMxLDcgQEAgbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIAkgKi8KPiAgIAlmZFsxXSA9 IG9wZW5fcG11KGNvbmZpZyk7Cj4gICAKPiAtCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBl MnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZS0+Zmxh Z3MpOwo+ICAgCj4gICAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmRbMF0s ICZ0c1swXSk7Cj4gICAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25f bnMgLyAxMDAwKTsKPiBAQCAtMTQ2NSw3ICsxNDYwLDcgQEAgdGVzdF9lbmFibGVfcmFjZShpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gICAKPiAg IAllYi5idWZmZXJfY291bnQgPSAxOwo+ICAgCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2lu dGVyKCZvYmopOwo+IC0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKPiArCWViLmZsYWdz ID0gZS0+ZmxhZ3M7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIFRoaXMgdGVzdCBpcyBwcm9iYWJpbGlz dGljIHNvIHJ1biBpbiBhIGZldyB0aW1lcyB0byBpbmNyZWFzZSB0aGUKPiBAQCAtMTU3MCw3ICsx NTY1LDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAo+ICAgCQlpZ3Rfc3Bpbl90ICpzcGluOwo+ICAgCj4gICAJCS8qIEFsbG9j YXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwo+IC0JCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAuZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSkpOwo+ICsJCXNwaW4g PSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAuZW5naW5lID0gZS0+ZmxhZ3MpOwo+ICAgCQlp Z3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7Cj4gICAJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFu ZGxlKTsKPiAgIAo+IEBAIC0xNjc0LDcgKzE2NjksNyBAQCBpZ3RfbWFpbgo+ICAgCQkJCUk5MTVf UE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVSKDApICsgMTsKPiAgIAl1bnNpZ25lZCBpbnQgbnVt X2VuZ2luZXMgPSAwOwo+ICAgCWludCBmZCA9IC0xOwo+IC0JY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplOwo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl Owo+ICAgCXVuc2lnbmVkIGludCBpOwo+ICAgCj4gICAJaWd0X2ZpeHR1cmUgewo+IEBAIC0xNjgz LDcgKzE2NzgsNyBAQCBpZ3RfbWFpbgo+ICAgCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwo+ICAgCQlp Z3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwo+ICAgCj4gLQkJZm9yX2VhY2hfZW5naW5l X2NsYXNzX2luc3RhbmNlKGZkLCBlKQo+ICsJCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZk LCBlKQo+ICAgCQkJbnVtX2VuZ2luZXMrKzsKPiAgIAl9Cj4gICAKPiBAQCAtMTY5Myw3ICsxNjg4 LDcgQEAgaWd0X21haW4KPiAgIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1pbml0IikKPiAgIAkJaW52 YWxpZF9pbml0KCk7Cj4gICAKPiAtCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUp IHsKPiArCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Cj4gICAJCWNvbnN0IHVu c2lnbmVkIGludCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07Cj4gICAKPiAgIAkJLyoqCj4gQEAgLTE4 OTcsNyArMTg5Miw3IEBAIGlndF9tYWluCj4gICAJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4g ICAJCX0KPiAgIAo+IC0JCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKPiAr CQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZSkgewo+ICAgCQkJaWd0X3N1YnRlc3Rf Z3JvdXAgewo+ICAgCQkJCWlndF9maXh0dXJlIHsKPiAgIAkJCQkJZ2VtX3JlcXVpcmVfZW5naW5l KHJlbmRlcl9mZCwKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2