From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id A53A1892AD for ; Mon, 8 Apr 2019 16:15:50 +0000 (UTC) From: Andi Shyti Date: Mon, 8 Apr 2019 19:15:33 +0300 Message-Id: <20190408161533.2421-7-andi.shyti@intel.com> In-Reply-To: <20190408161533.2421-1-andi.shyti@intel.com> References: <20190408161533.2421-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v19 6/6] 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+Ci0t LQogbGliL2lndF9ndC5oICAgICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11LmMgfCAxNDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgODggaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGli L2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IGFmNGNjMzhhMWVmNy4uYzJjYTA3ZTAzNzM4 IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC0xMTksMTEg KzExOSw0IEBAIHZvaWQgZ2VtX3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQsCiAJaWd0X3JlcXVp cmUoZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsKIH0KIAotI2RlZmlu ZSBfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlmb3IgKChlX18pID0g aW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKLQotI2RlZmlu ZSBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCi0JZm9yICgoZV9f KSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKLQkJ Zm9yX2lmIChnZW1faGFzX2VuZ2luZSgoZmRfXyksIChlX18pLT5jbGFzcywgKGVfXyktPmluc3Rh bmNlKSkKLQogI2VuZGlmIC8qIElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3Bt dS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRleCA0ZjU1MmJjMmFlMjguLmE4ODliNTUyMjM2ZCAx MDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC03 Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQgb3Blbl9ncm91cCh1aW50NjRfdCBjb25maWcsIGludCBn cm91cCkKIH0KIAogc3RhdGljIHZvaWQKLWluaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKK2luaXQoaW50IGdlbV9m ZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKIHsK IAlpbnQgZmQsIGVyciA9IDA7CiAJYm9vbCBleGlzdHM7CkBAIC0xNTgsMTEgKzE1OCw2IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgbWVhc3VyZWRfdXNsZWVwKHVuc2lnbmVkIGludCB1c2VjKQogCXJl dHVybiBpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgZTJy aW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkK LXsKLQlyZXR1cm4gZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGdlbV9mZCwgZS0+Y2xh c3MsIGUtPmluc3RhbmNlKTsKLX0KLQogI2RlZmluZSBURVNUX0JVU1kgKDEpCiAjZGVmaW5lIEZM QUdfU1lOQyAoMikKICNkZWZpbmUgVEVTVF9UUkFJTElOR19JRExFICg0KQpAQCAtMTcwLDE0ICsx NjUsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQog I2RlZmluZSBGTEFHX0hBTkcgKDMyKQogCi1zdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xs KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGljIGlndF9z cGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCQlzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJc3RydWN0IGlndF9zcGluX2ZhY3Rvcnkgb3B0 cyA9IHsKIAkJLmN0eCA9IGN0eCwKLQkJLmVuZ2luZSA9IGZsYWdzLAorCQkuZW5naW5lID0gZS0+ ZmxhZ3MsCiAJfTsKIAotCWlmIChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJaWYg KGdlbV9jbGFzc19jYW5fc3RvcmVfZHdvcmQoZmQsIGUtPmNsYXNzKSkKIAkJb3B0cy5mbGFncyB8 PSBJR1RfU1BJTl9QT0xMX1JVTjsKIAogCXJldHVybiBfX2lndF9zcGluX2JhdGNoX2ZhY3Rvcnko ZmQsICZvcHRzKTsKQEAgLTIwOSwyMCArMjA1LDM0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9f c3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKIAlyZXR1cm4gaWd0X25zZWNfZWxh cHNlZCgmc3RhcnQpOwogfQogCi1zdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9zeW5jKGludCBm ZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGljIGlndF9zcGluX3Qg KiBfX3NwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCQlzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUpCiB7Ci0JaWd0X3NwaW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZk LCBjdHgsIGZsYWdzKTsKKwlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwg ZSk7CiAKIAlfX3NwaW5fd2FpdChmZCwgc3Bpbik7CiAKIAlyZXR1cm4gc3BpbjsKIH0KIAotc3Rh dGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVk IGxvbmcgZmxhZ3MpCitzdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhpbnQgZmQsIHVpbnQz Ml90IGN0eCwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsK IAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCi0JcmV0dXJuIF9fc3Bpbl9zeW5jKGZkLCBjdHgsIGZs YWdzKTsKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZSk7Cit9CisKK3N0YXRpYyBpZ3Rf c3Bpbl90ICogc3Bpbl9zeW5jX2ZsYWdzKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBp bnQgZmxhZ3MpCit7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGUgPSB7IH07CisK KwllLmNsYXNzID0gZ2VtX2ViX3RvX2NsYXNzKGZsYWdzKTsKKwllLmluc3RhbmNlID0gKGZsYWdz ICYgKEk5MTVfRVhFQ19CU0RfTUFTSyB8IEk5MTVfRVhFQ19SSU5HX01BU0spKSA9PQorCQkgICAg IChJOTE1X0VYRUNfQlNEIHwgSTkxNV9FWEVDX0JTRF9SSU5HMikgPyAxIDogMDsKKwllLmZsYWdz ID0gZmxhZ3M7CisKKwlyZXR1cm4gc3Bpbl9zeW5jKGZkLCBjdHgsICZlKTsKIH0KIAogc3RhdGlj IHZvaWQgZW5kX3NwaW4oaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCkBAIC0yNTcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50IGZkLCBpZ3Rf c3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB9CiAKIHN0YXRpYyB2b2lkCi1zaW5n bGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCitzaW5nbGUoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBz bGVwdDsKIAlpZ3Rfc3Bpbl90ICpzcGluOwpAQCAtMjY3LDcgKzI3Nyw3IEBAIHNpbmdsZShpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVk IGludCBmbGFncykKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNz LCBlLT5pbnN0YW5jZSkpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bp bl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gc3Bpbl9zeW5j KGdlbV9mZCwgMCwgZSk7CiAJZWxzZQogCQlzcGluID0gTlVMTDsKIApAQCAtMzAzLDcgKzMxMyw3 IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfc3RhcnQo aW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorYnVz eV9zdGFydChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7 CiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAl1aW50NjRfdCB2YWwsIHRzWzJdOwpAQCAtMzE2LDcg KzMyNiw3IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplKQogCSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9fc3Bpbl9zeW5j KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCXNwaW4gPSBfX3NwaW5fc3luYyhnZW1f ZmQsIDAsIGUpOwogCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFz cywgZS0+aW5zdGFuY2UpKTsKIApAQCAtMzM4LDcgKzM0OCw3IEBAIGJ1c3lfc3RhcnQoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogICogd2lsbCBk ZXBlbmQgb24gdGhlIENJIHN5c3RlbXMgcnVubmluZyBpdCBhIGxvdCB0byBkZXRlY3QgaXNzdWVz LgogICovCiBzdGF0aWMgdm9pZAotYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorYnVzeV9kb3VibGVfc3RhcnQoaW50 IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVuc2lnbmVk IGxvbmcgc2xlcHQ7CiAJdWludDY0X3QgdmFsLCB2YWwyLCB0c1syXTsKQEAgLTM0Nyw2ICszNTcs NyBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUpCiAJaW50IGZkOwogCiAJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRl KGdlbV9mZCk7CisJaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChnZW1fZmQsIGN0eCk7CiAKIAkvKgog CSAqIERlZmVhdCB0aGUgYnVzeSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQgdG8gZ3Vh cmFudGVlIHdlIGFyZQpAQCAtMzU5LDExICszNzAsMTEgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqIHJl LXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBpcyBjb3Jy ZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBl bmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBl KTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsCiAJCQkJICAgICAgIC5jdHggPSBjdHgsCi0JCQkJICAgICAgIC5lbmdpbmUgPSBlMnJpbmco Z2VtX2ZkLCBlKSk7CisJCQkJICAgICAgIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAKIAkvKgogCSAq IE9wZW4gUE1VIGFzIGZhc3QgYXMgcG9zc2libGUgYWZ0ZXIgdGhlIHNlY29uZCBzcGluIGJhdGNo IGluIGF0dGVtcHQKQEAgLTQyMSwxMCArNDMyLDEwIEBAIHN0YXRpYyB2b2lkIGxvZ19idXN5KHVu c2lnbmVkIGludCBudW1fZW5naW5lcywgdWludDY0X3QgKnZhbCkKIH0KIAogc3RhdGljIHZvaWQK LWJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSwKK2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAkgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVz LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2 NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVuc2lnbmVkIGludCBidXN5X2lkeCA9IDAsIGk7 CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTQzNCw4ICs0NDUsOCBAQCBidXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCiAKIAlpID0gMDsKIAlmZFswXSA9IC0xOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0 YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlmIChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxf ZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5p bnN0YW5jZSA9PSBlXy0+aW5zdGFuY2UpCiAJCQlidXN5X2lkeCA9IGk7CiAKIAkJZmRbaSsrXSA9 IG9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLApAQCAtNDQ1LDcgKzQ1 Niw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9hc3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0J c3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0g c3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdp bmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9u cyAvIDEwMDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ3MiwyMyAr NDgzLDIzIEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwKIAogc3RhdGljIHZvaWQKIF9fc3VibWl0X3NwaW5fYmF0Y2go aW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwKKwkJICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwKIAkJICAgIGludCBvZmZzZXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBlYiA9IHNwaW4tPmV4ZWNidWY7CiAKIAllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VY RUNfQlNEX01BU0spOwotCWViLmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVD X05PX1JFTE9DOworCWViLmZsYWdzIHw9IGUtPmZsYWdzIHwgSTkxNV9FWEVDX05PX1JFTE9DOwog CWViLmJhdGNoX3N0YXJ0X29mZnNldCArPSBvZmZzZXQ7CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQs ICZlYik7CiB9CiAKIHN0YXRpYyB2b2lkCi1tb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK21vc3RfYnVzeV9jaGVj a19hbGwoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkg ICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNd OwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAg LTQ5NywxMyArNTA4LDEzIEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCXVuc2lnbmVkIGludCBpZGxlX2lk eCwgaTsKIAogCWkgPSAwOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQs IGVfKSB7Ci0JCWlmIChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9m ZCwgZV8pIHsKKwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBl Xy0+aW5zdGFuY2UpCiAJCQlpZGxlX2lkeCA9IGk7CiAJCWVsc2UgaWYgKHNwaW4pCiAJCQlfX3N1 Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9 IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZV8pKTsKKwkJCXNwaW4gPSBf X3NwaW5fcG9sbChnZW1fZmQsIDAsIGVfKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lO RV9CVVNZKGVfLT5jbGFzcywgZV8tPmluc3RhbmNlKTsKIAl9CkBAIC01NDUsNyArNTU2LDcgQEAg c3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQljb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90 IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTU1NCwxMSArNTY1 LDExIEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQg bnVtX2VuZ2luZXMsCiAJdW5zaWduZWQgaW50IGk7CiAKIAlpID0gMDsKLQlmb3JfZWFjaF9lbmdp bmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdp bmUoZ2VtX2ZkLCBlKSB7CiAJCWlmIChzcGluKQogCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1f ZmQsIHNwaW4sIGUsIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwg MCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwg ZSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5z dGFuY2UpOwogCX0KQEAgLTU5Miw3ICs2MDMsNyBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdl bV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogfQogCiBzdGF0aWMgdm9pZAot bm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsIHVuc2lnbmVkIGludCBmbGFncykKK25vX3NlbWEoaW50IGdlbV9mZCwgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJaWd0X3NwaW5f dCAqc3BpbjsKIAl1aW50NjRfdCB2YWxbMl1bMl07CkBAIC02MDIsNyArNjEzLDcgQEAgbm9fc2Vt YShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVu c2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9XQUlUKGUtPmNs YXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3Bp biA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNw aW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTYzMSw3 ICs2NDIsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogI2RlZmluZSAgIE1JX1NFTUFQSE9S RV9TQURfR1RFX1NERAkoMTw8MTIpCiAKIHN0YXRpYyB2b2lkCi1zZW1hX3dhaXQoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorc2VtYV93YWl0KGlu dCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgIHVuc2lnbmVk IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVs b2NbMl0gPSB7fTsKQEAgLTY4OSw3ICs3MDAsNyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJZWIuYnVmZmVyX2NvdW50 ID0gMjsKIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwotCWViLmZsYWdz ID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8qKgogCSAq IFN0YXJ0IHRoZSBzZW1hcGhvcmUgd2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25vd24gdGltZSBs ZXQgdGhlIGFib3ZlCkBAIC03OTIsNyArODAzLDcgQEAgc3RhdGljIGludCB3YWl0X3ZibGFuayhp bnQgZmQsIHVuaW9uIGRybV93YWl0X3ZibGFuayAqdmJsKQogfQogCiBzdGF0aWMgdm9pZAotZXZl bnRfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUpCitldmVudF93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7IH07CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsgfTsKQEAgLTg0NSw3ICs4NTYs NyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVmZmVyc19wdHIgPSB0 b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSB8IEk5 MTVfRVhFQ19TRUNVUkU7CisJZWIuZmxhZ3MgPSBlLT5mbGFncyB8IEk5MTVfRVhFQ19TRUNVUkU7 CiAKIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRhLmRpc3BsYXksIHAsIG91 dHB1dCkgewogCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIHdhaXRlciA9IHsgfTsKQEAgLTkx Nyw3ICs5MjgsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKIH0KIAogc3RhdGljIHZvaWQKLW11bHRpX2NsaWVudChpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCittdWx0aV9j bGllbnQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewog CXVpbnQ2NF90IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0 YW5jZSk7CiAJdW5zaWduZWQgbG9uZyBzbGVwdFsyXTsKQEAgLTkzNiw3ICs5NDcsNyBAQCBtdWx0 aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQogCSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBzcGluX3N5 bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1f ZmQsIDAsIGUpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmRbMF0s ICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMg LyAxMDAwKTsKQEAgLTEwMzksNiArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGlu dCBnZW1fZmQpCiAJaWd0X3NwaW5fdCAqc3BpblsyXTsKIAl1aW50NjRfdCB0c1syXTsKIAl1aW50 NjRfdCB2YWw7CisJdWludDMyX3QgY3R4OwogCWludCBsaW5rWzJdOwogCWludCBmZCwgcmV0Owog CWludCBjdXIgPSAwOwpAQCAtMTA0NiwxNCArMTA1OCwxOCBAQCBzdGF0aWMgdm9pZCBjcHVfaG90 cGx1ZyhpbnQgZ2VtX2ZkKQogCiAJaWd0X3JlcXVpcmUoY3B1MF9ob3RwbHVnX3N1cHBvcnQoKSk7 CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Blbl9wbXUo STkxNV9QTVVfRU5HSU5FX0JVU1koSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLCAwKSk7CiAKIAkv KgogCSAqIENyZWF0ZSB0d28gc3Bpbm5lcnMgc28gdGVzdCBjYW4gZW5zdXJlIHNob3J0ZXIgZ2Fw cyBpbiBlbmdpbmUKIAkgKiBidXN5bmVzcyBhcyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUgYW5kIHJl LXN0YXJ0aW5nIHRoZSBvdGhlci4KIAkgKi8KLQlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3 KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwotCXNwaW5bMV0gPSBfX2lndF9z cGluX2JhdGNoX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGlu WzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJCQkgICAgIC5lbmdpbmUgPSBJOTE1 X0VYRUNfUkVOREVSLCAuY3R4ID0gY3R4KTsKKwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9u ZXcoZ2VtX2ZkLAorCQkJCSAgICAgICAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUiwgLmN0eCA9 IGN0eCk7CiAKIAl2YWwgPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKIApAQCAtMTEz Nyw2ICsxMTUzLDcgQEAgc3RhdGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKIAogCQlp Z3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3BpbltjdXJdKTsKIAkJc3BpbltjdXJdID0gX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAorCQkJCQkJIC5jdHggPSBjdHgsCiAJCQkJCQkgLmVu Z2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwogCQljdXIgXj0gMTsKIAl9CkBAIC0xMTUwLDYgKzEx NjcsNyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCWlndF93YWl0Y2hp bGRyZW4oKTsKIAljbG9zZShmZCk7CiAJY2xvc2UobGlua1swXSk7CisJZ2VtX2NvbnRleHRfZGVz dHJveShnZW1fZmQsIGN0eCk7CiAKIAkvKiBTa2lwIGlmIGNoaWxkIHNpZ25hbHMgYSBwcm9ibGVt IHdpdGggb2ZmbGluaW5nIGEgQ1BVLiAqLwogCWlndF9za2lwX29uKGJ1ZiA9PSAncycpOwpAQCAt MTE2NSwxNyArMTE4MywyMSBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bp bl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwg YnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZlbmNlX2ZkOwogCWludCBmZDsKIAogCWdlbV9x dWllc2NlbnRfZ3B1KGdlbV9mZCk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2Zk KTsKKwogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfSU5URVJSVVBUUyk7CiAKIAkvKiBRdWV1ZSBz cGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBpKyspIHsK IAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKIAkJCQkJICAgICAgIC5l bmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAorCQkJCQkgICAgICAgLmN0eCA9IGN0eCwKIAkJCQkJ ICAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7CiAJCWlmIChpID09IDApIHsKIAkJ CWZlbmNlX2ZkID0gc3BpbltpXS0+b3V0X2ZlbmNlOwpAQCAtMTIxNyw2ICsxMjM5LDcgQEAgdGVz dF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRl cnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZk KSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgp OwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyMjksMTUgKzEyNTIs MTkgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5bmMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGlu W3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1 aW50MzJfdCBjdHg7CiAJaW50IGZkOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIAor CWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1 X1BNVV9JTlRFUlJVUFRTKTsKIAogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9y IChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwKKwkJCQkJICAgICAgIC5jdHggPSBjdHgsCiAJCQkJCSAgICAgICAuZmxh Z3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwogCiAJLyogV2FpdCBmb3IgaWRsZSBzdGF0ZS4gKi8K QEAgLTEyNjIsNiArMTI4OSw3IEBAIHRlc3RfaW50ZXJydXB0c19zeW5jKGludCBnZW1fZmQpCiAJ LyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4g Ki8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdl bV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0 LCBidXN5KTsKIH0KQEAgLTEyNzQsNiArMTMwMiw5IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1f ZmQpCiAJZG91YmxlIG1pblsyXSwgbWF4WzJdOwogCWlndF9zcGluX3QgKnNwaW47CiAJaW50IGZk LCBzeXNmczsKKwl1aW50MzJfdCBjdHg7CisKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2Vt X2ZkKTsKIAogCXN5c2ZzID0gaWd0X3N5c2ZzX29wZW4oZ2VtX2ZkKTsKIAlpZ3RfcmVxdWlyZShz eXNmcyA+PSAwKTsKQEAgLTEzMDEsNyArMTMzMiw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1f ZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9mcmVx X21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8qIElk bGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBzcGluX3N5 bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdz KGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVs dGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAx MDAwKTsKQEAgLTEzMjcsNyArMTM1OCw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJ aWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoiKSA9 PSBtYXhfZnJlcSk7CiAKIAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwotCXNwaW4gPSBzcGlu X3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2Zs YWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRf bXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMg LyAxMDAwKTsKQEAgLTEzNDgsNiArMTM3OSw4IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQp CiAJCQkgbWluX2ZyZXEsIGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6 IikpOwogCWNsb3NlKGZkKTsKIAorCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwor CiAJaWd0X2luZm8oIk1pbiBmcmVxdWVuY3k6IHJlcXVlc3RlZCAlLjFmLCBhY3R1YWwgJS4xZlxu IiwKIAkJIG1pblswXSwgbWluWzFdKTsKIAlpZ3RfaW5mbygiTWF4IGZyZXF1ZW5jeTogcmVxdWVz dGVkICUuMWYsIGFjdHVhbCAlLjFmXG4iLApAQCAtMTQ0OCw3ICsxNDgxLDcgQEAgdGVzdF9yYzYo aW50IGdlbV9mZCwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9l bmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCit0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSkKIHsKIAl1aW50NjRfdCBjb25maWcgPSBJOTE1X1BNVV9FTkdJTkVfQlVT WShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZW5n aW5lX2xvYWQgPSB7IH07CkBAIC0xNDY1LDcgKzE0OTgsNyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWVi LmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9i aik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwllYi5mbGFncyA9IGUtPmZsYWdz OwogCiAJLyoKIAkgKiBUaGlzIHRlc3QgaXMgcHJvYmFiaWxpc3RpYyBzbyBydW4gaW4gYSBmZXcg dGltZXMgdG8gaW5jcmVhc2UgdGhlCkBAIC0xNTIwLDcgKzE1NTMsNyBAQCBzdGF0aWMgdm9pZCBf X3JlYXJtX3NwaW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKIAlfX2Fzc2VydF93aXRoaW4oeCwg cmVmLCB0b2xlcmFuY2UsIHRvbGVyYW5jZSkKIAogc3RhdGljIHZvaWQKLWFjY3VyYWN5KGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2FjY3VyYWN5 KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgdW5zaWdu ZWQgbG9uZyB0YXJnZXRfYnVzeV9wY3QsCiAJIHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2l0ZXJzKQog ewpAQCAtMTU3MCw3ICsxNjAzLDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCiAJCS8q IEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3Nw aW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3Bp biA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWln dF9zcGluX2JhdGNoX2VuZChzcGluKTsKIAkJZ2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUp OwogCkBAIC0xNjc0LDcgKzE3MDcsNyBAQCBpZ3RfbWFpbgogCQkJCUk5MTVfUE1VX0xBU1QgLSBf X0k5MTVfUE1VX09USEVSKDApICsgMTsKIAl1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwog CWludCBmZCA9IC0xOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsK KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdW5zaWduZWQgaW50IGk7CiAK IAlpZ3RfZml4dHVyZSB7CkBAIC0xNjgzLDcgKzE3MTYsNyBAQCBpZ3RfbWFpbgogCQlpZ3RfcmVx dWlyZV9nZW0oZmQpOwogCQlpZ3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwogCi0JCWZv cl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwgZSkKKwkJX19mb3JfZWFjaF9waHlzaWNh bF9lbmdpbmUoZmQsIGUpCiAJCQludW1fZW5naW5lcysrOwogCX0KIApAQCAtMTY5Myw3ICsxNzI2 LDcgQEAgaWd0X21haW4KIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1pbml0IikKIAkJaW52YWxpZF9p bml0KCk7CiAKLQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7CisJX19mb3Jf ZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUpIHsKIAkJY29uc3QgdW5zaWduZWQgaW50IHBjdFtd ID0geyAyLCA1MCwgOTggfTsKIAogCQkvKioKQEAgLTE4OTcsNyArMTkzMCw3IEBAIGlndF9tYWlu CiAJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7CiAJCX0KIAotCQlfX2Zvcl9lYWNoX2VuZ2luZV9j bGFzc19pbnN0YW5jZShlKSB7CisJCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKHJlbmRlcl9m ZCwgZSkgewogCQkJaWd0X3N1YnRlc3RfZ3JvdXAgewogCQkJCWlndF9maXh0dXJlIHsKIAkJCQkJ Z2VtX3JlcXVpcmVfZW5naW5lKHJlbmRlcl9mZCwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0 LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2