From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 6.mo7.mail-out.ovh.net (6.mo7.mail-out.ovh.net [188.165.39.218]) by gabe.freedesktop.org (Postfix) with ESMTPS id 152CF894FE for ; Fri, 12 Apr 2019 00:42:08 +0000 (UTC) Received: from player691.ha.ovh.net (unknown [10.109.160.25]) by mo7.mail-out.ovh.net (Postfix) with ESMTP id 26E5510CFFA for ; Fri, 12 Apr 2019 02:32:55 +0200 (CEST) From: Andi Shyti Date: Fri, 12 Apr 2019 03:32:10 +0300 Message-Id: <20190412003210.18762-7-andi@etezian.org> In-Reply-To: <20190412003210.18762-1-andi@etezian.org> References: <20190412003210.18762-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v20 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: RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpSZXBsYWNlIHRoZSBsZWdh Y3kgZm9yX2VhY2hfZW5naW5lKiBkZWZpbmVzIHdpdGggdGhlIG9uZXMKaW1wbGVtZW50ZWQgaW4g dGhlIGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeS4KClVzZSB3aGVuZXZlciBwb3NzaWJsZSBn ZW1fZW5naW5lX2Nhbl9zdG9yZV9kd29yZCgpIHRoYXQgY2hlY2tzCmNsYXNzIGluc3RlYWQgb2Yg ZmxhZ3MuCgpOb3cgdGhlIF9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlIGFuZApmb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYXJlIHVudXNlZCwgcmVtb3ZlIHRoZW0uCgpTdWdn ZXN0ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9ndC5oICAg ICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11LmMgfCAxNDYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9u cygrKSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2ln dF9ndC5oCmluZGV4IGFmNGNjMzhhMWVmNy4uYzJjYTA3ZTAzNzM4IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC0xMTksMTEgKzExOSw0IEBAIHZvaWQgZ2Vt X3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQsCiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19lbmdpbmUo Z2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsKIH0KIAotI2RlZmluZSBfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKLQotI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCi0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKLQkJZm9yX2lmIChnZW1faGFzX2Vu Z2luZSgoZmRfXyksIChlX18pLT5jbGFzcywgKGVfXyktPmluc3RhbmNlKSkKLQogI2VuZGlmIC8q IElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9w bXUuYwppbmRleCA0ZjU1MmJjMmFlMjguLjJkM2RjMDlmZDZjMiAxMDA2NDQKLS0tIGEvdGVzdHMv 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 dDY0X3QgdmFsLCB2YWwyLCB0c1syXTsKQEAgLTM0Niw3ICszNTYsNyBAQCBidXN5X2RvdWJsZV9z dGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp CiAJdWludDMyX3QgY3R4OwogCWludCBmZDsKIAotCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShn ZW1fZmQpOworCWN0eCA9IGdlbV9tYXBfYWxsX2VuZ2luZXMoZ2VtX2ZkKTsKIAogCS8qCiAJICog RGVmZWF0IHRoZSBidXN5IHN0YXRzIGRlbGF5ZWQgZGlzYWJsZSwgd2UgbmVlZCB0byBndWFyYW50 ZWUgd2UgYXJlCkBAIC0zNTksMTEgKzM2OSwxMSBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICogcmUtc3Vi bWlzc2lvbiBpbiBleGVjbGlzdHMgbW9kZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3Rs eQogCSAqIHJlcG9ydGVkIHdpdGggdGhlIGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVuZ2lu ZSB3ZW50IGlkbGUuCiAJICovCi0Jc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSkpOworCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwog CXVzbGVlcCg1MDBlMyk7CiAJc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwK IAkJCQkgICAgICAgLmN0eCA9IGN0eCwKLQkJCQkgICAgICAgLmVuZ2luZSA9IGUycmluZyhnZW1f ZmQsIGUpKTsKKwkJCQkgICAgICAgLmVuZ2luZSA9IGUtPmZsYWdzKTsKIAogCS8qCiAJICogT3Bl biBQTVUgYXMgZmFzdCBhcyBwb3NzaWJsZSBhZnRlciB0aGUgc2Vjb25kIHNwaW4gYmF0Y2ggaW4g YXR0ZW1wdApAQCAtMzkzLDcgKzQwMyw3IEBAIGJ1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1fZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWNsb3NlKGZkKTsK IAotCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOworCWdlbV91bm1hcF9lbmdpbmVz KGdlbV9mZCwgY3R4KTsKIAogCWFzc2VydF93aXRoaW5fZXBzaWxvbih2YWwsIHRzWzFdIC0gdHNb MF0sIHRvbGVyYW5jZSk7CiAJaWd0X2Fzc2VydF9lcSh2YWwyLCAwKTsKQEAgLTQyMSwxMCArNDMx LDEwIEBAIHN0YXRpYyB2b2lkIGxvZ19idXN5KHVuc2lnbmVkIGludCBudW1fZW5naW5lcywgdWlu dDY0X3QgKnZhbCkKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2J1c3lfY2hlY2tfYWxs KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgICAgICAg Y29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0J Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwog CXVuc2lnbmVkIGludCBidXN5X2lkeCA9IDAsIGk7CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVz XTsKQEAgLTQzNCw4ICs0NDQsOCBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpID0gMDsKIAlmZFswXSA9IC0x OwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlmIChl ID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJaWYg KGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2UpCiAJ CQlidXN5X2lkeCA9IGk7CiAKIAkJZmRbaSsrXSA9IG9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5F X0JVU1koZV8tPmNsYXNzLApAQCAtNDQ1LDcgKzQ1NSw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9h c3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJ cG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1l YXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFncyAmIFRF U1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ3MiwyMyArNDgyLDIzIEBAIGJ1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogc3Rh dGljIHZvaWQKIF9fc3VibWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3Bp biwKLQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkJICAg IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJICAgIGludCBvZmZzZXQpCiB7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNwaW4tPmV4ZWNidWY7CiAK IAllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0spOwotCWViLmZsYWdzIHw9 IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX05PX1JFTE9DOworCWViLmZsYWdzIHw9IGUt PmZsYWdzIHwgSTkxNV9FWEVDX05PX1JFTE9DOwogCWViLmJhdGNoX3N0YXJ0X29mZnNldCArPSBv ZmZzZXQ7CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CiB9CiAKIHN0YXRpYyB2b2lkCi1t b3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSwKK21vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwog CXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5l c107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTQ5NywxMyArNTA3LDEzIEBAIG1vc3RfYnVz eV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAogCXVuc2lnbmVkIGludCBpZGxlX2lkeCwgaTsKIAogCWkgPSAwOwotCWZvcl9lYWNo X2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlmIChlID09IGVfKQorCV9f Zm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJaWYgKGUtPmNsYXNzID09 IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2UpCiAJCQlpZGxlX2lkeCA9 IGk7CiAJCWVsc2UgaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3Bp biwgZV8sIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZV8pKTsKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGVfKTsK IAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywgZV8tPmluc3Rh bmNlKTsKIAl9CkBAIC01NDUsNyArNTU1LDcgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVu c2lnbmVkIGludCBmbGFncykKIHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVpbnQ2NF90IHR2 YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZk W251bV9lbmdpbmVzXTsKQEAgLTU1NCwxMSArNTY0LDExIEBAIGFsbF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJdW5zaWduZWQgaW50 IGk7CiAKIAlpID0gMDsKLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBl KSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2VtX2ZkLCBlKSB7CiAJCWlmIChzcGlu KQogCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0KTsKIAkJZWxzZQot CQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQkJ c3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BN VV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTU5Miw3ICs2MDIs NyBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51 bV9lbmdpbmVzLAogfQogCiBzdGF0aWMgdm9pZAotbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKK25v X3NlbWEoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIAl1aW50NjRfdCB2YWxbMl1b Ml07CkBAIC02MDIsNyArNjEyLDcgQEAgbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dy b3VwKEk5MTVfUE1VX0VOR0lORV9XQUlUKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAog CWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVs c2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTYzMSw3ICs2NDEsNyBAQCBub19zZW1hKGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50 IGZsYWdzKQogI2RlZmluZSAgIE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERAkoMTw8MTIpCiAKIHN0 YXRpYyB2b2lkCi1zZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplLAorc2VtYV93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAkgIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NbMl0gPSB7fTsKQEAgLTY4OSw3ICs2OTks NyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplLAogCiAJZWIuYnVmZmVyX2NvdW50ID0gMjsKIAllYi5idWZmZXJzX3B0ciA9IHRv X3VzZXJfcG9pbnRlcihvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIu ZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8qKgogCSAqIFN0YXJ0IHRoZSBzZW1hcGhvcmUgd2FpdCBQ TVUgYW5kIGFmdGVyIHNvbWUga25vd24gdGltZSBsZXQgdGhlIGFib3ZlCkBAIC03OTIsNyArODAy LDcgQEAgc3RhdGljIGludCB3YWl0X3ZibGFuayhpbnQgZmQsIHVuaW9uIGRybV93YWl0X3ZibGFu ayAqdmJsKQogfQogCiBzdGF0aWMgdm9pZAotZXZlbnRfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCitldmVudF93YWl0KGludCBnZW1fZmQs IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7IH07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBlYiA9IHsgfTsKQEAgLTg0NSw3ICs4NTUsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9j b3VudCA9IDE7CiAJZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIu ZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSB8IEk5MTVfRVhFQ19TRUNVUkU7CisJZWIuZmxhZ3Mg PSBlLT5mbGFncyB8IEk5MTVfRVhFQ19TRUNVUkU7CiAKIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFs aWRfb3V0cHV0KCZkYXRhLmRpc3BsYXksIHAsIG91dHB1dCkgewogCQlzdHJ1Y3QgaWd0X2hlbHBl cl9wcm9jZXNzIHdhaXRlciA9IHsgfTsKQEAgLTkxNyw3ICs5MjcsNyBAQCBldmVudF93YWl0KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIH0KIAog c3RhdGljIHZvaWQKLW11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUpCittdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVpbnQ2NF90IGNvbmZpZyA9IEk5MTVfUE1V X0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJdW5zaWduZWQgbG9uZyBzbGVw dFsyXTsKQEAgLTkzNiw3ICs5NDYsNyBAQCBtdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqLwogCWZkWzFdID0gb3Blbl9w bXUoY29uZmlnKTsKIAotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2Zk LCBlKSk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCiAJdmFsWzBdID0gdmFs WzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFz dXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEwMzksNiArMTA0OSw3 IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1fZmQpCiAJaWd0X3NwaW5fdCAqc3Bp blsyXTsKIAl1aW50NjRfdCB0c1syXTsKIAl1aW50NjRfdCB2YWw7CisJdWludDMyX3QgY3R4Owog CWludCBsaW5rWzJdOwogCWludCBmZCwgcmV0OwogCWludCBjdXIgPSAwOwpAQCAtMTA0NiwxNCAr MTA1NywxOCBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCiAJaWd0X3Jl cXVpcmUoY3B1MF9ob3RwbHVnX3N1cHBvcnQoKSk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVh dGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1koSTkxNV9F TkdJTkVfQ0xBU1NfUkVOREVSLCAwKSk7CiAKIAkvKgogCSAqIENyZWF0ZSB0d28gc3Bpbm5lcnMg c28gdGVzdCBjYW4gZW5zdXJlIHNob3J0ZXIgZ2FwcyBpbiBlbmdpbmUKIAkgKiBidXN5bmVzcyBh cyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUgYW5kIHJlLXN0YXJ0aW5nIHRoZSBvdGhlci4KIAkgKi8K LQlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhF Q19SRU5ERVIpOwotCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIC5lbmdp bmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdl bV9mZCwKKwkJCQkgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLCAuY3R4ID0gY3R4KTsK KwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAorCQkJCSAgICAgICAuZW5n aW5lID0gSTkxNV9FWEVDX1JFTkRFUiwgLmN0eCA9IGN0eCk7CiAKIAl2YWwgPSBfX3BtdV9yZWFk X3NpbmdsZShmZCwgJnRzWzBdKTsKIApAQCAtMTEzNyw2ICsxMTUyLDcgQEAgc3RhdGljIHZvaWQg Y3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKIAogCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwg c3BpbltjdXJdKTsKIAkJc3BpbltjdXJdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAor CQkJCQkJIC5jdHggPSBjdHgsCiAJCQkJCQkgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwog CQljdXIgXj0gMTsKIAl9CkBAIC0xMTUwLDYgKzExNjYsNyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90 cGx1ZyhpbnQgZ2VtX2ZkKQogCWlndF93YWl0Y2hpbGRyZW4oKTsKIAljbG9zZShmZCk7CiAJY2xv c2UobGlua1swXSk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0eCk7CiAKIAkvKiBT a2lwIGlmIGNoaWxkIHNpZ25hbHMgYSBwcm9ibGVtIHdpdGggb2ZmbGluaW5nIGEgQ1BVLiAqLwog CWlndF9za2lwX29uKGJ1ZiA9PSAncycpOwpAQCAtMTE2NSwxNyArMTE4MiwyMSBAQCB0ZXN0X2lu dGVycnVwdHMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0 IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50 IGZlbmNlX2ZkOwogCWludCBmZDsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CiAKKwlj dHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Blbl9wbXUoSTkxNV9Q TVVfSU5URVJSVVBUUyk7CiAKIAkvKiBRdWV1ZSBzcGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAo aW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBpKyspIHsKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwKIAkJCQkJICAgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAor CQkJCQkgICAgICAgLmN0eCA9IGN0eCwKIAkJCQkJICAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZF TkNFX09VVCk7CiAJCWlmIChpID09IDApIHsKIAkJCWZlbmNlX2ZkID0gc3BpbltpXS0+b3V0X2Zl bmNlOwpAQCAtMTIxNyw2ICsxMjM4LDcgQEAgdGVzdF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAJ LyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4g Ki8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdl bV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0 LCBidXN5KTsKIH0KQEAgLTEyMjksMTUgKzEyNTEsMTkgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5bmMo aW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBw ZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZkOwogCiAJ Z2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIAorCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShn ZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9JTlRFUlJVUFRTKTsKIAogCS8qIFF1 ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkr KykKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJCQkJICAgICAg IC5jdHggPSBjdHgsCiAJCQkJCSAgICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwog CiAJLyogV2FpdCBmb3IgaWRsZSBzdGF0ZS4gKi8KQEAgLTEyNjIsNiArMTI4OCw3IEBAIHRlc3Rf aW50ZXJydXB0c19zeW5jKGludCBnZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBp bnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xl KGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBj dHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyNzQsNiArMTMw MSw5IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJZG91YmxlIG1pblsyXSwgbWF4WzJd OwogCWlndF9zcGluX3QgKnNwaW47CiAJaW50IGZkLCBzeXNmczsKKwl1aW50MzJfdCBjdHg7CisK KwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKIAogCXN5c2ZzID0gaWd0X3N5c2Zz X29wZW4oZ2VtX2ZkKTsKIAlpZ3RfcmVxdWlyZShzeXNmcyA+PSAwKTsKQEAgLTEzMDEsNyArMTMz MSw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2Zz X2dldF91MzIoc3lzZnMsICJndF9ib29zdF9mcmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdl bV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRh a2VzIGVmZmVjdCAqLwotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVO REVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVO REVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJl ZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzMjcsNyArMTM1Nyw3IEBA IHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91 MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoiKSA9PSBtYXhfZnJlcSk7CiAKIAlnZW1fcXVpZXNj ZW50X2dwdShnZW1fZmQpOwotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNf UkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNf UkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFz dXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzNDgsNiArMTM3OCw4 IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJCQkgbWluX2ZyZXEsIGlndF9zeXNmc19n ZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6IikpOwogCWNsb3NlKGZkKTsKIAorCWdlbV9j b250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOworCiAJaWd0X2luZm8oIk1pbiBmcmVxdWVuY3k6 IHJlcXVlc3RlZCAlLjFmLCBhY3R1YWwgJS4xZlxuIiwKIAkJIG1pblswXSwgbWluWzFdKTsKIAlp Z3RfaW5mbygiTWF4IGZyZXF1ZW5jeTogcmVxdWVzdGVkICUuMWYsIGFjdHVhbCAlLjFmXG4iLApA QCAtMTQ0OCw3ICsxNDgwLDcgQEAgdGVzdF9yYzYoaW50IGdlbV9mZCwgdW5zaWduZWQgaW50IGZs YWdzKQogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9lbmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit0ZXN0X2VuYWJsZV9yYWNlKGlu dCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAl1aW50NjRf dCBjb25maWcgPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwog CXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZW5naW5lX2xvYWQgPSB7IH07CkBAIC0xNDY1LDcg KzE0OTcsNyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVm ZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2Vt X2ZkLCBlKTsKKwllYi5mbGFncyA9IGUtPmZsYWdzOwogCiAJLyoKIAkgKiBUaGlzIHRlc3QgaXMg cHJvYmFiaWxpc3RpYyBzbyBydW4gaW4gYSBmZXcgdGltZXMgdG8gaW5jcmVhc2UgdGhlCkBAIC0x NTIwLDcgKzE1NTIsNyBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2goaWd0X3NwaW5f dCAqc3BpbikKIAlfX2Fzc2VydF93aXRoaW4oeCwgcmVmLCB0b2xlcmFuY2UsIHRvbGVyYW5jZSkK IAogc3RhdGljIHZvaWQKLWFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwKK2FjY3VyYWN5KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwKIAkgdW5zaWduZWQgbG9uZyB0YXJnZXRfYnVzeV9wY3QsCiAJ IHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2l0ZXJzKQogewpAQCAtMTU3MCw3ICsxNjAyLDcgQEAgYWNj dXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LAogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFu ZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2lu ZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKIAkJ Z2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCkBAIC0xNjc0LDcgKzE3MDYsNyBAQCBp Z3RfbWFpbgogCQkJCUk5MTVfUE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVSKDApICsgMTsKIAl1 bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwogCWludCBmZCA9IC0xOwotCWNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmU7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZ3RfZml4dHVyZSB7CkBAIC0xNjgzLDcg KzE3MTUsNyBAQCBpZ3RfbWFpbgogCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCQlpZ3RfcmVxdWly ZShpOTE1X3R5cGVfaWQoKSA+IDApOwogCi0JCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5j ZShmZCwgZSkKKwkJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUpCiAJCQludW1fZW5n aW5lcysrOwogCX0KIApAQCAtMTY5Myw3ICsxNzI1LDcgQEAgaWd0X21haW4KIAlpZ3Rfc3VidGVz dCgiaW52YWxpZC1pbml0IikKIAkJaW52YWxpZF9pbml0KCk7CiAKLQlfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUp IHsKIAkJY29uc3QgdW5zaWduZWQgaW50IHBjdFtdID0geyAyLCA1MCwgOTggfTsKIAogCQkvKioK QEAgLTE4OTcsNyArMTkyOSw3IEBAIGlndF9tYWluCiAJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7 CiAJCX0KIAotCQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7CisJCV9fZm9y X2VhY2hfcGh5c2ljYWxfZW5naW5lKHJlbmRlcl9mZCwgZSkgewogCQkJaWd0X3N1YnRlc3RfZ3Jv dXAgewogCQkJCWlndF9maXh0dXJlIHsKIAkJCQkJZ2VtX3JlcXVpcmVfZW5naW5lKHJlbmRlcl9m ZCwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2