From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x22c.google.com (mail-wr0-x22c.google.com [IPv6:2a00:1450:400c:c0c::22c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3F6CF88EF3 for ; Mon, 19 Mar 2018 17:00:03 +0000 (UTC) Received: by mail-wr0-x22c.google.com with SMTP id z12so19397836wrg.4 for ; Mon, 19 Mar 2018 10:00:03 -0700 (PDT) From: Tvrtko Ursulin Date: Mon, 19 Mar 2018 16:59:47 +0000 Message-Id: <20180319165947.18234-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <152147363681.18954.1185605038779760266@mail.alporthouse.com> References: <152147363681.18954.1185605038779760266@mail.alporthouse.com> Subject: [igt-dev] [PATCH i-g-t v8] 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: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk1vcmUgdGhh biBvbmUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIHNwaW5uZXIgaXMgcnVubmluZyBwcmV0dHkgbXVj aAppbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIGNyZWF0ZSBvciBzdWJtaXR0ZWQgaXQuCgpJbiBh Y3R1YWxpdHkgdGhlcmUgaXMgYSB2YXJpYWJsZSBkZWxheSwgZXNwZWNpYWxseSBvbiBleGVjbGlz dHMgcGxhdGZvcm1zLApiZXR3ZWVuIHN1Ym1pc3Npb24gYW5kIHNwaW4gYmF0Y2ggc3RhcnRpbmcg dG8gcnVuIG9uIHRoZSBoYXJkd2FyZS4KClRvIGVuYWJsZSB0ZXN0cyB3aGljaCBjYXJlIGFib3V0 IHRoaXMgbGV2ZWwgb2YgdGltaW5nIHRvIGFjY291bnQgZm9yIHRoaXMsCndlIGFkZCBhIG5ldyBz cGluIGJhdGNoIGNvbnN0cnVjdG9yIHdoaWNoIHByb3ZpZGVzIGFuIG91dHB1dCBmaWVsZCB3aGlj aApjYW4gYmUgcG9sbGVkIHRvIGRldGVybWluZSB3aGVuIHRoZSBiYXRjaCBhY3R1YWxseSBzdGFy dGVkIHJ1bm5pbmcuCgpUaGlzIGlzIGltcGxlbWVudGVkIHZpYSBNSV9TVE9SRURXX0lNTSBmcm9t IHRoZSBzcGluIGJhdGNoLCB3cml0aW5nIGludG8KbWVtb3J5IG1hcHBlZCBwYWdlIHNoYXJlZCB3 aXRoIHVzZXJzcGFjZS4KClVzaW5nIHRoaXMgZmFjaWxpdHkgZnJvbSBwZXJmX3BtdSwgd2hlcmUg YXBwbGljYWJsZSwgc2hvdWxkIGltcHJvdmUgdmVyeQpvY2Nhc2lvbmFsIHRlc3QgZmFpbHMgYWNy b3NzIHRoZSBzZXQgYW5kIHBsYXRmb3Jtcy4KCnYyOgogQ2hyaXMgV2lsc29uOgogKiBVc2UgY2Fj aGluZyBtYXBwaW5nIGlmIGF2YWlsYWJsZS4KICogSGFuZGxlIG9sZCBnZW5zIGJldHRlci4KICog VXNlIGdlbV9jYW5fc3RvcmVfZHdvcmQuCiAqIENhY2hlIGV4ZWMgb2JqIGFycmF5IGluIHNwaW5f YmF0Y2hfdCBmb3IgZWFzaWVyIHJlc3VibWl0LgoKdjM6CiAqIEZvcmdvdCBJOTE1X0VYRUNfTk9f UkVMT0MuIChDaHJpcyBXaWxzb24pCgp2NDoKICogTWFzayBvdXQgYWxsIG5vbi1lbmdpbmUgZmxh Z3MgaW4gZ2VtX2Nhbl9zdG9yZV9kd29yZC4KICogQWRkZWQgc29tZSBkZWJ1ZyBsb2dnaW5nLgoK djU6CiAqIEZpeCByZWxvY3MgYW5kIGJhdGNoIG11bm1hcC4gKENocmlzKQogKiBBZGRlZCBhc3Nl cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKdjY6CiAqIFNraXAgYWNj dXJhY3kgdGVzdHMgd2hlbiAhZ2VtX2Nhbl9zdG9yZV9kd29yZC4KCnY3OgogKiBGaXggYmF0Y2gg cmVjdXJzaW9uIHJlbG9jIGFkZHJlc3MuCgp2ODoKIENocmlzIFdpbHNvbjoKICogUHVsbCB1cCBn ZW1fY2FuX3N0b3JlX2R3b3JkIGNoZWNrIGJlZm9yZSB3ZSBzdGFydCBzdWJtaXR0aW5nLgogKiBC dWlsZCBzcGlubmVyIGJhdGNoIGluIGEgd2F5IHdlIGNhbiBza2lwIHN0b3JlIGR3b3JkIHdoZW4g bm90CiAgIG5lZWRlZCBzbyB3ZSBjYW4gcnVuIG9uIFNhbmR5QnJpZGdlLgoKU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU3VnZ2VzdGVkLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaWd0X2R1 bW15bG9hZC5jICB8IDE5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0KIGxpYi9pZ3RfZHVtbXlsb2FkLmggIHwgIDExICsrKwogbGliL2lndF9ndC5j ICAgICAgICAgfCAgIDIgKy0KIGxpYi9pb2N0bF93cmFwcGVycy5jIHwgICAyICstCiBsaWIvaW9j dGxfd3JhcHBlcnMuaCB8ICAgMSArCiB0ZXN0cy9wZXJmX3BtdS5jICAgICB8IDE4MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdl ZCwgMjkzIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9p Z3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCmluZGV4IDRiMjBmMjNkZmUyNi4u Y2U4NDYyODA5NWI1IDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBiL2xpYi9p Z3RfZHVtbXlsb2FkLmMKQEAgLTc0LDM1ICs3NCw0OCBAQCBmaWxsX3JlbG9jKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCiAJcmVsb2MtPndyaXRlX2RvbWFpbiA9 IHdyaXRlX2RvbWFpbnM7CiB9CiAKLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0 X3NwaW5fdCAqc3BpbiwKLQkJCQlpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5l LAotCQkJCXVpbnQzMl90IGRlcCwgYm9vbCBvdXRfZmVuY2UpCisjZGVmaW5lIE9VVF9GRU5DRQko MSA8PCAwKQorI2RlZmluZSBQT0xMX1JVTgkoMSA8PCAxKQorCitzdGF0aWMgaW50CitlbWl0X3Jl Y3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5z aWduZWQgZW5naW5lLAorCQkgICAgIHVpbnQzMl90IGRlcCwgdW5zaWduZWQgaW50IGZsYWdzKQog ewogI2RlZmluZSBTQ1JBVENIIDAKICNkZWZpbmUgQkFUQ0ggMQogCWNvbnN0IGludCBnZW4gPSBp bnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9ialsyXTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgcmVsb2NzWzJdOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NzWzJdLCAqcjsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVmOworCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyICpvYmo7CiAJdW5zaWduZWQgaW50IGVuZ2luZXNbMTZdOwogCXVu c2lnbmVkIGludCBuZW5naW5lOwogCWludCBmZW5jZV9mZCA9IC0xOwotCXVpbnQzMl90ICpiYXRj aDsKKwl1aW50MzJfdCAqYmF0Y2gsICpiYXRjaF9zdGFydDsKIAlpbnQgaTsKIAogCW5lbmdpbmUg PSAwOwogCWlmIChlbmdpbmUgPT0gLTEpIHsKLQkJZm9yX2VhY2hfZW5naW5lKGZkLCBlbmdpbmUp Ci0JCQlpZiAoZW5naW5lKQorCQlmb3JfZWFjaF9lbmdpbmUoZmQsIGVuZ2luZSkgeworCQkJaWYg KGVuZ2luZSkgeworCQkJaWYgKGZsYWdzICYgUE9MTF9SVU4pCisJCQkJaWd0X3JlcXVpcmUoIShm bGFncyAmIFBPTExfUlVOKSB8fAorCQkJCQkgICAgZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZW5n aW5lKSk7CisKIAkJCQllbmdpbmVzW25lbmdpbmUrK10gPSBlbmdpbmU7CisJCQl9CisJCX0KIAl9 IGVsc2UgewogCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCBlbmdpbmUpOworCQlpZ3RfcmVxdWlyZSgh KGZsYWdzICYgUE9MTF9SVU4pIHx8CisJCQkgICAgZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZW5n aW5lKSk7CiAJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKIAl9CiAJaWd0X3JlcXVpcmUo bmVuZ2luZSk7CiAKLQltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7Ci0JbWVt c2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOworCW1lbXNldCgmc3Bpbi0+ZXhlY2J1ZiwgMCwgc2l6 ZW9mKHNwaW4tPmV4ZWNidWYpKTsKKwlleGVjYnVmID0gJnNwaW4tPmV4ZWNidWY7CisJbWVtc2V0 KHNwaW4tPm9iaiwgMCwgc2l6ZW9mKHNwaW4tPm9iaikpOworCW9iaiA9IHNwaW4tPm9iajsKIAlt ZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7CiAKIAlvYmpbQkFUQ0hdLmhhbmRsZSA9 IGdlbV9jcmVhdGUoZmQsIEJBVENIX1NJWkUpOwpAQCAtMTEzLDE5ICsxMjYsNjYgQEAgc3RhdGlj IGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAogCQkJCSAgICAgICAJ QkFUQ0hfU0laRSwgUFJPVF9XUklURSk7CiAJZ2VtX3NldF9kb21haW4oZmQsIG9ialtCQVRDSF0u aGFuZGxlLAogCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Ci0J ZXhlY2J1Zi5idWZmZXJfY291bnQrKzsKKwlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwliYXRj aF9zdGFydCA9IGJhdGNoOwogCiAJaWYgKGRlcCkgeworCQlpZ3RfYXNzZXJ0KCEoZmxhZ3MgJiBQ T0xMX1JVTikpOworCiAJCS8qIGR1bW15IHdyaXRlIHRvIGRlcGVuZGVuY3kgKi8KIAkJb2JqW1ND UkFUQ0hdLmhhbmRsZSA9IGRlcDsKIAkJZmlsbF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVs b2NhdGlvbl9jb3VudCsrXSwKIAkJCSAgIGRlcCwgMTAyMCwKIAkJCSAgIEk5MTVfR0VNX0RPTUFJ Tl9SRU5ERVIsCiAJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSKTsKLQkJZXhlY2J1Zi5idWZm ZXJfY291bnQrKzsKKwkJZXhlY2J1Zi0+YnVmZmVyX2NvdW50Kys7CisJfSBlbHNlIGlmIChmbGFn cyAmIFBPTExfUlVOKSB7CisJCXVuc2lnbmVkIGludCBvZmZzZXQ7CisKKwkJaWd0X2Fzc2VydCgh ZGVwKTsKKworCQlpZiAoZ2VuID09IDQgfHwgZ2VuID09IDUpCisJCQlleGVjYnVmLT5mbGFncyB8 PSBJOTE1X0VYRUNfU0VDVVJFOworCisJCXNwaW4tPnBvbGxfaGFuZGxlID0gZ2VtX2NyZWF0ZShm ZCwgNDA5Nik7CisKKwkJaWYgKF9fZ2VtX3NldF9jYWNoaW5nKGZkLCBzcGluLT5wb2xsX2hhbmRs ZSwKKwkJCQkgICAgICBJOTE1X0NBQ0hJTkdfQ0FDSEVEKSA9PSAwKQorCQkJc3Bpbi0+cnVubmlu ZyA9IF9fZ2VtX21tYXBfX2NwdShmZCwgc3Bpbi0+cG9sbF9oYW5kbGUsCisJCQkJCQkJMCwgNDA5 NiwKKwkJCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKwkJZWxzZQorCQkJc3Bpbi0+cnVu bmluZyA9IF9fZ2VtX21tYXBfX3djKGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCSAgICAg ICAwLCA0MDk2LAorCQkJCQkJICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQlpZ3Rf YXNzZXJ0KHNwaW4tPnJ1bm5pbmcpOworCQlpZ3RfYXNzZXJ0X2VxKCpzcGluLT5ydW5uaW5nLCAw KTsKKworCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTSB8IChnZW4gPCA2ID8gMSA8PCAy MiA6IDApOworCisJCWlmIChnZW4gPj0gOCkgeworCQkJb2Zmc2V0ID0gMTsKKwkJCSpiYXRjaCsr ID0gMDsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfSBlbHNlIGlmIChnZW4gPj0gNCkgeworCQkJb2Zm c2V0ID0gMjsKKwkJCSpiYXRjaCsrID0gMDsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfSBlbHNlIHsK KwkJCW9mZnNldCA9IDE7CisJCQliYXRjaFstMV0tLTsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfQor CisJCSpiYXRjaCsrID0gMTsKKworCQlvYmpbU0NSQVRDSF0uaGFuZGxlID0gc3Bpbi0+cG9sbF9o YW5kbGU7CisJCWZpbGxfcmVsb2MoJnJlbG9jc1tvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQr K10sCisJCQkgICBzcGluLT5wb2xsX2hhbmRsZSwgb2Zmc2V0LCAwLCAwKTsKKwkJZXhlY2J1Zi0+ YnVmZmVyX2NvdW50Kys7CiAJfQogCi0Jc3Bpbi0+YmF0Y2ggPSBiYXRjaDsKKwlzcGluLT5iYXRj aCA9IGJhdGNoID0gYmF0Y2hfc3RhcnQgKyA2NCAvIHNpemVvZigqYmF0Y2gpOwogCXNwaW4tPmhh bmRsZSA9IG9ialtCQVRDSF0uaGFuZGxlOwogCiAJLyogQWxsb3cgb3Vyc2VsdmVzIHRvIGJlIHBy ZWVtcHRlZCAqLwpAQCAtMTQ1LDQwICsyMDUsNDIgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2l2 ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAogCWJhdGNoICs9IDEwMDA7CiAKIAkvKiByZWN1cnNl ICovCi0JZmlsbF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudF0sCi0J CSAgIG9ialtCQVRDSF0uaGFuZGxlLCAoYmF0Y2ggLSBzcGluLT5iYXRjaCkgKyAxLAotCQkgICBJ OTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7CisJciA9ICZyZWxvY3Nbb2JqW0JBVENIXS5yZWxv Y2F0aW9uX2NvdW50KytdOworCXItPnRhcmdldF9oYW5kbGUgPSBvYmpbQkFUQ0hdLmhhbmRsZTsK KwlyLT5vZmZzZXQgPSAoYmF0Y2ggKyAxIC0gYmF0Y2hfc3RhcnQpICogc2l6ZW9mKCpiYXRjaCk7 CisJci0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7CisJci0+ZGVsdGEg PSA2NDsKIAlpZiAoZ2VuID49IDgpIHsKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RB UlQgfCAxIDw8IDggfCAxOwotCQkqYmF0Y2grKyA9IDA7CisJCSpiYXRjaCsrID0gci0+ZGVsdGE7 CiAJCSpiYXRjaCsrID0gMDsKIAl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7CiAJCSpiYXRjaCsrID0g TUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4OwotCQkqYmF0Y2grKyA9IDA7CisJCSpiYXRj aCsrID0gci0+ZGVsdGE7CiAJfSBlbHNlIHsKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJf U1RBUlQgfCAyIDw8IDY7Ci0JCSpiYXRjaCA9IDA7Ci0JCWlmIChnZW4gPCA0KSB7Ci0JCQkqYmF0 Y2ggfD0gMTsKLQkJCXJlbG9jc1tvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnRdLmRlbHRhID0g MTsKLQkJfQorCQlpZiAoZ2VuIDwgNCkKKwkJCXItPmRlbHRhIHw9IDE7CisJCSpiYXRjaCA9IHIt PmRlbHRhOwogCQliYXRjaCsrOwogCX0KLQlvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQrKzsK IAlvYmpbQkFUQ0hdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2NzKTsKIAotCWV4 ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqICsgKDIgLSBleGVjYnVmLmJ1 ZmZlcl9jb3VudCkpOwotCWV4ZWNidWYucnN2ZDEgPSBjdHg7CisJZXhlY2J1Zi0+YnVmZmVyc19w dHIgPSB0b191c2VyX3BvaW50ZXIob2JqICsKKwkJCQkJICAgICAgICgyIC0gZXhlY2J1Zi0+YnVm ZmVyX2NvdW50KSk7CisJZXhlY2J1Zi0+cnN2ZDEgPSBjdHg7CiAKLQlpZiAob3V0X2ZlbmNlKQot CQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19GRU5DRV9PVVQ7CisJaWYgKGZsYWdzICYgT1VU X0ZFTkNFKQorCQlleGVjYnVmLT5mbGFncyB8PSBJOTE1X0VYRUNfRkVOQ0VfT1VUOwogCiAJZm9y IChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgewotCQlleGVjYnVmLmZsYWdzICY9IH5FTkdJTkVf TUFTSzsKLQkJZXhlY2J1Zi5mbGFncyB8PSBlbmdpbmVzW2ldOwotCQlnZW1fZXhlY2J1Zl93cihm ZCwgJmV4ZWNidWYpOwotCQlpZiAob3V0X2ZlbmNlKSB7Ci0JCQlpbnQgX2ZkID0gZXhlY2J1Zi5y c3ZkMiA+PiAzMjsKKwkJZXhlY2J1Zi0+ZmxhZ3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVjYnVm LT5mbGFncyB8PSBlbmdpbmVzW2ldOworCisJCWdlbV9leGVjYnVmX3dyKGZkLCBleGVjYnVmKTsK KworCQlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpIHsKKwkJCWludCBfZmQgPSBleGVjYnVmLT5yc3Zk MiA+PiAzMjsKIAogCQkJaWd0X2Fzc2VydChfZmQgPj0gMCk7CiAJCQlpZiAoZmVuY2VfZmQgPT0g LTEpIHsKQEAgLTE5NCwxMiArMjU2LDIwIEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0 Y2goaWd0X3NwaW5fdCAqc3BpbiwKIAkJfQogCX0KIAorCS8qIE1ha2UgaXQgZWFzaWVyIGZvciBj YWxsZXJzIHRvIHJlc3VibWl0LiAqLworCisJb2JqW0JBVENIXS5yZWxvY2F0aW9uX2NvdW50ID0g MDsKKwlvYmpbQkFUQ0hdLnJlbG9jc19wdHIgPSAwOworCisJb2JqW1NDUkFUQ0hdLmZsYWdzID0g RVhFQ19PQkpFQ1RfUElOTkVEOworCW9ialtCQVRDSF0uZmxhZ3MgPSBFWEVDX09CSkVDVF9QSU5O RUQ7CisKIAlyZXR1cm4gZmVuY2VfZmQ7CiB9CiAKIHN0YXRpYyBpZ3Rfc3Bpbl90ICoKIF9fX2ln dF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1 aW50MzJfdCBkZXAsCi0JCSAgICAgIGludCBvdXRfZmVuY2UpCisJCSAgICAgIHVuc2lnbmVkIGlu dCBmbGFncykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGluOwogCkBAIC0yMDcsNyArMjc3LDcgQEAgX19f aWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUs IHVpbnQzMl90IGRlcCwKIAlpZ3RfYXNzZXJ0KHNwaW4pOwogCiAJc3Bpbi0+b3V0X2ZlbmNlID0g ZW1pdF9yZWN1cnNpdmVfYmF0Y2goc3BpbiwgZmQsIGN0eCwgZW5naW5lLCBkZXAsCi0JCQkJCSAg ICAgICBvdXRfZmVuY2UpOworCQkJCQkgICAgICAgZmxhZ3MpOwogCiAJcHRocmVhZF9tdXRleF9s b2NrKCZsaXN0X2xvY2spOwogCWlndF9saXN0X2FkZCgmc3Bpbi0+bGluaywgJnNwaW5fbGlzdCk7 CkBAIC0yMTksNyArMjg5LDcgQEAgX19faWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMy X3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQzMl90IGRlcCwKIGlndF9zcGluX3QgKgogX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwg dWludDMyX3QgZGVwKQogewotCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwg ZW5naW5lLCBkZXAsIGZhbHNlKTsKKwlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBj dHgsIGVuZ2luZSwgZGVwLCAwKTsKIH0KIAogLyoqCkBAIC0yNTMsNyArMzIzLDcgQEAgaWd0X3Nw aW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQz Ml90IGRlcCkKIGlndF9zcGluX3QgKgogX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfZmVuY2UoaW50IGZk LCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSkKIHsKLQlyZXR1cm4gX19faWd0X3NwaW5f YmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwgMCwgdHJ1ZSk7CisJcmV0dXJuIF9fX2lndF9zcGlu X2JhdGNoX25ldyhmZCwgY3R4LCBlbmdpbmUsIDAsIE9VVF9GRU5DRSk7CiB9CiAKIC8qKgpAQCAt Mjg2LDYgKzM1Niw0MiBAQCBpZ3Rfc3Bpbl9iYXRjaF9uZXdfZmVuY2UoaW50IGZkLCB1aW50MzJf dCBjdHgsIHVuc2lnbmVkIGVuZ2luZSkKIAlyZXR1cm4gc3BpbjsKIH0KIAoraWd0X3NwaW5fdCAq CitfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25l ZCBlbmdpbmUpCit7CisJcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBlbmdp bmUsIDAsIFBPTExfUlVOKTsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbDoK KyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBlbmdpbmU6IFJpbmcg dG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVz cworICogICAgICAgICAgdGhhbiAwLCBleGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3MuCisg KgorICogU3RhcnQgYSByZWN1cnNpdmUgYmF0Y2ggb24gYSByaW5nLiBJbW1lZGlhdGVseSByZXR1 cm5zIGEgI2lndF9zcGluX3QgdGhhdAorICogY29udGFpbnMgdGhlIGJhdGNoJ3MgaGFuZGxlIHRo YXQgY2FuIGJlIHdhaXRlZCB1cG9uLiBUaGUgcmV0dXJuZWQgc3RydWN0dXJlCisgKiBtdXN0IGJl IHBhc3NlZCB0byBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKCkgZm9yIHBvc3QtcHJvY2Vzc2luZy4KKyAq CisgKiBpZ3Rfc3Bpbl90LT5ydW5uaW5nIHdpbGwgY29udGFpbnQgYSBwb2ludGVyIHdoaWNoIHRh cmdldCB3aWxsIGNoYW5nZSBmcm9tCisgKiB6ZXJvIHRvIG9uZSBvbmNlIHRoZSBzcGlubmVyIGFj dHVhbGx5IHN0YXJ0cyBleGVjdXRpbmcgb24gdGhlIEdQVS4KKyAqCisgKiBSZXR1cm5zOgorICog U3RydWN0dXJlIHdpdGggaGVscGVyIGludGVybmFsIHN0YXRlIGZvciBpZ3Rfc3Bpbl9iYXRjaF9m cmVlKCkuCisgKi8KK2lndF9zcGluX3QgKgoraWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZk LCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSkKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluOwor CisJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKwlpZ3RfcmVxdWlyZShnZW1fbW1hcF9faGFzX3djKGZk KSk7CisKKwlzcGluID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChmZCwgY3R4LCBlbmdpbmUp OworCWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIHNwaW4tPmhhbmRsZSkpOworCisJcmV0dXJu IHNwaW47Cit9CisKIHN0YXRpYyB2b2lkIG5vdGlmeSh1bmlvbiBzaWd2YWwgYXJnKQogewogCWln dF9zcGluX3QgKnNwaW4gPSBhcmcuc2l2YWxfcHRyOwpAQCAtMzQwLDYgKzQ0Niw4IEBAIHZvaWQg aWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4pCiAJaWYgKCFzcGluKQogCQlyZXR1 cm47CiAKKwlpZ3RfYXNzZXJ0KCpzcGluLT5iYXRjaCA9PSBNSV9BUkJfQ0hLIHx8CisJCSAgICpz cGluLT5iYXRjaCA9PSBNSV9CQVRDSF9CVUZGRVJfRU5EKTsKIAkqc3Bpbi0+YmF0Y2ggPSBNSV9C QVRDSF9CVUZGRVJfRU5EOwogCV9fc3luY19zeW5jaHJvbml6ZSgpOwogfQpAQCAtMzY1LDcgKzQ3 MywxMyBAQCB2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGlu KQogCQl0aW1lcl9kZWxldGUoc3Bpbi0+dGltZXIpOwogCiAJaWd0X3NwaW5fYmF0Y2hfZW5kKHNw aW4pOwotCWdlbV9tdW5tYXAoc3Bpbi0+YmF0Y2gsIEJBVENIX1NJWkUpOworCWdlbV9tdW5tYXAo KHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3Bpbi0+YmF0Y2ggJiAofjQwOTVVTCkpLAorCQkgICBC QVRDSF9TSVpFKTsKKworCWlmIChzcGluLT5ydW5uaW5nKSB7CisJCWdlbV9tdW5tYXAoc3Bpbi0+ cnVubmluZywgNDA5Nik7CisJCWdlbV9jbG9zZShmZCwgc3Bpbi0+cG9sbF9oYW5kbGUpOworCX0K IAogCWdlbV9jbG9zZShmZCwgc3Bpbi0+aGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9k dW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggNDEwM2U0YWI5ZTM2Li4zMTAz OTM1YTMwOWIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgKKysrIGIvbGliL2lndF9k dW1teWxvYWQuaApAQCAtMzYsNiArMzYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4gewog CXN0cnVjdCBpZ3RfbGlzdCBsaW5rOwogCXVpbnQzMl90ICpiYXRjaDsKIAlpbnQgb3V0X2ZlbmNl OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisJdWludDMyX3QgcG9sbF9oYW5kbGU7CisJ Ym9vbCAqcnVubmluZzsKIH0gaWd0X3NwaW5fdDsKIAogaWd0X3NwaW5fdCAqX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoaW50IGZkLApAQCAtNTUsNiArNTksMTMgQEAgaWd0X3NwaW5fdCAqaWd0X3NwaW5f YmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwKIAkJCQkgICAgIHVpbnQzMl90IGN0eCwKIAkJCQkgICAg IHVuc2lnbmVkIGVuZ2luZSk7CiAKK2lndF9zcGluX3QgKl9faWd0X3NwaW5fYmF0Y2hfbmV3X3Bv bGwoaW50IGZkLAorCQkJCSAgICAgICB1aW50MzJfdCBjdHgsCisJCQkJICAgICAgIHVuc2lnbmVk IGVuZ2luZSk7CitpZ3Rfc3Bpbl90ICppZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQsCisJ CQkJICAgIHVpbnQzMl90IGN0eCwKKwkJCQkgICAgdW5zaWduZWQgZW5naW5lKTsKKwogdm9pZCBp Z3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQ2NF90IG5zKTsK IHZvaWQgaWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4pOwogdm9pZCBpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3Bpbik7CmRpZmYgLS1naXQgYS9saWIv aWd0X2d0LmMgYi9saWIvaWd0X2d0LmMKaW5kZXggMDFhZWJjNjcwODYyLi40NTY5ZmQzNmJkODUg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuYworKysgYi9saWIvaWd0X2d0LmMKQEAgLTYwOSw3ICs2 MDksNyBAQCBib29sIGdlbV9jYW5fc3RvcmVfZHdvcmQoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5n aW5lKQogCWlmIChnZW4gPT0gMyAmJiAoaW5mby0+aXNfZ3JhbnRzZGFsZSB8fCBpbmZvLT5pc19h bHZpc28pKQogCQlyZXR1cm4gZmFsc2U7IC8qIG9ubHkgc3VwcG9ydHMgcGh5c2ljYWwgYWRkcmVz c2VzICovCiAKLQlpZiAoZ2VuID09IDYgJiYgKGVuZ2luZSAmIH4oMzw8MTMpKSA9PSBJOTE1X0VY RUNfQlNEKQorCWlmIChnZW4gPT0gNiAmJiAoKGVuZ2luZSAmIDB4M2YpID09IEk5MTVfRVhFQ19C U0QpKQogCQlyZXR1cm4gZmFsc2U7IC8qIGtpbGxzIHRoZSBtYWNoaW5lISAqLwogCiAJaWYgKGlu Zm8tPmlzX2Jyb2Fkd2F0ZXIpCmRpZmYgLS1naXQgYS9saWIvaW9jdGxfd3JhcHBlcnMuYyBiL2xp Yi9pb2N0bF93cmFwcGVycy5jCmluZGV4IDg3NDhjZmNmYzA0Zi4uNGUxYTA4YmYwNmI0IDEwMDY0 NAotLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuYworKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuYwpA QCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgZ2VtX3NldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQzMl90IHRpbGluZywgdWludDMyX3Qgc3RyaWRlKQogCWlndF9hc3NlcnQoX19n ZW1fc2V0X3RpbGluZyhmZCwgaGFuZGxlLCB0aWxpbmcsIHN0cmlkZSkgPT0gMCk7CiB9CiAKLXN0 YXRpYyBpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQz Ml90IGNhY2hpbmcpCitpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQzMl90IGNhY2hpbmcpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9jYWNoaW5nIGFy ZzsKIAlpbnQgZXJyOwpkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9j dGxfd3JhcHBlcnMuaAppbmRleCAxM2ZiZTNjMTAzYzAuLmI5NjZmNzJjOTBhOCAxMDA2NDQKLS0t IGEvbGliL2lvY3RsX3dyYXBwZXJzLmgKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKQEAgLTYx LDYgKzYxLDcgQEAgYm9vbCBnZW1fZ2V0X3RpbGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwg dWludDMyX3QgKnRpbGluZywgdWludDMyX3QgKnN3aXp6bGUKIHZvaWQgZ2VtX3NldF90aWxpbmco aW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHRpbGluZywgdWludDMyX3Qgc3RyaWRl KTsKIGludCBfX2dlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJf dCB0aWxpbmcsIHVpbnQzMl90IHN0cmlkZSk7CiAKK2ludCBfX2dlbV9zZXRfY2FjaGluZyhpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgY2FjaGluZyk7CiB2b2lkIGdlbV9zZXRfY2Fj aGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgY2FjaGluZyk7CiB1aW50MzJf dCBnZW1fZ2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUpOwogdWludDMyX3QgZ2Vt X2ZsaW5rKGludCBmZCwgdWludDMyX3QgaGFuZGxlKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZf cG11LmMgYi90ZXN0cy9wZXJmX3BtdS5jCmluZGV4IDE5ZmNjOTVmZmM3Zi4uNDY5YjliZWNkYmFj IDEwMDY0NAotLS0gYS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11LmMKQEAg LTE3MCw2ICsxNzAsNTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xP TkcgKDE2KQogI2RlZmluZSBGTEFHX0hBTkcgKDMyKQogCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9f c3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorewor CWlmIChnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJCXJldHVybiBfX2lndF9zcGlu X2JhdGNoX25ld19wb2xsKGZkLCBjdHgsIGZsYWdzKTsKKwllbHNlCisJCXJldHVybiBfX2lndF9z cGluX2JhdGNoX25ldyhmZCwgY3R4LCBmbGFncywgMCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBs b25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKK3sKKwlzdHJ1Y3QgdGlt ZXNwZWMgc3RhcnQgPSB7IH07CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwlpZiAo Z2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgc3Bpbi0+ZXhlY2J1Zi5mbGFncykpIHsKKwkJdW5zaWdu ZWQgbG9uZyB0aW1lb3V0ID0gMDsKKworCQl3aGlsZSAoIXNwaW4tPnJ1bm5pbmcpIHsKKwkJCXVu c2lnbmVkIGxvbmcgdCA9IGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKKworCQkJaWYgKCh0IC0g dGltZW91dCkgPiAyNTBlNikgeworCQkJCXRpbWVvdXQgPSB0OworCQkJCWlndF93YXJuKCJTcGlu bmVyIG5vdCBydW5uaW5nIGFmdGVyICUuMmZtc1xuIiwKKwkJCQkJIChkb3VibGUpdCAvIDFlNik7 CisJCQl9CisJCX07CisJfSBlbHNlIHsKKwkJaWd0X2RlYnVnKCJfX3NwaW5fd2FpdCAtIHVzbGVl cCBtb2RlXG4iKTsKKwkJdXNsZWVwKDUwMGUzKTsgLyogQmV0dGVyIHRoYW4gbm90aGluZyEgKi8K Kwl9CisKKwlyZXR1cm4gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworfQorCitzdGF0aWMgaWd0 X3NwaW5fdCAqIF9fc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25n IGZsYWdzKQoreworCWlndF9zcGluX3QgKnNwaW4gPSBfX3NwaW5fcG9sbChmZCwgY3R4LCBmbGFn cyk7CisKKwlfX3NwaW5fd2FpdChmZCwgc3Bpbik7CisKKwlyZXR1cm4gc3BpbjsKK30KKworc3Rh dGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVk IGxvbmcgZmxhZ3MpCit7CisJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKworCXJldHVybiBfX3NwaW5f c3luYyhmZCwgY3R4LCBmbGFncyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwg aWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCWlmICghc3BpbikKQEAg LTE4MCw4ICsyMzAsMjUgQEAgc3RhdGljIHZvaWQgZW5kX3NwaW4oaW50IGZkLCBpZ3Rfc3Bpbl90 ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJaWYgKGZsYWdzICYgRkxBR19TWU5DKQogCQln ZW1fc3luYyhmZCwgc3Bpbi0+aGFuZGxlKTsKIAotCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdf SURMRSkKLQkJdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gNTAwMCk7CisJaWYgKGZsYWdzICYg VEVTVF9UUkFJTElOR19JRExFKSB7CisJCXVuc2lnbmVkIGxvbmcgdCwgdGltZW91dCA9IDA7CisJ CXN0cnVjdCB0aW1lc3BlYyBzdGFydCA9IHsgfTsKKworCQlpZ3RfbnNlY19lbGFwc2VkKCZzdGFy dCk7CisKKwkJZG8geworCQkJdCA9IGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKKworCQkJaWYg KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpICYmCisJCQkgICAgKHQgLSB0aW1lb3V0KSA+ IDEwZTYpIHsKKwkJCQl0aW1lb3V0ID0gdDsKKwkJCQlpZ3Rfd2FybigiU3Bpbm5lciBub3QgaWRs ZSBhZnRlciAlLjJmbXNcbiIsCisJCQkJCSAoZG91YmxlKXQgLyAxZTYpOworCQkJfQorCisJCQl1 c2xlZXAoMWUzKTsKKwkJfSB3aGlsZSAodCA8IGJhdGNoX2R1cmF0aW9uX25zIC8gNSk7CisJfQog fQogCiBzdGF0aWMgdm9pZApAQCAtMTk1LDcgKzI2Miw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFn cykKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0 YW5jZSkpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOworCQlzcGluID0gc3Bpbl9z eW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7 CiAKQEAgLTI1MSwxMyArMzE4LDcgQEAgYnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJc2xlZXAoMik7CiAKLQlzcGlu ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7 Ci0KLQkvKgotCSAqIFNsZWVwIGZvciBhIGJpdCBhZnRlciBtYWtpbmcgdGhlIGVuZ2luZSBidXN5 IHRvIG1ha2Ugc3VyZSB0aGUgUE1VCi0JICogZ2V0cyBlbmFibGVkIHdoZW4gdGhlIGJhdGNoIGlz IGFscmVhZHkgcnVubmluZy4KLQkgKi8KLQl1c2xlZXAoNTAwZTMpOworCXNwaW4gPSBfX3NwaW5f c3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAogCWZkID0gb3Blbl9wbXUoSTkx NV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CiAKQEAgLTMwMCw3ICsz NjEsNyBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICogcmUtc3VibWlzc2lvbiBpbiBleGVjbGlzdHMgbW9k ZS4gTWFrZSBzdXJlIGJ1c3luZXNzIGlzIGNvcnJlY3RseQogCSAqIHJlcG9ydGVkIHdpdGggdGhl IGVuZ2luZSBidXN5LCBhbmQgYWZ0ZXIgdGhlIGVuZ2luZSB3ZW50IGlkbGUuCiAJICovCi0Jc3Bp blswXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSks IDApOworCXNwaW5bMF0gPSBfX3NwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUp KTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIGN0eCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwogCkBAIC0zODYsNyArNDQ3LDcgQEAgYnVz eV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAogCiAJaWd0X2Fzc2VydF9lcShpLCBudW1fZW5naW5lcyk7CiAKLQlzcGluID0gaWd0 X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOworCXNwaW4g PSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJcG11X3JlYWRfbXVs dGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVl cChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdf SURMRSkKQEAgLTQxMiwxNSArNDczLDE1IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIH0KIAogc3RhdGljIHZvaWQK LV9fc3VibWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwKLQkJICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyICpvYmosCi0JCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUpCitfX3N1Ym1pdF9zcGluX2JhdGNoKGludCBnZW1fZmQsIGlndF9zcGluX3Qg KnNwaW4sCisJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCisJ CSAgICBpbnQgb2Zmc2V0KQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIg PSB7Ci0JCS5idWZmZXJfY291bnQgPSAxLAotCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50 ZXIob2JqKSwKLQkJLmZsYWdzID0gZTJyaW5nKGdlbV9mZCwgZSksCi0JfTsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gc3Bpbi0+ZXhlY2J1ZjsKKworCWViLmZsYWdzICY9 IH4oMHgzZiB8IEk5MTVfRVhFQ19CU0RfTUFTSyk7CisJZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9m ZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7CisJZWIuYmF0Y2hfc3RhcnRfb2Zmc2V0ICs9IG9m ZnNldDsKIAogCWdlbV9leGVjYnVmKGdlbV9mZCwgJmViKTsKIH0KQEAgLTQyOSw3ICs0OTAsNiBA QCBzdGF0aWMgdm9pZAogbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCSAgICBjb25zdCB1bnNpZ25lZCBpbnQg bnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmVfOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZh bFtudW1fZW5naW5lc107CkBAIC00NDMsMTUgKzUwMywxMiBAQCBtb3N0X2J1c3lfY2hlY2tfYWxs KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJ aWYgKCFnZW1faGFzX2VuZ2luZShnZW1fZmQsIGVfLT5jbGFzcywgZV8tPmluc3RhbmNlKSkKIAkJ CWNvbnRpbnVlOwogCi0JCWlmIChlID09IGVfKSB7CisJCWlmIChlID09IGVfKQogCQkJaWRsZV9p ZHggPSBpOwotCQl9IGVsc2UgaWYgKHNwaW4pIHsKLQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2Vt X2ZkLCAmb2JqLCBlXyk7Ci0JCX0gZWxzZSB7Ci0JCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3 KGdlbV9mZCwgMCwKLQkJCQkJCSAgZTJyaW5nKGdlbV9mZCwgZV8pLCAwKTsKLQkJCW9iai5oYW5k bGUgPSBzcGluLT5oYW5kbGU7Ci0JCX0KKwkJZWxzZSBpZiAoc3BpbikKKwkJCV9fc3VibWl0X3Nw aW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBlXywgNjQpOworCQllbHNlCisJCQlzcGluID0gX19zcGlu X3BvbGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOwogCiAJCXZhbFtpKytdID0gSTkx NV9QTVVfRU5HSU5FX0JVU1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwogCX0KQEAgLTQ2MSw2 ICs1MTgsOSBAQCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7 IGkrKykKIAkJZmRbaV0gPSBvcGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwg ZGVsYXkgdG8gYWxsb3cgZW5naW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQo Z2VtX2ZkLCBzcGluKSAqIG51bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZk WzBdLCBudW1fZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0 Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUp CkBAIC00ODksNyArNTQ5LDYgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQg Z2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGlu dCBmbGFncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsK IAljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdWludDY0X3QgdHZh bFsyXVtudW1fZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTUwMywx MyArNTYyLDEwIEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXMsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlLT5jbGFz cywgZS0+aW5zdGFuY2UpKQogCQkJY29udGludWU7CiAKLQkJaWYgKHNwaW4pIHsKLQkJCV9fc3Vi bWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCAmb2JqLCBlKTsKLQkJfSBlbHNlIHsKLQkJCXNwaW4gPSBp Z3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLAotCQkJCQkJICBlMnJpbmcoZ2VtX2ZkLCBlKSwg MCk7Ci0JCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWlmIChzcGluKQorCQkJ X19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0KTsKKwkJZWxzZQorCQkJc3Bp biA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCiAJCXZhbFtp KytdID0gSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKIAl9CkBA IC01MTksNiArNTc1LDkgQEAgYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVu c2lnbmVkIGludCBudW1fZW5naW5lcywKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkr KykKIAkJZmRbaV0gPSBvcGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwgZGVs YXkgdG8gYWxsb3cgZW5naW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQoZ2Vt X2ZkLCBzcGluKSAqIG51bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZkWzBd LCBudW1fZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hf ZHVyYXRpb25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBA IC01NTAsNyArNjA5LDcgQEAgbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5 MTVfUE1VX0VOR0lORV9XQUlUKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChm bGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpKTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC04ODQsNyArOTQz LDcgQEAgbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSkKIAkgKi8KIAlmZFsxXSA9IG9wZW5fcG11KGNvbmZpZyk7CiAKLQlzcGlu ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwor CXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAl2YWxb MF0gPSB2YWxbMV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZFswXSwgJnRzWzBdKTsKIAlzbGVwdFsx XSA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTI0OCw3 ICsxMzA3LDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rf c3lzZnNfZ2V0X3UzMihzeXNmcywgImd0X2Jvb3N0X2ZyZXFfbWh6IikgPT0gbWluX2ZyZXEpOwog CiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsgLyogSWRsZSB0byBiZSBzdXJlIHRoZSBjaGFu Z2UgdGFrZXMgZWZmZWN0ICovCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IEk5MTVfRVhFQ19SRU5ERVIsIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1 X0VYRUNfUkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsK IAltZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEyNzQsNyAr MTMzMyw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5 c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoiKSA9PSBtYXhfZnJlcSk7CiAKIAln ZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2Vt X2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwg MCwgSTkxNV9FWEVDX1JFTkRFUik7CiAKIAlzbGVwdCA9IHBtdV9yZWFkX211bHRpKGZkLCAyLCBz dGFydCk7CiAJbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0x NDU1LDYgKzE1MTQsMTEgQEAgc3RhdGljIHZvaWQgX19yZWFybV9zcGluX2JhdGNoKGlndF9zcGlu X3QgKnNwaW4pCiB7CiAJY29uc3QgdWludDMyX3QgbWlfYXJiX2NoayA9IDB4NSA8PCAyMzsKIAor CWlmIChzcGluLT5ydW5uaW5nKSB7CisJCWlndF9hc3NlcnQoKnNwaW4tPnJ1bm5pbmcpOworCQkq c3Bpbi0+cnVubmluZyA9IDA7CisJfQorCWlndF9hc3NlcnRfZXEoKnNwaW4tPmJhdGNoLCBNSV9C QVRDSF9CVUZGRVJfRU5EKTsKICAgICAgICAqc3Bpbi0+YmF0Y2ggPSBtaV9hcmJfY2hrOwogICAg ICAgIF9fc3luY19zeW5jaHJvbml6ZSgpOwogfQpAQCAtMTQ4OSw2ICsxNTUzLDkgQEAgYWNjdXJh Y3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAog CS8qIFNhbXBsaW5nIHBsYXRmb3JtcyBjYW5ub3QgcmVhY2ggdGhlIGhpZ2ggYWNjdXJhY3kgY3Jp dGVyaWEuICovCiAJaWd0X3JlcXVpcmUoZ2VtX2hhc19leGVjbGlzdHMoZ2VtX2ZkKSk7CiAKKwkv KiBOZWVkIHN0b3JlIGR3b3JkIGZvciBhY2N1cmF0ZSBQV00uICovCisJaWd0X3JlcXVpcmUoZ2Vt X2Nhbl9zdG9yZV9kd29yZChnZW1fZmQsIGUycmluZyhnZW1fZmQsIGUpKSk7CisKIAl3aGlsZSAo aWRsZV91cyA8IDI1MDApIHsKIAkJYnVzeV91cyAqPSAyOwogCQlpZGxlX3VzICo9IDI7CkBAIC0x NTE3LDcgKzE1ODQsNiBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWNvbnN0IHVuc2lnbmVkIGxvbmcgdGltZW91dFtdID0g ewogCQkJcHdtX2NhbGlicmF0aW9uX3VzICogMTAwMCwgdGVzdF91cyAqIDEwMDAKIAkJfTsKLQkJ c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0ge307CiAJCXVpbnQ2NF90IHRv dGFsX2J1c3lfbnMgPSAwLCB0b3RhbF9pZGxlX25zID0gMDsKIAkJaWd0X3NwaW5fdCAqc3BpbjsK IAkJaW50IHJldDsKQEAgLTE1MzAsMTIgKzE1OTYsOSBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCQlpZ3Rfd2FybigiRmFp bGVkIHRvIHNldCBzY2hlZHVsaW5nIHBvbGljeSFcbiIpOwogCiAJCS8qIEFsbG9jYXRlIG91ciBz cGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdl bV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFu ZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7IC8qIHJlY29yZCBp dHMgbG9jYXRpb24gKi8KKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1f ZmQsIGUpKTsKIAkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4pOwotCQlnZW1fc3luYyhnZW1fZmQs IG9iai5oYW5kbGUpOwotCQlvYmouZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOworCQlnZW1f c3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKIAkJLyogMXN0IHBhc3MgaXMgY2FsaWJyYXRp b24sIHNlY29uZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLwogCQlmb3IgKGludCBwYXNzID0gMDsgcGFz cyA8IEFSUkFZX1NJWkUodGltZW91dCk7IHBhc3MrKykgewpAQCAtMTU0NSwyNCArMTYwOCwzMCBA QCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsCiAKIAkJCWlndF9uc2VjX2VsYXBzZWQoJnRlc3Rfc3RhcnQpOwogCQkJZG8gewotCQkJ CXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91cywgdF9idXN5OworCQkJCXVuc2lnbmVkIGludCB0 YXJnZXRfaWRsZV91czsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQgPSB7IH07CisJCQkJdW5z aWduZWQgbG9uZyBwcmVwX2RlbGF5X25zOwogCiAJCQkJLyogUmVzdGFydCB0aGUgc3BpbmJhdGNo LiAqLworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKIAkJCQlfX3JlYXJtX3NwaW5fYmF0 Y2goc3Bpbik7Ci0JCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsICZvYmosIGUpOworCQkJ CV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBlLCAwKTsKIAotCQkJCS8qCi0JCQkJ ICogTm90ZSB0aGF0IHRoZSBzdWJtaXNzaW9uIG1heSBiZSBkZWxheWVkIHRvIGEKLQkJCQkgKiB0 YXNrbGV0IChrc29mdGlycWQpIHdoaWNoIGNhbm5vdCBydW4gdW50aWwgd2UKLQkJCQkgKiBzbGVl cCBhcyB3ZSBob2cgdGhlIGNwdSAod2UgYXJlIFJUKS4KLQkJCQkgKi8KKwkJCQkgLyogV2FpdCBm b3IgYmF0Y2ggdG8gc3RhcnQgZXhlY3V0aW5nLiAqLworCQkJCV9fc3Bpbl93YWl0KGdlbV9mZCwg c3Bpbik7CisJCQkJcHJlcF9kZWxheV9ucyA9IGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKIAot CQkJCXRfYnVzeSA9IG1lYXN1cmVkX3VzbGVlcChidXN5X3VzKTsKKwkJCQkvKiBQV00gYnVzeSBz bGVlcC4gKi8KKwkJCQltZW1zZXQoJnN0YXJ0LCAwLCBzaXplb2Yoc3RhcnQpKTsKKwkJCQlpZ3Rf bnNlY19lbGFwc2VkKCZzdGFydCk7CisJCQkJbWVhc3VyZWRfdXNsZWVwKGJ1c3lfdXMpOwogCQkJ CWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5k bGUpOworCQkJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxlKTsKIAotCQkJCXRvdGFsX2J1 c3lfbnMgKz0gdF9idXN5OworCQkJCXRvdGFsX2J1c3lfbnMgKz0gaWd0X25zZWNfZWxhcHNlZCgm c3RhcnQpOworCQkJCXRvdGFsX2lkbGVfbnMgKz0gcHJlcF9kZWxheV9uczsKIAorCQkJCS8qIFJl LWNhbGlicmF0ZS4gKi8KIAkJCQl0YXJnZXRfaWRsZV91cyA9CiAJCQkJCSgxMDAgKiB0b3RhbF9i dXN5X25zIC8gdGFyZ2V0X2J1c3lfcGN0IC0gKHRvdGFsX2J1c3lfbnMgKyB0b3RhbF9pZGxlX25z KSkgLyAxMDAwOwogCQkJCXRvdGFsX2lkbGVfbnMgKz0gbWVhc3VyZWRfdXNsZWVwKHRhcmdldF9p ZGxlX3VzKTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==