From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x234.google.com (mail-wr0-x234.google.com [IPv6:2a00:1450:400c:c0c::234]) by gabe.freedesktop.org (Postfix) with ESMTPS id D9F276E471 for ; Fri, 16 Mar 2018 07:36:54 +0000 (UTC) Received: by mail-wr0-x234.google.com with SMTP id z8so957869wrh.7 for ; Fri, 16 Mar 2018 00:36:54 -0700 (PDT) From: Tvrtko Ursulin Date: Fri, 16 Mar 2018 07:36:43 +0000 Message-Id: <20180316073643.21816-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <152112970795.25315.3159070975692005147@mail.alporthouse.com> References: <152112970795.25315.3159070975692005147@mail.alporthouse.com> Subject: [igt-dev] [PATCH i-g-t v3] 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 UkVMT0MuIChDaHJpcyBXaWxzb24pCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgpTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxpYi9pZ3RfZHVtbXlsb2FkLmMgIHwgMTQ5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogbGliL2lndF9k dW1teWxvYWQuaCAgfCAgMTEgKysrKwogbGliL2lvY3RsX3dyYXBwZXJzLmMgfCAgIDIgKy0KIGxp Yi9pb2N0bF93cmFwcGVycy5oIHwgICAxICsKIHRlc3RzL3BlcmZfcG11LmMgICAgIHwgMTQ0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMg Y2hhbmdlZCwgMjMwIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCmluZGV4IDRiMjBmMjNk ZmUyNi4uODNiOTcyNzQ5OWZmIDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBi L2xpYi9pZ3RfZHVtbXlsb2FkLmMKQEAgLTc0LDE2ICs3NCwxOSBAQCBmaWxsX3JlbG9jKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCiAJcmVsb2MtPndyaXRlX2Rv bWFpbiA9IHdyaXRlX2RvbWFpbnM7CiB9CiAKLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0 Y2goaWd0X3NwaW5fdCAqc3BpbiwKLQkJCQlpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQg ZW5naW5lLAotCQkJCXVpbnQzMl90IGRlcCwgYm9vbCBvdXRfZmVuY2UpCisjZGVmaW5lIE9VVF9G RU5DRQkoMSA8PCAwKQorI2RlZmluZSBQT0xMX1JVTgkoMSA8PCAxKQorCitzdGF0aWMgaW50Citl bWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQgZmQsIHVpbnQzMl90IGN0 eCwgdW5zaWduZWQgZW5naW5lLAorCQkgICAgIHVpbnQzMl90IGRlcCwgdW5zaWduZWQgaW50IGZs YWdzKQogewogI2RlZmluZSBTQ1JBVENIIDAKICNkZWZpbmUgQkFUQ0ggMQogCWNvbnN0IGludCBn ZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwotCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgcmVsb2NzWzJdOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhl Y2J1ZjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVmOworCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CiAJdW5zaWduZWQgaW50IGVuZ2luZXNb MTZdOwogCXVuc2lnbmVkIGludCBuZW5naW5lOwogCWludCBmZW5jZV9mZCA9IC0xOwpAQCAtMTAx LDggKzEwNCwxMCBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3Qg KnNwaW4sCiAJfQogCWlndF9yZXF1aXJlKG5lbmdpbmUpOwogCi0JbWVtc2V0KCZleGVjYnVmLCAw LCBzaXplb2YoZXhlY2J1ZikpOwotCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwltZW1z ZXQoJnNwaW4tPmV4ZWNidWYsIDAsIHNpemVvZihzcGluLT5leGVjYnVmKSk7CisJZXhlY2J1ZiA9 ICZzcGluLT5leGVjYnVmOworCW1lbXNldChzcGluLT5vYmosIDAsIHNpemVvZihzcGluLT5vYmop KTsKKwlvYmogPSBzcGluLT5vYmo7CiAJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykp OwogCiAJb2JqW0JBVENIXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCQVRDSF9TSVpFKTsKQEAg LTExMywxNiArMTE4LDYyIEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3Nw aW5fdCAqc3BpbiwKIAkJCQkgICAgICAgCUJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwogCWdlbV9z ZXRfZG9tYWluKGZkLCBvYmpbQkFUQ0hdLmhhbmRsZSwKIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQs IEk5MTVfR0VNX0RPTUFJTl9HVFQpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50Kys7CisJZXhlY2J1 Zi0+YnVmZmVyX2NvdW50Kys7CiAKIAlpZiAoZGVwKSB7CisJCWlndF9hc3NlcnQoIShmbGFncyAm IFBPTExfUlVOKSk7CisKIAkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwogCQlvYmpb U0NSQVRDSF0uaGFuZGxlID0gZGVwOwogCQlmaWxsX3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5y ZWxvY2F0aW9uX2NvdW50KytdLAogCQkJICAgZGVwLCAxMDIwLAogCQkJICAgSTkxNV9HRU1fRE9N QUlOX1JFTkRFUiwKIAkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwotCQlleGVjYnVmLmJ1 ZmZlcl9jb3VudCsrOworCQlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwl9IGVsc2UgaWYgKGZs YWdzICYgUE9MTF9SVU4pIHsKKwkJdW5zaWduZWQgaW50IG9mZnNldDsKKworCQlpZ3RfYXNzZXJ0 KCFkZXApOworCisJCWlmIChnZW4gPT0gNCB8fCBnZW4gPT0gNSkKKwkJCWV4ZWNidWYtPmZsYWdz IHw9IEk5MTVfRVhFQ19TRUNVUkU7CisKKwkJc3Bpbi0+cG9sbF9oYW5kbGUgPSBnZW1fY3JlYXRl KGZkLCA0MDk2KTsKKworCQlpZiAoX19nZW1fc2V0X2NhY2hpbmcoZmQsIHNwaW4tPnBvbGxfaGFu ZGxlLAorCQkJCSAgICAgIEk5MTVfQ0FDSElOR19DQUNIRUQpID09IDApCisJCQlzcGluLT5ydW5u aW5nID0gX19nZW1fbW1hcF9fY3B1KGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCQkwLCA0 MDk2LAorCQkJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQllbHNlCisJCQlzcGluLT5y dW5uaW5nID0gX19nZW1fbW1hcF9fd2MoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCQkJICAg ICAgIDAsIDQwOTYsCisJCQkJCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJCWln dF9hc3NlcnQoc3Bpbi0+cnVubmluZyk7CisJCWlndF9hc3NlcnRfZXEoKnNwaW4tPnJ1bm5pbmcs IDApOworCisJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8 IDIyIDogMCk7CisKKwkJaWYgKGdlbiA+PSA4KSB7CisJCQlvZmZzZXQgPSBzaXplb2YodWludDMy X3QpOworCQkJKmJhdGNoKysgPSAwOworCQkJKmJhdGNoKysgPSAwOworCQl9IGVsc2UgaWYgKGdl biA+PSA0KSB7CisJCQlvZmZzZXQgPSAyICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJCSpiYXRjaCsr ID0gMDsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfSBlbHNlIHsKKwkJCW9mZnNldCA9IHNpemVvZih1 aW50MzJfdCk7CisJCQliYXRjaFstMV0tLTsKKwkJCSpiYXRjaCsrID0gMDsKKwkJfQorCisJCSpi YXRjaCsrID0gMTsKKworCQlvYmpbU0NSQVRDSF0uaGFuZGxlID0gc3Bpbi0+cG9sbF9oYW5kbGU7 CisJCWZpbGxfcmVsb2MoJnJlbG9jc1tvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQrK10sCisJ CQkgICBzcGluLT5wb2xsX2hhbmRsZSwgb2Zmc2V0LCAwLCAwKTsKKwkJZXhlY2J1Zi0+YnVmZmVy X2NvdW50Kys7CiAJfQogCiAJc3Bpbi0+YmF0Y2ggPSBiYXRjaDsKQEAgLTE2NywxOCArMjE4LDIz IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwKIAlv YmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQrKzsKIAlvYmpbQkFUQ0hdLnJlbG9jc19wdHIgPSB0 b191c2VyX3BvaW50ZXIocmVsb2NzKTsKIAotCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2Vy X3BvaW50ZXIob2JqICsgKDIgLSBleGVjYnVmLmJ1ZmZlcl9jb3VudCkpOwotCWV4ZWNidWYucnN2 ZDEgPSBjdHg7CisJZXhlY2J1Zi0+YnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqICsK KwkJCQkJICAgICAgICgyIC0gZXhlY2J1Zi0+YnVmZmVyX2NvdW50KSk7CisJZXhlY2J1Zi0+cnN2 ZDEgPSBjdHg7CiAKLQlpZiAob3V0X2ZlbmNlKQotCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhF Q19GRU5DRV9PVVQ7CisJaWYgKGZsYWdzICYgT1VUX0ZFTkNFKQorCQlleGVjYnVmLT5mbGFncyB8 PSBJOTE1X0VYRUNfRkVOQ0VfT1VUOwogCiAJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykg ewotCQlleGVjYnVmLmZsYWdzICY9IH5FTkdJTkVfTUFTSzsKLQkJZXhlY2J1Zi5mbGFncyB8PSBl bmdpbmVzW2ldOwotCQlnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOwotCQlpZiAob3V0X2Zl bmNlKSB7Ci0JCQlpbnQgX2ZkID0gZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKKwkJZXhlY2J1Zi0+Zmxh Z3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVjYnVmLT5mbGFncyB8PSBlbmdpbmVzW2ldOworCisJ CWlmIChmbGFncyAmIFBPTExfUlVOKQorCQkJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29y ZChmZCwgZXhlY2J1Zi0+ZmxhZ3MpKTsKKworCQlnZW1fZXhlY2J1Zl93cihmZCwgZXhlY2J1Zik7 CisJCWlmIChmbGFncyAmIE9VVF9GRU5DRSkgeworCQkJaW50IF9mZCA9IGV4ZWNidWYtPnJzdmQy ID4+IDMyOwogCiAJCQlpZ3RfYXNzZXJ0KF9mZCA+PSAwKTsKIAkJCWlmIChmZW5jZV9mZCA9PSAt MSkgewpAQCAtMTk0LDEyICsyNTAsMjAgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRj aChpZ3Rfc3Bpbl90ICpzcGluLAogCQl9CiAJfQogCisJLyogTWFrZSBpdCBlYXNpZXIgZm9yIGNh bGxlcnMgdG8gcmVzdWJtaXQuICovCisKKwlvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQgPSAw OworCW9ialtCQVRDSF0ucmVsb2NzX3B0ciA9IDA7CisKKwlvYmpbU0NSQVRDSF0uZmxhZ3MgPSBF WEVDX09CSkVDVF9QSU5ORUQ7CisJb2JqW0JBVENIXS5mbGFncyA9IEVYRUNfT0JKRUNUX1BJTk5F RDsKKwogCXJldHVybiBmZW5jZV9mZDsKIH0KIAogc3RhdGljIGlndF9zcGluX3QgKgogX19faWd0 X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVp bnQzMl90IGRlcCwKLQkJICAgICAgaW50IG91dF9mZW5jZSkKKwkJICAgICAgdW5zaWduZWQgaW50 IGZsYWdzKQogewogCWlndF9zcGluX3QgKnNwaW47CiAKQEAgLTIwNyw3ICsyNzEsNyBAQCBfX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwg dWludDMyX3QgZGVwLAogCWlndF9hc3NlcnQoc3Bpbik7CiAKIAlzcGluLT5vdXRfZmVuY2UgPSBl bWl0X3JlY3Vyc2l2ZV9iYXRjaChzcGluLCBmZCwgY3R4LCBlbmdpbmUsIGRlcCwKLQkJCQkJICAg ICAgIG91dF9mZW5jZSk7CisJCQkJCSAgICAgICBmbGFncyk7CiAKIAlwdGhyZWFkX211dGV4X2xv Y2soJmxpc3RfbG9jayk7CiAJaWd0X2xpc3RfYWRkKCZzcGluLT5saW5rLCAmc3Bpbl9saXN0KTsK QEAgLTIxOSw3ICsyODMsNyBAQCBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJf dCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3QgZGVwLAogaWd0X3NwaW5fdCAqCiBfX2ln dF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1 aW50MzJfdCBkZXApCiB7Ci0JcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBl bmdpbmUsIGRlcCwgZmFsc2UpOworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0 eCwgZW5naW5lLCBkZXAsIDApOwogfQogCiAvKioKQEAgLTI1Myw3ICszMTcsNyBAQCBpZ3Rfc3Bp bl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMy X3QgZGVwKQogaWd0X3NwaW5fdCAqCiBfX2lndF9zcGluX2JhdGNoX25ld19mZW5jZShpbnQgZmQs IHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lKQogewotCXJldHVybiBfX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoZmQsIGN0eCwgZW5naW5lLCAwLCB0cnVlKTsKKwlyZXR1cm4gX19faWd0X3NwaW5f YmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwgMCwgT1VUX0ZFTkNFKTsKIH0KIAogLyoqCkBAIC0y ODYsNiArMzUwLDQyIEBAIGlndF9zcGluX2JhdGNoX25ld19mZW5jZShpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgZW5naW5lKQogCXJldHVybiBzcGluOwogfQogCitpZ3Rfc3Bpbl90ICoK K19faWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVk IGVuZ2luZSkKK3sKKwlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2lu ZSwgMCwgUE9MTF9SVU4pOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX25ld19wb2xsOgor ICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGVuZ2luZTogUmluZyB0 byBleGVjdXRlIGJhdGNoIE9SJ2Qgd2l0aCBleGVjYnVmIGZsYWdzLiBJZiB2YWx1ZSBpcyBsZXNz CisgKiAgICAgICAgICB0aGFuIDAsIGV4ZWN1dGUgb24gYWxsIGF2YWlsYWJsZSByaW5ncy4KKyAq CisgKiBTdGFydCBhIHJlY3Vyc2l2ZSBiYXRjaCBvbiBhIHJpbmcuIEltbWVkaWF0ZWx5IHJldHVy bnMgYSAjaWd0X3NwaW5fdCB0aGF0CisgKiBjb250YWlucyB0aGUgYmF0Y2gncyBoYW5kbGUgdGhh dCBjYW4gYmUgd2FpdGVkIHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUKKyAqIG11c3QgYmUg cGFzc2VkIHRvIGlndF9zcGluX2JhdGNoX2ZyZWUoKSBmb3IgcG9zdC1wcm9jZXNzaW5nLgorICoK KyAqIGlndF9zcGluX3QtPnJ1bm5pbmcgd2lsbCBjb250YWludCBhIHBvaW50ZXIgd2hpY2ggdGFy Z2V0IHdpbGwgY2hhbmdlIGZyb20KKyAqIHplcm8gdG8gb25lIG9uY2UgdGhlIHNwaW5uZXIgYWN0 dWFsbHkgc3RhcnRzIGV4ZWN1dGluZyBvbiB0aGUgR1BVLgorICoKKyAqIFJldHVybnM6CisgKiBT dHJ1Y3R1cmUgd2l0aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUgZm9yIGlndF9zcGluX2JhdGNoX2Zy ZWUoKS4KKyAqLworaWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQs IHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lKQoreworCWlndF9zcGluX3QgKnNwaW47CisK KwlpZ3RfcmVxdWlyZV9nZW0oZmQpOworCWlndF9yZXF1aXJlKGdlbV9tbWFwX19oYXNfd2MoZmQp KTsKKworCXNwaW4gPSBfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGZkLCBjdHgsIGVuZ2luZSk7 CisJaWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgc3Bpbi0+aGFuZGxlKSk7CisKKwlyZXR1cm4g c3BpbjsKK30KKwogc3RhdGljIHZvaWQgbm90aWZ5KHVuaW9uIHNpZ3ZhbCBhcmcpCiB7CiAJaWd0 X3NwaW5fdCAqc3BpbiA9IGFyZy5zaXZhbF9wdHI7CkBAIC0zNjcsNiArNDY3LDExIEBAIHZvaWQg aWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCiAJaWd0X3NwaW5f YmF0Y2hfZW5kKHNwaW4pOwogCWdlbV9tdW5tYXAoc3Bpbi0+YmF0Y2gsIEJBVENIX1NJWkUpOwog CisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJZ2VtX211bm1hcChzcGluLT5ydW5uaW5nLCA0MDk2 KTsKKwkJZ2VtX2Nsb3NlKGZkLCBzcGluLT5wb2xsX2hhbmRsZSk7CisJfQorCiAJZ2VtX2Nsb3Nl KGZkLCBzcGluLT5oYW5kbGUpOwogCiAJaWYgKHNwaW4tPm91dF9mZW5jZSA+PSAwKQpkaWZmIC0t Z2l0IGEvbGliL2lndF9kdW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggNDEw M2U0YWI5ZTM2Li4zMTAzOTM1YTMwOWIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgK KysrIGIvbGliL2lndF9kdW1teWxvYWQuaApAQCAtMzYsNiArMzYsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgaWd0X3NwaW4gewogCXN0cnVjdCBpZ3RfbGlzdCBsaW5rOwogCXVpbnQzMl90ICpiYXRjaDsK IAlpbnQgb3V0X2ZlbmNlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsy XTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisJdWludDMyX3Qg cG9sbF9oYW5kbGU7CisJYm9vbCAqcnVubmluZzsKIH0gaWd0X3NwaW5fdDsKIAogaWd0X3NwaW5f dCAqX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLApAQCAtNTUsNiArNTksMTMgQEAgaWd0X3Nw aW5fdCAqaWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwKIAkJCQkgICAgIHVpbnQzMl90 IGN0eCwKIAkJCQkgICAgIHVuc2lnbmVkIGVuZ2luZSk7CiAKK2lndF9zcGluX3QgKl9faWd0X3Nw aW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLAorCQkJCSAgICAgICB1aW50MzJfdCBjdHgsCisJCQkJ ICAgICAgIHVuc2lnbmVkIGVuZ2luZSk7CitpZ3Rfc3Bpbl90ICppZ3Rfc3Bpbl9iYXRjaF9uZXdf cG9sbChpbnQgZmQsCisJCQkJICAgIHVpbnQzMl90IGN0eCwKKwkJCQkgICAgdW5zaWduZWQgZW5n aW5lKTsKKwogdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChpZ3Rfc3Bpbl90ICpzcGlu LCBpbnQ2NF90IG5zKTsKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4p Owogdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3Bpbik7CmRp ZmYgLS1naXQgYS9saWIvaW9jdGxfd3JhcHBlcnMuYyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCmlu ZGV4IDg3NDhjZmNmYzA0Zi4uNGUxYTA4YmYwNmI0IDEwMDY0NAotLS0gYS9saWIvaW9jdGxfd3Jh cHBlcnMuYworKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuYwpAQCAtMTk4LDcgKzE5OCw3IEBAIHZv aWQgZ2VtX3NldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHRpbGlu ZywgdWludDMyX3Qgc3RyaWRlKQogCWlndF9hc3NlcnQoX19nZW1fc2V0X3RpbGluZyhmZCwgaGFu ZGxlLCB0aWxpbmcsIHN0cmlkZSkgPT0gMCk7CiB9CiAKLXN0YXRpYyBpbnQgX19nZW1fc2V0X2Nh Y2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpCitpbnQgX19n ZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcp CiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9jYWNoaW5nIGFyZzsKIAlpbnQgZXJyOwpkaWZmIC0t Z2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaAppbmRleCAx M2ZiZTNjMTAzYzAuLmI5NjZmNzJjOTBhOCAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJz LmgKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKQEAgLTYxLDYgKzYxLDcgQEAgYm9vbCBnZW1f Z2V0X3RpbGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgKnRpbGluZywgdWlu dDMyX3QgKnN3aXp6bGUKIHZvaWQgZ2VtX3NldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQzMl90IHRpbGluZywgdWludDMyX3Qgc3RyaWRlKTsKIGludCBfX2dlbV9zZXRfdGls aW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IHN0 cmlkZSk7CiAKK2ludCBfX2dlbV9zZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwg dWludDMyX3QgY2FjaGluZyk7CiB2b2lkIGdlbV9zZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90 IGhhbmRsZSwgdWludDMyX3QgY2FjaGluZyk7CiB1aW50MzJfdCBnZW1fZ2V0X2NhY2hpbmcoaW50 IGZkLCB1aW50MzJfdCBoYW5kbGUpOwogdWludDMyX3QgZ2VtX2ZsaW5rKGludCBmZCwgdWludDMy X3QgaGFuZGxlKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0cy9wZXJmX3Bt dS5jCmluZGV4IDE5ZmNjOTVmZmM3Zi4uYjkxNjZkODgyNjNmIDEwMDY0NAotLS0gYS90ZXN0cy9w ZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11LmMKQEAgLTE3MCw2ICsxNzAsNDYgQEAgc3Rh dGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2RlZmluZSBGTEFH X0hBTkcgKDMyKQogCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlmIChnZW1fY2FuX3N0b3JlX2R3 b3JkKGZkLCBmbGFncykpCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGZkLCBj dHgsIGZsYWdzKTsKKwllbHNlCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4 LCBmbGFncywgMCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBm ZCwgaWd0X3NwaW5fdCAqc3BpbikKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQgPSB7IH07CisK KwlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChm ZCwgc3Bpbi0+ZXhlY2J1Zi5mbGFncykpIHsKKwkJd2hpbGUgKCFzcGluLT5ydW5uaW5nKQorCQkJ OworCX0gZWxzZSB7CisJCXVzbGVlcCg1MDBlMyk7IC8qIEJldHRlciB0aGFuIG5vdGhpbmchICov CisJfQorCisJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKK30KKworc3RhdGljIGln dF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9u ZyBmbGFncykKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZmxh Z3MpOworCisJX19zcGluX3dhaXQoZmQsIHNwaW4pOworCisJcmV0dXJuIHNwaW47Cit9CisKK3N0 YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25l ZCBsb25nIGZsYWdzKQoreworCWlndF9yZXF1aXJlX2dlbShmZCk7CisKKwlyZXR1cm4gX19zcGlu X3N5bmMoZmQsIGN0eCwgZmxhZ3MpOworfQorCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQs IGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZiAoIXNwaW4pCkBA IC0xOTUsNyArMjM1LDcgQEAgc2luZ2xlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCWZkID0gb3Blbl9wbXUo STkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CiAKIAlpZiAoZmxh Z3MgJiBURVNUX0JVU1kpCi0JCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBl MnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJp bmcoZ2VtX2ZkLCBlKSk7CiAJZWxzZQogCQlzcGluID0gTlVMTDsKIApAQCAtMjUxLDEzICsyOTEs NyBAQCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKIAkgKi8KIAlzbGVlcCgyKTsKIAotCXNwaW4gPSBfX2lndF9zcGluX2JhdGNo X25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKLQotCS8qCi0JICogU2xlZXAg Zm9yIGEgYml0IGFmdGVyIG1ha2luZyB0aGUgZW5naW5lIGJ1c3kgdG8gbWFrZSBzdXJlIHRoZSBQ TVUKLQkgKiBnZXRzIGVuYWJsZWQgd2hlbiB0aGUgYmF0Y2ggaXMgYWxyZWFkeSBydW5uaW5nLgot CSAqLwotCXVzbGVlcCg1MDBlMyk7CisJc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSkpOwogCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShl LT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIApAQCAtMzAwLDcgKzMzNCw3IEBAIGJ1c3lfZG91Ymxl X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSkKIAkgKiByZS1zdWJtaXNzaW9uIGluIGV4ZWNsaXN0cyBtb2RlLiBNYWtlIHN1cmUgYnVzeW5l c3MgaXMgY29ycmVjdGx5CiAJICogcmVwb3J0ZWQgd2l0aCB0aGUgZW5naW5lIGJ1c3ksIGFuZCBh ZnRlciB0aGUgZW5naW5lIHdlbnQgaWRsZS4KIAkgKi8KLQlzcGluWzBdID0gX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJc3BpblswXSA9IF9f c3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCXVzbGVlcCg1MDBlMyk7 CiAJc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgY3R4LCBlMnJpbmcoZ2Vt X2ZkLCBlKSwgMCk7CiAKQEAgLTM4Niw3ICs0MjAsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpZ3RfYXNz ZXJ0X2VxKGksIG51bV9lbmdpbmVzKTsKIAotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQs IDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2lu ZXMsIHR2YWxbMF0pOwogCXNsZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25z IC8gMTAwMCk7CiAJaWYgKGZsYWdzICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNDEyLDE1ICs0 NDYsMTMgQEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLAogfQogCiBzdGF0aWMgdm9pZAotX19zdWJtaXRfc3Bpbl9iYXRj aChpbnQgZ2VtX2ZkLAotCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9i aiwKK19fc3VibWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKIAkJ ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewotCQkuYnVmZmVyX2NvdW50ID0gMSwKLQkJ LmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaiksCi0JCS5mbGFncyA9IGUycmluZyhn ZW1fZmQsIGUpLAotCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNw aW4tPmV4ZWNidWY7CisKKwllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0sp OworCWViLmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX05PX1JFTE9DOwog CiAJZ2VtX2V4ZWNidWYoZ2VtX2ZkLCAmZWIpOwogfQpAQCAtNDI5LDcgKzQ2MSw2IEBAIHN0YXRp YyB2b2lkCiBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5n aW5lcywgdW5zaWduZWQgaW50IGZsYWdzKQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIG9iaiA9IHt9OwogCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZV87CiAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9l bmdpbmVzXTsKQEAgLTQ0MywxNSArNDc0LDEyIEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQlpZiAoIWdl bV9oYXNfZW5naW5lKGdlbV9mZCwgZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpKQogCQkJY29udGlu dWU7CiAKLQkJaWYgKGUgPT0gZV8pIHsKKwkJaWYgKGUgPT0gZV8pCiAJCQlpZGxlX2lkeCA9IGk7 Ci0JCX0gZWxzZSBpZiAoc3BpbikgewotCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsICZv YmosIGVfKTsKLQkJfSBlbHNlIHsKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2Zk LCAwLAotCQkJCQkJICBlMnJpbmcoZ2VtX2ZkLCBlXyksIDApOwotCQkJb2JqLmhhbmRsZSA9IHNw aW4tPmhhbmRsZTsKLQkJfQorCQllbHNlIGlmIChzcGluKQorCQkJX19zdWJtaXRfc3Bpbl9iYXRj aChnZW1fZmQsIHNwaW4sIGVfKTsKKwkJZWxzZQorCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9m ZCwgMCwgZTJyaW5nKGdlbV9mZCwgZV8pKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lO RV9CVVNZKGVfLT5jbGFzcywgZV8tPmluc3RhbmNlKTsKIAl9CkBAIC00NjEsNiArNDg5LDkgQEAg bW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUsCiAJZm9yIChpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZk W2ldID0gb3Blbl9ncm91cCh2YWxbaV0sIGZkWzBdKTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFs bG93IGVuZ2luZXMgdG8gc3RhcnQuICovCisJdXNsZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3Bp bikgKiBudW1fZW5naW5lcyAvIDFlMyk7CisKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2Vu Z2luZXMsIHR2YWxbMF0pOwogCXNsZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9u X25zIC8gMTAwMCk7CiAJaWYgKGZsYWdzICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNDg5LDcg KzUyMCw2IEBAIHN0YXRpYyB2b2lkCiBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29u c3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0ge307CiAJY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2Vu Z2luZXNdOwogCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107CkBAIC01MDMsMTMgKzUzMywxMCBA QCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLAogCQlpZiAoIWdlbV9oYXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3Rh bmNlKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2Jh dGNoKGdlbV9mZCwgJm9iaiwgZSk7Ci0JCX0gZWxzZSB7Ci0JCQlzcGluID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgMCwKLQkJCQkJCSAgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQkJb2Jq LmhhbmRsZSA9IHNwaW4tPmhhbmRsZTsKLQkJfQorCQlpZiAoc3BpbikKKwkJCV9fc3VibWl0X3Nw aW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBlKTsKKwkJZWxzZQorCQkJc3BpbiA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVf RU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKIAl9CkBAIC01MTksNiArNTQ2LDkg QEAgYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1f ZW5naW5lcywKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJZmRbaV0gPSBv cGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwgZGVsYXkgdG8gYWxsb3cgZW5n aW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQoZ2VtX2ZkLCBzcGluKSAqIG51 bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5naW5lcywg dHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAx MDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC01NTAsNyArNTgwLDcg QEAgbm9fc2VtYShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlvcGVuX2dyb3VwKEk5MTVfUE1VX0VOR0lORV9X QUlUKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSksIGZkKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVT WSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQs IGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUp KTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC04ODQsNyArOTE0LDcgQEAgbXVsdGlfY2xp ZW50KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkK IAkgKi8KIAlmZFsxXSA9IG9wZW5fcG11KGNvbmZpZyk7CiAKLQlzcGluID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOworCXNwaW4gPSBzcGluX3N5 bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAl2YWxbMF0gPSB2YWxbMV0gPSBf X3BtdV9yZWFkX3NpbmdsZShmZFswXSwgJnRzWzBdKTsKIAlzbGVwdFsxXSA9IG1lYXN1cmVkX3Vz bGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTI0OCw3ICsxMjc4LDcgQEAgdGVz dF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0X3UzMihz eXNmcywgImd0X2Jvb3N0X2ZyZXFfbWh6IikgPT0gbWluX2ZyZXEpOwogCiAJZ2VtX3F1aWVzY2Vu dF9ncHUoZ2VtX2ZkKTsgLyogSWRsZSB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgdGFrZXMgZWZmZWN0 ICovCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5E RVIsIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsK IAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJlZF91c2xl ZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTEyNzQsNyArMTMwNCw3IEBAIHRlc3Rf ZnJlcXVlbmN5KGludCBnZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lz ZnMsICJndF9taW5fZnJlcV9taHoiKSA9PSBtYXhfZnJlcSk7CiAKIAlnZW1fcXVpZXNjZW50X2dw dShnZW1fZmQpOwotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBJOTE1X0VY RUNfUkVOREVSLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JF TkRFUik7CiAKIAlzbGVwdCA9IHBtdV9yZWFkX211bHRpKGZkLCAyLCBzdGFydCk7CiAJbWVhc3Vy ZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xNDU1LDYgKzE0ODUsMTAg QEAgc3RhdGljIHZvaWQgX19yZWFybV9zcGluX2JhdGNoKGlndF9zcGluX3QgKnNwaW4pCiB7CiAJ Y29uc3QgdWludDMyX3QgbWlfYXJiX2NoayA9IDB4NSA8PCAyMzsKIAorCWlmIChzcGluLT5ydW5u aW5nKSB7CisJCWlndF9hc3NlcnQoKnNwaW4tPnJ1bm5pbmcpOworCQkqc3Bpbi0+cnVubmluZyA9 IDA7CisJfQogICAgICAgICpzcGluLT5iYXRjaCA9IG1pX2FyYl9jaGs7CiAgICAgICAgX19zeW5j X3N5bmNocm9uaXplKCk7CiB9CkBAIC0xNTE3LDcgKzE1NTEsNiBAQCBhY2N1cmFjeShpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWNvbnN0IHVu c2lnbmVkIGxvbmcgdGltZW91dFtdID0gewogCQkJcHdtX2NhbGlicmF0aW9uX3VzICogMTAwMCwg dGVzdF91cyAqIDEwMDAKIAkJfTsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg b2JqID0ge307CiAJCXVpbnQ2NF90IHRvdGFsX2J1c3lfbnMgPSAwLCB0b3RhbF9pZGxlX25zID0g MDsKIAkJaWd0X3NwaW5fdCAqc3BpbjsKIAkJaW50IHJldDsKQEAgLTE1MzAsMTIgKzE1NjMsOSBA QCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsCiAJCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHNldCBzY2hlZHVsaW5nIHBvbGljeSFcbiIp OwogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGlu ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwot CQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9m ZCwgJm9iaiwgZSk7IC8qIHJlY29yZCBpdHMgbG9jYXRpb24gKi8KKwkJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNw aW4pOwotCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOwotCQlvYmouZmxhZ3MgfD0gRVhF Q19PQkpFQ1RfUElOTkVEOworCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKIAkJ LyogMXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLwog CQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZX1NJWkUodGltZW91dCk7IHBhc3MrKykg ewpAQCAtMTU0NSwyNCArMTU3NSwzMCBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAkJCWlndF9uc2VjX2VsYXBzZWQoJnRl c3Rfc3RhcnQpOwogCQkJZG8gewotCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91cywgdF9i dXN5OworCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91czsKKwkJCQlzdHJ1Y3QgdGltZXNw ZWMgc3RhcnQgPSB7IH07CisJCQkJdW5zaWduZWQgbG9uZyBwcmVwX2RlbGF5X25zOwogCiAJCQkJ LyogUmVzdGFydCB0aGUgc3BpbmJhdGNoLiAqLworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0 KTsKIAkJCQlfX3JlYXJtX3NwaW5fYmF0Y2goc3Bpbik7Ci0JCQkJX19zdWJtaXRfc3Bpbl9iYXRj aChnZW1fZmQsICZvYmosIGUpOworCQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGlu LCBlKTsKIAotCQkJCS8qCi0JCQkJICogTm90ZSB0aGF0IHRoZSBzdWJtaXNzaW9uIG1heSBiZSBk ZWxheWVkIHRvIGEKLQkJCQkgKiB0YXNrbGV0IChrc29mdGlycWQpIHdoaWNoIGNhbm5vdCBydW4g dW50aWwgd2UKLQkJCQkgKiBzbGVlcCBhcyB3ZSBob2cgdGhlIGNwdSAod2UgYXJlIFJUKS4KLQkJ CQkgKi8KKwkJCQkgLyogV2FpdCBmb3IgYmF0Y2ggdG8gc3RhcnQgZXhlY3V0aW5nLiAqLworCQkJ CV9fc3Bpbl93YWl0KGdlbV9mZCwgc3Bpbik7CisJCQkJcHJlcF9kZWxheV9ucyA9IGlndF9uc2Vj X2VsYXBzZWQoJnN0YXJ0KTsKIAotCQkJCXRfYnVzeSA9IG1lYXN1cmVkX3VzbGVlcChidXN5X3Vz KTsKKwkJCQkvKiBQV00gYnVzeSBzbGVlcC4gKi8KKwkJCQltZW1zZXQoJnN0YXJ0LCAwLCBzaXpl b2Yoc3RhcnQpKTsKKwkJCQlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisJCQkJbWVhc3VyZWRf dXNsZWVwKGJ1c3lfdXMpOwogCQkJCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1f c3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOworCQkJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFu ZGxlKTsKIAotCQkJCXRvdGFsX2J1c3lfbnMgKz0gdF9idXN5OworCQkJCXRvdGFsX2J1c3lfbnMg Kz0gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCQkJCXRvdGFsX2lkbGVfbnMgKz0gcHJlcF9k ZWxheV9uczsKIAorCQkJCS8qIFJlLWNhbGlicmF0ZS4gKi8KIAkJCQl0YXJnZXRfaWRsZV91cyA9 CiAJCQkJCSgxMDAgKiB0b3RhbF9idXN5X25zIC8gdGFyZ2V0X2J1c3lfcGN0IC0gKHRvdGFsX2J1 c3lfbnMgKyB0b3RhbF9pZGxlX25zKSkgLyAxMDAwOwogCQkJCXRvdGFsX2lkbGVfbnMgKz0gbWVh c3VyZWRfdXNsZWVwKHRhcmdldF9pZGxlX3VzKTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0 LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==