From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 4.mo173.mail-out.ovh.net (4.mo173.mail-out.ovh.net [46.105.34.219]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E83889CF2 for ; Tue, 16 Apr 2019 23:11:12 +0000 (UTC) Received: from player792.ha.ovh.net (unknown [10.108.54.9]) by mo173.mail-out.ovh.net (Postfix) with ESMTP id F2D69FD7B5 for ; Wed, 17 Apr 2019 01:11:09 +0200 (CEST) From: Andi Shyti Date: Wed, 17 Apr 2019 02:10:23 +0300 Message-Id: <20190416231023.18086-7-andi@etezian.org> In-Reply-To: <20190416231023.18086-1-andi@etezian.org> References: <20190416231023.18086-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v22 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 ICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11LmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9u cygrKSwgNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2ln dF9ndC5oCmluZGV4IDBiNWM3ZmNiNGMzYy4uNzczMThlMmE4MmI4IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC0xMTksMTEgKzExOSw0IEBAIHZvaWQgZ2Vt X3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQsCiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19lbmdpbmUo Z2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsKIH0KIAotI2RlZmluZSBfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKLQotI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCi0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKLQkJZm9yX2lmIChnZW1faGFzX2Vu Z2luZSgoZmRfXyksIChlX18pLT5jbGFzcywgKGVfXyktPmluc3RhbmNlKSkKLQogI2VuZGlmIC8q IElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9w bXUuYwppbmRleCA0ZjU1MmJjMmFlMjguLjA0OTgyNDY2YmJjNyAxMDA2NDQKLS0tIGEvdGVzdHMv 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 VU47CiAKIAlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9mYWN0b3J5KGZkLCAmb3B0cyk7CkBAIC0y MDksMjAgKzIwNSwzNCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChpbnQgZmQs IGlndF9zcGluX3QgKnNwaW4pCiAJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKIH0K IAotc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwg dW5zaWduZWQgbG9uZyBmbGFncykKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3N5bmMoaW50 IGZkLCB1aW50MzJfdCBjdHgsCisJCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogewotCWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9sbChmZCwgY3R4LCBmbGFncyk7CisJ aWd0X3NwaW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBjdHgsIGUpOwogCiAJX19zcGluX3dh aXQoZmQsIHNwaW4pOwogCiAJcmV0dXJuIHNwaW47CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICog c3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3Rh dGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsCisJCQkgICAg ICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJaWd0X3JlcXVpcmVfZ2Vt KGZkKTsKIAotCXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBmbGFncyk7CisJcmV0dXJuIF9f c3Bpbl9zeW5jKGZkLCBjdHgsIGUpOworfQorCitzdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3lu Y19mbGFncyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlID0geyB9OworCisJZS5jbGFzcyA9IGdlbV9l eGVjYnVmX2ZsYWdzX3RvX2VuZ2luZV9jbGFzcyhmbGFncyk7CisJZS5pbnN0YW5jZSA9IChmbGFn cyAmIChJOTE1X0VYRUNfQlNEX01BU0sgfCBJOTE1X0VYRUNfUklOR19NQVNLKSkgPT0KKwkJICAg ICAoSTkxNV9FWEVDX0JTRCB8IEk5MTVfRVhFQ19CU0RfUklORzIpID8gMSA6IDA7CisJZS5mbGFn cyA9IGZsYWdzOworCisJcmV0dXJuIHNwaW5fc3luYyhmZCwgY3R4LCAmZSk7CiB9CiAKIHN0YXRp YyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZs YWdzKQpAQCAtMjU3LDcgKzI2Nyw3IEBAIHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0 X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAotc2lu Z2xlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwg dW5zaWduZWQgaW50IGZsYWdzKQorc2luZ2xlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXVuc2lnbmVkIGxvbmcg c2xlcHQ7CiAJaWd0X3NwaW5fdCAqc3BpbjsKQEAgLTI2Nyw3ICsyNzcsNyBAQCBzaW5nbGUoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25l ZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFz cywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IHNw aW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTMwMyw3ICszMTMs NyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB9CiAKIHN0YXRpYyB2b2lkCi1idXN5X3N0YXJ0 KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2J1 c3lfc3RhcnQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog ewogCXVuc2lnbmVkIGxvbmcgc2xlcHQ7CiAJdWludDY0X3QgdmFsLCB0c1syXTsKQEAgLTMxNiw3 ICszMjYsNyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSkKIAkgKi8KIAlzbGVlcCgyKTsKIAotCXNwaW4gPSBfX3NwaW5fc3lu YyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2Vt X2ZkLCAwLCBlKTsKIAogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xh c3MsIGUtPmluc3RhbmNlKSk7CiAKQEAgLTMzOCw3ICszNDgsNyBAQCBidXN5X3N0YXJ0KGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKICAqIHdpbGwg ZGVwZW5kIG9uIHRoZSBDSSBzeXN0ZW1zIHJ1bm5pbmcgaXQgYSBsb3QgdG8gZGV0ZWN0IGlzc3Vl cy4KICAqLwogc3RhdGljIHZvaWQKLWJ1c3lfZG91YmxlX3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK2J1c3lfZG91YmxlX3N0YXJ0KGlu dCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAl1bnNpZ25l ZCBsb25nIHNsZXB0OwogCXVpbnQ2NF90IHZhbCwgdmFsMiwgdHNbMl07CkBAIC0zNDcsNiArMzU3 LDcgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplKQogCWludCBmZDsKIAogCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShnZW1fZmQpOworCWdlbV9jb250ZXh0X3NldF9hbGxfZW5naW5lcyhnZW1fZmQsIGN0eCk7CiAK IAkvKgogCSAqIERlZmVhdCB0aGUgYnVzeSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQg dG8gZ3VhcmFudGVlIHdlIGFyZQpAQCAtMzU5LDExICszNzAsMTEgQEAgYnVzeV9kb3VibGVfc3Rh cnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBp cyBjb3JyZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVy IHRoZSBlbmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2VtX2Zk LCAwLCBlKTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25l dyhnZW1fZmQsCiAJCQkJICAgICAgIC5jdHggPSBjdHgsCi0JCQkJICAgICAgIC5lbmdpbmUgPSBl MnJpbmcoZ2VtX2ZkLCBlKSk7CisJCQkJICAgICAgIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAKIAkv KgogCSAqIE9wZW4gUE1VIGFzIGZhc3QgYXMgcG9zc2libGUgYWZ0ZXIgdGhlIHNlY29uZCBzcGlu IGJhdGNoIGluIGF0dGVtcHQKQEAgLTQyMSwxMCArNDMyLDEwIEBAIHN0YXRpYyB2b2lkIGxvZ19i dXN5KHVuc2lnbmVkIGludCBudW1fZW5naW5lcywgdWludDY0X3QgKnZhbCkKIH0KIAogc3RhdGlj IHZvaWQKLWJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKK2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwog CXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVuc2lnbmVkIGludCBidXN5X2lkeCA9 IDAsIGk7CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTQzNCw4ICs0NDUsOCBAQCBi dXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmUsCiAKIAlpID0gMDsKIAlmZFswXSA9IC0xOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFz c19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Ci0JCWlmIChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5 c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKKwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAm JiBlLT5pbnN0YW5jZSA9PSBlXy0+aW5zdGFuY2UpCiAJCQlidXN5X2lkeCA9IGk7CiAKIAkJZmRb aSsrXSA9IG9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLApAQCAtNDQ1 LDcgKzQ1Niw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9hc3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMp OwogCi0Jc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwlz cGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51 bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJh dGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ3 MiwyMyArNDgzLDIzIEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogc3RhdGljIHZvaWQKIF9fc3VibWl0X3NwaW5f YmF0Y2goaW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKLQkJICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkJICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSwKIAkJICAgIGludCBvZmZzZXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiBlYiA9IHNwaW4tPmV4ZWNidWY7CiAKIAllYi5mbGFncyAmPSB+KDB4M2YgfCBJ OTE1X0VYRUNfQlNEX01BU0spOwotCWViLmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkx NV9FWEVDX05PX1JFTE9DOworCWViLmZsYWdzIHw9IGUtPmZsYWdzIHwgSTkxNV9FWEVDX05PX1JF TE9DOwogCWViLmJhdGNoX3N0YXJ0X29mZnNldCArPSBvZmZzZXQ7CiAKIAlnZW1fZXhlY2J1Zihn ZW1fZmQsICZlYik7CiB9CiAKIHN0YXRpYyB2b2lkCi1tb3N0X2J1c3lfY2hlY2tfYWxsKGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK21vc3RfYnVz eV9jaGVja19hbGwoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LAogCQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2Vu Z2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVz XTsKQEAgLTQ5NywxMyArNTA4LDEzIEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCXVuc2lnbmVkIGludCBp ZGxlX2lkeCwgaTsKIAogCWkgPSAwOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShn ZW1fZmQsIGVfKSB7Ci0JCWlmIChlID09IGVfKQorCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5l KGdlbV9mZCwgZV8pIHsKKwkJaWYgKGUtPmNsYXNzID09IGVfLT5jbGFzcyAmJiBlLT5pbnN0YW5j ZSA9PSBlXy0+aW5zdGFuY2UpCiAJCQlpZGxlX2lkeCA9IGk7CiAJCWVsc2UgaWYgKHNwaW4pCiAJ CQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsKIAkJZWxzZQotCQkJ c3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZV8pKTsKKwkJCXNw aW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGVfKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1V X0VOR0lORV9CVVNZKGVfLT5jbGFzcywgZV8tPmluc3RhbmNlKTsKIAl9CkBAIC01NDUsNyArNTU2 LDcgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1 bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQlj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVp bnQ2NF90IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTU1NCwx MSArNTY1LDExIEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXMsCiAJdW5zaWduZWQgaW50IGk7CiAKIAlpID0gMDsKLQlmb3JfZWFj aF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlKSB7CisJX19mb3JfZWFjaF9waHlzaWNh bF9lbmdpbmUoZ2VtX2ZkLCBlKSB7CiAJCWlmIChzcGluKQogCQkJX19zdWJtaXRfc3Bpbl9iYXRj aChnZW1fZmQsIHNwaW4sIGUsIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdl bV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9m ZCwgMCwgZSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywg ZS0+aW5zdGFuY2UpOwogCX0KQEAgLTU5Miw3ICs2MDMsNyBAQCBhbGxfYnVzeV9jaGVja19hbGwo aW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogfQogCiBzdGF0aWMg dm9pZAotbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKK25vX3NlbWEoaW50IGdlbV9mZCwgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJaWd0 X3NwaW5fdCAqc3BpbjsKIAl1aW50NjRfdCB2YWxbMl1bMl07CkBAIC02MDIsNyArNjEzLDcgQEAg bm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9XQUlU KGUtPmNsYXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkK LQkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3Bp biA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAg LTYzMSw3ICs2NDIsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogI2RlZmluZSAgIE1JX1NF TUFQSE9SRV9TQURfR1RFX1NERAkoMTw8MTIpCiAKIHN0YXRpYyB2b2lkCi1zZW1hX3dhaXQoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorc2VtYV93 YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgIHVu c2lnbmVkIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgcmVsb2NbMl0gPSB7fTsKQEAgLTY4OSw3ICs3MDAsNyBAQCBzZW1hX3dhaXQoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJZWIuYnVmZmVy X2NvdW50ID0gMjsKIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwotCWVi LmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAogCS8q KgogCSAqIFN0YXJ0IHRoZSBzZW1hcGhvcmUgd2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25vd24g dGltZSBsZXQgdGhlIGFib3ZlCkBAIC03OTIsNyArODAzLDcgQEAgc3RhdGljIGludCB3YWl0X3Zi bGFuayhpbnQgZmQsIHVuaW9uIGRybV93YWl0X3ZibGFuayAqdmJsKQogfQogCiBzdGF0aWMgdm9p ZAotZXZlbnRfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmUpCitldmVudF93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7 IH07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsgfTsKQEAgLTg0NSw3 ICs4NTYsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVmZmVyc19w dHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBl KSB8IEk5MTVfRVhFQ19TRUNVUkU7CisJZWIuZmxhZ3MgPSBlLT5mbGFncyB8IEk5MTVfRVhFQ19T RUNVUkU7CiAKIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRhLmRpc3BsYXks IHAsIG91dHB1dCkgewogCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIHdhaXRlciA9IHsgfTsK QEAgLTkxNyw3ICs5MjgsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIH0KIAogc3RhdGljIHZvaWQKLW11bHRpX2NsaWVu dChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCitt dWx0aV9jbGllbnQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogewogCXVpbnQ2NF90IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBl LT5pbnN0YW5jZSk7CiAJdW5zaWduZWQgbG9uZyBzbGVwdFsyXTsKQEAgLTkzNiw3ICs5NDcsNyBA QCBtdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplKQogCSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBz cGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUo ZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKQEAgLTEwMzksNiArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3Rw bHVnKGludCBnZW1fZmQpCiAJaWd0X3NwaW5fdCAqc3BpblsyXTsKIAl1aW50NjRfdCB0c1syXTsK IAl1aW50NjRfdCB2YWw7CisJdWludDMyX3QgY3R4OwogCWludCBsaW5rWzJdOwogCWludCBmZCwg cmV0OwogCWludCBjdXIgPSAwOwpAQCAtMTA0NiwxNCArMTA1OCwxOCBAQCBzdGF0aWMgdm9pZCBj cHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCiAJaWd0X3JlcXVpcmUoY3B1MF9ob3RwbHVnX3N1cHBv cnQoKSk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwogCWZkID0gb3Bl bl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1koSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLCAwKSk7 CiAKIAkvKgogCSAqIENyZWF0ZSB0d28gc3Bpbm5lcnMgc28gdGVzdCBjYW4gZW5zdXJlIHNob3J0 ZXIgZ2FwcyBpbiBlbmdpbmUKIAkgKiBidXN5bmVzcyBhcyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUg YW5kIHJlLXN0YXJ0aW5nIHRoZSBvdGhlci4KIAkgKi8KLQlzcGluWzBdID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwotCXNwaW5bMV0gPSBf X2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsK KwlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJCQkgICAgIC5lbmdpbmUg PSBJOTE1X0VYRUNfUkVOREVSLCAuY3R4ID0gY3R4KTsKKwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLAorCQkJCSAgICAgICAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUiwg LmN0eCA9IGN0eCk7CiAKIAl2YWwgPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKIApA QCAtMTEzNyw2ICsxMTUzLDcgQEAgc3RhdGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkK IAogCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3BpbltjdXJdKTsKIAkJc3BpbltjdXJd ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLAorCQkJCQkJIC5jdHggPSBjdHgsCiAJCQkJ CQkgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwogCQljdXIgXj0gMTsKIAl9CkBAIC0xMTUw LDYgKzExNjcsNyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCWlndF93 YWl0Y2hpbGRyZW4oKTsKIAljbG9zZShmZCk7CiAJY2xvc2UobGlua1swXSk7CisJZ2VtX2NvbnRl eHRfZGVzdHJveShnZW1fZmQsIGN0eCk7CiAKIAkvKiBTa2lwIGlmIGNoaWxkIHNpZ25hbHMgYSBw cm9ibGVtIHdpdGggb2ZmbGluaW5nIGEgQ1BVLiAqLwogCWlndF9za2lwX29uKGJ1ZiA9PSAncycp OwpAQCAtMTE2NSwxNyArMTE4MywyMSBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAlp Z3Rfc3Bpbl90ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3Qg aWRsZSwgYnVzeTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZlbmNlX2ZkOwogCWludCBmZDsKIAog CWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CiAKKwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUo Z2VtX2ZkKTsKKwogCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfSU5URVJSVVBUUyk7CiAKIAkvKiBR dWV1ZSBzcGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBp KyspIHsKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKIAkJCQkJICAg ICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAorCQkJCQkgICAgICAgLmN0eCA9IGN0eCwK IAkJCQkJICAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7CiAJCWlmIChpID09IDAp IHsKIAkJCWZlbmNlX2ZkID0gc3BpbltpXS0+b3V0X2ZlbmNlOwpAQCAtMTIxNyw2ICsxMjM5LDcg QEAgdGVzdF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFu eSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVyYXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2lu Z2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2Zk LCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyMjksMTUg KzEyNTIsMTkgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5bmMoaW50IGdlbV9mZCkKIAlpZ3Rfc3Bpbl90 ICpzcGluW3RhcmdldF07CiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVz eTsKKwl1aW50MzJfdCBjdHg7CiAJaW50IGZkOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2Zk KTsKIAorCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOworCiAJZmQgPSBvcGVuX3Bt dShJOTE1X1BNVV9JTlRFUlJVUFRTKTsKIAogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMuICov CiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykKIAkJc3BpbltpXSA9IF9faWd0X3Nw aW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJCQkJICAgICAgIC5jdHggPSBjdHgsCiAJCQkJCSAgICAg ICAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwogCiAJLyogV2FpdCBmb3IgaWRsZSBzdGF0 ZS4gKi8KQEAgLTEyNjIsNiArMTI4OSw3IEBAIHRlc3RfaW50ZXJydXB0c19zeW5jKGludCBnZW1f ZmQpCiAJLyogQ2hlY2sgYXQgbGVhc3QgYXMgbWFueSBpbnRlcnJ1cHRzIGhhcyBiZWVuIGdlbmVy YXRlZC4gKi8KIAlidXN5ID0gcG11X3JlYWRfc2luZ2xlKGZkKSAtIGlkbGU7CiAJY2xvc2UoZmQp OworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwogCiAJaWd0X2Fzc2VydF9sdGUo dGFyZ2V0LCBidXN5KTsKIH0KQEAgLTEyNzQsNiArMTMwMiw5IEBAIHRlc3RfZnJlcXVlbmN5KGlu dCBnZW1fZmQpCiAJZG91YmxlIG1pblsyXSwgbWF4WzJdOwogCWlndF9zcGluX3QgKnNwaW47CiAJ aW50IGZkLCBzeXNmczsKKwl1aW50MzJfdCBjdHg7CisKKwljdHggPSBnZW1fY29udGV4dF9jcmVh dGUoZ2VtX2ZkKTsKIAogCXN5c2ZzID0gaWd0X3N5c2ZzX29wZW4oZ2VtX2ZkKTsKIAlpZ3RfcmVx dWlyZShzeXNmcyA+PSAwKTsKQEAgLTEzMDEsNyArMTMzMiw3IEBAIHRlc3RfZnJlcXVlbmN5KGlu dCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29z dF9mcmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7 IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBz cGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5j X2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3Jl YWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25f bnMgLyAxMDAwKTsKQEAgLTEzMjcsNyArMTM1OCw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1f ZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9t aHoiKSA9PSBtYXhfZnJlcSk7CiAKIAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwotCXNwaW4g PSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9z eW5jX2ZsYWdzKGdlbV9mZCwgY3R4LCBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11 X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKQEAgLTEzNDgsNiArMTM3OSw4IEBAIHRlc3RfZnJlcXVlbmN5KGludCBn ZW1fZmQpCiAJCQkgbWluX2ZyZXEsIGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2Zy ZXFfbWh6IikpOwogCWNsb3NlKGZkKTsKIAorCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBj dHgpOworCiAJaWd0X2luZm8oIk1pbiBmcmVxdWVuY3k6IHJlcXVlc3RlZCAlLjFmLCBhY3R1YWwg JS4xZlxuIiwKIAkJIG1pblswXSwgbWluWzFdKTsKIAlpZ3RfaW5mbygiTWF4IGZyZXF1ZW5jeTog cmVxdWVzdGVkICUuMWYsIGFjdHVhbCAlLjFmXG4iLApAQCAtMTQ0OCw3ICsxNDgxLDcgQEAgdGVz dF9yYzYoaW50IGdlbV9mZCwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAot dGVzdF9lbmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUpCit0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAl1aW50NjRfdCBjb25maWcgPSBJOTE1X1BNVV9FTkdJ TkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nl c3MgZW5naW5lX2xvYWQgPSB7IH07CkBAIC0xNDU4LDE0ICsxNDkxLDE0IEBAIHRlc3RfZW5hYmxl X3JhY2UoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogCWludCBmZDsKIAogCWlndF9yZXF1aXJlKGdlbV9oYXNfZXhlY2xpc3RzKGdlbV9mZCkpOwot CWlndF9yZXF1aXJlKGdlbV9oYXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNl KSk7CisJaWd0X3JlcXVpcmUoZ2VtX2NvbnRleHRfaGFzX2VuZ2luZShnZW1fZmQsIDAsIGUtPmZs YWdzKSk7CiAKIAlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZShnZW1fZmQsIDQwOTYpOwogCWdlbV93 cml0ZShnZW1fZmQsIG9iai5oYW5kbGUsIDAsICZiYmVuZCwgc2l6ZW9mKGJiZW5kKSk7CiAKIAll Yi5idWZmZXJfY291bnQgPSAxOwogCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZv YmopOwotCWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIuZmxhZ3MgPSBlLT5mbGFn czsKIAogCS8qCiAJICogVGhpcyB0ZXN0IGlzIHByb2JhYmlsaXN0aWMgc28gcnVuIGluIGEgZmV3 IHRpbWVzIHRvIGluY3JlYXNlIHRoZQpAQCAtMTUyMCw3ICsxNTUzLDcgQEAgc3RhdGljIHZvaWQg X19yZWFybV9zcGluX2JhdGNoKGlndF9zcGluX3QgKnNwaW4pCiAJX19hc3NlcnRfd2l0aGluKHgs IHJlZiwgdG9sZXJhbmNlLCB0b2xlcmFuY2UpCiAKIHN0YXRpYyB2b2lkCi1hY2N1cmFjeShpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCithY2N1cmFj eShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJIHVuc2ln bmVkIGxvbmcgdGFyZ2V0X2J1c3lfcGN0LAogCSB1bnNpZ25lZCBsb25nIHRhcmdldF9pdGVycykK IHsKQEAgLTE1NzAsNyArMTYwMyw3IEBAIGFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJaWd0X3NwaW5fdCAqc3BpbjsKIAogCQkv KiBBbGxvY2F0ZSBvdXIgc3BpbiBiYXRjaCBhbmQgaWRsZSBpdC4gKi8KLQkJc3BpbiA9IGlndF9z cGluX2JhdGNoX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJCXNw aW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAuZW5naW5lID0gZS0+ZmxhZ3MpOwogCQlp Z3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7CiAJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxl KTsKIApAQCAtMTY3NCw3ICsxNzA3LDcgQEAgaWd0X21haW4KIAkJCQlJOTE1X1BNVV9MQVNUIC0g X19JOTE1X1BNVV9PVEhFUigwKSArIDE7CiAJdW5zaWduZWQgaW50IG51bV9lbmdpbmVzID0gMDsK IAlpbnQgZmQgPSAtMTsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7 CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVuc2lnbmVkIGludCBpOwog CiAJaWd0X2ZpeHR1cmUgewpAQCAtMTY4Myw3ICsxNzE2LDcgQEAgaWd0X21haW4KIAkJaWd0X3Jl cXVpcmVfZ2VtKGZkKTsKIAkJaWd0X3JlcXVpcmUoaTkxNV90eXBlX2lkKCkgPiAwKTsKIAotCQlm b3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmQsIGUpCisJCV9fZm9yX2VhY2hfcGh5c2lj YWxfZW5naW5lKGZkLCBlKQogCQkJbnVtX2VuZ2luZXMrKzsKIAl9CiAKQEAgLTE2OTMsNyArMTcy Niw3IEBAIGlndF9tYWluCiAJaWd0X3N1YnRlc3QoImludmFsaWQtaW5pdCIpCiAJCWludmFsaWRf aW5pdCgpOwogCi0JX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZSkgeworCV9fZm9y X2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7CiAJCWNvbnN0IHVuc2lnbmVkIGludCBwY3Rb XSA9IHsgMiwgNTAsIDk4IH07CiAKIAkJLyoqCkBAIC0xNzExLDcgKzE3NDQsNyBAQCBpZ3RfbWFp bgogCiAJCWlndF9zdWJ0ZXN0X2dyb3VwIHsKIAkJCWlndF9maXh0dXJlIHsKLQkJCQlnZW1fcmVx dWlyZV9lbmdpbmUoZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CisJCQkJZ2VtX2NvbnRleHRf aGFzX2VuZ2luZShmZCwgMCwgZS0+ZmxhZ3MpOwogCQkJfQogCiAJCQkvKioKQEAgLTE4OTcsMTIg KzE5MzAsMTEgQEAgaWd0X21haW4KIAkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKIAkJfQogCi0J CV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKKwkJX19mb3JfZWFjaF9waHlz aWNhbF9lbmdpbmUocmVuZGVyX2ZkLCBlKSB7CiAJCQlpZ3Rfc3VidGVzdF9ncm91cCB7CiAJCQkJ aWd0X2ZpeHR1cmUgewotCQkJCQlnZW1fcmVxdWlyZV9lbmdpbmUocmVuZGVyX2ZkLAotCQkJCQkJ CSAgIGUtPmNsYXNzLAotCQkJCQkJCSAgIGUtPmluc3RhbmNlKTsKKwkJCQkJZ2VtX2NvbnRleHRf aGFzX2VuZ2luZShyZW5kZXJfZmQsCisJCQkJCQkJICAgMCwgZS0+ZmxhZ3MpOwogCQkJCX0KIAog CQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLWJ1c3ktJXMiLCBlLT5uYW1lKQotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=