From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 6.mo5.mail-out.ovh.net (6.mo5.mail-out.ovh.net [178.32.119.138]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E0718928F for ; Mon, 13 May 2019 00:52:18 +0000 (UTC) Received: from player799.ha.ovh.net (unknown [10.109.159.154]) by mo5.mail-out.ovh.net (Postfix) with ESMTP id B46CF2321FF for ; Mon, 13 May 2019 02:46:15 +0200 (CEST) From: Andi Shyti Date: Mon, 13 May 2019 03:45:00 +0300 Message-Id: <20190513004508.8042-7-andi@etezian.org> In-Reply-To: <20190513004508.8042-1-andi@etezian.org> References: <20190513004508.8042-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v23 06/14] test: perf_pmu: use the gem_engine_topology library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: IGT dev Cc: Tvrtko Ursulin , Andi Shyti List-ID: RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpSZXBsYWNlIHRoZSBsZWdh Y3kgZm9yX2VhY2hfZW5naW5lKiBkZWZpbmVzIHdpdGggdGhlIG9uZXMKaW1wbGVtZW50ZWQgaW4g dGhlIGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeS4KClVzZSB3aGVuZXZlciBwb3NzaWJsZSBn ZW1fZW5naW5lX2Nhbl9zdG9yZV9kd29yZCgpIHRoYXQgY2hlY2tzCmNsYXNzIGluc3RlYWQgb2Yg ZmxhZ3MuCgpOb3cgdGhlIF9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlIGFuZApmb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYXJlIHVudXNlZCwgcmVtb3ZlIHRoZW0uCgpTdWdn ZXN0ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9ndC5oICAg ICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11LmMgfCAxNTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOTEgaW5zZXJ0aW9u cygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2ln dF9ndC5oCmluZGV4IDBiNWM3ZmNiNGMzYy4uNzczMThlMmE4MmI4IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC0xMTksMTEgKzExOSw0IEBAIHZvaWQgZ2Vt X3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQsCiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19lbmdpbmUo Z2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsKIH0KIAotI2RlZmluZSBfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKLQotI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCi0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKLQkJZm9yX2lmIChnZW1faGFzX2Vu Z2luZSgoZmRfXyksIChlX18pLT5jbGFzcywgKGVfXyktPmluc3RhbmNlKSkKLQogI2VuZGlmIC8q IElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9w bXUuYwppbmRleCBlNzE5YTI5MmEzZDEuLjcyY2VlNTNhNGVmYyAxMDA2NDQKLS0tIGEvdGVzdHMv cGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRp YyBpbnQgb3Blbl9ncm91cCh1aW50NjRfdCBjb25maWcsIGludCBncm91cCkKIH0KIAogc3RhdGlj IHZvaWQKLWluaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1aW50OF90IHNhbXBsZSkKK2luaXQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKIHsKIAlpbnQgZmQsIGVyciA9IDA7 CiAJYm9vbCBleGlzdHM7CkBAIC04Miw3ICs4Miw3IEBAIGluaXQoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKIAlpZiAo ZmQgPCAwKQogCQllcnIgPSBlcnJubzsKIAotCWV4aXN0cyA9IGdlbV9oYXNfZW5naW5lKGdlbV9m ZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKKwlleGlzdHMgPSBnZW1fY29udGV4dF9oYXNfZW5n aW5lKGdlbV9mZCwgMCwgZS0+ZmxhZ3MpOwogCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9k ZXZpZChnZW1fZmQpKSA8IDYgJiYKIAkgICAgc2FtcGxlID09IEk5MTVfU0FNUExFX1NFTUEpCiAJ CWV4aXN0cyA9IGZhbHNlOwpAQCAtMTU4LDExICsxNTgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50 IG1lYXN1cmVkX3VzbGVlcCh1bnNpZ25lZCBpbnQgdXNlYykKIAlyZXR1cm4gaWd0X25zZWNfZWxh cHNlZCgmdHMpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCi17Ci0JcmV0dXJuIGdlbV9j bGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhnZW1fZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7 Ci19Ci0KICNkZWZpbmUgVEVTVF9CVVNZICgxKQogI2RlZmluZSBGTEFHX1NZTkMgKDIpCiAjZGVm aW5lIFRFU1RfVFJBSUxJTkdfSURMRSAoNCkKQEAgLTE3MCwxNCArMTY1LDE1IEBAIHN0YXRpYyB1 bnNpZ25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSkKICNkZWZpbmUgRkxBR19MT05HICgxNikKICNkZWZpbmUgRkxBR19IQU5H ICgzMikKIAotc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3Bv bGwoaW50IGZkLCB1aW50MzJfdCBjdHgsCisJCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplKQogewogCXN0cnVjdCBpZ3Rfc3Bpbl9mYWN0b3J5IG9wdHMgPSB7CiAJCS5jdHggPSBj dHgsCi0JCS5lbmdpbmUgPSBmbGFncywKKwkJLmVuZ2luZSA9IGUtPmZsYWdzLAogCX07CiAKLQlp ZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxhZ3MpKQorCWlmIChnZW1fY2xhc3NfY2FuX3N0 b3JlX2R3b3JkKGZkLCBlLT5jbGFzcykpCiAJCW9wdHMuZmxhZ3MgfD0gSUdUX1NQSU5fUE9MTF9S VU47CiAKIAlyZXR1cm4gX19pZ3Rfc3Bpbl9mYWN0b3J5KGZkLCAmb3B0cyk7CkBAIC0yMDksMjAg KzIwNSwzNCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChpbnQgZmQsIGlndF9z cGluX3QgKnNwaW4pCiAJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKIH0KIAotc3Rh dGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWdu ZWQgbG9uZyBmbGFncykKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3N5bmMoaW50IGZkLCB1 aW50MzJfdCBjdHgsCisJCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewot CWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9sbChmZCwgY3R4LCBmbGFncyk7CisJaWd0X3Nw aW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBjdHgsIGUpOwogCiAJX19zcGluX3dhaXQoZmQs IHNwaW4pOwogCiAJcmV0dXJuIHNwaW47CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9z eW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGljIGln dF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsCisJCQkgICAgICBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJaWd0X3JlcXVpcmVfZ2VtKGZkKTsK IAotCXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBmbGFncyk7CisJcmV0dXJuIF9fc3Bpbl9z eW5jKGZkLCBjdHgsIGUpOworfQorCitzdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luY19mbGFn cyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiBlID0geyB9OworCisJZS5jbGFzcyA9IGdlbV9leGVjYnVm X2ZsYWdzX3RvX2VuZ2luZV9jbGFzcyhmbGFncyk7CisJZS5pbnN0YW5jZSA9IChmbGFncyAmIChJ OTE1X0VYRUNfQlNEX01BU0sgfCBJOTE1X0VYRUNfUklOR19NQVNLKSkgPT0KKwkJICAgICAoSTkx NV9FWEVDX0JTRCB8IEk5MTVfRVhFQ19CU0RfUklORzIpID8gMSA6IDA7CisJZS5mbGFncyA9IGZs YWdzOworCisJcmV0dXJuIHNwaW5fc3luYyhmZCwgY3R4LCAmZSk7CiB9CiAKIHN0YXRpYyB2b2lk IGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQpA QCAtMjU3LDcgKzI2Nyw3IEBAIHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5f dCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAotc2luZ2xlKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWdu ZWQgaW50IGZsYWdzKQorc2luZ2xlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXVuc2lnbmVkIGxvbmcgc2xlcHQ7 CiAJaWd0X3NwaW5fdCAqc3BpbjsKQEAgLTI2Nyw3ICsyNzcsNyBAQCBzaW5nbGUoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+ aW5zdGFuY2UpKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1f ZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTMwMyw3ICszMTMsNyBAQCBz aW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB9CiAKIHN0YXRpYyB2b2lkCi1idXN5X3N0YXJ0KGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2J1c3lfc3Rh cnQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVu c2lnbmVkIGxvbmcgc2xlcHQ7CiAJdWludDY0X3QgdmFsLCB0c1syXTsKQEAgLTMxNiw3ICszMjYs NyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKIAkgKi8KIAlzbGVlcCgyKTsKIAotCXNwaW4gPSBfX3NwaW5fc3luYyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAw LCBlKTsKIAogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUt Pmluc3RhbmNlKSk7CiAKQEAgLTMzOCw3ICszNDgsNyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKICAqIHdpbGwgZGVwZW5k IG9uIHRoZSBDSSBzeXN0ZW1zIHJ1bm5pbmcgaXQgYSBsb3QgdG8gZGV0ZWN0IGlzc3Vlcy4KICAq Lwogc3RhdGljIHZvaWQKLWJ1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2J1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1f ZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAl1bnNpZ25lZCBsb25n IHNsZXB0OwogCXVpbnQ2NF90IHZhbCwgdmFsMiwgdHNbMl07CkBAIC0zNDcsNiArMzU3LDcgQEAg YnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogCWludCBmZDsKIAogCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1f ZmQpOworCWdlbV9jb250ZXh0X3NldF9hbGxfZW5naW5lcyhnZW1fZmQsIGN0eCk7CiAKIAkvKgog CSAqIERlZmVhdCB0aGUgYnVzeSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQgdG8gZ3Vh cmFudGVlIHdlIGFyZQpAQCAtMzU5LDExICszNzAsMTEgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqIHJl LXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBpcyBjb3Jy ZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBl bmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBl KTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhnZW1fZmQsCiAJ CQkJIC5jdHggPSBjdHgsCi0JCQkJIC5lbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJCQkJ IC5lbmdpbmUgPSBlLT5mbGFncyk7CiAKIAkvKgogCSAqIE9wZW4gUE1VIGFzIGZhc3QgYXMgcG9z c2libGUgYWZ0ZXIgdGhlIHNlY29uZCBzcGluIGJhdGNoIGluIGF0dGVtcHQKQEAgLTQyMSwxMCAr NDMyLDEwIEBAIHN0YXRpYyB2b2lkIGxvZ19idXN5KHVuc2lnbmVkIGludCBudW1fZW5naW5lcywg dWludDY0X3QgKnZhbCkKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfY2hlY2tfYWxsKGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2J1c3lfY2hlY2tf YWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgICAg ICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNd OwogCXVuc2lnbmVkIGludCBidXN5X2lkeCA9IDAsIGk7CiAJdWludDY0X3QgdmFsW251bV9lbmdp bmVzXTsKQEAgLTQzNCw4ICs0NDUsOCBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpID0gMDsKIAlmZFswXSA9 IC0xOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlm IChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJ aWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2Up CiAJCQlidXN5X2lkeCA9IGk7CiAKIAkJZmRbaSsrXSA9IG9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5H SU5FX0JVU1koZV8tPmNsYXNzLApAQCAtNDQ1LDcgKzQ1Niw3IEBAIGJ1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWln dF9hc3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQs IDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7 CiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9 IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFncyAm IFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ3OCwxNyArNDg5LDE3IEBAIF9fc3VibWl0X3NwaW4o aW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNi dWZmZXIyIGViID0gc3Bpbi0+ZXhlY2J1ZjsKIAogCWViLmZsYWdzICY9IH4oMHgzZiB8IEk5MTVf RVhFQ19CU0RfTUFTSyk7Ci0JZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VY RUNfTk9fUkVMT0M7CisJZWIuZmxhZ3MgfD0gZS0+ZmxhZ3MgfCBJOTE1X0VYRUNfTk9fUkVMT0M7 CiAJZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0ICs9IG9mZnNldDsKIAogCWdlbV9leGVjYnVmKGdlbV9m ZCwgJmViKTsKIH0KIAogc3RhdGljIHZvaWQKLW1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorbW9zdF9idXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJ CSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFncykK IHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOworCXN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZV87CiAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5naW5l c107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKIAlpbnQgZmRbbnVtX2VuZ2luZXNdOwpA QCAtNDk3LDEzICs1MDgsMTMgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJdW5zaWduZWQgaW50IGlkbGVf aWR4LCBpOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9m ZCwgZV8pIHsKLQkJaWYgKGUgPT0gZV8pCisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2Vt X2ZkLCBlXykgeworCQlpZiAoZS0+Y2xhc3MgPT0gZV8tPmNsYXNzICYmIGUtPmluc3RhbmNlID09 IGVfLT5pbnN0YW5jZSkKIAkJCWlkbGVfaWR4ID0gaTsKIAkJZWxzZSBpZiAoc3BpbikKIAkJCV9f c3VibWl0X3NwaW4oZ2VtX2ZkLCBzcGluLCBlXywgNjQpOwogCQllbHNlCi0JCQlzcGluID0gX19z cGluX3BvbGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOworCQkJc3BpbiA9IF9fc3Bp bl9wb2xsKGdlbV9mZCwgMCwgZV8pOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5FX0JV U1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwogCX0KQEAgLTU0NSw3ICs1NTYsNyBAQCBzdGF0 aWMgdm9pZAogYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGlu dCBudW1fZW5naW5lcywKIAkJICAgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmU7CiAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5naW5lc107CiAJdWludDY0X3QgdmFs W251bV9lbmdpbmVzXTsKIAlpbnQgZmRbbnVtX2VuZ2luZXNdOwpAQCAtNTU0LDExICs1NjUsMTEg QEAgYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1f ZW5naW5lcywKIAl1bnNpZ25lZCBpbnQgaTsKIAogCWkgPSAwOwotCWZvcl9lYWNoX2VuZ2luZV9j bGFzc19pbnN0YW5jZShnZW1fZmQsIGUpIHsKKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShn ZW1fZmQsIGUpIHsKIAkJaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9zcGluKGdlbV9mZCwgc3Bpbiwg ZSwgNjQpOwogCQllbHNlCi0JCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlMnJpbmco Z2VtX2ZkLCBlKSk7CisJCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlKTsKIAogCQl2 YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJ fQpAQCAtNTkyLDcgKzYwMyw3IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25z dCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiB9CiAKIHN0YXRpYyB2b2lkCi1ub19zZW1hKGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWdu ZWQgaW50IGZsYWdzKQorbm9fc2VtYShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGluOwog CXVpbnQ2NF90IHZhbFsyXVsyXTsKQEAgLTYwMiw3ICs2MTMsNyBAQCBub19zZW1hKGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50 IGZsYWdzKQogCW9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5FX1dBSVQoZS0+Y2xhc3MsIGUtPmlu c3RhbmNlKSwgZmQpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bpbl9z eW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gc3Bpbl9zeW5jKGdl bV9mZCwgMCwgZSk7CiAJZWxzZQogCQlzcGluID0gTlVMTDsKIApAQCAtNjMxLDcgKzY0Miw3IEBA IG5vX3NlbWEoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAjZGVmaW5lICAgTUlfU0VNQVBIT1JFX1NBRF9HVEVf U0RECSgxPDwxMikKIAogc3RhdGljIHZvaWQKLXNlbWFfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCitzZW1hX3dhaXQoaW50IGdlbV9mZCwg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCSAgdW5zaWduZWQgaW50IGZsYWdz KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1syXSA9IHt9 OwpAQCAtNjg5LDcgKzcwMCw3IEBAIHNlbWFfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAllYi5idWZmZXJfY291bnQgPSAyOwogCWVi LmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmco Z2VtX2ZkLCBlKTsKKwllYi5mbGFncyA9IGUtPmZsYWdzOwogCiAJLyoqCiAJICogU3RhcnQgdGhl IHNlbWFwaG9yZSB3YWl0IFBNVSBhbmQgYWZ0ZXIgc29tZSBrbm93biB0aW1lIGxldCB0aGUgYWJv dmUKQEAgLTc5Miw3ICs4MDMsNyBAQCBzdGF0aWMgaW50IHdhaXRfdmJsYW5rKGludCBmZCwgdW5p b24gZHJtX3dhaXRfdmJsYW5rICp2YmwpCiB9CiAKIHN0YXRpYyB2b2lkCi1ldmVudF93YWl0KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2V2ZW50 X3dhaXQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewog CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0geyB9OwpAQCAtODQ1LDcgKzg1Niw3IEBAIGV2ZW50 X3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogCiAJZWIuYnVmZmVyX2NvdW50ID0gMTsKIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9p bnRlcigmb2JqKTsKLQllYi5mbGFncyA9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX1NF Q1VSRTsKKwllYi5mbGFncyA9IGUtPmZsYWdzIHwgSTkxNV9FWEVDX1NFQ1VSRTsKIAogCWZvcl9l YWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoJmRhdGEuZGlzcGxheSwgcCwgb3V0cHV0KSB7CiAJ CXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3Mgd2FpdGVyID0geyB9OwpAQCAtOTE3LDcgKzkyOCw3 IEBAIGV2ZW50X3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplKQogfQogCiBzdGF0aWMgdm9pZAotbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK211bHRpX2NsaWVudChpbnQg Z2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJdWludDY0X3Qg Y29uZmlnID0gSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKIAl1 bnNpZ25lZCBsb25nIHNsZXB0WzJdOwpAQCAtOTM2LDcgKzk0Nyw3IEBAIG11bHRpX2NsaWVudChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICov CiAJZmRbMV0gPSBvcGVuX3BtdShjb25maWcpOwogCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQs IDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7 CiAKIAl2YWxbMF0gPSB2YWxbMV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZFswXSwgJnRzWzBdKTsK IAlzbGVwdFsxXSA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpA QCAtMTAzOSw2ICsxMDUwLDcgQEAgc3RhdGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkK IAlpZ3Rfc3Bpbl90ICpzcGluWzJdOwogCXVpbnQ2NF90IHRzWzJdOwogCXVpbnQ2NF90IHZhbDsK Kwl1aW50MzJfdCBjdHg7CiAJaW50IGxpbmtbMl07CiAJaW50IGZkLCByZXQ7CiAJaW50IGN1ciA9 IDA7CkBAIC0xMDQ2LDE0ICsxMDU4LDE3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBn ZW1fZmQpCiAKIAlpZ3RfcmVxdWlyZShjcHUwX2hvdHBsdWdfc3VwcG9ydCgpKTsKIAorCWN0eCA9 IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9F TkdJTkVfQlVTWShJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIsIDApKTsKIAogCS8qCiAJICogQ3Jl YXRlIHR3byBzcGlubmVycyBzbyB0ZXN0IGNhbiBlbnN1cmUgc2hvcnRlciBnYXBzIGluIGVuZ2lu ZQogCSAqIGJ1c3luZXNzIGFzIGl0IGlzIHRlcm1pbmF0aW5nIG9uZSBhbmQgcmUtc3RhcnRpbmcg dGhlIG90aGVyLgogCSAqLwotCXNwaW5bMF0gPSBpZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuZW5naW5l ID0gSTkxNV9FWEVDX1JFTkRFUik7Ci0Jc3BpblsxXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwg LmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOworCXNwaW5bMF0gPSBpZ3Rfc3Bpbl9uZXcoZ2Vt X2ZkLCAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUiwgLmN0eCA9IGN0eCk7CisJc3BpblsxXSA9 IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIsCisJCQkJ IC5jdHggPSBjdHgpOwogCiAJdmFsID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1swXSk7CiAK QEAgLTExMzcsNiArMTE1Miw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1fZmQp CiAKIAkJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW5bY3VyXSk7CiAJCXNwaW5bY3VyXSA9IF9f aWd0X3NwaW5fbmV3KGdlbV9mZCwKKwkJCQkJICAgLmN0eCA9IGN0eCwKIAkJCQkJICAgLmVuZ2lu ZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwogCQljdXIgXj0gMTsKIAl9CkBAIC0xMTUwLDYgKzExNjYs NyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCWlndF93YWl0Y2hpbGRy ZW4oKTsKIAljbG9zZShmZCk7CiAJY2xvc2UobGlua1swXSk7CisJZ2VtX2NvbnRleHRfZGVzdHJv eShnZW1fZmQsIGN0eCk7CiAKIAkvKiBTa2lwIGlmIGNoaWxkIHNpZ25hbHMgYSBwcm9ibGVtIHdp dGggb2ZmbGluaW5nIGEgQ1BVLiAqLwogCWlndF9za2lwX29uKGJ1ZiA9PSAncycpOwpAQCAtMTE2 NSwxNyArMTE4MiwyMSBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90 ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVz eTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZlbmNlX2ZkOwogCWludCBmZDsKIAogCWdlbV9xdWll c2NlbnRfZ3B1KGdlbV9mZCk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsK KwogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfSU5URVJSVVBUUyk7CiAKIAkvKiBRdWV1ZSBzcGlu bmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBpKyspIHsKIAkJ c3BpbltpXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKIAkJCQkJIC5lbmdpbmUgPSBJOTE1X0VY RUNfUkVOREVSLAorCQkJCQkgLmN0eCA9IGN0eCwKIAkJCQkJIC5mbGFncyA9IElHVF9TUElOX0ZF TkNFX09VVCk7CiAJCWlmIChpID09IDApIHsKIAkJCWZlbmNlX2ZkID0gc3BpbltpXS0+b3V0X2Zl bmNlOwpAQCAtMTIxNyw2ICsxMjM4LDcgQEAgdGVzdF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAJ LyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4g Ki8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdl bV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0 LCBidXN5KTsKIH0KQEAgLTEyMjksMTUgKzEyNTEsMTkgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5bmMo aW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBw ZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZkOwogCiAJ Z2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIAorCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShn ZW1fZmQpOworCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9JTlRFUlJVUFRTKTsKIAogCS8qIFF1 ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkr KykKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKKwkJCQkJIC5jdHggPSBjdHgs CiAJCQkJCSAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwogCiAJLyogV2FpdCBmb3IgaWRs ZSBzdGF0ZS4gKi8KQEAgLTEyNjIsNiArMTI4OCw3IEBAIHRlc3RfaW50ZXJydXB0c19zeW5jKGlu dCBnZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVu IGdlbmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xv c2UoZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2Vy dF9sdGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyNzQsNiArMTMwMSw5IEBAIHRlc3RfZnJlcXVl bmN5KGludCBnZW1fZmQpCiAJZG91YmxlIG1pblsyXSwgbWF4WzJdOwogCWlndF9zcGluX3QgKnNw aW47CiAJaW50IGZkLCBzeXNmczsKKwl1aW50MzJfdCBjdHg7CisKKwljdHggPSBnZW1fY29udGV4 dF9jcmVhdGUoZ2VtX2ZkKTsKIAogCXN5c2ZzID0gaWd0X3N5c2ZzX29wZW4oZ2VtX2ZkKTsKIAlp Z3RfcmVxdWlyZShzeXNmcyA+PSAwKTsKQEAgLTEzMDEsNyArMTMzMSw3IEBAIHRlc3RfZnJlcXVl bmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJn dF9ib29zdF9mcmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdl bV9mZCk7IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNw aW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bp bl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0g cG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVy YXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzMjcsNyArMTM1Nyw3IEBAIHRlc3RfZnJlcXVlbmN5KGlu dCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5f ZnJlcV9taHoiKSA9PSBtYXhfZnJlcSk7CiAKIAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwot CXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0g c3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0 ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hf ZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzNDgsNiArMTM3OCw4IEBAIHRlc3RfZnJlcXVlbmN5 KGludCBnZW1fZmQpCiAJCQkgbWluX2ZyZXEsIGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3Rf bWluX2ZyZXFfbWh6IikpOwogCWNsb3NlKGZkKTsKIAorCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2Vt X2ZkLCBjdHgpOworCiAJaWd0X2luZm8oIk1pbiBmcmVxdWVuY3k6IHJlcXVlc3RlZCAlLjFmLCBh Y3R1YWwgJS4xZlxuIiwKIAkJIG1pblswXSwgbWluWzFdKTsKIAlpZ3RfaW5mbygiTWF4IGZyZXF1 ZW5jeTogcmVxdWVzdGVkICUuMWYsIGFjdHVhbCAlLjFmXG4iLApAQCAtMTQ0OCw3ICsxNDgwLDcg QEAgdGVzdF9yYzYoaW50IGdlbV9mZCwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMg dm9pZAotdGVzdF9lbmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUpCit0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAl1aW50NjRfdCBjb25maWcgPSBJOTE1X1BN VV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCXN0cnVjdCBpZ3RfaGVscGVy X3Byb2Nlc3MgZW5naW5lX2xvYWQgPSB7IH07CkBAIC0xNDU4LDE0ICsxNDkwLDE0IEBAIHRlc3Rf ZW5hYmxlX3JhY2UoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplKQogCWludCBmZDsKIAogCWlndF9yZXF1aXJlKGdlbV9oYXNfZXhlY2xpc3RzKGdlbV9m ZCkpOwotCWlndF9yZXF1aXJlKGdlbV9oYXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmlu c3RhbmNlKSk7CisJaWd0X3JlcXVpcmUoZ2VtX2NvbnRleHRfaGFzX2VuZ2luZShnZW1fZmQsIDAs IGUtPmZsYWdzKSk7CiAKIAlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZShnZW1fZmQsIDQwOTYpOwog CWdlbV93cml0ZShnZW1fZmQsIG9iai5oYW5kbGUsIDAsICZiYmVuZCwgc2l6ZW9mKGJiZW5kKSk7 CiAKIAllYi5idWZmZXJfY291bnQgPSAxOwogCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2lu dGVyKCZvYmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIuZmxhZ3MgPSBl LT5mbGFnczsKIAogCS8qCiAJICogVGhpcyB0ZXN0IGlzIHByb2JhYmlsaXN0aWMgc28gcnVuIGlu IGEgZmV3IHRpbWVzIHRvIGluY3JlYXNlIHRoZQpAQCAtMTUxMiw3ICsxNTQ0LDcgQEAgdGVzdF9l bmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiAJX19hc3NlcnRfd2l0aGluKHgsIHJlZiwgdG9sZXJhbmNlLCB0b2xlcmFuY2UpCiAK IHN0YXRpYyB2b2lkCi1hY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUsCithY2N1cmFjeShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUsCiAJIHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2J1c3lfcGN0LAogCSB1 bnNpZ25lZCBsb25nIHRhcmdldF9pdGVycykKIHsKQEAgLTE1NjIsNyArMTU5NCw3IEBAIGFjY3Vy YWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwK IAkJaWd0X3NwaW5fdCAqc3BpbjsKIAogCQkvKiBBbGxvY2F0ZSBvdXIgc3BpbiBiYXRjaCBhbmQg aWRsZSBpdC4gKi8KLQkJc3BpbiA9IGlndF9zcGluX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBlMnJp bmcoZ2VtX2ZkLCBlKSk7CisJCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuZW5naW5lID0g ZS0+ZmxhZ3MpOwogCQlpZ3Rfc3Bpbl9lbmQoc3Bpbik7CiAJCWdlbV9zeW5jKGdlbV9mZCwgc3Bp bi0+aGFuZGxlKTsKIApAQCAtMTY2Niw3ICsxNjk4LDcgQEAgaWd0X21haW4KIAkJCQlJOTE1X1BN VV9MQVNUIC0gX19JOTE1X1BNVV9PVEhFUigwKSArIDE7CiAJdW5zaWduZWQgaW50IG51bV9lbmdp bmVzID0gMDsKIAlpbnQgZmQgPSAtMTsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVuc2lnbmVk IGludCBpOwogCiAJaWd0X2ZpeHR1cmUgewpAQCAtMTY3NSw3ICsxNzA3LDcgQEAgaWd0X21haW4K IAkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKIAkJaWd0X3JlcXVpcmUoaTkxNV90eXBlX2lkKCkgPiAw KTsKIAotCQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmQsIGUpCisJCV9fZm9yX2Vh Y2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKQogCQkJbnVtX2VuZ2luZXMrKzsKIAl9CiAKQEAgLTE2 ODUsNyArMTcxNyw3IEBAIGlndF9tYWluCiAJaWd0X3N1YnRlc3QoImludmFsaWQtaW5pdCIpCiAJ CWludmFsaWRfaW5pdCgpOwogCi0JX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZSkg eworCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7CiAJCWNvbnN0IHVuc2lnbmVk IGludCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07CiAKIAkJLyoqCkBAIC0xNzAzLDcgKzE3MzUsNyBA QCBpZ3RfbWFpbgogCiAJCWlndF9zdWJ0ZXN0X2dyb3VwIHsKIAkJCWlndF9maXh0dXJlIHsKLQkJ CQlnZW1fcmVxdWlyZV9lbmdpbmUoZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CisJCQkJZ2Vt X2NvbnRleHRfaGFzX2VuZ2luZShmZCwgMCwgZS0+ZmxhZ3MpOwogCQkJfQogCiAJCQkvKioKQEAg LTE4ODksMTIgKzE5MjEsMTEgQEAgaWd0X21haW4KIAkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsK IAkJfQogCi0JCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKKwkJX19mb3Jf ZWFjaF9waHlzaWNhbF9lbmdpbmUocmVuZGVyX2ZkLCBlKSB7CiAJCQlpZ3Rfc3VidGVzdF9ncm91 cCB7CiAJCQkJaWd0X2ZpeHR1cmUgewotCQkJCQlnZW1fcmVxdWlyZV9lbmdpbmUocmVuZGVyX2Zk LAotCQkJCQkJCSAgIGUtPmNsYXNzLAotCQkJCQkJCSAgIGUtPmluc3RhbmNlKTsKKwkJCQkJZ2Vt X2NvbnRleHRfaGFzX2VuZ2luZShyZW5kZXJfZmQsCisJCQkJCQkJICAgMCwgZS0+ZmxhZ3MpOwog CQkJCX0KIAogCQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLWJ1c3ktJXMiLCBlLT5uYW1l KQotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=