From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 19 Mar 2018 13:56:05 +0000 Message-Id: <20180319135605.15934-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180316133136.25569-1-tvrtko.ursulin@linux.intel.com> References: <20180316133136.25569-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t v7] tests/perf_pmu: Improve accuracy by waiting on spinner to start List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk1vcmUgdGhh biBvbmUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIHNwaW5uZXIgaXMgcnVubmluZyBwcmV0dHkgbXVj aAppbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIGNyZWF0ZSBvciBzdWJtaXR0ZWQgaXQuCgpJbiBh Y3R1YWxpdHkgdGhlcmUgaXMgYSB2YXJpYWJsZSBkZWxheSwgZXNwZWNpYWxseSBvbiBleGVjbGlz dHMgcGxhdGZvcm1zLApiZXR3ZWVuIHN1Ym1pc3Npb24gYW5kIHNwaW4gYmF0Y2ggc3RhcnRpbmcg dG8gcnVuIG9uIHRoZSBoYXJkd2FyZS4KClRvIGVuYWJsZSB0ZXN0cyB3aGljaCBjYXJlIGFib3V0 IHRoaXMgbGV2ZWwgb2YgdGltaW5nIHRvIGFjY291bnQgZm9yIHRoaXMsCndlIGFkZCBhIG5ldyBz cGluIGJhdGNoIGNvbnN0cnVjdG9yIHdoaWNoIHByb3ZpZGVzIGFuIG91dHB1dCBmaWVsZCB3aGlj aApjYW4gYmUgcG9sbGVkIHRvIGRldGVybWluZSB3aGVuIHRoZSBiYXRjaCBhY3R1YWxseSBzdGFy dGVkIHJ1bm5pbmcuCgpUaGlzIGlzIGltcGxlbWVudGVkIHZpYSBNSV9TVE9SRURXX0lNTSBmcm9t IHRoZSBzcGluIGJhdGNoLCB3cml0aW5nIGludG8KbWVtb3J5IG1hcHBlZCBwYWdlIHNoYXJlZCB3 aXRoIHVzZXJzcGFjZS4KClVzaW5nIHRoaXMgZmFjaWxpdHkgZnJvbSBwZXJmX3BtdSwgd2hlcmUg YXBwbGljYWJsZSwgc2hvdWxkIGltcHJvdmUgdmVyeQpvY2Nhc2lvbmFsIHRlc3QgZmFpbHMgYWNy b3NzIHRoZSBzZXQgYW5kIHBsYXRmb3Jtcy4KCnYyOgogQ2hyaXMgV2lsc29uOgogKiBVc2UgY2Fj aGluZyBtYXBwaW5nIGlmIGF2YWlsYWJsZS4KICogSGFuZGxlIG9sZCBnZW5zIGJldHRlci4KICog VXNlIGdlbV9jYW5fc3RvcmVfZHdvcmQuCiAqIENhY2hlIGV4ZWMgb2JqIGFycmF5IGluIHNwaW5f YmF0Y2hfdCBmb3IgZWFzaWVyIHJlc3VibWl0LgoKdjM6CiAqIEZvcmdvdCBJOTE1X0VYRUNfTk9f UkVMT0MuIChDaHJpcyBXaWxzb24pCgp2NDoKICogTWFzayBvdXQgYWxsIG5vbi1lbmdpbmUgZmxh Z3MgaW4gZ2VtX2Nhbl9zdG9yZV9kd29yZC4KICogQWRkZWQgc29tZSBkZWJ1ZyBsb2dnaW5nLgoK djU6CiAqIEZpeCByZWxvY3MgYW5kIGJhdGNoIG11bm1hcC4gKENocmlzKQogKiBBZGRlZCBhc3Nl cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKdjY6CiAqIFNraXAgYWNj dXJhY3kgdGVzdHMgd2hlbiAhZ2VtX2Nhbl9zdG9yZV9kd29yZC4KCnY3OgogKiBGaXggYmF0Y2gg cmVjdXJzaW9uIHJlbG9jIGFkZHJlc3MuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxpYi9pZ3RfZHVtbXlsb2FkLmMgIHwgMTU3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBsaWIvaWd0X2R1bW15 bG9hZC5oICB8ICAxMSArKysrCiBsaWIvaWd0X2d0LmMgICAgICAgICB8ICAgMiArLQogbGliL2lv Y3RsX3dyYXBwZXJzLmMgfCAgIDIgKy0KIGxpYi9pb2N0bF93cmFwcGVycy5oIHwgICAxICsKIHRl c3RzL3BlcmZfcG11LmMgICAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9ucygrKSwg ODMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuYyBiL2xpYi9p Z3RfZHVtbXlsb2FkLmMKaW5kZXggNGIyMGYyM2RmZTI2Li40NGU3NzFiZTQ2ZWUgMTAwNjQ0Ci0t LSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAtNzQs MjAgKzc0LDIzIEBAIGZpbGxfcmVsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2Vu dHJ5ICpyZWxvYywKIAlyZWxvYy0+d3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluczsKIH0KIAot c3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAotCQkJCWlu dCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsCi0JCQkJdWludDMyX3QgZGVwLCBi b29sIG91dF9mZW5jZSkKKyNkZWZpbmUgT1VUX0ZFTkNFCSgxIDw8IDApCisjZGVmaW5lIFBPTExf UlVOCSgxIDw8IDEpCisKK3N0YXRpYyBpbnQKK2VtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGlu X3QgKnNwaW4sIGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsCisJCSAgICAg dWludDMyX3QgZGVwLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAjZGVmaW5lIFNDUkFUQ0ggMAog I2RlZmluZSBCQVRDSCAxCiAJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJt X2RldmlkKGZkKSk7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY3NbMl07Ci0Jc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgKmV4ZWNidWY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg Km9iajsKIAl1bnNpZ25lZCBpbnQgZW5naW5lc1sxNl07CiAJdW5zaWduZWQgaW50IG5lbmdpbmU7 CiAJaW50IGZlbmNlX2ZkID0gLTE7Ci0JdWludDMyX3QgKmJhdGNoOworCXVpbnQzMl90ICpiYXRj aCwgKmJhdGNoX3N0YXJ0OwogCWludCBpOwogCiAJbmVuZ2luZSA9IDA7CkBAIC0xMDEsOCArMTA0 LDEwIEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwK IAl9CiAJaWd0X3JlcXVpcmUobmVuZ2luZSk7CiAKLQltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVv ZihleGVjYnVmKSk7Ci0JbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOworCW1lbXNldCgmc3Bp bi0+ZXhlY2J1ZiwgMCwgc2l6ZW9mKHNwaW4tPmV4ZWNidWYpKTsKKwlleGVjYnVmID0gJnNwaW4t PmV4ZWNidWY7CisJbWVtc2V0KHNwaW4tPm9iaiwgMCwgc2l6ZW9mKHNwaW4tPm9iaikpOworCW9i aiA9IHNwaW4tPm9iajsKIAltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7CiAKIAlv YmpbQkFUQ0hdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIEJBVENIX1NJWkUpOwpAQCAtMTEzLDE2 ICsxMTgsNjMgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpz cGluLAogCQkJCSAgICAgICAJQkFUQ0hfU0laRSwgUFJPVF9XUklURSk7CiAJZ2VtX3NldF9kb21h aW4oZmQsIG9ialtCQVRDSF0uaGFuZGxlLAogCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9H RU1fRE9NQUlOX0dUVCk7Ci0JZXhlY2J1Zi5idWZmZXJfY291bnQrKzsKKwlleGVjYnVmLT5idWZm ZXJfY291bnQrKzsKKwliYXRjaF9zdGFydCA9IGJhdGNoOwogCiAJaWYgKGRlcCkgeworCQlpZ3Rf YXNzZXJ0KCEoZmxhZ3MgJiBQT0xMX1JVTikpOworCiAJCS8qIGR1bW15IHdyaXRlIHRvIGRlcGVu ZGVuY3kgKi8KIAkJb2JqW1NDUkFUQ0hdLmhhbmRsZSA9IGRlcDsKIAkJZmlsbF9yZWxvYygmcmVs b2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrXSwKIAkJCSAgIGRlcCwgMTAyMCwKIAkJ CSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCiAJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVS KTsKLQkJZXhlY2J1Zi5idWZmZXJfY291bnQrKzsKKwkJZXhlY2J1Zi0+YnVmZmVyX2NvdW50Kys7 CisJfSBlbHNlIGlmIChmbGFncyAmIFBPTExfUlVOKSB7CisJCXVuc2lnbmVkIGludCBvZmZzZXQ7 CisKKwkJaWd0X2Fzc2VydCghZGVwKTsKKworCQlpZiAoZ2VuID09IDQgfHwgZ2VuID09IDUpCisJ CQlleGVjYnVmLT5mbGFncyB8PSBJOTE1X0VYRUNfU0VDVVJFOworCisJCXNwaW4tPnBvbGxfaGFu ZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKwkJaWYgKF9fZ2VtX3NldF9jYWNoaW5nKGZk LCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkgICAgICBJOTE1X0NBQ0hJTkdfQ0FDSEVEKSA9PSAw KQorCQkJc3Bpbi0+cnVubmluZyA9IF9fZ2VtX21tYXBfX2NwdShmZCwgc3Bpbi0+cG9sbF9oYW5k bGUsCisJCQkJCQkJMCwgNDA5NiwKKwkJCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKwkJ ZWxzZQorCQkJc3Bpbi0+cnVubmluZyA9IF9fZ2VtX21tYXBfX3djKGZkLCBzcGluLT5wb2xsX2hh bmRsZSwKKwkJCQkJCSAgICAgICAwLCA0MDk2LAorCQkJCQkJICAgICAgIFBST1RfUkVBRCB8IFBS T1RfV1JJVEUpOworCQlpZ3RfYXNzZXJ0KHNwaW4tPnJ1bm5pbmcpOworCQlpZ3RfYXNzZXJ0X2Vx KCpzcGluLT5ydW5uaW5nLCAwKTsKKworCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTSB8 IChnZW4gPCA2ID8gMSA8PCAyMiA6IDApOworCisJCWlmIChnZW4gPj0gOCkgeworCQkJb2Zmc2V0 ID0gMTsKKwkJCSpiYXRjaCsrID0gMDsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfSBlbHNlIGlmIChn ZW4gPj0gNCkgeworCQkJb2Zmc2V0ID0gMjsKKwkJCSpiYXRjaCsrID0gMDsKKwkJCSpiYXRjaCsr ID0gMDsKKwkJfSBlbHNlIHsKKwkJCW9mZnNldCA9IDE7CisJCQliYXRjaFstMV0tLTsKKwkJCSpi YXRjaCsrID0gMDsKKwkJfQorCisJCSpiYXRjaCsrID0gMTsKKworCQlvYmpbU0NSQVRDSF0uaGFu ZGxlID0gc3Bpbi0+cG9sbF9oYW5kbGU7CisJCWZpbGxfcmVsb2MoJnJlbG9jc1tvYmpbQkFUQ0hd LnJlbG9jYXRpb25fY291bnQrK10sCisJCQkgICBzcGluLT5wb2xsX2hhbmRsZSwgb2Zmc2V0LCAw LCAwKTsKKwkJZXhlY2J1Zi0+YnVmZmVyX2NvdW50Kys7CiAJfQogCiAJc3Bpbi0+YmF0Y2ggPSBi YXRjaDsKQEAgLTE0Niw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNo KGlndF9zcGluX3QgKnNwaW4sCiAKIAkvKiByZWN1cnNlICovCiAJZmlsbF9yZWxvYygmcmVsb2Nz W29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudF0sCi0JCSAgIG9ialtCQVRDSF0uaGFuZGxlLCAo YmF0Y2ggLSBzcGluLT5iYXRjaCkgKyAxLAorCQkgICBvYmpbQkFUQ0hdLmhhbmRsZSwgKGJhdGNo IC0gYmF0Y2hfc3RhcnQpICsgMSwKIAkJICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOwog CWlmIChnZW4gPj0gOCkgewogCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEg PDwgOCB8IDE7CkBAIC0xNjcsMTggKzIxOSwyMyBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZl X2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJb2JqW0JBVENIXS5yZWxvY2F0aW9uX2NvdW50Kys7 CiAJb2JqW0JBVENIXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKHJlbG9jcyk7CiAKLQll eGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaiArICgyIC0gZXhlY2J1Zi5i dWZmZXJfY291bnQpKTsKLQlleGVjYnVmLnJzdmQxID0gY3R4OworCWV4ZWNidWYtPmJ1ZmZlcnNf cHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaiArCisJCQkJCSAgICAgICAoMiAtIGV4ZWNidWYtPmJ1 ZmZlcl9jb3VudCkpOworCWV4ZWNidWYtPnJzdmQxID0gY3R4OwogCi0JaWYgKG91dF9mZW5jZSkK LQkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfRkVOQ0VfT1VUOworCWlmIChmbGFncyAmIE9V VF9GRU5DRSkKKwkJZXhlY2J1Zi0+ZmxhZ3MgfD0gSTkxNV9FWEVDX0ZFTkNFX09VVDsKIAogCWZv ciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKLQkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5F X01BU0s7Ci0JCWV4ZWNidWYuZmxhZ3MgfD0gZW5naW5lc1tpXTsKLQkJZ2VtX2V4ZWNidWZfd3Io ZmQsICZleGVjYnVmKTsKLQkJaWYgKG91dF9mZW5jZSkgewotCQkJaW50IF9mZCA9IGV4ZWNidWYu cnN2ZDIgPj4gMzI7CisJCWV4ZWNidWYtPmZsYWdzICY9IH5FTkdJTkVfTUFTSzsKKwkJZXhlY2J1 Zi0+ZmxhZ3MgfD0gZW5naW5lc1tpXTsKKworCQlpZiAoZmxhZ3MgJiBQT0xMX1JVTikKKwkJCWln dF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGV4ZWNidWYtPmZsYWdzKSk7CisKKwkJ Z2VtX2V4ZWNidWZfd3IoZmQsIGV4ZWNidWYpOworCQlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpIHsK KwkJCWludCBfZmQgPSBleGVjYnVmLT5yc3ZkMiA+PiAzMjsKIAogCQkJaWd0X2Fzc2VydChfZmQg Pj0gMCk7CiAJCQlpZiAoZmVuY2VfZmQgPT0gLTEpIHsKQEAgLTE5NCwxMiArMjUxLDIwIEBAIHN0 YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwKIAkJfQogCX0K IAorCS8qIE1ha2UgaXQgZWFzaWVyIGZvciBjYWxsZXJzIHRvIHJlc3VibWl0LiAqLworCisJb2Jq W0JBVENIXS5yZWxvY2F0aW9uX2NvdW50ID0gMDsKKwlvYmpbQkFUQ0hdLnJlbG9jc19wdHIgPSAw OworCisJb2JqW1NDUkFUQ0hdLmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOworCW9ialtCQVRD SF0uZmxhZ3MgPSBFWEVDX09CSkVDVF9QSU5ORUQ7CisKIAlyZXR1cm4gZmVuY2VfZmQ7CiB9CiAK IHN0YXRpYyBpZ3Rfc3Bpbl90ICoKIF9fX2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQz Ml90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBkZXAsCi0JCSAgICAgIGludCBvdXRf ZmVuY2UpCisJCSAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGlu OwogCkBAIC0yMDcsNyArMjcyLDcgQEAgX19faWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQzMl90IGRlcCwKIAlpZ3RfYXNzZXJ0KHNw aW4pOwogCiAJc3Bpbi0+b3V0X2ZlbmNlID0gZW1pdF9yZWN1cnNpdmVfYmF0Y2goc3BpbiwgZmQs IGN0eCwgZW5naW5lLCBkZXAsCi0JCQkJCSAgICAgICBvdXRfZmVuY2UpOworCQkJCQkgICAgICAg ZmxhZ3MpOwogCiAJcHRocmVhZF9tdXRleF9sb2NrKCZsaXN0X2xvY2spOwogCWlndF9saXN0X2Fk ZCgmc3Bpbi0+bGluaywgJnNwaW5fbGlzdCk7CkBAIC0yMTksNyArMjg0LDcgQEAgX19faWd0X3Nw aW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQz Ml90IGRlcCwKIGlndF9zcGluX3QgKgogX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCB1aW50 MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3QgZGVwKQogewotCXJldHVybiBfX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZW5naW5lLCBkZXAsIGZhbHNlKTsKKwlyZXR1cm4g X19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwgZGVwLCAwKTsKIH0KIAogLyoq CkBAIC0yNTMsNyArMzE4LDcgQEAgaWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3Qg Y3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQzMl90IGRlcCkKIGlndF9zcGluX3QgKgogX19pZ3Rf c3Bpbl9iYXRjaF9uZXdfZmVuY2UoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2lu ZSkKIHsKLQlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwgMCwg dHJ1ZSk7CisJcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBlbmdpbmUsIDAs IE9VVF9GRU5DRSk7CiB9CiAKIC8qKgpAQCAtMjg2LDYgKzM1MSw0MiBAQCBpZ3Rfc3Bpbl9iYXRj aF9uZXdfZmVuY2UoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSkKIAlyZXR1 cm4gc3BpbjsKIH0KIAoraWd0X3NwaW5fdCAqCitfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGlu dCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCit7CisJcmV0dXJuIF9fX2lndF9z cGluX2JhdGNoX25ldyhmZCwgY3R4LCBlbmdpbmUsIDAsIFBPTExfUlVOKTsKK30KKworLyoqCisg KiBpZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRl c2NyaXB0b3IKKyAqIEBlbmdpbmU6IFJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhl Y2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcworICogICAgICAgICAgdGhhbiAwLCBleGVjdXRl IG9uIGFsbCBhdmFpbGFibGUgcmluZ3MuCisgKgorICogU3RhcnQgYSByZWN1cnNpdmUgYmF0Y2gg b24gYSByaW5nLiBJbW1lZGlhdGVseSByZXR1cm5zIGEgI2lndF9zcGluX3QgdGhhdAorICogY29u dGFpbnMgdGhlIGJhdGNoJ3MgaGFuZGxlIHRoYXQgY2FuIGJlIHdhaXRlZCB1cG9uLiBUaGUgcmV0 dXJuZWQgc3RydWN0dXJlCisgKiBtdXN0IGJlIHBhc3NlZCB0byBpZ3Rfc3Bpbl9iYXRjaF9mcmVl KCkgZm9yIHBvc3QtcHJvY2Vzc2luZy4KKyAqCisgKiBpZ3Rfc3Bpbl90LT5ydW5uaW5nIHdpbGwg Y29udGFpbnQgYSBwb2ludGVyIHdoaWNoIHRhcmdldCB3aWxsIGNoYW5nZSBmcm9tCisgKiB6ZXJv IHRvIG9uZSBvbmNlIHRoZSBzcGlubmVyIGFjdHVhbGx5IHN0YXJ0cyBleGVjdXRpbmcgb24gdGhl IEdQVS4KKyAqCisgKiBSZXR1cm5zOgorICogU3RydWN0dXJlIHdpdGggaGVscGVyIGludGVybmFs IHN0YXRlIGZvciBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKCkuCisgKi8KK2lndF9zcGluX3QgKgoraWd0 X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2lu ZSkKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluOworCisJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKwlpZ3Rf cmVxdWlyZShnZW1fbW1hcF9faGFzX3djKGZkKSk7CisKKwlzcGluID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXdfcG9sbChmZCwgY3R4LCBlbmdpbmUpOworCWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQs IHNwaW4tPmhhbmRsZSkpOworCisJcmV0dXJuIHNwaW47Cit9CisKIHN0YXRpYyB2b2lkIG5vdGlm eSh1bmlvbiBzaWd2YWwgYXJnKQogewogCWlndF9zcGluX3QgKnNwaW4gPSBhcmcuc2l2YWxfcHRy OwpAQCAtMzY1LDcgKzQ2NiwxMyBAQCB2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBp Z3Rfc3Bpbl90ICpzcGluKQogCQl0aW1lcl9kZWxldGUoc3Bpbi0+dGltZXIpOwogCiAJaWd0X3Nw aW5fYmF0Y2hfZW5kKHNwaW4pOwotCWdlbV9tdW5tYXAoc3Bpbi0+YmF0Y2gsIEJBVENIX1NJWkUp OworCWdlbV9tdW5tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3Bpbi0+YmF0Y2ggJiAofjQw OTVVTCkpLAorCQkgICBCQVRDSF9TSVpFKTsKKworCWlmIChzcGluLT5ydW5uaW5nKSB7CisJCWdl bV9tdW5tYXAoc3Bpbi0+cnVubmluZywgNDA5Nik7CisJCWdlbV9jbG9zZShmZCwgc3Bpbi0+cG9s bF9oYW5kbGUpOworCX0KIAogCWdlbV9jbG9zZShmZCwgc3Bpbi0+aGFuZGxlKTsKIApkaWZmIC0t Z2l0IGEvbGliL2lndF9kdW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggNDEw M2U0YWI5ZTM2Li4zMTAzOTM1YTMwOWIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgK KysrIGIvbGliL2lndF9kdW1teWxvYWQuaApAQCAtMzYsNiArMzYsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgaWd0X3NwaW4gewogCXN0cnVjdCBpZ3RfbGlzdCBsaW5rOwogCXVpbnQzMl90ICpiYXRjaDsK IAlpbnQgb3V0X2ZlbmNlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsy XTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisJdWludDMyX3Qg cG9sbF9oYW5kbGU7CisJYm9vbCAqcnVubmluZzsKIH0gaWd0X3NwaW5fdDsKIAogaWd0X3NwaW5f dCAqX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLApAQCAtNTUsNiArNTksMTMgQEAgaWd0X3Nw aW5fdCAqaWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwKIAkJCQkgICAgIHVpbnQzMl90 IGN0eCwKIAkJCQkgICAgIHVuc2lnbmVkIGVuZ2luZSk7CiAKK2lndF9zcGluX3QgKl9faWd0X3Nw aW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLAorCQkJCSAgICAgICB1aW50MzJfdCBjdHgsCisJCQkJ ICAgICAgIHVuc2lnbmVkIGVuZ2luZSk7CitpZ3Rfc3Bpbl90ICppZ3Rfc3Bpbl9iYXRjaF9uZXdf cG9sbChpbnQgZmQsCisJCQkJICAgIHVpbnQzMl90IGN0eCwKKwkJCQkgICAgdW5zaWduZWQgZW5n aW5lKTsKKwogdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChpZ3Rfc3Bpbl90ICpzcGlu LCBpbnQ2NF90IG5zKTsKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4p Owogdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3Bpbik7CmRp ZmYgLS1naXQgYS9saWIvaWd0X2d0LmMgYi9saWIvaWd0X2d0LmMKaW5kZXggMDFhZWJjNjcwODYy Li40NTY5ZmQzNmJkODUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuYworKysgYi9saWIvaWd0X2d0 LmMKQEAgLTYwOSw3ICs2MDksNyBAQCBib29sIGdlbV9jYW5fc3RvcmVfZHdvcmQoaW50IGZkLCB1 bnNpZ25lZCBpbnQgZW5naW5lKQogCWlmIChnZW4gPT0gMyAmJiAoaW5mby0+aXNfZ3JhbnRzZGFs ZSB8fCBpbmZvLT5pc19hbHZpc28pKQogCQlyZXR1cm4gZmFsc2U7IC8qIG9ubHkgc3VwcG9ydHMg cGh5c2ljYWwgYWRkcmVzc2VzICovCiAKLQlpZiAoZ2VuID09IDYgJiYgKGVuZ2luZSAmIH4oMzw8 MTMpKSA9PSBJOTE1X0VYRUNfQlNEKQorCWlmIChnZW4gPT0gNiAmJiAoKGVuZ2luZSAmIDB4M2Yp ID09IEk5MTVfRVhFQ19CU0QpKQogCQlyZXR1cm4gZmFsc2U7IC8qIGtpbGxzIHRoZSBtYWNoaW5l ISAqLwogCiAJaWYgKGluZm8tPmlzX2Jyb2Fkd2F0ZXIpCmRpZmYgLS1naXQgYS9saWIvaW9jdGxf d3JhcHBlcnMuYyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCmluZGV4IDg3NDhjZmNmYzA0Zi4uNGUx YTA4YmYwNmI0IDEwMDY0NAotLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuYworKysgYi9saWIvaW9j dGxfd3JhcHBlcnMuYwpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgZ2VtX3NldF90aWxpbmcoaW50 IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHRpbGluZywgdWludDMyX3Qgc3RyaWRlKQog CWlndF9hc3NlcnQoX19nZW1fc2V0X3RpbGluZyhmZCwgaGFuZGxlLCB0aWxpbmcsIHN0cmlkZSkg PT0gMCk7CiB9CiAKLXN0YXRpYyBpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJf dCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpCitpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpCiB7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9jYWNoaW5nIGFyZzsKIAlpbnQgZXJyOwpkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBw ZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaAppbmRleCAxM2ZiZTNjMTAzYzAuLmI5NjZmNzJj OTBhOCAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJzLmgKKysrIGIvbGliL2lvY3RsX3dy YXBwZXJzLmgKQEAgLTYxLDYgKzYxLDcgQEAgYm9vbCBnZW1fZ2V0X3RpbGluZyhpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdWludDMyX3QgKnRpbGluZywgdWludDMyX3QgKnN3aXp6bGUKIHZvaWQg Z2VtX3NldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHRpbGluZywg dWludDMyX3Qgc3RyaWRlKTsKIGludCBfX2dlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IHN0cmlkZSk7CiAKK2ludCBfX2dlbV9z ZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgY2FjaGluZyk7CiB2 b2lkIGdlbV9zZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgY2Fj aGluZyk7CiB1aW50MzJfdCBnZW1fZ2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUp OwogdWludDMyX3QgZ2VtX2ZsaW5rKGludCBmZCwgdWludDMyX3QgaGFuZGxlKTsKZGlmZiAtLWdp dCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0cy9wZXJmX3BtdS5jCmluZGV4IDE5ZmNjOTVmZmM3 Zi4uODc4NzVmYjllMDZhIDEwMDY0NAotLS0gYS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3Rz L3BlcmZfcG11LmMKQEAgLTE3MCw2ICsxNzAsNTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJp bmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog I2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2RlZmluZSBGTEFHX0hBTkcgKDMyKQogCitzdGF0aWMg aWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBs b25nIGZsYWdzKQoreworCWlmIChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJCXJl dHVybiBfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGZkLCBjdHgsIGZsYWdzKTsKKwllbHNlCisJ CXJldHVybiBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBmbGFncywgMCk7Cit9CisKK3N0 YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikK K3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQgPSB7IH07CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZz dGFydCk7CisKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgc3Bpbi0+ZXhlY2J1Zi5mbGFn cykpIHsKKwkJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gMDsKKworCQl3aGlsZSAoIXNwaW4tPnJ1 bm5pbmcpIHsKKwkJCXVuc2lnbmVkIGxvbmcgdCA9IGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsK KworCQkJaWYgKCh0IC0gdGltZW91dCkgPiAyNTBlNikgeworCQkJCXRpbWVvdXQgPSB0OworCQkJ CWlndF93YXJuKCJTcGlubmVyIG5vdCBydW5uaW5nIGFmdGVyICUuMmZtc1xuIiwKKwkJCQkJIChk b3VibGUpdCAvIDFlNik7CisJCQl9CisJCX07CisJfSBlbHNlIHsKKwkJaWd0X2RlYnVnKCJfX3Nw aW5fd2FpdCAtIHVzbGVlcCBtb2RlXG4iKTsKKwkJdXNsZWVwKDUwMGUzKTsgLyogQmV0dGVyIHRo YW4gbm90aGluZyEgKi8KKwl9CisKKwlyZXR1cm4gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwor fQorCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4 LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9s bChmZCwgY3R4LCBmbGFncyk7CisKKwlfX3NwaW5fd2FpdChmZCwgc3Bpbik7CisKKwlyZXR1cm4g c3BpbjsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJf dCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKwor CXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBmbGFncyk7Cit9CisKIHN0YXRpYyB2b2lkIGVu ZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewog CWlmICghc3BpbikKQEAgLTE4MCw4ICsyMzAsMjUgQEAgc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50 IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJaWYgKGZsYWdzICYg RkxBR19TWU5DKQogCQlnZW1fc3luYyhmZCwgc3Bpbi0+aGFuZGxlKTsKIAotCWlmIChmbGFncyAm IFRFU1RfVFJBSUxJTkdfSURMRSkKLQkJdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gNTAwMCk7 CisJaWYgKGZsYWdzICYgVEVTVF9UUkFJTElOR19JRExFKSB7CisJCXVuc2lnbmVkIGxvbmcgdCwg dGltZW91dCA9IDA7CisJCXN0cnVjdCB0aW1lc3BlYyBzdGFydCA9IHsgfTsKKworCQlpZ3RfbnNl Y19lbGFwc2VkKCZzdGFydCk7CisKKwkJZG8geworCQkJdCA9IGlndF9uc2VjX2VsYXBzZWQoJnN0 YXJ0KTsKKworCQkJaWYgKGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpICYmCisJCQkgICAg KHQgLSB0aW1lb3V0KSA+IDEwZTYpIHsKKwkJCQl0aW1lb3V0ID0gdDsKKwkJCQlpZ3Rfd2Fybigi U3Bpbm5lciBub3QgaWRsZSBhZnRlciAlLjJmbXNcbiIsCisJCQkJCSAoZG91YmxlKXQgLyAxZTYp OworCQkJfQorCisJCQl1c2xlZXAoMWUzKTsKKwkJfSB3aGlsZSAodCA8IGJhdGNoX2R1cmF0aW9u X25zIC8gNSk7CisJfQogfQogCiBzdGF0aWMgdm9pZApAQCAtMTk1LDcgKzI2Miw3IEBAIHNpbmds ZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVu c2lnbmVkIGludCBmbGFncykKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUt PmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGlu ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwor CQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCWVsc2UK IAkJc3BpbiA9IE5VTEw7CiAKQEAgLTI1MSwxMyArMzE4LDcgQEAgYnVzeV9zdGFydChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJc2xl ZXAoMik7CiAKLQlzcGluID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmco Z2VtX2ZkLCBlKSwgMCk7Ci0KLQkvKgotCSAqIFNsZWVwIGZvciBhIGJpdCBhZnRlciBtYWtpbmcg dGhlIGVuZ2luZSBidXN5IHRvIG1ha2Ugc3VyZSB0aGUgUE1VCi0JICogZ2V0cyBlbmFibGVkIHdo ZW4gdGhlIGJhdGNoIGlzIGFscmVhZHkgcnVubmluZy4KLQkgKi8KLQl1c2xlZXAoNTAwZTMpOwor CXNwaW4gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAogCWZk ID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7 CiAKQEAgLTMwMCw3ICszNjEsNyBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICogcmUtc3VibWlzc2lvbiBp biBleGVjbGlzdHMgbW9kZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3RseQogCSAqIHJl cG9ydGVkIHdpdGggdGhlIGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVuZ2luZSB3ZW50IGlk bGUuCiAJICovCi0Jc3BpblswXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSksIDApOworCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpKTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9zcGlu X2JhdGNoX25ldyhnZW1fZmQsIGN0eCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwogCkBAIC0zODYs NyArNDQ3LDcgQEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJaWd0X2Fzc2VydF9lcShpLCBudW1fZW5naW5lcyk7 CiAKLQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZSksIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7 CiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9 IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFncyAm IFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQxMiwxNSArNDczLDEzIEBAIGJ1c3lfY2hlY2tfYWxs KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIH0K IAogc3RhdGljIHZvaWQKLV9fc3VibWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwKLQkJICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmosCitfX3N1Ym1pdF9zcGluX2JhdGNo KGludCBnZW1fZmQsIGlndF9zcGluX3QgKnNwaW4sCiAJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiBlYiA9IHsKLQkJLmJ1ZmZlcl9jb3VudCA9IDEsCi0JCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcihvYmopLAotCQkuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSwKLQl9OworCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSBzcGluLT5leGVjYnVmOworCisJZWIuZmxh Z3MgJj0gfigweDNmIHwgSTkxNV9FWEVDX0JTRF9NQVNLKTsKKwllYi5mbGFncyB8PSBlMnJpbmco Z2VtX2ZkLCBlKSB8IEk5MTVfRVhFQ19OT19SRUxPQzsKIAogCWdlbV9leGVjYnVmKGdlbV9mZCwg JmViKTsKIH0KQEAgLTQyOSw3ICs0ODgsNiBAQCBzdGF0aWMgdm9pZAogbW9zdF9idXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUs CiAJCSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFn cykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAljb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1b bnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CkBAIC00NDMsMTUgKzUw MSwxMiBAQCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJaWYgKCFnZW1faGFzX2VuZ2luZShnZW1fZmQsIGVf LT5jbGFzcywgZV8tPmluc3RhbmNlKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChlID09IGVfKSB7 CisJCWlmIChlID09IGVfKQogCQkJaWRsZV9pZHggPSBpOwotCQl9IGVsc2UgaWYgKHNwaW4pIHsK LQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCAmb2JqLCBlXyk7Ci0JCX0gZWxzZSB7Ci0J CQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKLQkJCQkJCSAgZTJyaW5nKGdl bV9mZCwgZV8pLCAwKTsKLQkJCW9iai5oYW5kbGUgPSBzcGluLT5oYW5kbGU7Ci0JCX0KKwkJZWxz ZSBpZiAoc3BpbikKKwkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBlXyk7CisJ CWVsc2UKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGVf KSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlXy0+Y2xhc3MsIGVfLT5p bnN0YW5jZSk7CiAJfQpAQCAtNDYxLDYgKzUxNiw5IEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCWZvciAo aSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQogCQlmZFtpXSA9IG9wZW5fZ3JvdXAodmFsW2ld LCBmZFswXSk7CiAKKwkvKiBTbWFsbCBkZWxheSB0byBhbGxvdyBlbmdpbmVzIHRvIHN0YXJ0LiAq LworCXVzbGVlcChfX3NwaW5fd2FpdChnZW1fZmQsIHNwaW4pICogbnVtX2VuZ2luZXMgLyAxZTMp OworCiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVw dCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFn cyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTQ4OSw3ICs1NDcsNiBAQCBzdGF0aWMgdm9pZAog YWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5n aW5lcywKIAkJICAgdW5zaWduZWQgaW50IGZsYWdzKQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9iaiA9IHt9OwogCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZTsKIAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxb bnVtX2VuZ2luZXNdOwpAQCAtNTAzLDEzICs1NjAsMTAgQEAgYWxsX2J1c3lfY2hlY2tfYWxsKGlu dCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5naW5lcywKIAkJaWYgKCFnZW1faGFz X2VuZ2luZShnZW1fZmQsIGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpCiAJCQljb250aW51ZTsKIAot CQlpZiAoc3BpbikgewotCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsICZvYmosIGUpOwot CQl9IGVsc2UgewotCQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsCi0JCQkJ CQkgIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKLQkJCW9iai5oYW5kbGUgPSBzcGluLT5oYW5kbGU7 Ci0JCX0KKwkJaWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3Bpbiwg ZSk7CisJCWVsc2UKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1f ZmQsIGUpKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBl LT5pbnN0YW5jZSk7CiAJfQpAQCAtNTE5LDYgKzU3Myw5IEBAIGFsbF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJZm9yIChpID0gMDsg aSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZkW2ldID0gb3Blbl9ncm91cCh2YWxbaV0sIGZkWzBd KTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFsbG93IGVuZ2luZXMgdG8gc3RhcnQuICovCisJdXNs ZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpbikgKiBudW1fZW5naW5lcyAvIDFlMyk7CisKIAlw bXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNsZXB0ID0gbWVh c3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZsYWdzICYgVEVT VF9UUkFJTElOR19JRExFKQpAQCAtNTUwLDcgKzYwNyw3IEBAIG5vX3NlbWEoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCiAJb3Blbl9ncm91cChJOTE1X1BNVV9FTkdJTkVfV0FJVChlLT5jbGFzcywgZS0+aW5zdGFu Y2UpLCBmZCk7CiAKIAlpZiAoZmxhZ3MgJiBURVNUX0JVU1kpCi0JCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJCXNwaW4gPSBzcGlu X3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJZWxzZQogCQlzcGluID0gTlVM TDsKIApAQCAtODg0LDcgKzk0MSw3IEBAIG11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJZmRbMV0gPSBvcGVuX3Bt dShjb25maWcpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdl bV9mZCwgZSkpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmRbMF0s ICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMg LyAxMDAwKTsKQEAgLTEyNDgsNyArMTMwNSw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQp CiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9mcmVxX21o eiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8qIElkbGUg dG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSLCAwKTsKKwlzcGluID0gc3Bpbl9z eW5jKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUik7CiAKIAlzbGVwdCA9IHBtdV9yZWFkX211 bHRpKGZkLCAyLCBzdGFydCk7CiAJbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8g MTAwMCk7CkBAIC0xMjc0LDcgKzEzMzEsNyBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQog CWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6Iikg PT0gbWF4X2ZyZXEpOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKLQlzcGluID0gaWd0 X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUiwgMCk7CisJc3BpbiA9 IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIpOwogCiAJc2xlcHQgPSBwbXVf cmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlv bl9ucyAvIDEwMDApOwpAQCAtMTQ1NSw2ICsxNTEyLDExIEBAIHN0YXRpYyB2b2lkIF9fcmVhcm1f c3Bpbl9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluKQogewogCWNvbnN0IHVpbnQzMl90IG1pX2FyYl9j aGsgPSAweDUgPDwgMjM7CiAKKwlpZiAoc3Bpbi0+cnVubmluZykgeworCQlpZ3RfYXNzZXJ0KCpz cGluLT5ydW5uaW5nKTsKKwkJKnNwaW4tPnJ1bm5pbmcgPSAwOworCX0KKwlpZ3RfYXNzZXJ0X2Vx KCpzcGluLT5iYXRjaCwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CiAgICAgICAgKnNwaW4tPmJhdGNo ID0gbWlfYXJiX2NoazsKICAgICAgICBfX3N5bmNfc3luY2hyb25pemUoKTsKIH0KQEAgLTE0ODks NiArMTU1MSw5IEBAIGFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAkvKiBTYW1wbGluZyBwbGF0Zm9ybXMgY2Fubm90IHJlYWNoIHRo ZSBoaWdoIGFjY3VyYWN5IGNyaXRlcmlhLiAqLwogCWlndF9yZXF1aXJlKGdlbV9oYXNfZXhlY2xp c3RzKGdlbV9mZCkpOwogCisJLyogTmVlZCBzdG9yZSBkd29yZCBmb3IgYWNjdXJhdGUgUFdNLiAq LworCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoZ2VtX2ZkLCBlMnJpbmcoZ2VtX2Zk LCBlKSkpOworCiAJd2hpbGUgKGlkbGVfdXMgPCAyNTAwKSB7CiAJCWJ1c3lfdXMgKj0gMjsKIAkJ aWRsZV91cyAqPSAyOwpAQCAtMTUxNyw3ICsxNTgyLDYgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQljb25zdCB1bnNpZ25l ZCBsb25nIHRpbWVvdXRbXSA9IHsKIAkJCXB3bV9jYWxpYnJhdGlvbl91cyAqIDEwMDAsIHRlc3Rf dXMgKiAxMDAwCiAJCX07Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9 IHt9OwogCQl1aW50NjRfdCB0b3RhbF9idXN5X25zID0gMCwgdG90YWxfaWRsZV9ucyA9IDA7CiAJ CWlndF9zcGluX3QgKnNwaW47CiAJCWludCByZXQ7CkBAIC0xNTMwLDEyICsxNTk0LDkgQEAgYWNj dXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LAogCQkJaWd0X3dhcm4oIkZhaWxlZCB0byBzZXQgc2NoZWR1bGluZyBwb2xpY3khXG4iKTsKIAog CQkvKiBBbGxvY2F0ZSBvdXIgc3BpbiBiYXRjaCBhbmQgaWRsZSBpdC4gKi8KLQkJc3BpbiA9IGln dF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKLQkJb2Jq LmhhbmRsZSA9IHNwaW4tPmhhbmRsZTsKLQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsICZv YmosIGUpOyAvKiByZWNvcmQgaXRzIGxvY2F0aW9uICovCisJCXNwaW4gPSBzcGluX3N5bmMoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsK LQkJZ2VtX3N5bmMoZ2VtX2ZkLCBvYmouaGFuZGxlKTsKLQkJb2JqLmZsYWdzIHw9IEVYRUNfT0JK RUNUX1BJTk5FRDsKKwkJZ2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCiAJCS8qIDFz dCBwYXNzIGlzIGNhbGlicmF0aW9uLCBzZWNvbmQgcGFzcyBpcyB0aGUgdGVzdC4gKi8KIAkJZm9y IChpbnQgcGFzcyA9IDA7IHBhc3MgPCBBUlJBWV9TSVpFKHRpbWVvdXQpOyBwYXNzKyspIHsKQEAg LTE1NDUsMjQgKzE2MDYsMzAgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJCQlpZ3RfbnNlY19lbGFwc2VkKCZ0ZXN0X3N0 YXJ0KTsKIAkJCWRvIHsKLQkJCQl1bnNpZ25lZCBpbnQgdGFyZ2V0X2lkbGVfdXMsIHRfYnVzeTsK KwkJCQl1bnNpZ25lZCBpbnQgdGFyZ2V0X2lkbGVfdXM7CisJCQkJc3RydWN0IHRpbWVzcGVjIHN0 YXJ0ID0geyB9OworCQkJCXVuc2lnbmVkIGxvbmcgcHJlcF9kZWxheV9uczsKIAogCQkJCS8qIFJl c3RhcnQgdGhlIHNwaW5iYXRjaC4gKi8KKwkJCQlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CiAJ CQkJX19yZWFybV9zcGluX2JhdGNoKHNwaW4pOwotCQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2Vt X2ZkLCAmb2JqLCBlKTsKKwkJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZSk7 CiAKLQkJCQkvKgotCQkJCSAqIE5vdGUgdGhhdCB0aGUgc3VibWlzc2lvbiBtYXkgYmUgZGVsYXll ZCB0byBhCi0JCQkJICogdGFza2xldCAoa3NvZnRpcnFkKSB3aGljaCBjYW5ub3QgcnVuIHVudGls IHdlCi0JCQkJICogc2xlZXAgYXMgd2UgaG9nIHRoZSBjcHUgKHdlIGFyZSBSVCkuCi0JCQkJICov CisJCQkJIC8qIFdhaXQgZm9yIGJhdGNoIHRvIHN0YXJ0IGV4ZWN1dGluZy4gKi8KKwkJCQlfX3Nw aW5fd2FpdChnZW1fZmQsIHNwaW4pOworCQkJCXByZXBfZGVsYXlfbnMgPSBpZ3RfbnNlY19lbGFw c2VkKCZzdGFydCk7CiAKLQkJCQl0X2J1c3kgPSBtZWFzdXJlZF91c2xlZXAoYnVzeV91cyk7CisJ CQkJLyogUFdNIGJ1c3kgc2xlZXAuICovCisJCQkJbWVtc2V0KCZzdGFydCwgMCwgc2l6ZW9mKHN0 YXJ0KSk7CisJCQkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCQkJCW1lYXN1cmVkX3VzbGVl cChidXN5X3VzKTsKIAkJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7Ci0JCQkJZ2VtX3N5bmMo Z2VtX2ZkLCBvYmouaGFuZGxlKTsKKwkJCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7 CiAKLQkJCQl0b3RhbF9idXN5X25zICs9IHRfYnVzeTsKKwkJCQl0b3RhbF9idXN5X25zICs9IGln dF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKKwkJCQl0b3RhbF9pZGxlX25zICs9IHByZXBfZGVsYXlf bnM7CiAKKwkJCQkvKiBSZS1jYWxpYnJhdGUuICovCiAJCQkJdGFyZ2V0X2lkbGVfdXMgPQogCQkJ CQkoMTAwICogdG90YWxfYnVzeV9ucyAvIHRhcmdldF9idXN5X3BjdCAtICh0b3RhbF9idXN5X25z ICsgdG90YWxfaWRsZV9ucykpIC8gMTAwMDsKIAkJCQl0b3RhbF9pZGxlX25zICs9IG1lYXN1cmVk X3VzbGVlcCh0YXJnZXRfaWRsZV91cyk7Ci0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=