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 A1F13892CA for ; Sun, 7 Apr 2019 23:57:19 +0000 (UTC) Received: from player758.ha.ovh.net (unknown [10.109.159.140]) by mo7.mail-out.ovh.net (Postfix) with ESMTP id EFABD10C272 for ; Mon, 8 Apr 2019 00:38:39 +0200 (CEST) From: Andi Shyti Date: Mon, 8 Apr 2019 01:37:54 +0300 Message-Id: <20190407223754.6940-7-andi@etezian.org> In-Reply-To: <20190407223754.6940-1-andi@etezian.org> References: <20190407223754.6940-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v18 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 ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYXJlIHVudXNlZCwgcmVtb3ZlIHRoZW0uCgpTaWdu ZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGludGVsLmNvbT4KQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Ci0tLQpIaSBUdnJ0a28sCgpz dGlsbCB0aGUgdGVzdHMgdXNpbmcgdGhlICpidXN5KiBmdW5jdGlvbnMgZmFpbCBhcyBJIGV4cGxh aW5lZAp5b3UgYWxyZWFkeS4gSSB3b3VsZCBhcHByZWNpYXRlIGlmIHlvdSBjb3VsZCB0YWtlIGEg bG9vayBpbnRvIGl0LgpUaGlzIHRpbWUgSSBzaG91bGRuJ3QgaGF2ZSBmb3Jnb3R0ZW4gYW55IHBh dGNoIDopCgpBbmRpCgogbGliL2lndF9ndC5oICAgICB8ICAgNyAtLS0KIHRlc3RzL3BlcmZfcG11 LmMgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IDdjYTUyNjMzYTgzNS4u YjdlNmJkYzMzZGI3IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5o CkBAIC0xMjEsMTEgKzEyMSw0IEBAIHZvaWQgZ2VtX3JlcXVpcmVfZW5naW5lKGludCBnZW1fZmQs CiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBjbGFzcywgaW5zdGFuY2UpKTsK IH0KIAotI2RlZmluZSBfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlX18pIFwKLQlm b3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykr KykKLQotI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBc Ci0JZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChl X18pKyspIFwKLQkJZm9yX2lmIChnZW1faGFzX2VuZ2luZSgoZmRfXyksIChlX18pLT5jbGFzcywg KGVfXyktPmluc3RhbmNlKSkKLQogI2VuZGlmIC8qIElHVF9HVF9IICovCmRpZmYgLS1naXQgYS90 ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRleCA0ZjU1MmJjMmFlMjguLjBh Zjk1NTEzOWMzZSAxMDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJm X3BtdS5jCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQgb3Blbl9ncm91cCh1aW50NjRfdCBj b25maWcsIGludCBncm91cCkKIH0KIAogc3RhdGljIHZvaWQKLWluaXQoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90IHNhbXBsZSkKK2lu aXQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1aW50OF90 IHNhbXBsZSkKIHsKIAlpbnQgZmQsIGVyciA9IDA7CiAJYm9vbCBleGlzdHM7CkBAIC0xNTgsMTEg KzE1OCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWVhc3VyZWRfdXNsZWVwKHVuc2lnbmVkIGlu dCB1c2VjKQogCXJldHVybiBpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CiB9CiAKLXN0YXRpYyB1bnNp Z25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKLXsKLQlyZXR1cm4gZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGdl bV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKLX0KLQogI2RlZmluZSBURVNUX0JVU1kgKDEp CiAjZGVmaW5lIEZMQUdfU1lOQyAoMikKICNkZWZpbmUgVEVTVF9UUkFJTElOR19JRExFICg0KQpA QCAtMTcwLDE0ICsxNjUsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFH X0xPTkcgKDE2KQogI2RlZmluZSBGTEFHX0hBTkcgKDMyKQogCi1zdGF0aWMgaWd0X3NwaW5fdCAq IF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQor c3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJ CQlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJc3RydWN0IGlndF9zcGlu X2ZhY3Rvcnkgb3B0cyA9IHsKIAkJLmN0eCA9IGN0eCwKLQkJLmVuZ2luZSA9IGZsYWdzLAorCQku ZW5naW5lID0gZS0+ZmxhZ3MsCiAJfTsKIAotCWlmIChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBm bGFncykpCisJaWYgKGdlbV9jbGFzc19jYW5fc3RvcmVfZHdvcmQoZmQsIGUtPmNsYXNzKSkKIAkJ b3B0cy5mbGFncyB8PSBJR1RfU1BJTl9QT0xMX1JVTjsKIAogCXJldHVybiBfX2lndF9zcGluX2Jh dGNoX2ZhY3RvcnkoZmQsICZvcHRzKTsKQEAgLTIwOSwyMCArMjA1LDMxIEBAIHN0YXRpYyB1bnNp Z25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKIAlyZXR1cm4g aWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwogfQogCi1zdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bp bl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorc3RhdGlj IGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCQlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7Ci0JaWd0X3NwaW5fdCAqc3BpbiA9IF9f c3Bpbl9wb2xsKGZkLCBjdHgsIGZsYWdzKTsKKwlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3Bv bGwoZmQsIGN0eCwgZSk7CiAKIAlfX3NwaW5fd2FpdChmZCwgc3Bpbik7CiAKIAlyZXR1cm4gc3Bp bjsKIH0KIAotc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBj dHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhp bnQgZmQsIHVpbnQzMl90IGN0eCwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSkKIHsKIAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCi0JcmV0dXJuIF9fc3Bpbl9zeW5j KGZkLCBjdHgsIGZsYWdzKTsKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZSk7Cit9CisK K3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jX2ZsYWdzKGludCBmZCwgdWludDMyX3QgY3R4 LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy IGU7CisKKwlnZW1fZWJfdG9fY2xhc3NfaW5zdGFuY2UoZmQsIGZsYWdzLCAmZSk7CisKKwlyZXR1 cm4gc3Bpbl9zeW5jKGZkLCBjdHgsICZlKTsKIH0KIAogc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50 IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCkBAIC0yNTcsNyArMjY0 LDcgQEAgc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB9CiAKIHN0YXRpYyB2b2lkCi1zaW5nbGUoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp CitzaW5nbGUoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAlpZ3Rfc3Bpbl90 ICpzcGluOwpAQCAtMjY3LDcgKzI3NCw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlmZCA9 IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwog CiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwg ZTJyaW5nKGdlbV9mZCwgZSkpOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZSk7CiAJ ZWxzZQogCQlzcGluID0gTlVMTDsKIApAQCAtMzAzLDcgKzMxMCw3IEBAIHNpbmdsZShpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGlu dCBmbGFncykKIH0KIAogc3RhdGljIHZvaWQKLWJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorYnVzeV9zdGFydChpbnQgZ2VtX2Zk LCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJdW5zaWduZWQgbG9uZyBz bGVwdDsKIAl1aW50NjRfdCB2YWwsIHRzWzJdOwpAQCAtMzE2LDcgKzMyMyw3IEBAIGJ1c3lfc3Rh cnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5n KGdlbV9mZCwgZSkpOworCXNwaW4gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCiAJZmQg PSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsK IApAQCAtMzM4LDcgKzM0NSw3IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogICogd2lsbCBkZXBlbmQgb24gdGhlIENJIHN5 c3RlbXMgcnVubmluZyBpdCBhIGxvdCB0byBkZXRlY3QgaXNzdWVzLgogICovCiBzdGF0aWMgdm9p ZAotYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplKQorYnVzeV9kb3VibGVfc3RhcnQoaW50IGdlbV9mZCwgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewogCXVuc2lnbmVkIGxvbmcgc2xlcHQ7CiAJdWlu dDY0X3QgdmFsLCB2YWwyLCB0c1syXTsKQEAgLTM1OSwxMSArMzY2LDExIEBAIGJ1c3lfZG91Ymxl X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSkKIAkgKiByZS1zdWJtaXNzaW9uIGluIGV4ZWNsaXN0cyBtb2RlLiBNYWtlIHN1cmUgYnVzeW5l c3MgaXMgY29ycmVjdGx5CiAJICogcmVwb3J0ZWQgd2l0aCB0aGUgZW5naW5lIGJ1c3ksIGFuZCBh ZnRlciB0aGUgZW5naW5lIHdlbnQgaWRsZS4KIAkgKi8KLQlzcGluWzBdID0gX19zcGluX3N5bmMo Z2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdl bV9mZCwgMCwgZSk7CiAJdXNsZWVwKDUwMGUzKTsKIAlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZ2VtX2ZkLAogCQkJCSAgICAgICAuY3R4ID0gY3R4LAotCQkJCSAgICAgICAuZW5naW5l ID0gZTJyaW5nKGdlbV9mZCwgZSkpOworCQkJCSAgICAgICAuZW5naW5lID0gZS0+ZmxhZ3MpOwog CiAJLyoKIAkgKiBPcGVuIFBNVSBhcyBmYXN0IGFzIHBvc3NpYmxlIGFmdGVyIHRoZSBzZWNvbmQg c3BpbiBiYXRjaCBpbiBhdHRlbXB0CkBAIC00MjEsMTAgKzQyOCwxMCBAQCBzdGF0aWMgdm9pZCBs b2dfYnVzeSh1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVpbnQ2NF90ICp2YWwpCiB9CiAKIHN0 YXRpYyB2b2lkCi1idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCitidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBu dW1fZW5naW5lcywgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZV87CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl XzsKIAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1bnNpZ25lZCBpbnQgYnVzeV9p ZHggPSAwLCBpOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CkBAIC00MzQsOCArNDQxLDgg QEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAogCiAJaSA9IDA7CiAJZmRbMF0gPSAtMTsKLQlmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlXykgewotCQlpZiAoZSA9PSBlXykKKwlfX2Zvcl9lYWNo X3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGVfKSB7CisJCWlmIChlLT5jbGFzcyA9PSBlXy0+Y2xh c3MgJiYgZS0+aW5zdGFuY2UgPT0gZV8tPmluc3RhbmNlKQogCQkJYnVzeV9pZHggPSBpOwogCiAJ CWZkW2krK10gPSBvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywKQEAg LTQ0NSw3ICs0NTIsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpZ3RfYXNzZXJ0X2VxKGksIG51bV9lbmdp bmVzKTsKIAotCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7 CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCXBtdV9yZWFkX211bHRpKGZkWzBd LCBudW1fZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hf ZHVyYXRpb25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBA IC00NzIsMjMgKzQ3OSwyMyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIHN0YXRpYyB2b2lkCiBfX3N1Ym1pdF9z cGluX2JhdGNoKGludCBnZW1fZmQsIGlndF9zcGluX3QgKnNwaW4sCi0JCSAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUsCiAJCSAgICBpbnQgb2Zmc2V0KQogewogCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY2J1ZmZlcjIgZWIgPSBzcGluLT5leGVjYnVmOwogCiAJZWIuZmxhZ3MgJj0gfigweDNm IHwgSTkxNV9FWEVDX0JTRF9NQVNLKTsKLQllYi5mbGFncyB8PSBlMnJpbmcoZ2VtX2ZkLCBlKSB8 IEk5MTVfRVhFQ19OT19SRUxPQzsKKwllYi5mbGFncyB8PSBlLT5mbGFncyB8IEk5MTVfRVhFQ19O T19SRUxPQzsKIAllYi5iYXRjaF9zdGFydF9vZmZzZXQgKz0gb2Zmc2V0OwogCiAJZ2VtX2V4ZWNi dWYoZ2VtX2ZkLCAmZWIpOwogfQogCiBzdGF0aWMgdm9pZAotbW9zdF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCittb3N0 X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwKIAkJICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5naW5lcywgdW5zaWduZWQgaW50 IGZsYWdzKQogewotCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZV87CisJ c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKIAl1aW50NjRfdCB0dmFsWzJdW251 bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2luZXNdOwogCWludCBmZFtudW1fZW5n aW5lc107CkBAIC00OTcsMTMgKzUwNCwxMyBAQCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAl1bnNpZ25lZCBp bnQgaWRsZV9pZHgsIGk7CiAKIAlpID0gMDsKLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFu Y2UoZ2VtX2ZkLCBlXykgewotCQlpZiAoZSA9PSBlXykKKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2Vu Z2luZShnZW1fZmQsIGVfKSB7CisJCWlmIChlLT5jbGFzcyA9PSBlXy0+Y2xhc3MgJiYgZS0+aW5z dGFuY2UgPT0gZV8tPmluc3RhbmNlKQogCQkJaWRsZV9pZHggPSBpOwogCQllbHNlIGlmIChzcGlu KQogCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGVfLCA2NCk7CiAJCWVsc2UK LQkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGVfKSk7CisJ CQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVf UE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywgZV8tPmluc3RhbmNlKTsKIAl9CkBAIC01NDUsNyAr NTUyLDcgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25z dCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykKIHsK LQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwog CXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CiAJaW50IGZkW251bV9lbmdpbmVzXTsKQEAgLTU1 NCwxMSArNTYxLDExIEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNp Z25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJdW5zaWduZWQgaW50IGk7CiAKIAlpID0gMDsKLQlmb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlKSB7CisJX19mb3JfZWFjaF9waHlz aWNhbF9lbmdpbmUoZ2VtX2ZkLCBlKSB7CiAJCWlmIChzcGluKQogCQkJX19zdWJtaXRfc3Bpbl9i YXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOworCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdl bV9mZCwgMCwgZSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFz cywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTU5Miw3ICs1OTksNyBAQCBhbGxfYnVzeV9jaGVja19h bGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogfQogCiBzdGF0 aWMgdm9pZAotbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKK25vX3NlbWEoaW50IGdlbV9mZCwgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJ aWd0X3NwaW5fdCAqc3BpbjsKIAl1aW50NjRfdCB2YWxbMl1bMl07CkBAIC02MDIsNyArNjA5LDcg QEAgbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9X QUlUKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVT WSkKLQkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKKwkJ c3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAK QEAgLTYzMSw3ICs2MzgsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogI2RlZmluZSAgIE1J X1NFTUFQSE9SRV9TQURfR1RFX1NERAkoMTw8MTIpCiAKIHN0YXRpYyB2b2lkCi1zZW1hX3dhaXQo aW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorc2Vt YV93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkg IHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25f ZW50cnkgcmVsb2NbMl0gPSB7fTsKQEAgLTY4OSw3ICs2OTYsNyBAQCBzZW1hX3dhaXQoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJZWIuYnVm ZmVyX2NvdW50ID0gMjsKIAllYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwot CWViLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJZWIuZmxhZ3MgPSBlLT5mbGFnczsKIAog CS8qKgogCSAqIFN0YXJ0IHRoZSBzZW1hcGhvcmUgd2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25v d24gdGltZSBsZXQgdGhlIGFib3ZlCkBAIC03OTIsNyArNzk5LDcgQEAgc3RhdGljIGludCB3YWl0 X3ZibGFuayhpbnQgZmQsIHVuaW9uIGRybV93YWl0X3ZibGFuayAqdmJsKQogfQogCiBzdGF0aWMg dm9pZAotZXZlbnRfd2FpdChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUpCitldmVudF93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmog PSB7IH07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsgfTsKQEAgLTg0 NSw3ICs4NTIsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9IDE7CiAJZWIuYnVmZmVy c19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3MgPSBlMnJpbmcoZ2VtX2Zk LCBlKSB8IEk5MTVfRVhFQ19TRUNVUkU7CisJZWIuZmxhZ3MgPSBlLT5mbGFncyB8IEk5MTVfRVhF Q19TRUNVUkU7CiAKIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRhLmRpc3Bs YXksIHAsIG91dHB1dCkgewogCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIHdhaXRlciA9IHsg fTsKQEAgLTkxNyw3ICs5MjQsNyBAQCBldmVudF93YWl0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIH0KIAogc3RhdGljIHZvaWQKLW11bHRpX2Ns aWVudChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp CittdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQogewogCXVpbnQ2NF90IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNz LCBlLT5pbnN0YW5jZSk7CiAJdW5zaWduZWQgbG9uZyBzbGVwdFsyXTsKQEAgLTkzNiw3ICs5NDMs NyBAQCBtdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogCSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4g PSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CisJc3BpbiA9IHNwaW5f c3luYyhnZW1fZmQsIDAsIGUpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5n bGUoZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVy YXRpb25fbnMgLyAxMDAwKTsKQEAgLTEzMDEsNyArMTMwOCw3IEBAIHRlc3RfZnJlcXVlbmN5KGlu dCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29z dF9mcmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7 IC8qIElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBz cGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluID0gc3Bpbl9zeW5j X2ZsYWdzKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUik7CiAKIAlzbGVwdCA9IHBtdV9yZWFk X211bHRpKGZkLCAyLCBzdGFydCk7CiAJbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25z IC8gMTAwMCk7CkBAIC0xMzI3LDcgKzEzMzQsNyBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2Zk KQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6 IikgPT0gbWF4X2ZyZXEpOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKLQlzcGluID0g c3Bpbl9zeW5jKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUik7CisJc3BpbiA9IHNwaW5fc3lu Y19mbGFncyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIpOwogCiAJc2xlcHQgPSBwbXVfcmVh ZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9u cyAvIDEwMDApOwpAQCAtMTQ0OCw3ICsxNDU1LDcgQEAgdGVzdF9yYzYoaW50IGdlbV9mZCwgdW5z aWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9lbmFibGVfcmFjZShpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit0ZXN0X2Vu YWJsZV9yYWNlKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkK IHsKIAl1aW50NjRfdCBjb25maWcgPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+ aW5zdGFuY2UpOwogCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZW5naW5lX2xvYWQgPSB7IH07 CkBAIC0xNDY1LDcgKzE0NzIsNyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAogCWViLmJ1ZmZlcl9jb3VudCA9 IDE7CiAJZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZWIuZmxhZ3Mg PSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwllYi5mbGFncyA9IGUtPmZsYWdzOwogCiAJLyoKIAkgKiBU aGlzIHRlc3QgaXMgcHJvYmFiaWxpc3RpYyBzbyBydW4gaW4gYSBmZXcgdGltZXMgdG8gaW5jcmVh c2UgdGhlCkBAIC0xNTIwLDcgKzE1MjcsNyBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0 Y2goaWd0X3NwaW5fdCAqc3BpbikKIAlfX2Fzc2VydF93aXRoaW4oeCwgcmVmLCB0b2xlcmFuY2Us IHRvbGVyYW5jZSkKIAogc3RhdGljIHZvaWQKLWFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKK2FjY3VyYWN5KGludCBnZW1fZmQsIHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgdW5zaWduZWQgbG9uZyB0YXJnZXRf YnVzeV9wY3QsCiAJIHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2l0ZXJzKQogewpAQCAtMTU3MCw3ICsx NTc3LDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLAogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCiAJCS8qIEFsbG9jYXRlIG91ciBz cGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdl bV9mZCwgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJc3BpbiA9IGlndF9zcGluX2Jh dGNoX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWlndF9zcGluX2JhdGNoX2Vu ZChzcGluKTsKIAkJZ2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCkBAIC0xNjc0LDcg KzE2ODEsNyBAQCBpZ3RfbWFpbgogCQkJCUk5MTVfUE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVS KDApICsgMTsKIAl1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwogCWludCBmZCA9IC0xOwot CWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwlzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZ3RfZml4dHVyZSB7 CkBAIC0xNjgzLDcgKzE2OTAsNyBAQCBpZ3RfbWFpbgogCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwog CQlpZ3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwogCi0JCWZvcl9lYWNoX2VuZ2luZV9j bGFzc19pbnN0YW5jZShmZCwgZSkKKwkJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUp CiAJCQludW1fZW5naW5lcysrOwogCX0KIApAQCAtMTY5Myw3ICsxNzAwLDcgQEAgaWd0X21haW4K IAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1pbml0IikKIAkJaW52YWxpZF9pbml0KCk7CiAKLQlfX2Zv cl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7CisJX19mb3JfZWFjaF9waHlzaWNhbF9l bmdpbmUoZmQsIGUpIHsKIAkJY29uc3QgdW5zaWduZWQgaW50IHBjdFtdID0geyAyLCA1MCwgOTgg fTsKIAogCQkvKioKQEAgLTE4OTcsNyArMTkwNCw3IEBAIGlndF9tYWluCiAJCQlnZW1fcXVpZXNj ZW50X2dwdShmZCk7CiAJCX0KIAotCQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShl KSB7CisJCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7CiAJCQlpZ3Rfc3VidGVz dF9ncm91cCB7CiAJCQkJaWd0X2ZpeHR1cmUgewogCQkJCQlnZW1fcmVxdWlyZV9lbmdpbmUocmVu ZGVyX2ZkLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=