From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 11 Apr 2019 13:26:54 +0100 Message-Id: <20190411122654.1680-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190408161533.2421-6-andi.shyti@intel.com> References: <20190408161533.2421-6-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFT i-g-t 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@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpSZXBsYWNlIHRoZSBsZWdh Y3kgZm9yX2VhY2hfZW5naW5lKiBkZWZpbmVzIHdpdGggdGhlIG9uZXMKaW1wbGVtZW50ZWQgaW4g dGhlIGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeS4KClVzZSB3aGVuZXZlciBwb3NzaWJsZSBn ZW1fZW5naW5lX2Nhbl9zdG9yZV9kd29yZCgpIHRoYXQgY2hlY2tzCmNsYXNzIGluc3RlYWQgb2Yg ZmxhZ3MuCgpOb3cgdGhlIF9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlIGFuZApmb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYXJlIHVudXNlZCwgcmVtb3ZlIHRoZW0uCgpTdWdn ZXN0ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9ndC5oICAg ICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11LmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9u cygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2ln dF9ndC5oCmluZGV4IGFmNGNjMzhhMWVmNy4uYzJjYTA3ZTAzNzM4IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC0xMTksMTEgKzExOSw0IEBAIHZvaWQgZ2Vt X3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQsCiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19lbmdpbmUo Z2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsKIH0KIAotI2RlZmluZSBfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKLQotI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCi0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKLQkJZm9yX2lmIChnZW1faGFzX2Vu Z2luZSgoZmRfXyksIChlX18pLT5jbGFzcywgKGVfXyktPmluc3RhbmNlKSkKLQogI2VuZGlmIC8q IElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9w bXUuYwppbmRleCA0ZjU1MmJjMmFlMjguLmE4ODliNTUyMjM2ZCAxMDA2NDQKLS0tIGEvdGVzdHMv cGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRp YyBpbnQgb3Blbl9ncm91cCh1aW50NjRfdCBjb25maWcsIGludCBncm91cCkKIH0KIAogc3RhdGlj IHZvaWQKLWluaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1aW50OF90IHNhbXBsZSkKK2luaXQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKIHsKIAlpbnQgZmQsIGVyciA9IDA7 CiAJYm9vbCBleGlzdHM7CkBAIC0xNTgsMTEgKzE1OCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg bWVhc3VyZWRfdXNsZWVwKHVuc2lnbmVkIGludCB1c2VjKQogCXJldHVybiBpZ3RfbnNlY19lbGFw c2VkKCZ0cyk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKLXsKLQlyZXR1cm4gZ2VtX2Ns YXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsK LX0KLQogI2RlZmluZSBURVNUX0JVU1kgKDEpCiAjZGVmaW5lIEZMQUdfU1lOQyAoMikKICNkZWZp bmUgVEVTVF9UUkFJTElOR19JRExFICg0KQpAQCAtMTcwLDE0ICsxNjUsMTUgQEAgc3RhdGljIHVu c2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2RlZmluZSBGTEFHX0hBTkcg KDMyKQogCi1zdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3Qg Y3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9s bChpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCQlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiB7CiAJc3RydWN0IGlndF9zcGluX2ZhY3Rvcnkgb3B0cyA9IHsKIAkJLmN0eCA9IGN0 eCwKLQkJLmVuZ2luZSA9IGZsYWdzLAorCQkuZW5naW5lID0gZS0+ZmxhZ3MsCiAJfTsKIAotCWlm IChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJaWYgKGdlbV9jbGFzc19jYW5fc3Rv cmVfZHdvcmQoZmQsIGUtPmNsYXNzKSkKIAkJb3B0cy5mbGFncyB8PSBJR1RfU1BJTl9QT0xMX1JV TjsKIAogCXJldHVybiBfX2lndF9zcGluX2JhdGNoX2ZhY3RvcnkoZmQsICZvcHRzKTsKQEAgLTIw OSwyMCArMjA1LDM0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwg aWd0X3NwaW5fdCAqc3BpbikKIAlyZXR1cm4gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwogfQog Ci1zdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1 bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQg ZmQsIHVpbnQzMl90IGN0eCwKKwkJCQlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp CiB7Ci0JaWd0X3NwaW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBjdHgsIGZsYWdzKTsKKwlp Z3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZSk7CiAKIAlfX3NwaW5fd2Fp dChmZCwgc3Bpbik7CiAKIAlyZXR1cm4gc3BpbjsKIH0KIAotc3RhdGljIGlndF9zcGluX3QgKiBz cGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0 aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCSAgICAg IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAlpZ3RfcmVxdWlyZV9nZW0o ZmQpOwogCi0JcmV0dXJuIF9fc3Bpbl9zeW5jKGZkLCBjdHgsIGZsYWdzKTsKKwlyZXR1cm4gX19z cGluX3N5bmMoZmQsIGN0eCwgZSk7Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5j X2ZsYWdzKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGUgPSB7IH07CisKKwllLmNsYXNzID0gZ2VtX2Vi X3RvX2NsYXNzKGZsYWdzKTsKKwllLmluc3RhbmNlID0gKGZsYWdzICYgKEk5MTVfRVhFQ19CU0Rf TUFTSyB8IEk5MTVfRVhFQ19SSU5HX01BU0spKSA9PQorCQkgICAgIChJOTE1X0VYRUNfQlNEIHwg STkxNV9FWEVDX0JTRF9SSU5HMikgPyAxIDogMDsKKwllLmZsYWdzID0gZmxhZ3M7CisKKwlyZXR1 cm4gc3Bpbl9zeW5jKGZkLCBjdHgsICZlKTsKIH0KIAogc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50 IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCkBAIC0yNTcsNyArMjY3 LDcgQEAgc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB9CiAKIHN0YXRpYyB2b2lkCi1zaW5nbGUoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp CitzaW5nbGUoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAlpZ3Rfc3Bpbl90 ICpzcGluOwpAQCAtMjY3LDcgKzI3Nyw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlmZCA9 IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwog CiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwg ZTJyaW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJ ZWxzZQogCQlzcGluID0gTlVMTDsKIApAQCAtMzAzLDcgKzMxMyw3IEBAIHNpbmdsZShpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGlu dCBmbGFncykKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorYnVzeV9zdGFydChpbnQgZ2VtX2Zk LCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJdW5zaWduZWQgbG9uZyBz bGVwdDsKIAl1aW50NjRfdCB2YWwsIHRzWzJdOwpAQCAtMzE2LDcgKzMyNiw3IEBAIGJ1c3lfc3Rh cnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5n KGdlbV9mZCwgZSkpOworCXNwaW4gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCiAJZmQg PSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsK IApAQCAtMzM4LDcgKzM0OCw3IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogICogd2lsbCBkZXBlbmQgb24gdGhlIENJIHN5 c3RlbXMgcnVubmluZyBpdCBhIGxvdCB0byBkZXRlY3QgaXNzdWVzLgogICovCiBzdGF0aWMgdm9p ZAotYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplKQorYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVuc2lnbmVkIGxvbmcgc2xlcHQ7CiAJdWlu dDY0X3QgdmFsLCB2YWwyLCB0c1syXTsKQEAgLTM0Nyw2ICszNTcsNyBAQCBidXN5X2RvdWJsZV9z dGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp CiAJaW50IGZkOwogCiAJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdlbV9mZCk7CisJaW50ZWxf aW5pdF9lbmdpbmVfbGlzdChnZW1fZmQsIGN0eCk7CiAKIAkvKgogCSAqIERlZmVhdCB0aGUgYnVz eSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQgdG8gZ3VhcmFudGVlIHdlIGFyZQpAQCAt MzU5LDExICszNzAsMTEgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhl Y2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBpcyBjb3JyZWN0bHkKIAkgKiByZXBvcnRl ZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBlbmdpbmUgd2VudCBpZGxlLgog CSAqLwotCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUp KTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlKTsKIAl1c2xlZXAoNTAwZTMp OwogCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsCiAJCQkJICAgICAgIC5j dHggPSBjdHgsCi0JCQkJICAgICAgIC5lbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJCQkJ ICAgICAgIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAKIAkvKgogCSAqIE9wZW4gUE1VIGFzIGZhc3Qg YXMgcG9zc2libGUgYWZ0ZXIgdGhlIHNlY29uZCBzcGluIGJhdGNoIGluIGF0dGVtcHQKQEAgLTQy MSwxMCArNDMyLDEwIEBAIHN0YXRpYyB2b2lkIGxvZ19idXN5KHVuc2lnbmVkIGludCBudW1fZW5n aW5lcywgdWludDY0X3QgKnZhbCkKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2J1c3lf Y2hlY2tfYWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwK IAkgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2Vu Z2luZXNdOwogCXVuc2lnbmVkIGludCBidXN5X2lkeCA9IDAsIGk7CiAJdWludDY0X3QgdmFsW251 bV9lbmdpbmVzXTsKQEAgLTQzNCw4ICs0NDUsOCBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpID0gMDsKIAlm ZFswXSA9IC0xOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7 Ci0JCWlmIChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8p IHsKKwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5z dGFuY2UpCiAJCQlidXN5X2lkeCA9IGk7CiAKIAkJZmRbaSsrXSA9IG9wZW5fZ3JvdXAoSTkxNV9Q TVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLApAQCAtNDQ1LDcgKzQ1Niw3IEBAIGJ1c3lfY2hlY2tf YWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwK IAogCWlndF9hc3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IHNwaW5fc3luYyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwg MCwgZSk7CiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlz bGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChm bGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ3MiwyMyArNDgzLDIzIEBAIGJ1c3lfY2hl Y2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSwKIAogc3RhdGljIHZvaWQKIF9fc3VibWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwgaWd0X3Nw aW5fdCAqc3BpbiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSwKKwkJICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJICAgIGludCBv ZmZzZXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNwaW4tPmV4 ZWNidWY7CiAKIAllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0spOwotCWVi LmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX05PX1JFTE9DOworCWViLmZs YWdzIHw9IGUtPmZsYWdzIHwgSTkxNV9FWEVDX05PX1JFTE9DOwogCWViLmJhdGNoX3N0YXJ0X29m ZnNldCArPSBvZmZzZXQ7CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CiB9CiAKIHN0YXRp YyB2b2lkCi1tb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKK21vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgY29uc3QgdW5zaWduZWQg aW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0JY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZhbFtu dW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTQ5NywxMyArNTA4LDEzIEBA IG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplLAogCXVuc2lnbmVkIGludCBpZGxlX2lkeCwgaTsKIAogCWkgPSAwOwot CWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlmIChlID09 IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJaWYgKGUt PmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2UpCiAJCQlp ZGxlX2lkeCA9IGk7CiAJCWVsc2UgaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdl bV9mZCwgc3BpbiwgZV8sIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9m ZCwgMCwgZTJyaW5nKGdlbV9mZCwgZV8pKTsKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQs IDAsIGVfKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywg ZV8tPmluc3RhbmNlKTsKIAl9CkBAIC01NDUsNyArNTU2LDcgQEAgc3RhdGljIHZvaWQKIGFsbF9i dXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMs CiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVp bnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107 CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTU1NCwxMSArNTY1LDExIEBAIGFsbF9idXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJdW5z aWduZWQgaW50IGk7CiAKIAlpID0gMDsKLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Uo Z2VtX2ZkLCBlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2VtX2ZkLCBlKSB7CiAJ CWlmIChzcGluKQogCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0KTsK IAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZSkpOworCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZSk7CiAKIAkJdmFsW2krK10g PSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTU5 Miw3ICs2MDMsNyBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWdu ZWQgaW50IG51bV9lbmdpbmVzLAogfQogCiBzdGF0aWMgdm9pZAotbm9fc2VtYShpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBm bGFncykKK25vX3NlbWEoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIAl1aW50NjRf dCB2YWxbMl1bMl07CkBAIC02MDIsNyArNjEzLDcgQEAgbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykK IAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9XQUlUKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSks IGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IHNwaW5fc3luYyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAs IGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTYzMSw3ICs2NDIsNyBAQCBub19zZW1h KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5z aWduZWQgaW50IGZsYWdzKQogI2RlZmluZSAgIE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERAkoMTw8 MTIpCiAKIHN0YXRpYyB2b2lkCi1zZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorc2VtYV93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NbMl0gPSB7fTsKQEAgLTY4 OSw3ICs3MDAsNyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJZWIuYnVmZmVyX2NvdW50ID0gMjsKIAllYi5idWZmZXJz X3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwg ZSk7CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8qKgogCSAqIFN0YXJ0IHRoZSBzZW1hcGhv cmUgd2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25vd24gdGltZSBsZXQgdGhlIGFib3ZlCkBAIC03 OTIsNyArODAzLDcgQEAgc3RhdGljIGludCB3YWl0X3ZibGFuayhpbnQgZmQsIHVuaW9uIGRybV93 YWl0X3ZibGFuayAqdmJsKQogfQogCiBzdGF0aWMgdm9pZAotZXZlbnRfd2FpdChpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCitldmVudF93YWl0KGlu dCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7IH07CiAJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyMiBlYiA9IHsgfTsKQEAgLTg0NSw3ICs4NTYsNyBAQCBldmVudF93YWl0KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWVi LmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9i aik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSB8IEk5MTVfRVhFQ19TRUNVUkU7CisJ ZWIuZmxhZ3MgPSBlLT5mbGFncyB8IEk5MTVfRVhFQ19TRUNVUkU7CiAKIAlmb3JfZWFjaF9waXBl X3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRhLmRpc3BsYXksIHAsIG91dHB1dCkgewogCQlzdHJ1Y3Qg aWd0X2hlbHBlcl9wcm9jZXNzIHdhaXRlciA9IHsgfTsKQEAgLTkxNyw3ICs5MjgsNyBAQCBldmVu dF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSkKIH0KIAogc3RhdGljIHZvaWQKLW11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCittdWx0aV9jbGllbnQoaW50IGdlbV9mZCwg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVpbnQ2NF90IGNvbmZpZyA9 IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJdW5zaWduZWQg bG9uZyBzbGVwdFsyXTsKQEAgLTkzNiw3ICs5NDcsNyBAQCBtdWx0aV9jbGllbnQoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqLwogCWZkWzFd ID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJp bmcoZ2VtX2ZkLCBlKSk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCiAJdmFs WzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRb MV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEwMzks NiArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1fZmQpCiAJaWd0X3Nw aW5fdCAqc3BpblsyXTsKIAl1aW50NjRfdCB0c1syXTsKIAl1aW50NjRfdCB2YWw7CisJdWludDMy X3QgY3R4OwogCWludCBsaW5rWzJdOwogCWludCBmZCwgcmV0OwogCWludCBjdXIgPSAwOwpAQCAt MTA0NiwxNCArMTA1OCwxOCBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQog CiAJaWd0X3JlcXVpcmUoY3B1MF9ob3RwbHVnX3N1cHBvcnQoKSk7CiAKKwljdHggPSBnZW1fY29u dGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JV U1koSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLCAwKSk7CiAKIAkvKgogCSAqIENyZWF0ZSB0d28g c3Bpbm5lcnMgc28gdGVzdCBjYW4gZW5zdXJlIHNob3J0ZXIgZ2FwcyBpbiBlbmdpbmUKIAkgKiBi dXN5bmVzcyBhcyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUgYW5kIHJlLXN0YXJ0aW5nIHRoZSBvdGhl ci4KIAkgKi8KLQlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9 IEk5MTVfRVhFQ19SRU5ERVIpOwotCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluWzBdID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwKKwkJCQkgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLCAuY3R4 ID0gY3R4KTsKKwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAorCQkJCSAg ICAgICAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUiwgLmN0eCA9IGN0eCk7CiAKIAl2YWwgPSBf X3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKIApAQCAtMTEzNyw2ICsxMTUzLDcgQEAgc3Rh dGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKIAogCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVl KGdlbV9mZCwgc3BpbltjdXJdKTsKIAkJc3BpbltjdXJdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXco Z2VtX2ZkLAorCQkJCQkJIC5jdHggPSBjdHgsCiAJCQkJCQkgLmVuZ2luZSA9IEk5MTVfRVhFQ19S RU5ERVIpOwogCQljdXIgXj0gMTsKIAl9CkBAIC0xMTUwLDYgKzExNjcsNyBAQCBzdGF0aWMgdm9p ZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCWlndF93YWl0Y2hpbGRyZW4oKTsKIAljbG9zZShm ZCk7CiAJY2xvc2UobGlua1swXSk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0eCk7 CiAKIAkvKiBTa2lwIGlmIGNoaWxkIHNpZ25hbHMgYSBwcm9ibGVtIHdpdGggb2ZmbGluaW5nIGEg Q1BVLiAqLwogCWlndF9za2lwX29uKGJ1ZiA9PSAncycpOwpAQCAtMTE2NSwxNyArMTE4MywyMSBA QCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07 CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1aW50MzJfdCBj dHg7CiAJaW50IGZlbmNlX2ZkOwogCWludCBmZDsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9m ZCk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Blbl9w bXUoSTkxNV9QTVVfSU5URVJSVVBUUyk7CiAKIAkvKiBRdWV1ZSBzcGlubmluZyBiYXRjaGVzLiAq LwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBpKyspIHsKIAkJc3BpbltpXSA9IF9faWd0 X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKIAkJCQkJICAgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNf UkVOREVSLAorCQkJCQkgICAgICAgLmN0eCA9IGN0eCwKIAkJCQkJICAgICAgIC5mbGFncyA9IElH VF9TUElOX0ZFTkNFX09VVCk7CiAJCWlmIChpID09IDApIHsKIAkJCWZlbmNlX2ZkID0gc3Bpbltp XS0+b3V0X2ZlbmNlOwpAQCAtMTIxNyw2ICsxMjM5LDcgQEAgdGVzdF9pbnRlcnJ1cHRzKGludCBn ZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdl bmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2Uo ZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9s dGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyMjksMTUgKzEyNTIsMTkgQEAgdGVzdF9pbnRlcnJ1 cHRzX3N5bmMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0 IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50 IGZkOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIAorCWN0eCA9IGdlbV9jb250ZXh0 X2NyZWF0ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9JTlRFUlJVUFRTKTsK IAogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0 YXJnZXQ7IGkrKykKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJ CQkJICAgICAgIC5jdHggPSBjdHgsCiAJCQkJCSAgICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5D RV9PVVQpOwogCiAJLyogV2FpdCBmb3IgaWRsZSBzdGF0ZS4gKi8KQEAgLTEyNjIsNiArMTI4OSw3 IEBAIHRlc3RfaW50ZXJydXB0c19zeW5jKGludCBnZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3Qg YXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3Jl YWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3ko Z2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEy NzQsNiArMTMwMiw5IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJZG91YmxlIG1pblsy XSwgbWF4WzJdOwogCWlndF9zcGluX3QgKnNwaW47CiAJaW50IGZkLCBzeXNmczsKKwl1aW50MzJf dCBjdHg7CisKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKIAogCXN5c2ZzID0g aWd0X3N5c2ZzX29wZW4oZ2VtX2ZkKTsKIAlpZ3RfcmVxdWlyZShzeXNmcyA+PSAwKTsKQEAgLTEz MDEsNyArMTMzMiw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUo aWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9mcmVxX21oeiIpID09IG1pbl9mcmVx KTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUg Y2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1 X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1 X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsK IAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzMjcsNyAr MTM1OCw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5 c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoiKSA9PSBtYXhfZnJlcSk7CiAKIAln ZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJ OTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJ OTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0 KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzNDgs NiArMTM3OSw4IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJCQkgbWluX2ZyZXEsIGln dF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6IikpOwogCWNsb3NlKGZkKTsK IAorCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOworCiAJaWd0X2luZm8oIk1pbiBm cmVxdWVuY3k6IHJlcXVlc3RlZCAlLjFmLCBhY3R1YWwgJS4xZlxuIiwKIAkJIG1pblswXSwgbWlu WzFdKTsKIAlpZ3RfaW5mbygiTWF4IGZyZXF1ZW5jeTogcmVxdWVzdGVkICUuMWYsIGFjdHVhbCAl LjFmXG4iLApAQCAtMTQ0OCw3ICsxNDgxLDcgQEAgdGVzdF9yYzYoaW50IGdlbV9mZCwgdW5zaWdu ZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9lbmFibGVfcmFjZShpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit0ZXN0X2VuYWJs ZV9yYWNlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsK IAl1aW50NjRfdCBjb25maWcgPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5z dGFuY2UpOwogCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZW5naW5lX2xvYWQgPSB7IH07CkBA IC0xNDY1LDcgKzE0OTgsNyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9IDE7 CiAJZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3MgPSBl MnJpbmcoZ2VtX2ZkLCBlKTsKKwllYi5mbGFncyA9IGUtPmZsYWdzOwogCiAJLyoKIAkgKiBUaGlz IHRlc3QgaXMgcHJvYmFiaWxpc3RpYyBzbyBydW4gaW4gYSBmZXcgdGltZXMgdG8gaW5jcmVhc2Ug dGhlCkBAIC0xNTIwLDcgKzE1NTMsNyBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2go aWd0X3NwaW5fdCAqc3BpbikKIAlfX2Fzc2VydF93aXRoaW4oeCwgcmVmLCB0b2xlcmFuY2UsIHRv bGVyYW5jZSkKIAogc3RhdGljIHZvaWQKLWFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2FjY3VyYWN5KGludCBnZW1fZmQsIHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgdW5zaWduZWQgbG9uZyB0YXJnZXRfYnVz eV9wY3QsCiAJIHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2l0ZXJzKQogewpAQCAtMTU3MCw3ICsxNjAz LDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplLAogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGlu IGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9m ZCwgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IGlndF9zcGluX2JhdGNo X25ldyhnZW1fZmQsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWlndF9zcGluX2JhdGNoX2VuZChz cGluKTsKIAkJZ2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCkBAIC0xNjc0LDcgKzE3 MDcsNyBAQCBpZ3RfbWFpbgogCQkJCUk5MTVfUE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVSKDAp ICsgMTsKIAl1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwogCWludCBmZCA9IC0xOwotCWNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwlzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmU7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZ3RfZml4dHVyZSB7CkBA IC0xNjgzLDcgKzE3MTYsNyBAQCBpZ3RfbWFpbgogCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCQlp Z3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwogCi0JCWZvcl9lYWNoX2VuZ2luZV9jbGFz c19pbnN0YW5jZShmZCwgZSkKKwkJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUpCiAJ CQludW1fZW5naW5lcysrOwogCX0KIApAQCAtMTY5Myw3ICsxNzI2LDcgQEAgaWd0X21haW4KIAlp Z3Rfc3VidGVzdCgiaW52YWxpZC1pbml0IikKIAkJaW52YWxpZF9pbml0KCk7CiAKLQlfX2Zvcl9l YWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdp bmUoZmQsIGUpIHsKIAkJY29uc3QgdW5zaWduZWQgaW50IHBjdFtdID0geyAyLCA1MCwgOTggfTsK IAogCQkvKioKQEAgLTE4OTcsNyArMTkzMCw3IEBAIGlndF9tYWluCiAJCQlnZW1fcXVpZXNjZW50 X2dwdShmZCk7CiAJCX0KIAotCQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7 CisJCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKHJlbmRlcl9mZCwgZSkgewogCQkJaWd0X3N1 YnRlc3RfZ3JvdXAgewogCQkJCWlndF9maXh0dXJlIHsKIAkJCQkJZ2VtX3JlcXVpcmVfZW5naW5l KHJlbmRlcl9mZCwKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2