From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id A8E5189E47 for ; Tue, 16 Apr 2019 15:11:43 +0000 (UTC) From: Andi Shyti Date: Tue, 16 Apr 2019 18:11:28 +0300 Message-Id: <20190416151128.2465-7-andi.shyti@intel.com> In-Reply-To: <20190416151128.2465-1-andi.shyti@intel.com> References: <20190416151128.2465-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v21 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+ClJl dmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0K IGxpYi9pZ3RfZ3QuaCAgICAgfCAgIDcgLS0tCiB0ZXN0cy9wZXJmX3BtdS5jIHwgMTQ4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5n ZWQsIDkwIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9p Z3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAppbmRleCAwYjVjN2ZjYjRjM2MuLjc3MzE4ZTJhODJiOCAx MDA2NDQKLS0tIGEvbGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtMTE5LDExICsx MTksNCBAQCB2b2lkIGdlbV9yZXF1aXJlX2VuZ2luZShpbnQgZ2VtX2ZkLAogCWlndF9yZXF1aXJl KGdlbV9oYXNfZW5naW5lKGdlbV9mZCwgY2xhc3MsIGluc3RhbmNlKSk7CiB9CiAKLSNkZWZpbmUg X19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZV9fKSBcCi0JZm9yICgoZV9fKSA9IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspCi0KLSNkZWZpbmUg Zm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkX18sIGVfXykgXAotCWZvciAoKGVfXykg PSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKSBcCi0JCWZv cl9pZiAoZ2VtX2hhc19lbmdpbmUoKGZkX18pLCAoZV9fKS0+Y2xhc3MsIChlX18pLT5pbnN0YW5j ZSkpCi0KICNlbmRpZiAvKiBJR1RfR1RfSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvcGVyZl9wbXUu YyBiL3Rlc3RzL3BlcmZfcG11LmMKaW5kZXggNGY1NTJiYzJhZTI4Li45M2U4ZWZjOWE2NDUgMTAw NjQ0Ci0tLSBhL3Rlc3RzL3BlcmZfcG11LmMKKysrIGIvdGVzdHMvcGVyZl9wbXUuYwpAQCAtNzIs NyArNzIsNyBAQCBzdGF0aWMgaW50IG9wZW5fZ3JvdXAodWludDY0X3QgY29uZmlnLCBpbnQgZ3Jv dXApCiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwgdWludDhfdCBzYW1wbGUpCitpbml0KGludCBnZW1fZmQs IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdWludDhfdCBzYW1wbGUpCiB7CiAJ aW50IGZkLCBlcnIgPSAwOwogCWJvb2wgZXhpc3RzOwpAQCAtODIsNyArODIsNyBAQCBpbml0KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdWludDhf dCBzYW1wbGUpCiAJaWYgKGZkIDwgMCkKIAkJZXJyID0gZXJybm87CiAKLQlleGlzdHMgPSBnZW1f aGFzX2VuZ2luZShnZW1fZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CisJZXhpc3RzID0gZ2Vt X2NvbnRleHRfaGFzX2VuZ2luZShnZW1fZmQsIDAsIGUtPmZsYWdzKTsKIAlpZiAoaW50ZWxfZ2Vu KGludGVsX2dldF9kcm1fZGV2aWQoZ2VtX2ZkKSkgPCA2ICYmCiAJICAgIHNhbXBsZSA9PSBJOTE1 X1NBTVBMRV9TRU1BKQogCQlleGlzdHMgPSBmYWxzZTsKQEAgLTE1OCwxMSArMTU4LDYgQEAgc3Rh dGljIHVuc2lnbmVkIGludCBtZWFzdXJlZF91c2xlZXAodW5zaWduZWQgaW50IHVzZWMpCiAJcmV0 dXJuIGlndF9uc2VjX2VsYXBzZWQoJnRzKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBlMnJp bmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQot ewotCXJldHVybiBnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3MoZ2VtX2ZkLCBlLT5jbGFz cywgZS0+aW5zdGFuY2UpOwotfQotCiAjZGVmaW5lIFRFU1RfQlVTWSAoMSkKICNkZWZpbmUgRkxB R19TWU5DICgyKQogI2RlZmluZSBURVNUX1RSQUlMSU5HX0lETEUgKDQpCkBAIC0xNzAsMTQgKzE2 NSwxNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAjZGVmaW5lIEZMQUdfTE9ORyAoMTYpCiAj ZGVmaW5lIEZMQUdfSEFORyAoMzIpCiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3BvbGwo aW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaWd0X3Nw aW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LAorCQkJCXN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSBvcHRz ID0gewogCQkuY3R4ID0gY3R4LAotCQkuZW5naW5lID0gZmxhZ3MsCisJCS5lbmdpbmUgPSBlLT5m bGFncywKIAl9OwogCi0JaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGZsYWdzKSkKKwlpZiAo Z2VtX2NsYXNzX2Nhbl9zdG9yZV9kd29yZChmZCwgZS0+Y2xhc3MpKQogCQlvcHRzLmZsYWdzIHw9 IElHVF9TUElOX1BPTExfUlVOOwogCiAJcmV0dXJuIF9faWd0X3NwaW5fYmF0Y2hfZmFjdG9yeShm ZCwgJm9wdHMpOwpAQCAtMjA5LDIwICsyMDUsMzQgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19z cGluX3dhaXQoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQogCXJldHVybiBpZ3RfbnNlY19lbGFw c2VkKCZzdGFydCk7CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3N5bmMoaW50IGZk LCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaWd0X3NwaW5fdCAq IF9fc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LAorCQkJCXN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSkKIHsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQs IGN0eCwgZmxhZ3MpOworCWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9sbChmZCwgY3R4LCBl KTsKIAogCV9fc3Bpbl93YWl0KGZkLCBzcGluKTsKIAogCXJldHVybiBzcGluOwogfQogCi1zdGF0 aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQg bG9uZyBmbGFncykKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jKGludCBmZCwgdWludDMy X3QgY3R4LAorCQkJICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewog CWlndF9yZXF1aXJlX2dlbShmZCk7CiAKLQlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxh Z3MpOworCXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBlKTsKK30KKworc3RhdGljIGlndF9z cGluX3QgKiBzcGluX3N5bmNfZmxhZ3MoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGlu dCBmbGFncykKK3sKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZSA9IHsgfTsKKwor CWUuY2xhc3MgPSBnZW1fZXhlY2J1Zl9mbGFnc190b19lbmdpbmVfY2xhc3MoZmxhZ3MpOworCWUu aW5zdGFuY2UgPSAoZmxhZ3MgJiAoSTkxNV9FWEVDX0JTRF9NQVNLIHwgSTkxNV9FWEVDX1JJTkdf TUFTSykpID09CisJCSAgICAgKEk5MTVfRVhFQ19CU0QgfCBJOTE1X0VYRUNfQlNEX1JJTkcyKSA/ IDEgOiAwOworCWUuZmxhZ3MgPSBmbGFnczsKKworCXJldHVybiBzcGluX3N5bmMoZmQsIGN0eCwg JmUpOwogfQogCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4s IHVuc2lnbmVkIGludCBmbGFncykKQEAgLTI1Nyw3ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCBlbmRf c3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBmbGFncykKIH0KIAog c3RhdGljIHZvaWQKLXNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKK3NpbmdsZShpbnQgZ2VtX2ZkLCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIHsK IAl1bnNpZ25lZCBsb25nIHNsZXB0OwogCWlndF9zcGluX3QgKnNwaW47CkBAIC0yNjcsNyArMjc3 LDcgQEAgc2luZ2xlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5H SU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CiAKIAlpZiAoZmxhZ3MgJiBURVNUX0JV U1kpCi0JCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJ CXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlKTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwog CkBAIC0zMDMsNyArMzEzLDcgQEAgc2luZ2xlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMg dm9pZAotYnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUpCitidXN5X3N0YXJ0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSkKIHsKIAl1bnNpZ25lZCBsb25nIHNsZXB0OwogCXVpbnQ2NF90IHZhbCwg dHNbMl07CkBAIC0zMTYsNyArMzI2LDcgQEAgYnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJc2xlZXAoMik7CiAKLQlz cGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3BpbiA9 IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VO R0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCkBAIC0zMzgsNyArMzQ4LDcgQEAg YnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiAgKiB3aWxsIGRlcGVuZCBvbiB0aGUgQ0kgc3lzdGVtcyBydW5uaW5nIGl0IGEgbG90 IHRvIGRldGVjdCBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1idXN5X2RvdWJsZV9zdGFydChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCitidXN5 X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUpCiB7CiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAl1aW50NjRfdCB2YWwsIHZhbDIsIHRzWzJd OwpAQCAtMzQ2LDcgKzM1Niw3IEBAIGJ1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAl1aW50MzJfdCBjdHg7CiAJaW50 IGZkOwogCi0JY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdlbV9mZCk7CisJY3R4ID0gZ2VtX21h a2VfY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoZ2VtX2ZkKTsKIAogCS8qCiAJICogRGVmZWF0IHRo ZSBidXN5IHN0YXRzIGRlbGF5ZWQgZGlzYWJsZSwgd2UgbmVlZCB0byBndWFyYW50ZWUgd2UgYXJl CkBAIC0zNTksMTEgKzM2OSwxMSBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICogcmUtc3VibWlzc2lvbiBp biBleGVjbGlzdHMgbW9kZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3RseQogCSAqIHJl cG9ydGVkIHdpdGggdGhlIGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVuZ2luZSB3ZW50IGlk bGUuCiAJICovCi0Jc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9m ZCwgZSkpOworCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCXVzbGVlcCg1 MDBlMyk7CiAJc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKIAkJCQkgICAg ICAgLmN0eCA9IGN0eCwKLQkJCQkgICAgICAgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsK KwkJCQkgICAgICAgLmVuZ2luZSA9IGUtPmZsYWdzKTsKIAogCS8qCiAJICogT3BlbiBQTVUgYXMg ZmFzdCBhcyBwb3NzaWJsZSBhZnRlciB0aGUgc2Vjb25kIHNwaW4gYmF0Y2ggaW4gYXR0ZW1wdApA QCAtMzkzLDcgKzQwMyw3IEBAIGJ1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWNsb3NlKGZkKTsKIAotCWdlbV9j b250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOworCWdlbV91bnNldF9jb250ZXh0X2VuZ2luZXMo Z2VtX2ZkLCBjdHgpOwogCiAJYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHZhbCwgdHNbMV0gLSB0c1sw XSwgdG9sZXJhbmNlKTsKIAlpZ3RfYXNzZXJ0X2VxKHZhbDIsIDApOwpAQCAtNDIxLDEwICs0MzEs MTAgQEAgc3RhdGljIHZvaWQgbG9nX2J1c3kodW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1aW50 NjRfdCAqdmFsKQogfQogCiBzdGF0aWMgdm9pZAotYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorYnVzeV9jaGVja19hbGwo aW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCSAgICAgICBj b25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQlj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOworCXN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZV87CiAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5naW5lc107CiAJ dW5zaWduZWQgaW50IGJ1c3lfaWR4ID0gMCwgaTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2luZXNd OwpAQCAtNDM0LDggKzQ0NCw4IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWkgPSAwOwogCWZkWzBdID0gLTE7 Ci0JZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKLQkJaWYgKGUg PT0gZV8pCisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2VtX2ZkLCBlXykgeworCQlpZiAo ZS0+Y2xhc3MgPT0gZV8tPmNsYXNzICYmIGUtPmluc3RhbmNlID09IGVfLT5pbnN0YW5jZSkKIAkJ CWJ1c3lfaWR4ID0gaTsKIAogCQlmZFtpKytdID0gb3Blbl9ncm91cChJOTE1X1BNVV9FTkdJTkVf QlVTWShlXy0+Y2xhc3MsCkBAIC00NDUsNyArNDU1LDcgQEAgYnVzeV9jaGVja19hbGwoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJaWd0X2Fz c2VydF9lcShpLCBudW1fZW5naW5lcyk7CiAKLQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwg ZTJyaW5nKGdlbV9mZCwgZSkpOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlKTsKIAlw bXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNsZXB0ID0gbWVh c3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZsYWdzICYgVEVT VF9UUkFJTElOR19JRExFKQpAQCAtNDcyLDIzICs0ODIsMjMgQEAgYnVzeV9jaGVja19hbGwoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiBzdGF0 aWMgdm9pZAogX19zdWJtaXRfc3Bpbl9iYXRjaChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGlu LAotCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgICAg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgaW50IG9mZnNldCkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gc3Bpbi0+ZXhlY2J1ZjsKIAog CWViLmZsYWdzICY9IH4oMHgzZiB8IEk5MTVfRVhFQ19CU0RfTUFTSyk7Ci0JZWIuZmxhZ3MgfD0g ZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7CisJZWIuZmxhZ3MgfD0gZS0+ ZmxhZ3MgfCBJOTE1X0VYRUNfTk9fUkVMT0M7CiAJZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0ICs9IG9m ZnNldDsKIAogCWdlbV9leGVjYnVmKGdlbV9mZCwgJmViKTsKIH0KIAogc3RhdGljIHZvaWQKLW1v c3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAorbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2Vu Z2luZXMsIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmVfOworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZV87CiAJ dWludDY0X3QgdHZhbFsyXVtudW1fZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVz XTsKIAlpbnQgZmRbbnVtX2VuZ2luZXNdOwpAQCAtNDk3LDEzICs1MDcsMTMgQEAgbW9zdF9idXN5 X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsCiAJdW5zaWduZWQgaW50IGlkbGVfaWR4LCBpOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hf ZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKLQkJaWYgKGUgPT0gZV8pCisJX19m b3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2VtX2ZkLCBlXykgeworCQlpZiAoZS0+Y2xhc3MgPT0g ZV8tPmNsYXNzICYmIGUtPmluc3RhbmNlID09IGVfLT5pbnN0YW5jZSkKIAkJCWlkbGVfaWR4ID0g aTsKIAkJZWxzZSBpZiAoc3BpbikKIAkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGlu LCBlXywgNjQpOwogCQllbHNlCi0JCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlMnJp bmcoZ2VtX2ZkLCBlXykpOworCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZV8pOwog CiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLCBlXy0+aW5zdGFu Y2UpOwogCX0KQEAgLTU0NSw3ICs1NTUsNyBAQCBzdGF0aWMgdm9pZAogYWxsX2J1c3lfY2hlY2tf YWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5naW5lcywKIAkJICAgdW5z aWduZWQgaW50IGZsYWdzKQogewotCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdWludDY0X3QgdHZh bFsyXVtudW1fZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKIAlpbnQgZmRb bnVtX2VuZ2luZXNdOwpAQCAtNTU0LDExICs1NjQsMTEgQEAgYWxsX2J1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5naW5lcywKIAl1bnNpZ25lZCBpbnQg aTsKIAogCWkgPSAwOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGUp IHsKKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGUpIHsKIAkJaWYgKHNwaW4p CiAJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZSwgNjQpOwogCQllbHNlCi0J CQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJCQlz cGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1V X0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJfQpAQCAtNTkyLDcgKzYwMiw3 IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVt X2VuZ2luZXMsCiB9CiAKIHN0YXRpYyB2b2lkCi1ub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQorbm9f c2VtYShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2ln bmVkIGludCBmbGFncykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGluOwogCXVpbnQ2NF90IHZhbFsyXVsy XTsKQEAgLTYwMiw3ICs2MTIsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCW9wZW5fZ3Jv dXAoSTkxNV9QTVVfRU5HSU5FX1dBSVQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwgZmQpOwogCiAJ aWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJZWxz ZQogCQlzcGluID0gTlVMTDsKIApAQCAtNjMxLDcgKzY0MSw3IEBAIG5vX3NlbWEoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCiAjZGVmaW5lICAgTUlfU0VNQVBIT1JFX1NBRF9HVEVfU0RECSgxPDwxMikKIAogc3Rh dGljIHZvaWQKLXNlbWFfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUsCitzZW1hX3dhaXQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplLAogCSAgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1syXSA9IHt9OwpAQCAtNjg5LDcgKzY5OSw3 IEBAIHNlbWFfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmUsCiAKIAllYi5idWZmZXJfY291bnQgPSAyOwogCWViLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKG9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwllYi5m bGFncyA9IGUtPmZsYWdzOwogCiAJLyoqCiAJICogU3RhcnQgdGhlIHNlbWFwaG9yZSB3YWl0IFBN VSBhbmQgYWZ0ZXIgc29tZSBrbm93biB0aW1lIGxldCB0aGUgYWJvdmUKQEAgLTc5Miw3ICs4MDIs NyBAQCBzdGF0aWMgaW50IHdhaXRfdmJsYW5rKGludCBmZCwgdW5pb24gZHJtX3dhaXRfdmJsYW5r ICp2YmwpCiB9CiAKIHN0YXRpYyB2b2lkCi1ldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2V2ZW50X3dhaXQoaW50IGdlbV9mZCwg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyIGViID0geyB9OwpAQCAtODQ1LDcgKzg1NSw3IEBAIGV2ZW50X3dhaXQoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCiAJZWIuYnVmZmVyX2Nv dW50ID0gMTsKIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKTsKLQllYi5m bGFncyA9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX1NFQ1VSRTsKKwllYi5mbGFncyA9 IGUtPmZsYWdzIHwgSTkxNV9FWEVDX1NFQ1VSRTsKIAogCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxp ZF9vdXRwdXQoJmRhdGEuZGlzcGxheSwgcCwgb3V0cHV0KSB7CiAJCXN0cnVjdCBpZ3RfaGVscGVy X3Byb2Nlc3Mgd2FpdGVyID0geyB9OwpAQCAtOTE3LDcgKzkyNyw3IEBAIGV2ZW50X3dhaXQoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogfQogCiBz dGF0aWMgdm9pZAotbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKK211bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJdWludDY0X3QgY29uZmlnID0gSTkxNV9QTVVf RU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKIAl1bnNpZ25lZCBsb25nIHNsZXB0 WzJdOwpAQCAtOTM2LDcgKzk0Niw3IEBAIG11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJZmRbMV0gPSBvcGVuX3Bt dShjb25maWcpOwogCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQs IGUpKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAKIAl2YWxbMF0gPSB2YWxb MV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZFswXSwgJnRzWzBdKTsKIAlzbGVwdFsxXSA9IG1lYXN1 cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTAzOSw2ICsxMDQ5LDcg QEAgc3RhdGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGlu WzJdOwogCXVpbnQ2NF90IHRzWzJdOwogCXVpbnQ2NF90IHZhbDsKKwl1aW50MzJfdCBjdHg7CiAJ aW50IGxpbmtbMl07CiAJaW50IGZkLCByZXQ7CiAJaW50IGN1ciA9IDA7CkBAIC0xMDQ2LDE0ICsx MDU3LDE4IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1fZmQpCiAKIAlpZ3RfcmVx dWlyZShjcHUwX2hvdHBsdWdfc3VwcG9ydCgpKTsKIAorCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShJOTE1X0VO R0lORV9DTEFTU19SRU5ERVIsIDApKTsKIAogCS8qCiAJICogQ3JlYXRlIHR3byBzcGlubmVycyBz byB0ZXN0IGNhbiBlbnN1cmUgc2hvcnRlciBnYXBzIGluIGVuZ2luZQogCSAqIGJ1c3luZXNzIGFz IGl0IGlzIHRlcm1pbmF0aW5nIG9uZSBhbmQgcmUtc3RhcnRpbmcgdGhlIG90aGVyLgogCSAqLwot CXNwaW5bMF0gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAuZW5naW5lID0gSTkxNV9FWEVD X1JFTkRFUik7Ci0Jc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2lu ZSA9IEk5MTVfRVhFQ19SRU5ERVIpOworCXNwaW5bMF0gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2Vt X2ZkLAorCQkJCSAgICAgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIsIC5jdHggPSBjdHgpOwor CXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsCisJCQkJICAgICAgIC5lbmdp bmUgPSBJOTE1X0VYRUNfUkVOREVSLCAuY3R4ID0gY3R4KTsKIAogCXZhbCA9IF9fcG11X3JlYWRf c2luZ2xlKGZkLCAmdHNbMF0pOwogCkBAIC0xMTM3LDYgKzExNTIsNyBAQCBzdGF0aWMgdm9pZCBj cHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCiAJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBz cGluW2N1cl0pOwogCQlzcGluW2N1cl0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsCisJ CQkJCQkgLmN0eCA9IGN0eCwKIAkJCQkJCSAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUik7CiAJ CWN1ciBePSAxOwogCX0KQEAgLTExNTAsNiArMTE2Niw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3Rw bHVnKGludCBnZW1fZmQpCiAJaWd0X3dhaXRjaGlsZHJlbigpOwogCWNsb3NlKGZkKTsKIAljbG9z ZShsaW5rWzBdKTsKKwlnZW1fY29udGV4dF9kZXN0cm95KGdlbV9mZCwgY3R4KTsKIAogCS8qIFNr aXAgaWYgY2hpbGQgc2lnbmFscyBhIHByb2JsZW0gd2l0aCBvZmZsaW5pbmcgYSBDUFUuICovCiAJ aWd0X3NraXBfb24oYnVmID09ICdzJyk7CkBAIC0xMTY1LDE3ICsxMTgyLDIxIEBAIHRlc3RfaW50 ZXJydXB0cyhpbnQgZ2VtX2ZkKQogCWlndF9zcGluX3QgKnNwaW5bdGFyZ2V0XTsKIAlzdHJ1Y3Qg cG9sbGZkIHBmZDsKIAl1aW50NjRfdCBpZGxlLCBidXN5OworCXVpbnQzMl90IGN0eDsKIAlpbnQg ZmVuY2VfZmQ7CiAJaW50IGZkOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIAorCWN0 eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BN VV9JTlRFUlJVUFRTKTsKIAogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9yIChp bnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykgewogCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZ2VtX2ZkLAogCQkJCQkgICAgICAgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIsCisJ CQkJCSAgICAgICAuY3R4ID0gY3R4LAogCQkJCQkgICAgICAgLmZsYWdzID0gSUdUX1NQSU5fRkVO Q0VfT1VUKTsKIAkJaWYgKGkgPT0gMCkgewogCQkJZmVuY2VfZmQgPSBzcGluW2ldLT5vdXRfZmVu Y2U7CkBAIC0xMjE3LDYgKzEyMzgsNyBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAkv KiBDaGVjayBhdCBsZWFzdCBhcyBtYW55IGludGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVkLiAq LwogCWJ1c3kgPSBwbXVfcmVhZF9zaW5nbGUoZmQpIC0gaWRsZTsKIAljbG9zZShmZCk7CisJZ2Vt X2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0eCk7CiAKIAlpZ3RfYXNzZXJ0X2x0ZSh0YXJnZXQs IGJ1c3kpOwogfQpAQCAtMTIyOSwxNSArMTI1MSwxOSBAQCB0ZXN0X2ludGVycnVwdHNfc3luYyhp bnQgZ2VtX2ZkKQogCWlndF9zcGluX3QgKnNwaW5bdGFyZ2V0XTsKIAlzdHJ1Y3QgcG9sbGZkIHBm ZDsKIAl1aW50NjRfdCBpZGxlLCBidXN5OworCXVpbnQzMl90IGN0eDsKIAlpbnQgZmQ7CiAKIAln ZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwogCisJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdl bV9mZCk7CisKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0lOVEVSUlVQVFMpOwogCiAJLyogUXVl dWUgc3Bpbm5pbmcgYmF0Y2hlcy4gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IHRhcmdldDsgaSsr KQogCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAorCQkJCQkgICAgICAg LmN0eCA9IGN0eCwKIAkJCQkJICAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7CiAK IAkvKiBXYWl0IGZvciBpZGxlIHN0YXRlLiAqLwpAQCAtMTI2Miw2ICsxMjg4LDcgQEAgdGVzdF9p bnRlcnJ1cHRzX3N5bmMoaW50IGdlbV9mZCkKIAkvKiBDaGVjayBhdCBsZWFzdCBhcyBtYW55IGlu dGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVkLiAqLwogCWJ1c3kgPSBwbXVfcmVhZF9zaW5nbGUo ZmQpIC0gaWRsZTsKIAljbG9zZShmZCk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0 eCk7CiAKIAlpZ3RfYXNzZXJ0X2x0ZSh0YXJnZXQsIGJ1c3kpOwogfQpAQCAtMTI3NCw2ICsxMzAx LDkgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlkb3VibGUgbWluWzJdLCBtYXhbMl07 CiAJaWd0X3NwaW5fdCAqc3BpbjsKIAlpbnQgZmQsIHN5c2ZzOworCXVpbnQzMl90IGN0eDsKKwor CWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOwogCiAJc3lzZnMgPSBpZ3Rfc3lzZnNf b3BlbihnZW1fZmQpOwogCWlndF9yZXF1aXJlKHN5c2ZzID49IDApOwpAQCAtMTMwMSw3ICsxMzMx LDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNf Z2V0X3UzMihzeXNmcywgImd0X2Jvb3N0X2ZyZXFfbWh6IikgPT0gbWluX2ZyZXEpOwogCiAJZ2Vt X3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsgLyogSWRsZSB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgdGFr ZXMgZWZmZWN0ICovCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5E RVIpOworCXNwaW4gPSBzcGluX3N5bmNfZmxhZ3MoZ2VtX2ZkLCBjdHgsIEk5MTVfRVhFQ19SRU5E RVIpOwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVk X3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTMyNyw3ICsxMzU3LDcgQEAg dGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0X3Uz MihzeXNmcywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAogCWdlbV9xdWllc2Nl bnRfZ3B1KGdlbV9mZCk7Ci0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19S RU5ERVIpOworCXNwaW4gPSBzcGluX3N5bmNfZmxhZ3MoZ2VtX2ZkLCBjdHgsIEk5MTVfRVhFQ19S RU5ERVIpOwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1 cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTM0OCw2ICsxMzc4LDgg QEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAkJCSBtaW5fZnJlcSwgaWd0X3N5c2ZzX2dl dF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoiKSk7CiAJY2xvc2UoZmQpOwogCisJZ2VtX2Nv bnRleHRfZGVzdHJveShnZW1fZmQsIGN0eCk7CisKIAlpZ3RfaW5mbygiTWluIGZyZXF1ZW5jeTog cmVxdWVzdGVkICUuMWYsIGFjdHVhbCAlLjFmXG4iLAogCQkgbWluWzBdLCBtaW5bMV0pOwogCWln dF9pbmZvKCJNYXggZnJlcXVlbmN5OiByZXF1ZXN0ZWQgJS4xZiwgYWN0dWFsICUuMWZcbiIsCkBA IC0xNDQ4LDcgKzE0ODAsNyBAQCB0ZXN0X3JjNihpbnQgZ2VtX2ZkLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB9CiAKIHN0YXRpYyB2b2lkCi10ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3Rlc3RfZW5hYmxlX3JhY2UoaW50 IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVpbnQ2NF90 IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJ c3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBlbmdpbmVfbG9hZCA9IHsgfTsKQEAgLTE0NjUsNyAr MTQ5Nyw3IEBAIHRlc3RfZW5hYmxlX3JhY2UoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCiAJZWIuYnVmZmVyX2NvdW50ID0gMTsKIAllYi5idWZm ZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKTsKLQllYi5mbGFncyA9IGUycmluZyhnZW1f ZmQsIGUpOworCWViLmZsYWdzID0gZS0+ZmxhZ3M7CiAKIAkvKgogCSAqIFRoaXMgdGVzdCBpcyBw cm9iYWJpbGlzdGljIHNvIHJ1biBpbiBhIGZldyB0aW1lcyB0byBpbmNyZWFzZSB0aGUKQEAgLTE1 MjAsNyArMTU1Miw3IEBAIHN0YXRpYyB2b2lkIF9fcmVhcm1fc3Bpbl9iYXRjaChpZ3Rfc3Bpbl90 ICpzcGluKQogCV9fYXNzZXJ0X3dpdGhpbih4LCByZWYsIHRvbGVyYW5jZSwgdG9sZXJhbmNlKQog CiBzdGF0aWMgdm9pZAotYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLAorYWNjdXJhY3koaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLAogCSB1bnNpZ25lZCBsb25nIHRhcmdldF9idXN5X3BjdCwKIAkg dW5zaWduZWQgbG9uZyB0YXJnZXRfaXRlcnMpCiB7CkBAIC0xNTcwLDcgKzE2MDIsNyBAQCBhY2N1 cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUs CiAJCWlndF9zcGluX3QgKnNwaW47CiAKIAkJLyogQWxsb2NhdGUgb3VyIHNwaW4gYmF0Y2ggYW5k IGlkbGUgaXQuICovCi0JCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAuZW5naW5l ID0gZTJyaW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9m ZCwgLmVuZ2luZSA9IGUtPmZsYWdzKTsKIAkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4pOwogCQln ZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKQEAgLTE2NzQsNyArMTcwNiw3IEBAIGln dF9tYWluCiAJCQkJSTkxNV9QTVVfTEFTVCAtIF9fSTkxNV9QTVVfT1RIRVIoMCkgKyAxOwogCXVu c2lnbmVkIGludCBudW1fZW5naW5lcyA9IDA7CiAJaW50IGZkID0gLTE7Ci0JY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZTsKIAl1bnNpZ25lZCBpbnQgaTsKIAogCWlndF9maXh0dXJlIHsKQEAgLTE2ODMsNyAr MTcxNSw3IEBAIGlndF9tYWluCiAJCWlndF9yZXF1aXJlX2dlbShmZCk7CiAJCWlndF9yZXF1aXJl KGk5MTVfdHlwZV9pZCgpID4gMCk7CiAKLQkJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNl KGZkLCBlKQorCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZSkKIAkJCW51bV9lbmdp bmVzKys7CiAJfQogCkBAIC0xNjkzLDcgKzE3MjUsNyBAQCBpZ3RfbWFpbgogCWlndF9zdWJ0ZXN0 KCJpbnZhbGlkLWluaXQiKQogCQlpbnZhbGlkX2luaXQoKTsKIAotCV9fZm9yX2VhY2hfZW5naW5l X2NsYXNzX2luc3RhbmNlKGUpIHsKKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZSkg ewogCQljb25zdCB1bnNpZ25lZCBpbnQgcGN0W10gPSB7IDIsIDUwLCA5OCB9OwogCiAJCS8qKgpA QCAtMTg5Nyw3ICsxOTI5LDcgQEAgaWd0X21haW4KIAkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsK IAkJfQogCi0JCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKKwkJX19mb3Jf ZWFjaF9waHlzaWNhbF9lbmdpbmUocmVuZGVyX2ZkLCBlKSB7CiAJCQlpZ3Rfc3VidGVzdF9ncm91 cCB7CiAJCQkJaWd0X2ZpeHR1cmUgewogCQkJCQlnZW1fcmVxdWlyZV9lbmdpbmUocmVuZGVyX2Zk LAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=