From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09A508930C for ; Wed, 15 May 2019 12:09:01 +0000 (UTC) From: Andi Shyti Date: Wed, 15 May 2019 15:08:53 +0300 Message-Id: <20190515120853.3761-1-andi.shyti@intel.com> In-Reply-To: <20190513175613.2507-7-andi.shyti@intel.com> References: <20190513175613.2507-7-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v25 6/14] test: perf_pmu: use the gem_engine_topology library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: IGT dev Cc: Andi Shyti List-ID: UmVwbGFjZSB0aGUgbGVnYWN5IGZvcl9lYWNoX2VuZ2luZSogZGVmaW5lcyB3aXRoIHRoZSBvbmVz CmltcGxlbWVudGVkIGluIHRoZSBnZW1fZW5naW5lX3RvcG9sb2d5IGxpYnJhcnkuCgpVc2Ugd2hl bmV2ZXIgcG9zc2libGUgZ2VtX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoKSB0aGF0IGNoZWNrcwpj bGFzcyBpbnN0ZWFkIG9mIGZsYWdzLgoKTm93IHRoZSBfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19p bnN0YW5jZSBhbmQKZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlIGFyZSB1bnVzZWQsIHJl bW92ZSB0aGVtLgoKU3VnZ2VzdGVkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGludGVsLmNv bT4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+ClJl dmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0K djI0IC0tPiB2MjUgY2hhbmdlbG9nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQppbiBjcHVfaG90cGx1 ZygpLCB0ZXN0X2ludGVycnVwdHMoKSBhbmQgdGVzdF9mcmVxdWVuY3koKQpJOTE1X0VYRUNfUkVO REVSIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IEk5MTVfRVhFQ19ERUZBVUxULgoKIGxpYi9pZ3RfZ3Qu aCAgICAgfCAgIDcgLS0tCiB0ZXN0cy9wZXJmX3BtdS5jIHwgMTEwICsrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDYwIGluc2Vy dGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZ3QuaCBiL2xp Yi9pZ3RfZ3QuaAppbmRleCAwYjVjN2ZjYjRjM2MuLjc3MzE4ZTJhODJiOCAxMDA2NDQKLS0tIGEv bGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtMTE5LDExICsxMTksNCBAQCB2b2lk IGdlbV9yZXF1aXJlX2VuZ2luZShpbnQgZ2VtX2ZkLAogCWlndF9yZXF1aXJlKGdlbV9oYXNfZW5n aW5lKGdlbV9mZCwgY2xhc3MsIGluc3RhbmNlKSk7CiB9CiAKLSNkZWZpbmUgX19mb3JfZWFjaF9l bmdpbmVfY2xhc3NfaW5zdGFuY2UoZV9fKSBcCi0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspCi0KLSNkZWZpbmUgZm9yX2VhY2hfZW5n aW5lX2NsYXNzX2luc3RhbmNlKGZkX18sIGVfXykgXAotCWZvciAoKGVfXykgPSBpbnRlbF9leGVj dXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKSBcCi0JCWZvcl9pZiAoZ2VtX2hh c19lbmdpbmUoKGZkX18pLCAoZV9fKS0+Y2xhc3MsIChlX18pLT5pbnN0YW5jZSkpCi0KICNlbmRp ZiAvKiBJR1RfR1RfSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvcGVyZl9wbXUuYyBiL3Rlc3RzL3Bl cmZfcG11LmMKaW5kZXggZTcxOWEyOTJhM2QxLi43MmI5MTY2YWZiNGMgMTAwNjQ0Ci0tLSBhL3Rl c3RzL3BlcmZfcG11LmMKKysrIGIvdGVzdHMvcGVyZl9wbXUuYwpAQCAtODIsNyArODIsNyBAQCBp bml0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwg dWludDhfdCBzYW1wbGUpCiAJaWYgKGZkIDwgMCkKIAkJZXJyID0gZXJybm87CiAKLQlleGlzdHMg PSBnZW1faGFzX2VuZ2luZShnZW1fZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CisJZXhpc3Rz ID0gZ2VtX2NvbnRleHRfaGFzX2VuZ2luZShnZW1fZmQsIDAsIGUtPmZsYWdzKTsKIAlpZiAoaW50 ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZ2VtX2ZkKSkgPCA2ICYmCiAJICAgIHNhbXBsZSA9 PSBJOTE1X1NBTVBMRV9TRU1BKQogCQlleGlzdHMgPSBmYWxzZTsKQEAgLTE1OCwxMSArMTU4LDYg QEAgc3RhdGljIHVuc2lnbmVkIGludCBtZWFzdXJlZF91c2xlZXAodW5zaWduZWQgaW50IHVzZWMp CiAJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnRzKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGlu dCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQotewotCXJldHVybiBnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3MoZ2VtX2ZkLCBl LT5jbGFzcywgZS0+aW5zdGFuY2UpOwotfQotCiAjZGVmaW5lIFRFU1RfQlVTWSAoMSkKICNkZWZp bmUgRkxBR19TWU5DICgyKQogI2RlZmluZSBURVNUX1RSQUlMSU5HX0lETEUgKDQpCkBAIC0xNzAs MTQgKzE2NSwxNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAjZGVmaW5lIEZMQUdfTE9ORyAo MTYpCiAjZGVmaW5lIEZMQUdfSEFORyAoMzIpCiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGlu X3BvbGwoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMg aWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LAorCQkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3QgaWd0X3NwaW5f ZmFjdG9yeSBvcHRzID0gewogCQkuY3R4ID0gY3R4LAotCQkuZW5naW5lID0gZmxhZ3MsCisJCS5l bmdpbmUgPSBlLT5mbGFncywKIAl9OwogCi0JaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGZs YWdzKSkKKwlpZiAoZ2VtX2NsYXNzX2Nhbl9zdG9yZV9kd29yZChmZCwgZS0+Y2xhc3MpKQogCQlv cHRzLmZsYWdzIHw9IElHVF9TUElOX1BPTExfUlVOOwogCiAJcmV0dXJuIF9faWd0X3NwaW5fZmFj dG9yeShmZCwgJm9wdHMpOwpAQCAtMjA5LDIwICsyMDUsMzQgQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgX19zcGluX3dhaXQoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQogCXJldHVybiBpZ3RfbnNl Y19lbGFwc2VkKCZzdGFydCk7CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3N5bmMo aW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaWd0X3Nw aW5fdCAqIF9fc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LAorCQkJCWNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gX19z cGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9s bChmZCwgY3R4LCBlKTsKIAogCV9fc3Bpbl93YWl0KGZkLCBzcGluKTsKIAogCXJldHVybiBzcGlu OwogfQogCi1zdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0 eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jKGlu dCBmZCwgdWludDMyX3QgY3R4LAorCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogewogCWlndF9yZXF1aXJlX2dlbShmZCk7CiAKLQlyZXR1cm4gX19zcGlu X3N5bmMoZmQsIGN0eCwgZmxhZ3MpOworCXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBlKTsK K30KKworc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5bmNfZmxhZ3MoaW50IGZkLCB1aW50MzJf dCBjdHgsIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgZSA9IHsgfTsKKworCWUuY2xhc3MgPSBnZW1fZXhlY2J1Zl9mbGFnc190b19lbmdpbmVf Y2xhc3MoZmxhZ3MpOworCWUuaW5zdGFuY2UgPSAoZmxhZ3MgJiAoSTkxNV9FWEVDX0JTRF9NQVNL IHwgSTkxNV9FWEVDX1JJTkdfTUFTSykpID09CisJCSAgICAgKEk5MTVfRVhFQ19CU0QgfCBJOTE1 X0VYRUNfQlNEX1JJTkcyKSA/IDEgOiAwOworCWUuZmxhZ3MgPSBmbGFnczsKKworCXJldHVybiBz cGluX3N5bmMoZmQsIGN0eCwgJmUpOwogfQogCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQs IGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBmbGFncykKQEAgLTI2Nyw3ICsyNzcsNyBA QCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVf QlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkK LQkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3Bp biA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAg LTMxNiw3ICszMjYsNyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAkgKi8KIAlzbGVlcCgyKTsKIAotCXNwaW4gPSBfX3Nw aW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gX19zcGluX3N5 bmMoZ2VtX2ZkLCAwLCBlKTsKIAogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1ko ZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CiAKQEAgLTM0Nyw2ICszNTcsNyBAQCBidXN5X2RvdWJs ZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUpCiAJaW50IGZkOwogCiAJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdlbV9mZCk7CisJZ2Vt X2NvbnRleHRfc2V0X2FsbF9lbmdpbmVzKGdlbV9mZCwgY3R4KTsKIAogCS8qCiAJICogRGVmZWF0 IHRoZSBidXN5IHN0YXRzIGRlbGF5ZWQgZGlzYWJsZSwgd2UgbmVlZCB0byBndWFyYW50ZWUgd2Ug YXJlCkBAIC0zNTksMTEgKzM3MCwxMSBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICogcmUtc3VibWlzc2lv biBpbiBleGVjbGlzdHMgbW9kZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3RseQogCSAq IHJlcG9ydGVkIHdpdGggdGhlIGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVuZ2luZSB3ZW50 IGlkbGUuCiAJICovCi0Jc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdl bV9mZCwgZSkpOworCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCXVzbGVl cCg1MDBlMyk7CiAJc3BpblsxXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKIAkJCQkgLmN0eCA9 IGN0eCwKLQkJCQkgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJCQkgLmVuZ2luZSA9 IGUtPmZsYWdzKTsKIAogCS8qCiAJICogT3BlbiBQTVUgYXMgZmFzdCBhcyBwb3NzaWJsZSBhZnRl ciB0aGUgc2Vjb25kIHNwaW4gYmF0Y2ggaW4gYXR0ZW1wdApAQCAtNDI0LDcgKzQzNSw3IEBAIHN0 YXRpYyB2b2lkCiBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5n aW5lcywgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZV87CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKIAl1 aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1bnNpZ25lZCBpbnQgYnVzeV9pZHggPSAw LCBpOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CkBAIC00MzQsOCArNDQ1LDggQEAgYnVz eV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAogCiAJaSA9IDA7CiAJZmRbMF0gPSAtMTsKLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3Nf aW5zdGFuY2UoZ2VtX2ZkLCBlXykgewotCQlpZiAoZSA9PSBlXykKKwlfX2Zvcl9lYWNoX3BoeXNp Y2FsX2VuZ2luZShnZW1fZmQsIGVfKSB7CisJCWlmIChlLT5jbGFzcyA9PSBlXy0+Y2xhc3MgJiYg ZS0+aW5zdGFuY2UgPT0gZV8tPmluc3RhbmNlKQogCQkJYnVzeV9pZHggPSBpOwogCiAJCWZkW2kr K10gPSBvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywKQEAgLTQ0NSw3 ICs0NTYsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpZ3RfYXNzZXJ0X2VxKGksIG51bV9lbmdpbmVzKTsK IAotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3Bp biA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1f ZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00Nzgs NyArNDg5LDcgQEAgX19zdWJtaXRfc3BpbihpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAog CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSBzcGluLT5leGVjYnVmOwogCiAJ ZWIuZmxhZ3MgJj0gfigweDNmIHwgSTkxNV9FWEVDX0JTRF9NQVNLKTsKLQllYi5mbGFncyB8PSBl MnJpbmcoZ2VtX2ZkLCBlKSB8IEk5MTVfRVhFQ19OT19SRUxPQzsKKwllYi5mbGFncyB8PSBlLT5m bGFncyB8IEk5MTVfRVhFQ19OT19SRUxPQzsKIAllYi5iYXRjaF9zdGFydF9vZmZzZXQgKz0gb2Zm c2V0OwogCiAJZ2VtX2V4ZWNidWYoZ2VtX2ZkLCAmZWIpOwpAQCAtNDg4LDcgKzQ5OSw3IEBAIHN0 YXRpYyB2b2lkCiBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1f ZW5naW5lcywgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZV87CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsK IAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2lu ZXNdOwogCWludCBmZFtudW1fZW5naW5lc107CkBAIC00OTcsMTMgKzUwOCwxMyBAQCBtb3N0X2J1 c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSwKIAl1bnNpZ25lZCBpbnQgaWRsZV9pZHgsIGk7CiAKIAlpID0gMDsKLQlmb3JfZWFj aF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlXykgewotCQlpZiAoZSA9PSBlXykKKwlf X2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGVfKSB7CisJCWlmIChlLT5jbGFzcyA9 PSBlXy0+Y2xhc3MgJiYgZS0+aW5zdGFuY2UgPT0gZV8tPmluc3RhbmNlKQogCQkJaWRsZV9pZHgg PSBpOwogCQllbHNlIGlmIChzcGluKQogCQkJX19zdWJtaXRfc3BpbihnZW1fZmQsIHNwaW4sIGVf LCA2NCk7CiAJCWVsc2UKLQkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhn ZW1fZmQsIGVfKSk7CisJCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlXyk7CiAKIAkJ dmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlXy0+Y2xhc3MsIGVfLT5pbnN0YW5jZSk7 CiAJfQpAQCAtNTQ1LDcgKzU1Niw3IEBAIHN0YXRpYyB2b2lkCiBhbGxfYnVzeV9jaGVja19hbGwo aW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCQkgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl OworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKIAl1aW50NjRfdCB0dmFsWzJd W251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2luZXNdOwogCWludCBmZFtudW1f ZW5naW5lc107CkBAIC01NTQsMTEgKzU2NSwxMSBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdl bV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCXVuc2lnbmVkIGludCBpOwog CiAJaSA9IDA7Ci0JZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZSkgewor CV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZSkgewogCQlpZiAoc3BpbikKIAkJ CV9fc3VibWl0X3NwaW4oZ2VtX2ZkLCBzcGluLCBlLCA2NCk7CiAJCWVsc2UKLQkJCXNwaW4gPSBf X3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJCXNwaW4gPSBfX3Nw aW5fcG9sbChnZW1fZmQsIDAsIGUpOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5FX0JV U1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKIAl9CkBAIC02MDIsNyArNjEzLDcgQEAgbm9fc2Vt YShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVu c2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9XQUlUKGUtPmNs YXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3Bp biA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNw aW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTY4OSw3 ICs3MDAsNyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplLAogCiAJZWIuYnVmZmVyX2NvdW50ID0gMjsKIAllYi5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7 CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8qKgogCSAqIFN0YXJ0IHRoZSBzZW1hcGhvcmUg d2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25vd24gdGltZSBsZXQgdGhlIGFib3ZlCkBAIC04NDUs NyArODU2LDcgQEAgZXZlbnRfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUpCiAKIAllYi5idWZmZXJfY291bnQgPSAxOwogCWViLmJ1ZmZlcnNf cHRyID0gdG9fdXNlcl9wb2ludGVyKCZvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwg ZSkgfCBJOTE1X0VYRUNfU0VDVVJFOworCWViLmZsYWdzID0gZS0+ZmxhZ3MgfCBJOTE1X0VYRUNf U0VDVVJFOwogCiAJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dCgmZGF0YS5kaXNwbGF5 LCBwLCBvdXRwdXQpIHsKIAkJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyB3YWl0ZXIgPSB7IH07 CkBAIC05MzYsNyArOTQ3LDcgQEAgbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAkgKi8KIAlmZFsxXSA9IG9wZW5fcG11KGNv bmZpZyk7CiAKLQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkp OworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlKTsKIAogCXZhbFswXSA9IHZhbFsxXSA9 IF9fcG11X3JlYWRfc2luZ2xlKGZkWzBdLCAmdHNbMF0pOwogCXNsZXB0WzFdID0gbWVhc3VyZWRf dXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xMDUyLDggKzEwNjMsOCBAQCBz dGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCSAqIENyZWF0ZSB0d28gc3Bpbm5l cnMgc28gdGVzdCBjYW4gZW5zdXJlIHNob3J0ZXIgZ2FwcyBpbiBlbmdpbmUKIAkgKiBidXN5bmVz cyBhcyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUgYW5kIHJlLXN0YXJ0aW5nIHRoZSBvdGhlci4KIAkg Ki8KLQlzcGluWzBdID0gaWd0X3NwaW5fbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19S RU5ERVIpOwotCXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1 X0VYRUNfUkVOREVSKTsKKwlzcGluWzBdID0gaWd0X3NwaW5fbmV3KGdlbV9mZCwgLmVuZ2luZSA9 IEk5MTVfRVhFQ19ERUZBVUxUKTsKKwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAu ZW5naW5lID0gSTkxNV9FWEVDX0RFRkFVTFQpOwogCiAJdmFsID0gX19wbXVfcmVhZF9zaW5nbGUo ZmQsICZ0c1swXSk7CiAKQEAgLTExMzcsNyArMTE0OCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3Rw bHVnKGludCBnZW1fZmQpCiAKIAkJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW5bY3VyXSk7CiAJ CXNwaW5bY3VyXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKLQkJCQkJICAgLmVuZ2luZSA9IEk5 MTVfRVhFQ19SRU5ERVIpOworCQkJCQkgICAuZW5naW5lID0gSTkxNV9FWEVDX0RFRkFVTFQpOwog CQljdXIgXj0gMTsKIAl9CiAKQEAgLTExNzUsNyArMTE4Niw3IEBAIHRlc3RfaW50ZXJydXB0cyhp bnQgZ2VtX2ZkKQogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCB0YXJnZXQ7IGkrKykgewogCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9uZXcoZ2VtX2Zk LAotCQkJCQkgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIsCisJCQkJCSAuZW5naW5lID0gSTkx NV9FWEVDX0RFRkFVTFQsCiAJCQkJCSAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwogCQlp ZiAoaSA9PSAwKSB7CiAJCQlmZW5jZV9mZCA9IHNwaW5baV0tPm91dF9mZW5jZTsKQEAgLTEzMDEs NyArMTMxMiw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0 X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9mcmVxX21oeiIpID09IG1pbl9mcmVxKTsK IAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUgY2hh bmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VY RUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgMCwgSTkxNV9FWEVD X0RFRkFVTFQpOwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1l YXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTMyNyw3ICsxMzM4 LDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNf Z2V0X3UzMihzeXNmcywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAogCWdlbV9x dWllc2NlbnRfZ3B1KGdlbV9mZCk7Ci0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVf RVhFQ19SRU5ERVIpOworCXNwaW4gPSBzcGluX3N5bmNfZmxhZ3MoZ2VtX2ZkLCAwLCBJOTE1X0VY RUNfREVGQVVMVCk7CiAKIAlzbGVwdCA9IHBtdV9yZWFkX211bHRpKGZkLCAyLCBzdGFydCk7CiAJ bWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xNDU4LDE0ICsx NDY5LDE0IEBAIHRlc3RfZW5hYmxlX3JhY2UoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCWludCBmZDsKIAogCWlndF9yZXF1aXJlKGdlbV9oYXNf ZXhlY2xpc3RzKGdlbV9mZCkpOwotCWlndF9yZXF1aXJlKGdlbV9oYXNfZW5naW5lKGdlbV9mZCwg ZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CisJaWd0X3JlcXVpcmUoZ2VtX2NvbnRleHRfaGFzX2Vu Z2luZShnZW1fZmQsIDAsIGUtPmZsYWdzKSk7CiAKIAlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZShn ZW1fZmQsIDQwOTYpOwogCWdlbV93cml0ZShnZW1fZmQsIG9iai5oYW5kbGUsIDAsICZiYmVuZCwg c2l6ZW9mKGJiZW5kKSk7CiAKIAllYi5idWZmZXJfY291bnQgPSAxOwogCWViLmJ1ZmZlcnNfcHRy ID0gdG9fdXNlcl9wb2ludGVyKCZvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7 CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8qCiAJICogVGhpcyB0ZXN0IGlzIHByb2JhYmls aXN0aWMgc28gcnVuIGluIGEgZmV3IHRpbWVzIHRvIGluY3JlYXNlIHRoZQpAQCAtMTU2Miw3ICsx NTczLDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCiAJCS8qIEFsbG9jYXRlIG91ciBz cGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3NwaW5fbmV3KGdlbV9mZCwg LmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IGlndF9zcGluX25ldyhnZW1f ZmQsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWlndF9zcGluX2VuZChzcGluKTsKIAkJZ2VtX3N5 bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCkBAIC0xNjY2LDcgKzE2NzcsNyBAQCBpZ3RfbWFp bgogCQkJCUk5MTVfUE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVSKDApICsgMTsKIAl1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwogCWludCBmZCA9IC0xOwotCWNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmU7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZ3RfZml4dHVyZSB7CkBAIC0xNjc1LDcgKzE2ODYs NyBAQCBpZ3RfbWFpbgogCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCQlpZ3RfcmVxdWlyZShpOTE1 X3R5cGVfaWQoKSA+IDApOwogCi0JCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwg ZSkKKwkJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUpCiAJCQludW1fZW5naW5lcysr OwogCX0KIApAQCAtMTY4NSw3ICsxNjk2LDcgQEAgaWd0X21haW4KIAlpZ3Rfc3VidGVzdCgiaW52 YWxpZC1pbml0IikKIAkJaW52YWxpZF9pbml0KCk7CiAKLQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFz c19pbnN0YW5jZShlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUpIHsKIAkJ Y29uc3QgdW5zaWduZWQgaW50IHBjdFtdID0geyAyLCA1MCwgOTggfTsKIAogCQkvKioKQEAgLTE3 MDMsNyArMTcxNCw3IEBAIGlndF9tYWluCiAKIAkJaWd0X3N1YnRlc3RfZ3JvdXAgewogCQkJaWd0 X2ZpeHR1cmUgewotCQkJCWdlbV9yZXF1aXJlX2VuZ2luZShmZCwgZS0+Y2xhc3MsIGUtPmluc3Rh bmNlKTsKKwkJCQlnZW1fY29udGV4dF9oYXNfZW5naW5lKGZkLCAwLCBlLT5mbGFncyk7CiAJCQl9 CiAKIAkJCS8qKgpAQCAtMTg4OSwxMiArMTkwMCwxMSBAQCBpZ3RfbWFpbgogCQkJZ2VtX3F1aWVz Y2VudF9ncHUoZmQpOwogCQl9CiAKLQkJX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Uo ZSkgeworCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShyZW5kZXJfZmQsIGUpIHsKIAkJCWln dF9zdWJ0ZXN0X2dyb3VwIHsKIAkJCQlpZ3RfZml4dHVyZSB7Ci0JCQkJCWdlbV9yZXF1aXJlX2Vu Z2luZShyZW5kZXJfZmQsCi0JCQkJCQkJICAgZS0+Y2xhc3MsCi0JCQkJCQkJICAgZS0+aW5zdGFu Y2UpOworCQkJCQlnZW1fY29udGV4dF9oYXNfZW5naW5lKHJlbmRlcl9mZCwKKwkJCQkJCQkgICAw LCBlLT5mbGFncyk7CiAJCQkJfQogCiAJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVyLW5vZGUtYnVz eS0lcyIsIGUtPm5hbWUpCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaWd0LWRldg==