From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v5] tests/perf_pmu: Improve accuracy by waiting on spinner to start Date: Fri, 16 Mar 2018 12:18:13 +0000 Message-ID: <20180316121813.24864-1-tvrtko.ursulin@linux.intel.com> References: <20180316101710.23688-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22e.google.com (mail-wm0-x22e.google.com [IPv6:2a00:1450:400c:c09::22e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F69E6EB30 for ; Fri, 16 Mar 2018 12:18:24 +0000 (UTC) Received: by mail-wm0-x22e.google.com with SMTP id q83so2660819wme.5 for ; Fri, 16 Mar 2018 05:18:24 -0700 (PDT) In-Reply-To: <20180316101710.23688-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk1vcmUgdGhh biBvbmUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIHNwaW5uZXIgaXMgcnVubmluZyBwcmV0dHkgbXVj aAppbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIGNyZWF0ZSBvciBzdWJtaXR0ZWQgaXQuCgpJbiBh Y3R1YWxpdHkgdGhlcmUgaXMgYSB2YXJpYWJsZSBkZWxheSwgZXNwZWNpYWxseSBvbiBleGVjbGlz dHMgcGxhdGZvcm1zLApiZXR3ZWVuIHN1Ym1pc3Npb24gYW5kIHNwaW4gYmF0Y2ggc3RhcnRpbmcg dG8gcnVuIG9uIHRoZSBoYXJkd2FyZS4KClRvIGVuYWJsZSB0ZXN0cyB3aGljaCBjYXJlIGFib3V0 IHRoaXMgbGV2ZWwgb2YgdGltaW5nIHRvIGFjY291bnQgZm9yIHRoaXMsCndlIGFkZCBhIG5ldyBz cGluIGJhdGNoIGNvbnN0cnVjdG9yIHdoaWNoIHByb3ZpZGVzIGFuIG91dHB1dCBmaWVsZCB3aGlj aApjYW4gYmUgcG9sbGVkIHRvIGRldGVybWluZSB3aGVuIHRoZSBiYXRjaCBhY3R1YWxseSBzdGFy dGVkIHJ1bm5pbmcuCgpUaGlzIGlzIGltcGxlbWVudGVkIHZpYSBNSV9TVE9SRURXX0lNTSBmcm9t IHRoZSBzcGluIGJhdGNoLCB3cml0aW5nIGludG8KbWVtb3J5IG1hcHBlZCBwYWdlIHNoYXJlZCB3 aXRoIHVzZXJzcGFjZS4KClVzaW5nIHRoaXMgZmFjaWxpdHkgZnJvbSBwZXJmX3BtdSwgd2hlcmUg YXBwbGljYWJsZSwgc2hvdWxkIGltcHJvdmUgdmVyeQpvY2Nhc2lvbmFsIHRlc3QgZmFpbHMgYWNy b3NzIHRoZSBzZXQgYW5kIHBsYXRmb3Jtcy4KCnYyOgogQ2hyaXMgV2lsc29uOgogKiBVc2UgY2Fj aGluZyBtYXBwaW5nIGlmIGF2YWlsYWJsZS4KICogSGFuZGxlIG9sZCBnZW5zIGJldHRlci4KICog VXNlIGdlbV9jYW5fc3RvcmVfZHdvcmQuCiAqIENhY2hlIGV4ZWMgb2JqIGFycmF5IGluIHNwaW5f YmF0Y2hfdCBmb3IgZWFzaWVyIHJlc3VibWl0LgoKdjM6CiAqIEZvcmdvdCBJOTE1X0VYRUNfTk9f UkVMT0MuIChDaHJpcyBXaWxzb24pCgp2NDoKICogTWFzayBvdXQgYWxsIG5vbi1lbmdpbmUgZmxh Z3MgaW4gZ2VtX2Nhbl9zdG9yZV9kd29yZC4KICogQWRkZWQgc29tZSBkZWJ1ZyBsb2dnaW5nLgoK djU6CiAqIEZpeCByZWxvY3MgYW5kIGJhdGNoIG11bm1hcC4gKENocmlzKQogKiBBZGRlZCBhc3Nl cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaWd0X2R1bW15 bG9hZC5jICB8IDE1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LQogbGliL2lndF9kdW1teWxvYWQuaCAgfCAgMTEgKysrKwogbGliL2lndF9ndC5jICAgICAgICAg fCAgIDIgKy0KIGxpYi9pb2N0bF93cmFwcGVycy5jIHwgICAyICstCiBsaWIvaW9jdGxfd3JhcHBl cnMuaCB8ICAgMSArCiB0ZXN0cy9wZXJmX3BtdS5jICAgICB8IDE3NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMjYz IGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVt bXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCmluZGV4IDRiMjBmMjNkZmUyNi4uMjQ2Mjc3 MTI5MWE2IDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBiL2xpYi9pZ3RfZHVt bXlsb2FkLmMKQEAgLTc0LDE2ICs3NCwxOSBAQCBmaWxsX3JlbG9jKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCiAJcmVsb2MtPndyaXRlX2RvbWFpbiA9IHdyaXRl X2RvbWFpbnM7CiB9CiAKLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5f dCAqc3BpbiwKLQkJCQlpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLAotCQkJ CXVpbnQzMl90IGRlcCwgYm9vbCBvdXRfZmVuY2UpCisjZGVmaW5lIE9VVF9GRU5DRQkoMSA8PCAw KQorI2RlZmluZSBQT0xMX1JVTgkoMSA8PCAxKQorCitzdGF0aWMgaW50CitlbWl0X3JlY3Vyc2l2 ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQg ZW5naW5lLAorCQkgICAgIHVpbnQzMl90IGRlcCwgdW5zaWduZWQgaW50IGZsYWdzKQogewogI2Rl ZmluZSBTQ1JBVENIIDAKICNkZWZpbmUgQkFUQ0ggMQogCWNvbnN0IGludCBnZW4gPSBpbnRlbF9n ZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIG9ialsyXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVs b2NzWzJdOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyICpvYmo7CiAJdW5zaWduZWQgaW50IGVuZ2luZXNbMTZdOwogCXVuc2ln bmVkIGludCBuZW5naW5lOwogCWludCBmZW5jZV9mZCA9IC0xOwpAQCAtMTAxLDggKzEwNCwxMCBA QCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJfQog CWlndF9yZXF1aXJlKG5lbmdpbmUpOwogCi0JbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhl Y2J1ZikpOwotCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwltZW1zZXQoJnNwaW4tPmV4 ZWNidWYsIDAsIHNpemVvZihzcGluLT5leGVjYnVmKSk7CisJZXhlY2J1ZiA9ICZzcGluLT5leGVj YnVmOworCW1lbXNldChzcGluLT5vYmosIDAsIHNpemVvZihzcGluLT5vYmopKTsKKwlvYmogPSBz cGluLT5vYmo7CiAJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykpOwogCiAJb2JqW0JB VENIXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCQVRDSF9TSVpFKTsKQEAgLTExMywxNiArMTE4 LDYyIEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwK IAkJCQkgICAgICAgCUJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwogCWdlbV9zZXRfZG9tYWluKGZk LCBvYmpbQkFUQ0hdLmhhbmRsZSwKIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RP TUFJTl9HVFQpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50Kys7CisJZXhlY2J1Zi0+YnVmZmVyX2Nv dW50Kys7CiAKIAlpZiAoZGVwKSB7CisJCWlndF9hc3NlcnQoIShmbGFncyAmIFBPTExfUlVOKSk7 CisKIAkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwogCQlvYmpbU0NSQVRDSF0uaGFu ZGxlID0gZGVwOwogCQlmaWxsX3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5yZWxvY2F0aW9uX2Nv dW50KytdLAogCQkJICAgZGVwLCAxMDIwLAogCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwK IAkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwotCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCsr OworCQlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwl9IGVsc2UgaWYgKGZsYWdzICYgUE9MTF9S VU4pIHsKKwkJdW5zaWduZWQgaW50IG9mZnNldDsKKworCQlpZ3RfYXNzZXJ0KCFkZXApOworCisJ CWlmIChnZW4gPT0gNCB8fCBnZW4gPT0gNSkKKwkJCWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVfRVhF Q19TRUNVUkU7CisKKwkJc3Bpbi0+cG9sbF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KworCQlpZiAoX19nZW1fc2V0X2NhY2hpbmcoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCSAg ICAgIEk5MTVfQ0FDSElOR19DQUNIRUQpID09IDApCisJCQlzcGluLT5ydW5uaW5nID0gX19nZW1f bW1hcF9fY3B1KGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCQkwLCA0MDk2LAorCQkJCQkJ CVBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQllbHNlCisJCQlzcGluLT5ydW5uaW5nID0gX19n ZW1fbW1hcF9fd2MoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCQkJICAgICAgIDAsIDQwOTYs CisJCQkJCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJCWlndF9hc3NlcnQoc3Bp bi0+cnVubmluZyk7CisJCWlndF9hc3NlcnRfZXEoKnNwaW4tPnJ1bm5pbmcsIDApOworCisJCSpi YXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CisK KwkJaWYgKGdlbiA+PSA4KSB7CisJCQlvZmZzZXQgPSAxOworCQkJKmJhdGNoKysgPSAwOworCQkJ KmJhdGNoKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7CisJCQlvZmZzZXQgPSAyOwor CQkJKmJhdGNoKysgPSAwOworCQkJKmJhdGNoKysgPSAwOworCQl9IGVsc2UgeworCQkJb2Zmc2V0 ID0gMTsKKwkJCWJhdGNoWy0xXS0tOworCQkJKmJhdGNoKysgPSAwOworCQl9CisKKwkJKmJhdGNo KysgPSAxOworCisJCW9ialtTQ1JBVENIXS5oYW5kbGUgPSBzcGluLT5wb2xsX2hhbmRsZTsKKwkJ ZmlsbF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrXSwKKwkJCSAg IHNwaW4tPnBvbGxfaGFuZGxlLCBvZmZzZXQsIDAsIDApOworCQlleGVjYnVmLT5idWZmZXJfY291 bnQrKzsKIAl9CiAKIAlzcGluLT5iYXRjaCA9IGJhdGNoOwpAQCAtMTY3LDE4ICsyMTgsMjMgQEAg c3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAogCW9ialtC QVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrOwogCW9ialtCQVRDSF0ucmVsb2NzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcihyZWxvY3MpOwogCi0JZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9p bnRlcihvYmogKyAoMiAtIGV4ZWNidWYuYnVmZmVyX2NvdW50KSk7Ci0JZXhlY2J1Zi5yc3ZkMSA9 IGN0eDsKKwlleGVjYnVmLT5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmogKworCQkJ CQkgICAgICAgKDIgLSBleGVjYnVmLT5idWZmZXJfY291bnQpKTsKKwlleGVjYnVmLT5yc3ZkMSA9 IGN0eDsKIAotCWlmIChvdXRfZmVuY2UpCi0JCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX0ZF TkNFX09VVDsKKwlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpCisJCWV4ZWNidWYtPmZsYWdzIHw9IEk5 MTVfRVhFQ19GRU5DRV9PVVQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7Ci0J CWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwotCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2lu ZXNbaV07Ci0JCWdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1Zik7Ci0JCWlmIChvdXRfZmVuY2Up IHsKLQkJCWludCBfZmQgPSBleGVjYnVmLnJzdmQyID4+IDMyOworCQlleGVjYnVmLT5mbGFncyAm PSB+RU5HSU5FX01BU0s7CisJCWV4ZWNidWYtPmZsYWdzIHw9IGVuZ2luZXNbaV07CisKKwkJaWYg KGZsYWdzICYgUE9MTF9SVU4pCisJCQlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGZk LCBleGVjYnVmLT5mbGFncykpOworCisJCWdlbV9leGVjYnVmX3dyKGZkLCBleGVjYnVmKTsKKwkJ aWYgKGZsYWdzICYgT1VUX0ZFTkNFKSB7CisJCQlpbnQgX2ZkID0gZXhlY2J1Zi0+cnN2ZDIgPj4g MzI7CiAKIAkJCWlndF9hc3NlcnQoX2ZkID49IDApOwogCQkJaWYgKGZlbmNlX2ZkID09IC0xKSB7 CkBAIC0xOTQsMTIgKzI1MCwyMCBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGln dF9zcGluX3QgKnNwaW4sCiAJCX0KIAl9CiAKKwkvKiBNYWtlIGl0IGVhc2llciBmb3IgY2FsbGVy cyB0byByZXN1Ym1pdC4gKi8KKworCW9ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCA9IDA7CisJ b2JqW0JBVENIXS5yZWxvY3NfcHRyID0gMDsKKworCW9ialtTQ1JBVENIXS5mbGFncyA9IEVYRUNf T0JKRUNUX1BJTk5FRDsKKwlvYmpbQkFUQ0hdLmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOwor CiAJcmV0dXJuIGZlbmNlX2ZkOwogfQogCiBzdGF0aWMgaWd0X3NwaW5fdCAqCiBfX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMy X3QgZGVwLAotCQkgICAgICBpbnQgb3V0X2ZlbmNlKQorCQkgICAgICB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIApAQCAtMjA3LDcgKzI3MSw3IEBAIF9fX2lndF9z cGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50 MzJfdCBkZXAsCiAJaWd0X2Fzc2VydChzcGluKTsKIAogCXNwaW4tPm91dF9mZW5jZSA9IGVtaXRf cmVjdXJzaXZlX2JhdGNoKHNwaW4sIGZkLCBjdHgsIGVuZ2luZSwgZGVwLAotCQkJCQkgICAgICAg b3V0X2ZlbmNlKTsKKwkJCQkJICAgICAgIGZsYWdzKTsKIAogCXB0aHJlYWRfbXV0ZXhfbG9jaygm bGlzdF9sb2NrKTsKIAlpZ3RfbGlzdF9hZGQoJnNwaW4tPmxpbmssICZzcGluX2xpc3QpOwpAQCAt MjE5LDcgKzI4Myw3IEBAIF9fX2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0 eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBkZXAsCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3Nw aW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQz Ml90IGRlcCkKIHsKLQlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2lu ZSwgZGVwLCBmYWxzZSk7CisJcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBl bmdpbmUsIGRlcCwgMCk7CiB9CiAKIC8qKgpAQCAtMjUzLDcgKzMxNyw3IEBAIGlndF9zcGluX2Jh dGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBk ZXApCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCiB7Ci0JcmV0dXJuIF9fX2lndF9zcGluX2JhdGNo X25ldyhmZCwgY3R4LCBlbmdpbmUsIDAsIHRydWUpOworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZmQsIGN0eCwgZW5naW5lLCAwLCBPVVRfRkVOQ0UpOwogfQogCiAvKioKQEAgLTI4Niw2 ICszNTAsNDIgQEAgaWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWludDMyX3QgY3R4 LCB1bnNpZ25lZCBlbmdpbmUpCiAJcmV0dXJuIHNwaW47CiB9CiAKK2lndF9zcGluX3QgKgorX19p Z3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5n aW5lKQoreworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZW5naW5lLCAw LCBQT0xMX1JVTik7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGw6CisgKiBA ZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAZW5naW5lOiBSaW5nIHRvIGV4 ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKKyAq ICAgICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgorICoKKyAq IFN0YXJ0IGEgcmVjdXJzaXZlIGJhdGNoIG9uIGEgcmluZy4gSW1tZWRpYXRlbHkgcmV0dXJucyBh ICNpZ3Rfc3Bpbl90IHRoYXQKKyAqIGNvbnRhaW5zIHRoZSBiYXRjaCdzIGhhbmRsZSB0aGF0IGNh biBiZSB3YWl0ZWQgdXBvbi4gVGhlIHJldHVybmVkIHN0cnVjdHVyZQorICogbXVzdCBiZSBwYXNz ZWQgdG8gaWd0X3NwaW5fYmF0Y2hfZnJlZSgpIGZvciBwb3N0LXByb2Nlc3NpbmcuCisgKgorICog aWd0X3NwaW5fdC0+cnVubmluZyB3aWxsIGNvbnRhaW50IGEgcG9pbnRlciB3aGljaCB0YXJnZXQg d2lsbCBjaGFuZ2UgZnJvbQorICogemVybyB0byBvbmUgb25jZSB0aGUgc3Bpbm5lciBhY3R1YWxs eSBzdGFydHMgZXhlY3V0aW5nIG9uIHRoZSBHUFUuCisgKgorICogUmV0dXJuczoKKyAqIFN0cnVj dHVyZSB3aXRoIGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3IgaWd0X3NwaW5fYmF0Y2hfZnJlZSgp LgorICovCitpZ3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCit7CisJaWd0X3NwaW5fdCAqc3BpbjsKKworCWln dF9yZXF1aXJlX2dlbShmZCk7CisJaWd0X3JlcXVpcmUoZ2VtX21tYXBfX2hhc193YyhmZCkpOwor CisJc3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoZmQsIGN0eCwgZW5naW5lKTsKKwlp Z3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpKTsKKworCXJldHVybiBzcGlu OworfQorCiBzdGF0aWMgdm9pZCBub3RpZnkodW5pb24gc2lndmFsIGFyZykKIHsKIAlpZ3Rfc3Bp bl90ICpzcGluID0gYXJnLnNpdmFsX3B0cjsKQEAgLTM2NSw3ICs0NjUsMTMgQEAgdm9pZCBpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKIAkJdGltZXJfZGVsZXRl KHNwaW4tPnRpbWVyKTsKIAogCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQlnZW1fbXVubWFw KHNwaW4tPmJhdGNoLCBCQVRDSF9TSVpFKTsKKwlnZW1fbXVubWFwKCh2b2lkICopKCh1bnNpZ25l ZCBsb25nKXNwaW4tPmJhdGNoICYgKH40MDk1VUwpKSwKKwkJICAgQkFUQ0hfU0laRSk7CisKKwlp ZiAoc3Bpbi0+cnVubmluZykgeworCQlnZW1fbXVubWFwKHNwaW4tPnJ1bm5pbmcsIDQwOTYpOwor CQlnZW1fY2xvc2UoZmQsIHNwaW4tPnBvbGxfaGFuZGxlKTsKKwl9CiAKIAlnZW1fY2xvc2UoZmQs IHNwaW4tPmhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIv aWd0X2R1bW15bG9hZC5oCmluZGV4IDQxMDNlNGFiOWUzNi4uMzEwMzkzNWEzMDliIDEwMDY0NAot LS0gYS9saWIvaWd0X2R1bW15bG9hZC5oCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKQEAgLTM2 LDYgKzM2LDEwIEBAIHR5cGVkZWYgc3RydWN0IGlndF9zcGluIHsKIAlzdHJ1Y3QgaWd0X2xpc3Qg bGluazsKIAl1aW50MzJfdCAqYmF0Y2g7CiAJaW50IG91dF9mZW5jZTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmOworCXVpbnQzMl90IHBvbGxfaGFuZGxlOworCWJvb2wgKnJ1bm5pbmc7CiB9 IGlndF9zcGluX3Q7CiAKIGlndF9zcGluX3QgKl9faWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwK QEAgLTU1LDYgKzU5LDEzIEBAIGlndF9zcGluX3QgKmlndF9zcGluX2JhdGNoX25ld19mZW5jZShp bnQgZmQsCiAJCQkJICAgICB1aW50MzJfdCBjdHgsCiAJCQkJICAgICB1bnNpZ25lZCBlbmdpbmUp OwogCitpZ3Rfc3Bpbl90ICpfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwKKwkJCQkg ICAgICAgdWludDMyX3QgY3R4LAorCQkJCSAgICAgICB1bnNpZ25lZCBlbmdpbmUpOworaWd0X3Nw aW5fdCAqaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLAorCQkJCSAgICB1aW50MzJfdCBj dHgsCisJCQkJICAgIHVuc2lnbmVkIGVuZ2luZSk7CisKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfc2V0 X3RpbWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucyk7CiB2b2lkIGlndF9zcGluX2Jh dGNoX2VuZChpZ3Rfc3Bpbl90ICpzcGluKTsKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQg ZmQsIGlndF9zcGluX3QgKnNwaW4pOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2ln dF9ndC5jCmluZGV4IDAxYWViYzY3MDg2Mi4uNDU2OWZkMzZiZDg1IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmMKKysrIGIvbGliL2lndF9ndC5jCkBAIC02MDksNyArNjA5LDcgQEAgYm9vbCBnZW1f Y2FuX3N0b3JlX2R3b3JkKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSkKIAlpZiAoZ2VuID09 IDMgJiYgKGluZm8tPmlzX2dyYW50c2RhbGUgfHwgaW5mby0+aXNfYWx2aXNvKSkKIAkJcmV0dXJu IGZhbHNlOyAvKiBvbmx5IHN1cHBvcnRzIHBoeXNpY2FsIGFkZHJlc3NlcyAqLwogCi0JaWYgKGdl biA9PSA2ICYmIChlbmdpbmUgJiB+KDM8PDEzKSkgPT0gSTkxNV9FWEVDX0JTRCkKKwlpZiAoZ2Vu ID09IDYgJiYgKChlbmdpbmUgJiAweDNmKSA9PSBJOTE1X0VYRUNfQlNEKSkKIAkJcmV0dXJuIGZh bHNlOyAvKiBraWxscyB0aGUgbWFjaGluZSEgKi8KIAogCWlmIChpbmZvLT5pc19icm9hZHdhdGVy KQpkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmMgYi9saWIvaW9jdGxfd3JhcHBlcnMu YwppbmRleCA4NzQ4Y2ZjZmMwNGYuLjRlMWEwOGJmMDZiNCAxMDA2NDQKLS0tIGEvbGliL2lvY3Rs X3dyYXBwZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKQEAgLTE5OCw3ICsxOTgsNyBA QCB2b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB0 aWxpbmcsIHVpbnQzMl90IHN0cmlkZSkKIAlpZ3RfYXNzZXJ0KF9fZ2VtX3NldF90aWxpbmcoZmQs IGhhbmRsZSwgdGlsaW5nLCBzdHJpZGUpID09IDApOwogfQogCi1zdGF0aWMgaW50IF9fZ2VtX3Nl dF9jYWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5nKQoraW50 IF9fZ2VtX3NldF9jYWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNo aW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyBhcmc7CiAJaW50IGVycjsKZGlm ZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5k ZXggMTNmYmUzYzEwM2MwLi5iOTY2ZjcyYzkwYTggMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFw cGVycy5oCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCkBAIC02MSw2ICs2MSw3IEBAIGJvb2wg Z2VtX2dldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90ICp0aWxpbmcs IHVpbnQzMl90ICpzd2l6emxlCiB2b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IHN0cmlkZSk7CiBpbnQgX19nZW1fc2V0 X3RpbGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgdGlsaW5nLCB1aW50MzJf dCBzdHJpZGUpOwogCitpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQzMl90IGNhY2hpbmcpOwogdm9pZCBnZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpOwogdWludDMyX3QgZ2VtX2dldF9jYWNoaW5n KGludCBmZCwgdWludDMyX3QgaGFuZGxlKTsKIHVpbnQzMl90IGdlbV9mbGluayhpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVy Zl9wbXUuYwppbmRleCAxOWZjYzk1ZmZjN2YuLjU5NGUzOGRkY2MwNyAxMDA2NDQKLS0tIGEvdGVz dHMvcGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0xNzAsNiArMTcwLDU2IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSkKICNkZWZpbmUgRkxBR19MT05HICgxNikKICNkZWZpbmUg RkxBR19IQU5HICgzMikKIAorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQs IHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9y ZV9kd29yZChmZCwgZmxhZ3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChm ZCwgY3R4LCBmbGFncyk7CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQs IGN0eCwgZmxhZ3MsIDApOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChp bnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJc3RydWN0IHRpbWVzcGVjIHN0YXJ0ID0geyB9 OworCisJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJaWYgKGdlbV9jYW5fc3RvcmVfZHdv cmQoZmQsIHNwaW4tPmV4ZWNidWYuZmxhZ3MpKSB7CisJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9 IDA7CisKKwkJd2hpbGUgKCFzcGluLT5ydW5uaW5nKSB7CisJCQl1bnNpZ25lZCBsb25nIHQgPSBp Z3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmICgodCAtIHRpbWVvdXQpID4gMjUwZTYp IHsKKwkJCQl0aW1lb3V0ID0gdDsKKwkJCQlpZ3Rfd2FybigiU3Bpbm5lciBub3QgcnVubmluZyBh ZnRlciAlLjJmbXNcbiIsCisJCQkJCSAoZG91YmxlKXQgLyAxZTYpOworCQkJfQorCQl9OworCX0g ZWxzZSB7CisJCWlndF9kZWJ1ZygiX19zcGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVz bGVlcCg1MDBlMyk7IC8qIEJldHRlciB0aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGln dF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5f c3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3Rf c3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCisJX19zcGluX3dh aXQoZmQsIHNwaW4pOworCisJcmV0dXJuIHNwaW47Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICog c3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorewor CWlndF9yZXF1aXJlX2dlbShmZCk7CisKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxh Z3MpOworfQorCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4s IHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZiAoIXNwaW4pCkBAIC0xODAsOCArMjMwLDI1IEBA IHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQg aW50IGZsYWdzKQogCWlmIChmbGFncyAmIEZMQUdfU1lOQykKIAkJZ2VtX3N5bmMoZmQsIHNwaW4t PmhhbmRsZSk7CiAKLQlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCi0JCXVzbGVlcChi YXRjaF9kdXJhdGlvbl9ucyAvIDUwMDApOworCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURM RSkgeworCQl1bnNpZ25lZCBsb25nIHQsIHRpbWVvdXQgPSAwOworCQlzdHJ1Y3QgdGltZXNwZWMg c3RhcnQgPSB7IH07CisKKwkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJCWRvIHsKKwkJ CXQgPSBpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmIChnZW1fYm9fYnVzeShmZCwg c3Bpbi0+aGFuZGxlKSAmJgorCQkJICAgICh0IC0gdGltZW91dCkgPiAxMGU2KSB7CisJCQkJdGlt ZW91dCA9IHQ7CisJCQkJaWd0X3dhcm4oIlNwaW5uZXIgbm90IGlkbGUgYWZ0ZXIgJS4yZm1zXG4i LAorCQkJCQkgKGRvdWJsZSl0IC8gMWU2KTsKKwkJCX0KKworCQkJdXNsZWVwKDFlMyk7CisJCX0g d2hpbGUgKHQgPCBiYXRjaF9kdXJhdGlvbl9ucyAvIDUpOworCX0KIH0KIAogc3RhdGljIHZvaWQK QEAgLTE5NSw3ICsyNjIsNyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3Bt dShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChm bGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpKTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC0yNTEsMTMgKzMx OCw3IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogCSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCi0JLyoKLQkgKiBTbGVl cCBmb3IgYSBiaXQgYWZ0ZXIgbWFraW5nIHRoZSBlbmdpbmUgYnVzeSB0byBtYWtlIHN1cmUgdGhl IFBNVQotCSAqIGdldHMgZW5hYmxlZCB3aGVuIHRoZSBiYXRjaCBpcyBhbHJlYWR5IHJ1bm5pbmcu Ci0JICovCi0JdXNsZWVwKDUwMGUzKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBl MnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZ KGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCkBAIC0zMDAsNyArMzYxLDcgQEAgYnVzeV9kb3Vi bGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQogCSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5 bmVzcyBpcyBjb3JyZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5k IGFmdGVyIHRoZSBlbmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX2lndF9zcGlu X2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluWzBdID0g X19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJdXNsZWVwKDUwMGUz KTsKIAlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHgsIGUycmluZyhn ZW1fZmQsIGUpLCAwKTsKIApAQCAtMzg2LDcgKzQ0Nyw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9h c3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9m ZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5n aW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25f bnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00MTIsMTUg KzQ3MywxMyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiB9CiAKIHN0YXRpYyB2b2lkCi1fX3N1Ym1pdF9zcGluX2Jh dGNoKGludCBnZW1fZmQsCi0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq b2JqLAorX19zdWJtaXRfc3Bpbl9iYXRjaChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAog CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewotCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7Ci0JCS5idWZmZXJfY291bnQgPSAxLAot CQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKSwKLQkJLmZsYWdzID0gZTJyaW5n KGdlbV9mZCwgZSksCi0JfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0g c3Bpbi0+ZXhlY2J1ZjsKKworCWViLmZsYWdzICY9IH4oMHgzZiB8IEk5MTVfRVhFQ19CU0RfTUFT Syk7CisJZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7 CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CiB9CkBAIC00MjksNyArNDg4LDYgQEAgc3Rh dGljIHZvaWQKIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgb2JqID0ge307CiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplXzsKIAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVt X2VuZ2luZXNdOwpAQCAtNDQzLDE1ICs1MDEsMTIgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmICgh Z2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlXy0+Y2xhc3MsIGVfLT5pbnN0YW5jZSkpCiAJCQljb250 aW51ZTsKIAotCQlpZiAoZSA9PSBlXykgeworCQlpZiAoZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0g aTsKLQkJfSBlbHNlIGlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwg Jm9iaiwgZV8pOwotCQl9IGVsc2UgewotCQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIDAsCi0JCQkJCQkgIGUycmluZyhnZW1fZmQsIGVfKSwgMCk7Ci0JCQlvYmouaGFuZGxlID0g c3Bpbi0+aGFuZGxlOwotCQl9CisJCWVsc2UgaWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2Jh dGNoKGdlbV9mZCwgc3BpbiwgZV8pOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3BvbGwoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5H SU5FX0JVU1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwogCX0KQEAgLTQ2MSw2ICs1MTYsOSBA QCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJ ZmRbaV0gPSBvcGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwgZGVsYXkgdG8g YWxsb3cgZW5naW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQoZ2VtX2ZkLCBz cGluKSAqIG51bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1f ZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00ODks NyArNTQ3LDYgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBj b25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAljb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdWludDY0X3QgdHZhbFsyXVtudW1f ZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTUwMywxMyArNTYwLDEw IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVt X2VuZ2luZXMsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5z dGFuY2UpKQogCQkJY29udGludWU7CiAKLQkJaWYgKHNwaW4pIHsKLQkJCV9fc3VibWl0X3NwaW5f YmF0Y2goZ2VtX2ZkLCAmb2JqLCBlKTsKLQkJfSBlbHNlIHsKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLAotCQkJCQkJICBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7Ci0JCQlv YmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWlmIChzcGluKQorCQkJX19zdWJtaXRf c3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUpOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3Bv bGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BN VV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTUxOSw2ICs1NzMs OSBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51 bV9lbmdpbmVzLAogCWZvciAoaSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQogCQlmZFtpXSA9 IG9wZW5fZ3JvdXAodmFsW2ldLCBmZFswXSk7CiAKKwkvKiBTbWFsbCBkZWxheSB0byBhbGxvdyBl bmdpbmVzIHRvIHN0YXJ0LiAqLworCXVzbGVlcChfX3NwaW5fd2FpdChnZW1fZmQsIHNwaW4pICog bnVtX2VuZ2luZXMgLyAxZTMpOworCiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVz LCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAv IDEwMDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTU1MCw3ICs2MDcs NyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCW9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5F X1dBSVQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwgZmQpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9C VVNZKQotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9m ZCwgZSksIDApOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZSkpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTg4NCw3ICs5NDEsNyBAQCBtdWx0aV9j bGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogCSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJc3BpbiA9IHNwaW5f c3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAogCXZhbFswXSA9IHZhbFsxXSA9 IF9fcG11X3JlYWRfc2luZ2xlKGZkWzBdLCAmdHNbMF0pOwogCXNsZXB0WzFdID0gbWVhc3VyZWRf dXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xMjQ4LDcgKzEzMDUsNyBAQCB0 ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMy KHN5c2ZzLCAiZ3RfYm9vc3RfZnJlcV9taHoiKSA9PSBtaW5fZnJlcSk7CiAKIAlnZW1fcXVpZXNj ZW50X2dwdShnZW1fZmQpOyAvKiBJZGxlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSB0YWtlcyBlZmZl Y3QgKi8KLQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JF TkRFUiwgMCk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIp OwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3Vz bGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTI3NCw3ICsxMzMxLDcgQEAgdGVz dF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0X3UzMihz eXNmcywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRf Z3B1KGdlbV9mZCk7Ci0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIEk5MTVf RVhFQ19SRU5ERVIsIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNf UkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFz dXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTE0NTUsNiArMTUxMiwx MSBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKIHsK IAljb25zdCB1aW50MzJfdCBtaV9hcmJfY2hrID0gMHg1IDw8IDIzOwogCisJaWYgKHNwaW4tPnJ1 bm5pbmcpIHsKKwkJaWd0X2Fzc2VydCgqc3Bpbi0+cnVubmluZyk7CisJCSpzcGluLT5ydW5uaW5n ID0gMDsKKwl9CisJaWd0X2Fzc2VydF9lcSgqc3Bpbi0+YmF0Y2gsIE1JX0JBVENIX0JVRkZFUl9F TkQpOwogICAgICAgICpzcGluLT5iYXRjaCA9IG1pX2FyYl9jaGs7CiAgICAgICAgX19zeW5jX3N5 bmNocm9uaXplKCk7CiB9CkBAIC0xNTE3LDcgKzE1NzksNiBAQCBhY2N1cmFjeShpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWNvbnN0IHVuc2ln bmVkIGxvbmcgdGltZW91dFtdID0gewogCQkJcHdtX2NhbGlicmF0aW9uX3VzICogMTAwMCwgdGVz dF91cyAqIDEwMDAKIAkJfTsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2Jq ID0ge307CiAJCXVpbnQ2NF90IHRvdGFsX2J1c3lfbnMgPSAwLCB0b3RhbF9pZGxlX25zID0gMDsK IAkJaWd0X3NwaW5fdCAqc3BpbjsKIAkJaW50IHJldDsKQEAgLTE1MzAsMTIgKzE1OTEsOSBAQCBh Y2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCiAJCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHNldCBzY2hlZHVsaW5nIHBvbGljeSFcbiIpOwog CiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0g aWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQlv YmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwg Jm9iaiwgZSk7IC8qIHJlY29yZCBpdHMgbG9jYXRpb24gKi8KKwkJc3BpbiA9IHNwaW5fc3luYyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4p OwotCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOwotCQlvYmouZmxhZ3MgfD0gRVhFQ19P QkpFQ1RfUElOTkVEOworCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKIAkJLyog MXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLwogCQlm b3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZX1NJWkUodGltZW91dCk7IHBhc3MrKykgewpA QCAtMTU0NSwyNCArMTYwMywzMCBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAkJCWlndF9uc2VjX2VsYXBzZWQoJnRlc3Rf c3RhcnQpOwogCQkJZG8gewotCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91cywgdF9idXN5 OworCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91czsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMg c3RhcnQgPSB7IH07CisJCQkJdW5zaWduZWQgbG9uZyBwcmVwX2RlbGF5X25zOwogCiAJCQkJLyog UmVzdGFydCB0aGUgc3BpbmJhdGNoLiAqLworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsK IAkJCQlfX3JlYXJtX3NwaW5fYmF0Y2goc3Bpbik7Ci0JCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChn ZW1fZmQsICZvYmosIGUpOworCQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBl KTsKIAotCQkJCS8qCi0JCQkJICogTm90ZSB0aGF0IHRoZSBzdWJtaXNzaW9uIG1heSBiZSBkZWxh eWVkIHRvIGEKLQkJCQkgKiB0YXNrbGV0IChrc29mdGlycWQpIHdoaWNoIGNhbm5vdCBydW4gdW50 aWwgd2UKLQkJCQkgKiBzbGVlcCBhcyB3ZSBob2cgdGhlIGNwdSAod2UgYXJlIFJUKS4KLQkJCQkg Ki8KKwkJCQkgLyogV2FpdCBmb3IgYmF0Y2ggdG8gc3RhcnQgZXhlY3V0aW5nLiAqLworCQkJCV9f c3Bpbl93YWl0KGdlbV9mZCwgc3Bpbik7CisJCQkJcHJlcF9kZWxheV9ucyA9IGlndF9uc2VjX2Vs YXBzZWQoJnN0YXJ0KTsKIAotCQkJCXRfYnVzeSA9IG1lYXN1cmVkX3VzbGVlcChidXN5X3VzKTsK KwkJCQkvKiBQV00gYnVzeSBzbGVlcC4gKi8KKwkJCQltZW1zZXQoJnN0YXJ0LCAwLCBzaXplb2Yo c3RhcnQpKTsKKwkJCQlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisJCQkJbWVhc3VyZWRfdXNs ZWVwKGJ1c3lfdXMpOwogCQkJCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1fc3lu YyhnZW1fZmQsIG9iai5oYW5kbGUpOworCQkJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxl KTsKIAotCQkJCXRvdGFsX2J1c3lfbnMgKz0gdF9idXN5OworCQkJCXRvdGFsX2J1c3lfbnMgKz0g aWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCQkJCXRvdGFsX2lkbGVfbnMgKz0gcHJlcF9kZWxh eV9uczsKIAorCQkJCS8qIFJlLWNhbGlicmF0ZS4gKi8KIAkJCQl0YXJnZXRfaWRsZV91cyA9CiAJ CQkJCSgxMDAgKiB0b3RhbF9idXN5X25zIC8gdGFyZ2V0X2J1c3lfcGN0IC0gKHRvdGFsX2J1c3lf bnMgKyB0b3RhbF9pZGxlX25zKSkgLyAxMDAwOwogCQkJCXRvdGFsX2lkbGVfbnMgKz0gbWVhc3Vy ZWRfdXNsZWVwKHRhcmdldF9pZGxlX3VzKTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x22f.google.com (mail-wm0-x22f.google.com [IPv6:2a00:1450:400c:c09::22f]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9BFE56EB33 for ; Fri, 16 Mar 2018 12:18:24 +0000 (UTC) Received: by mail-wm0-x22f.google.com with SMTP id t3so2656676wmc.2 for ; Fri, 16 Mar 2018 05:18:24 -0700 (PDT) From: Tvrtko Ursulin Date: Fri, 16 Mar 2018 12:18:13 +0000 Message-Id: <20180316121813.24864-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180316101710.23688-1-tvrtko.ursulin@linux.intel.com> References: <20180316101710.23688-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t v5] 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 cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaWd0X2R1bW15 bG9hZC5jICB8IDE1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LQogbGliL2lndF9kdW1teWxvYWQuaCAgfCAgMTEgKysrKwogbGliL2lndF9ndC5jICAgICAgICAg fCAgIDIgKy0KIGxpYi9pb2N0bF93cmFwcGVycy5jIHwgICAyICstCiBsaWIvaW9jdGxfd3JhcHBl cnMuaCB8ICAgMSArCiB0ZXN0cy9wZXJmX3BtdS5jICAgICB8IDE3NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMjYz IGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVt bXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCmluZGV4IDRiMjBmMjNkZmUyNi4uMjQ2Mjc3 MTI5MWE2IDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBiL2xpYi9pZ3RfZHVt bXlsb2FkLmMKQEAgLTc0LDE2ICs3NCwxOSBAQCBmaWxsX3JlbG9jKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCiAJcmVsb2MtPndyaXRlX2RvbWFpbiA9IHdyaXRl X2RvbWFpbnM7CiB9CiAKLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5f dCAqc3BpbiwKLQkJCQlpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLAotCQkJ CXVpbnQzMl90IGRlcCwgYm9vbCBvdXRfZmVuY2UpCisjZGVmaW5lIE9VVF9GRU5DRQkoMSA8PCAw KQorI2RlZmluZSBQT0xMX1JVTgkoMSA8PCAxKQorCitzdGF0aWMgaW50CitlbWl0X3JlY3Vyc2l2 ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQg ZW5naW5lLAorCQkgICAgIHVpbnQzMl90IGRlcCwgdW5zaWduZWQgaW50IGZsYWdzKQogewogI2Rl ZmluZSBTQ1JBVENIIDAKICNkZWZpbmUgQkFUQ0ggMQogCWNvbnN0IGludCBnZW4gPSBpbnRlbF9n ZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIG9ialsyXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVs b2NzWzJdOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyICpvYmo7CiAJdW5zaWduZWQgaW50IGVuZ2luZXNbMTZdOwogCXVuc2ln bmVkIGludCBuZW5naW5lOwogCWludCBmZW5jZV9mZCA9IC0xOwpAQCAtMTAxLDggKzEwNCwxMCBA QCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJfQog CWlndF9yZXF1aXJlKG5lbmdpbmUpOwogCi0JbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhl Y2J1ZikpOwotCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwltZW1zZXQoJnNwaW4tPmV4 ZWNidWYsIDAsIHNpemVvZihzcGluLT5leGVjYnVmKSk7CisJZXhlY2J1ZiA9ICZzcGluLT5leGVj YnVmOworCW1lbXNldChzcGluLT5vYmosIDAsIHNpemVvZihzcGluLT5vYmopKTsKKwlvYmogPSBz cGluLT5vYmo7CiAJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykpOwogCiAJb2JqW0JB VENIXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCQVRDSF9TSVpFKTsKQEAgLTExMywxNiArMTE4 LDYyIEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwK IAkJCQkgICAgICAgCUJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwogCWdlbV9zZXRfZG9tYWluKGZk LCBvYmpbQkFUQ0hdLmhhbmRsZSwKIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RP TUFJTl9HVFQpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50Kys7CisJZXhlY2J1Zi0+YnVmZmVyX2Nv dW50Kys7CiAKIAlpZiAoZGVwKSB7CisJCWlndF9hc3NlcnQoIShmbGFncyAmIFBPTExfUlVOKSk7 CisKIAkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwogCQlvYmpbU0NSQVRDSF0uaGFu ZGxlID0gZGVwOwogCQlmaWxsX3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5yZWxvY2F0aW9uX2Nv dW50KytdLAogCQkJICAgZGVwLCAxMDIwLAogCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwK IAkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwotCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCsr OworCQlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwl9IGVsc2UgaWYgKGZsYWdzICYgUE9MTF9S VU4pIHsKKwkJdW5zaWduZWQgaW50IG9mZnNldDsKKworCQlpZ3RfYXNzZXJ0KCFkZXApOworCisJ CWlmIChnZW4gPT0gNCB8fCBnZW4gPT0gNSkKKwkJCWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVfRVhF Q19TRUNVUkU7CisKKwkJc3Bpbi0+cG9sbF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KworCQlpZiAoX19nZW1fc2V0X2NhY2hpbmcoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCSAg ICAgIEk5MTVfQ0FDSElOR19DQUNIRUQpID09IDApCisJCQlzcGluLT5ydW5uaW5nID0gX19nZW1f bW1hcF9fY3B1KGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCQkwLCA0MDk2LAorCQkJCQkJ CVBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQllbHNlCisJCQlzcGluLT5ydW5uaW5nID0gX19n ZW1fbW1hcF9fd2MoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCQkJICAgICAgIDAsIDQwOTYs CisJCQkJCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJCWlndF9hc3NlcnQoc3Bp bi0+cnVubmluZyk7CisJCWlndF9hc3NlcnRfZXEoKnNwaW4tPnJ1bm5pbmcsIDApOworCisJCSpi YXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CisK KwkJaWYgKGdlbiA+PSA4KSB7CisJCQlvZmZzZXQgPSAxOworCQkJKmJhdGNoKysgPSAwOworCQkJ KmJhdGNoKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7CisJCQlvZmZzZXQgPSAyOwor CQkJKmJhdGNoKysgPSAwOworCQkJKmJhdGNoKysgPSAwOworCQl9IGVsc2UgeworCQkJb2Zmc2V0 ID0gMTsKKwkJCWJhdGNoWy0xXS0tOworCQkJKmJhdGNoKysgPSAwOworCQl9CisKKwkJKmJhdGNo KysgPSAxOworCisJCW9ialtTQ1JBVENIXS5oYW5kbGUgPSBzcGluLT5wb2xsX2hhbmRsZTsKKwkJ ZmlsbF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrXSwKKwkJCSAg IHNwaW4tPnBvbGxfaGFuZGxlLCBvZmZzZXQsIDAsIDApOworCQlleGVjYnVmLT5idWZmZXJfY291 bnQrKzsKIAl9CiAKIAlzcGluLT5iYXRjaCA9IGJhdGNoOwpAQCAtMTY3LDE4ICsyMTgsMjMgQEAg c3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAogCW9ialtC QVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrOwogCW9ialtCQVRDSF0ucmVsb2NzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcihyZWxvY3MpOwogCi0JZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9p bnRlcihvYmogKyAoMiAtIGV4ZWNidWYuYnVmZmVyX2NvdW50KSk7Ci0JZXhlY2J1Zi5yc3ZkMSA9 IGN0eDsKKwlleGVjYnVmLT5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmogKworCQkJ CQkgICAgICAgKDIgLSBleGVjYnVmLT5idWZmZXJfY291bnQpKTsKKwlleGVjYnVmLT5yc3ZkMSA9 IGN0eDsKIAotCWlmIChvdXRfZmVuY2UpCi0JCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX0ZF TkNFX09VVDsKKwlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpCisJCWV4ZWNidWYtPmZsYWdzIHw9IEk5 MTVfRVhFQ19GRU5DRV9PVVQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7Ci0J CWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwotCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2lu ZXNbaV07Ci0JCWdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1Zik7Ci0JCWlmIChvdXRfZmVuY2Up IHsKLQkJCWludCBfZmQgPSBleGVjYnVmLnJzdmQyID4+IDMyOworCQlleGVjYnVmLT5mbGFncyAm PSB+RU5HSU5FX01BU0s7CisJCWV4ZWNidWYtPmZsYWdzIHw9IGVuZ2luZXNbaV07CisKKwkJaWYg KGZsYWdzICYgUE9MTF9SVU4pCisJCQlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGZk LCBleGVjYnVmLT5mbGFncykpOworCisJCWdlbV9leGVjYnVmX3dyKGZkLCBleGVjYnVmKTsKKwkJ aWYgKGZsYWdzICYgT1VUX0ZFTkNFKSB7CisJCQlpbnQgX2ZkID0gZXhlY2J1Zi0+cnN2ZDIgPj4g MzI7CiAKIAkJCWlndF9hc3NlcnQoX2ZkID49IDApOwogCQkJaWYgKGZlbmNlX2ZkID09IC0xKSB7 CkBAIC0xOTQsMTIgKzI1MCwyMCBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGln dF9zcGluX3QgKnNwaW4sCiAJCX0KIAl9CiAKKwkvKiBNYWtlIGl0IGVhc2llciBmb3IgY2FsbGVy cyB0byByZXN1Ym1pdC4gKi8KKworCW9ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCA9IDA7CisJ b2JqW0JBVENIXS5yZWxvY3NfcHRyID0gMDsKKworCW9ialtTQ1JBVENIXS5mbGFncyA9IEVYRUNf T0JKRUNUX1BJTk5FRDsKKwlvYmpbQkFUQ0hdLmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOwor CiAJcmV0dXJuIGZlbmNlX2ZkOwogfQogCiBzdGF0aWMgaWd0X3NwaW5fdCAqCiBfX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMy X3QgZGVwLAotCQkgICAgICBpbnQgb3V0X2ZlbmNlKQorCQkgICAgICB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIApAQCAtMjA3LDcgKzI3MSw3IEBAIF9fX2lndF9z cGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50 MzJfdCBkZXAsCiAJaWd0X2Fzc2VydChzcGluKTsKIAogCXNwaW4tPm91dF9mZW5jZSA9IGVtaXRf cmVjdXJzaXZlX2JhdGNoKHNwaW4sIGZkLCBjdHgsIGVuZ2luZSwgZGVwLAotCQkJCQkgICAgICAg b3V0X2ZlbmNlKTsKKwkJCQkJICAgICAgIGZsYWdzKTsKIAogCXB0aHJlYWRfbXV0ZXhfbG9jaygm bGlzdF9sb2NrKTsKIAlpZ3RfbGlzdF9hZGQoJnNwaW4tPmxpbmssICZzcGluX2xpc3QpOwpAQCAt MjE5LDcgKzI4Myw3IEBAIF9fX2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0 eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBkZXAsCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3Nw aW5fYmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQz Ml90IGRlcCkKIHsKLQlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2lu ZSwgZGVwLCBmYWxzZSk7CisJcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBl bmdpbmUsIGRlcCwgMCk7CiB9CiAKIC8qKgpAQCAtMjUzLDcgKzMxNyw3IEBAIGlndF9zcGluX2Jh dGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBk ZXApCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCiB7Ci0JcmV0dXJuIF9fX2lndF9zcGluX2JhdGNo X25ldyhmZCwgY3R4LCBlbmdpbmUsIDAsIHRydWUpOworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZmQsIGN0eCwgZW5naW5lLCAwLCBPVVRfRkVOQ0UpOwogfQogCiAvKioKQEAgLTI4Niw2 ICszNTAsNDIgQEAgaWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWludDMyX3QgY3R4 LCB1bnNpZ25lZCBlbmdpbmUpCiAJcmV0dXJuIHNwaW47CiB9CiAKK2lndF9zcGluX3QgKgorX19p Z3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5n aW5lKQoreworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZW5naW5lLCAw LCBQT0xMX1JVTik7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGw6CisgKiBA ZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAZW5naW5lOiBSaW5nIHRvIGV4 ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKKyAq ICAgICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgorICoKKyAq IFN0YXJ0IGEgcmVjdXJzaXZlIGJhdGNoIG9uIGEgcmluZy4gSW1tZWRpYXRlbHkgcmV0dXJucyBh ICNpZ3Rfc3Bpbl90IHRoYXQKKyAqIGNvbnRhaW5zIHRoZSBiYXRjaCdzIGhhbmRsZSB0aGF0IGNh biBiZSB3YWl0ZWQgdXBvbi4gVGhlIHJldHVybmVkIHN0cnVjdHVyZQorICogbXVzdCBiZSBwYXNz ZWQgdG8gaWd0X3NwaW5fYmF0Y2hfZnJlZSgpIGZvciBwb3N0LXByb2Nlc3NpbmcuCisgKgorICog aWd0X3NwaW5fdC0+cnVubmluZyB3aWxsIGNvbnRhaW50IGEgcG9pbnRlciB3aGljaCB0YXJnZXQg d2lsbCBjaGFuZ2UgZnJvbQorICogemVybyB0byBvbmUgb25jZSB0aGUgc3Bpbm5lciBhY3R1YWxs eSBzdGFydHMgZXhlY3V0aW5nIG9uIHRoZSBHUFUuCisgKgorICogUmV0dXJuczoKKyAqIFN0cnVj dHVyZSB3aXRoIGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3IgaWd0X3NwaW5fYmF0Y2hfZnJlZSgp LgorICovCitpZ3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCit7CisJaWd0X3NwaW5fdCAqc3BpbjsKKworCWln dF9yZXF1aXJlX2dlbShmZCk7CisJaWd0X3JlcXVpcmUoZ2VtX21tYXBfX2hhc193YyhmZCkpOwor CisJc3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoZmQsIGN0eCwgZW5naW5lKTsKKwlp Z3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpKTsKKworCXJldHVybiBzcGlu OworfQorCiBzdGF0aWMgdm9pZCBub3RpZnkodW5pb24gc2lndmFsIGFyZykKIHsKIAlpZ3Rfc3Bp bl90ICpzcGluID0gYXJnLnNpdmFsX3B0cjsKQEAgLTM2NSw3ICs0NjUsMTMgQEAgdm9pZCBpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKIAkJdGltZXJfZGVsZXRl KHNwaW4tPnRpbWVyKTsKIAogCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQlnZW1fbXVubWFw KHNwaW4tPmJhdGNoLCBCQVRDSF9TSVpFKTsKKwlnZW1fbXVubWFwKCh2b2lkICopKCh1bnNpZ25l ZCBsb25nKXNwaW4tPmJhdGNoICYgKH40MDk1VUwpKSwKKwkJICAgQkFUQ0hfU0laRSk7CisKKwlp ZiAoc3Bpbi0+cnVubmluZykgeworCQlnZW1fbXVubWFwKHNwaW4tPnJ1bm5pbmcsIDQwOTYpOwor CQlnZW1fY2xvc2UoZmQsIHNwaW4tPnBvbGxfaGFuZGxlKTsKKwl9CiAKIAlnZW1fY2xvc2UoZmQs IHNwaW4tPmhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIv aWd0X2R1bW15bG9hZC5oCmluZGV4IDQxMDNlNGFiOWUzNi4uMzEwMzkzNWEzMDliIDEwMDY0NAot LS0gYS9saWIvaWd0X2R1bW15bG9hZC5oCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKQEAgLTM2 LDYgKzM2LDEwIEBAIHR5cGVkZWYgc3RydWN0IGlndF9zcGluIHsKIAlzdHJ1Y3QgaWd0X2xpc3Qg bGluazsKIAl1aW50MzJfdCAqYmF0Y2g7CiAJaW50IG91dF9mZW5jZTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmOworCXVpbnQzMl90IHBvbGxfaGFuZGxlOworCWJvb2wgKnJ1bm5pbmc7CiB9 IGlndF9zcGluX3Q7CiAKIGlndF9zcGluX3QgKl9faWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwK QEAgLTU1LDYgKzU5LDEzIEBAIGlndF9zcGluX3QgKmlndF9zcGluX2JhdGNoX25ld19mZW5jZShp bnQgZmQsCiAJCQkJICAgICB1aW50MzJfdCBjdHgsCiAJCQkJICAgICB1bnNpZ25lZCBlbmdpbmUp OwogCitpZ3Rfc3Bpbl90ICpfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwKKwkJCQkg ICAgICAgdWludDMyX3QgY3R4LAorCQkJCSAgICAgICB1bnNpZ25lZCBlbmdpbmUpOworaWd0X3Nw aW5fdCAqaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLAorCQkJCSAgICB1aW50MzJfdCBj dHgsCisJCQkJICAgIHVuc2lnbmVkIGVuZ2luZSk7CisKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfc2V0 X3RpbWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucyk7CiB2b2lkIGlndF9zcGluX2Jh dGNoX2VuZChpZ3Rfc3Bpbl90ICpzcGluKTsKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQg ZmQsIGlndF9zcGluX3QgKnNwaW4pOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2ln dF9ndC5jCmluZGV4IDAxYWViYzY3MDg2Mi4uNDU2OWZkMzZiZDg1IDEwMDY0NAotLS0gYS9saWIv aWd0X2d0LmMKKysrIGIvbGliL2lndF9ndC5jCkBAIC02MDksNyArNjA5LDcgQEAgYm9vbCBnZW1f Y2FuX3N0b3JlX2R3b3JkKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSkKIAlpZiAoZ2VuID09 IDMgJiYgKGluZm8tPmlzX2dyYW50c2RhbGUgfHwgaW5mby0+aXNfYWx2aXNvKSkKIAkJcmV0dXJu IGZhbHNlOyAvKiBvbmx5IHN1cHBvcnRzIHBoeXNpY2FsIGFkZHJlc3NlcyAqLwogCi0JaWYgKGdl biA9PSA2ICYmIChlbmdpbmUgJiB+KDM8PDEzKSkgPT0gSTkxNV9FWEVDX0JTRCkKKwlpZiAoZ2Vu ID09IDYgJiYgKChlbmdpbmUgJiAweDNmKSA9PSBJOTE1X0VYRUNfQlNEKSkKIAkJcmV0dXJuIGZh bHNlOyAvKiBraWxscyB0aGUgbWFjaGluZSEgKi8KIAogCWlmIChpbmZvLT5pc19icm9hZHdhdGVy KQpkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmMgYi9saWIvaW9jdGxfd3JhcHBlcnMu YwppbmRleCA4NzQ4Y2ZjZmMwNGYuLjRlMWEwOGJmMDZiNCAxMDA2NDQKLS0tIGEvbGliL2lvY3Rs X3dyYXBwZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKQEAgLTE5OCw3ICsxOTgsNyBA QCB2b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB0 aWxpbmcsIHVpbnQzMl90IHN0cmlkZSkKIAlpZ3RfYXNzZXJ0KF9fZ2VtX3NldF90aWxpbmcoZmQs IGhhbmRsZSwgdGlsaW5nLCBzdHJpZGUpID09IDApOwogfQogCi1zdGF0aWMgaW50IF9fZ2VtX3Nl dF9jYWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5nKQoraW50 IF9fZ2VtX3NldF9jYWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNo aW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyBhcmc7CiAJaW50IGVycjsKZGlm ZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5k ZXggMTNmYmUzYzEwM2MwLi5iOTY2ZjcyYzkwYTggMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFw cGVycy5oCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCkBAIC02MSw2ICs2MSw3IEBAIGJvb2wg Z2VtX2dldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90ICp0aWxpbmcs IHVpbnQzMl90ICpzd2l6emxlCiB2b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IHN0cmlkZSk7CiBpbnQgX19nZW1fc2V0 X3RpbGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgdGlsaW5nLCB1aW50MzJf dCBzdHJpZGUpOwogCitpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQzMl90IGNhY2hpbmcpOwogdm9pZCBnZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpOwogdWludDMyX3QgZ2VtX2dldF9jYWNoaW5n KGludCBmZCwgdWludDMyX3QgaGFuZGxlKTsKIHVpbnQzMl90IGdlbV9mbGluayhpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVy Zl9wbXUuYwppbmRleCAxOWZjYzk1ZmZjN2YuLjU5NGUzOGRkY2MwNyAxMDA2NDQKLS0tIGEvdGVz dHMvcGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0xNzAsNiArMTcwLDU2IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSkKICNkZWZpbmUgRkxBR19MT05HICgxNikKICNkZWZpbmUg RkxBR19IQU5HICgzMikKIAorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQs IHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9y ZV9kd29yZChmZCwgZmxhZ3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChm ZCwgY3R4LCBmbGFncyk7CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQs IGN0eCwgZmxhZ3MsIDApOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChp bnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJc3RydWN0IHRpbWVzcGVjIHN0YXJ0ID0geyB9 OworCisJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJaWYgKGdlbV9jYW5fc3RvcmVfZHdv cmQoZmQsIHNwaW4tPmV4ZWNidWYuZmxhZ3MpKSB7CisJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9 IDA7CisKKwkJd2hpbGUgKCFzcGluLT5ydW5uaW5nKSB7CisJCQl1bnNpZ25lZCBsb25nIHQgPSBp Z3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmICgodCAtIHRpbWVvdXQpID4gMjUwZTYp IHsKKwkJCQl0aW1lb3V0ID0gdDsKKwkJCQlpZ3Rfd2FybigiU3Bpbm5lciBub3QgcnVubmluZyBh ZnRlciAlLjJmbXNcbiIsCisJCQkJCSAoZG91YmxlKXQgLyAxZTYpOworCQkJfQorCQl9OworCX0g ZWxzZSB7CisJCWlndF9kZWJ1ZygiX19zcGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVz bGVlcCg1MDBlMyk7IC8qIEJldHRlciB0aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGln dF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5f c3luYyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3Rf c3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCisJX19zcGluX3dh aXQoZmQsIHNwaW4pOworCisJcmV0dXJuIHNwaW47Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICog c3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQorewor CWlndF9yZXF1aXJlX2dlbShmZCk7CisKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxh Z3MpOworfQorCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4s IHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZiAoIXNwaW4pCkBAIC0xODAsOCArMjMwLDI1IEBA IHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQg aW50IGZsYWdzKQogCWlmIChmbGFncyAmIEZMQUdfU1lOQykKIAkJZ2VtX3N5bmMoZmQsIHNwaW4t PmhhbmRsZSk7CiAKLQlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCi0JCXVzbGVlcChi YXRjaF9kdXJhdGlvbl9ucyAvIDUwMDApOworCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURM RSkgeworCQl1bnNpZ25lZCBsb25nIHQsIHRpbWVvdXQgPSAwOworCQlzdHJ1Y3QgdGltZXNwZWMg c3RhcnQgPSB7IH07CisKKwkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJCWRvIHsKKwkJ CXQgPSBpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmIChnZW1fYm9fYnVzeShmZCwg c3Bpbi0+aGFuZGxlKSAmJgorCQkJICAgICh0IC0gdGltZW91dCkgPiAxMGU2KSB7CisJCQkJdGlt ZW91dCA9IHQ7CisJCQkJaWd0X3dhcm4oIlNwaW5uZXIgbm90IGlkbGUgYWZ0ZXIgJS4yZm1zXG4i LAorCQkJCQkgKGRvdWJsZSl0IC8gMWU2KTsKKwkJCX0KKworCQkJdXNsZWVwKDFlMyk7CisJCX0g d2hpbGUgKHQgPCBiYXRjaF9kdXJhdGlvbl9ucyAvIDUpOworCX0KIH0KIAogc3RhdGljIHZvaWQK QEAgLTE5NSw3ICsyNjIsNyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3Bt dShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChm bGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpKTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC0yNTEsMTMgKzMx OCw3IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQogCSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCi0JLyoKLQkgKiBTbGVl cCBmb3IgYSBiaXQgYWZ0ZXIgbWFraW5nIHRoZSBlbmdpbmUgYnVzeSB0byBtYWtlIHN1cmUgdGhl IFBNVQotCSAqIGdldHMgZW5hYmxlZCB3aGVuIHRoZSBiYXRjaCBpcyBhbHJlYWR5IHJ1bm5pbmcu Ci0JICovCi0JdXNsZWVwKDUwMGUzKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBl MnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZ KGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCkBAIC0zMDAsNyArMzYxLDcgQEAgYnVzeV9kb3Vi bGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQogCSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5 bmVzcyBpcyBjb3JyZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5k IGFmdGVyIHRoZSBlbmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX2lndF9zcGlu X2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluWzBdID0g X19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJdXNsZWVwKDUwMGUz KTsKIAlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHgsIGUycmluZyhn ZW1fZmQsIGUpLCAwKTsKIApAQCAtMzg2LDcgKzQ0Nyw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9h c3NlcnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9m ZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5n aW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25f bnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00MTIsMTUg KzQ3MywxMyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiB9CiAKIHN0YXRpYyB2b2lkCi1fX3N1Ym1pdF9zcGluX2Jh dGNoKGludCBnZW1fZmQsCi0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq b2JqLAorX19zdWJtaXRfc3Bpbl9iYXRjaChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAog CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewotCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7Ci0JCS5idWZmZXJfY291bnQgPSAxLAot CQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKSwKLQkJLmZsYWdzID0gZTJyaW5n KGdlbV9mZCwgZSksCi0JfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0g c3Bpbi0+ZXhlY2J1ZjsKKworCWViLmZsYWdzICY9IH4oMHgzZiB8IEk5MTVfRVhFQ19CU0RfTUFT Syk7CisJZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7 CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CiB9CkBAIC00MjksNyArNDg4LDYgQEAgc3Rh dGljIHZvaWQKIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgb2JqID0ge307CiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplXzsKIAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVt X2VuZ2luZXNdOwpAQCAtNDQzLDE1ICs1MDEsMTIgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQg Z2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmICgh Z2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlXy0+Y2xhc3MsIGVfLT5pbnN0YW5jZSkpCiAJCQljb250 aW51ZTsKIAotCQlpZiAoZSA9PSBlXykgeworCQlpZiAoZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0g aTsKLQkJfSBlbHNlIGlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwg Jm9iaiwgZV8pOwotCQl9IGVsc2UgewotCQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIDAsCi0JCQkJCQkgIGUycmluZyhnZW1fZmQsIGVfKSwgMCk7Ci0JCQlvYmouaGFuZGxlID0g c3Bpbi0+aGFuZGxlOwotCQl9CisJCWVsc2UgaWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2Jh dGNoKGdlbV9mZCwgc3BpbiwgZV8pOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3BvbGwoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5H SU5FX0JVU1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwogCX0KQEAgLTQ2MSw2ICs1MTYsOSBA QCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSwKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJ ZmRbaV0gPSBvcGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwgZGVsYXkgdG8g YWxsb3cgZW5naW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQoZ2VtX2ZkLCBz cGluKSAqIG51bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1f ZW5naW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00ODks NyArNTQ3LDYgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBj b25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAljb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdWludDY0X3QgdHZhbFsyXVtudW1f ZW5naW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTUwMywxMyArNTYwLDEw IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVt X2VuZ2luZXMsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5z dGFuY2UpKQogCQkJY29udGludWU7CiAKLQkJaWYgKHNwaW4pIHsKLQkJCV9fc3VibWl0X3NwaW5f YmF0Y2goZ2VtX2ZkLCAmb2JqLCBlKTsKLQkJfSBlbHNlIHsKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLAotCQkJCQkJICBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7Ci0JCQlv YmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWlmIChzcGluKQorCQkJX19zdWJtaXRf c3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUpOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3Bv bGwoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BN VV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTUxOSw2ICs1NzMs OSBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51 bV9lbmdpbmVzLAogCWZvciAoaSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQogCQlmZFtpXSA9 IG9wZW5fZ3JvdXAodmFsW2ldLCBmZFswXSk7CiAKKwkvKiBTbWFsbCBkZWxheSB0byBhbGxvdyBl bmdpbmVzIHRvIHN0YXJ0LiAqLworCXVzbGVlcChfX3NwaW5fd2FpdChnZW1fZmQsIHNwaW4pICog bnVtX2VuZ2luZXMgLyAxZTMpOworCiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVz LCB0dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAv IDEwMDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTU1MCw3ICs2MDcs NyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCW9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5F X1dBSVQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwgZmQpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9C VVNZKQotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9m ZCwgZSksIDApOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZSkpOwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTg4NCw3ICs5NDEsNyBAQCBtdWx0aV9j bGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogCSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJc3BpbiA9IHNwaW5f c3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAogCXZhbFswXSA9IHZhbFsxXSA9 IF9fcG11X3JlYWRfc2luZ2xlKGZkWzBdLCAmdHNbMF0pOwogCXNsZXB0WzFdID0gbWVhc3VyZWRf dXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xMjQ4LDcgKzEzMDUsNyBAQCB0 ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMy KHN5c2ZzLCAiZ3RfYm9vc3RfZnJlcV9taHoiKSA9PSBtaW5fZnJlcSk7CiAKIAlnZW1fcXVpZXNj ZW50X2dwdShnZW1fZmQpOyAvKiBJZGxlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSB0YWtlcyBlZmZl Y3QgKi8KLQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JF TkRFUiwgMCk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIp OwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3Vz bGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTI3NCw3ICsxMzMxLDcgQEAgdGVz dF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0X3UzMihz eXNmcywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRf Z3B1KGdlbV9mZCk7Ci0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIEk5MTVf RVhFQ19SRU5ERVIsIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNf UkVOREVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFz dXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTE0NTUsNiArMTUxMiwx MSBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKIHsK IAljb25zdCB1aW50MzJfdCBtaV9hcmJfY2hrID0gMHg1IDw8IDIzOwogCisJaWYgKHNwaW4tPnJ1 bm5pbmcpIHsKKwkJaWd0X2Fzc2VydCgqc3Bpbi0+cnVubmluZyk7CisJCSpzcGluLT5ydW5uaW5n ID0gMDsKKwl9CisJaWd0X2Fzc2VydF9lcSgqc3Bpbi0+YmF0Y2gsIE1JX0JBVENIX0JVRkZFUl9F TkQpOwogICAgICAgICpzcGluLT5iYXRjaCA9IG1pX2FyYl9jaGs7CiAgICAgICAgX19zeW5jX3N5 bmNocm9uaXplKCk7CiB9CkBAIC0xNTE3LDcgKzE1NzksNiBAQCBhY2N1cmFjeShpbnQgZ2VtX2Zk LCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWNvbnN0IHVuc2ln bmVkIGxvbmcgdGltZW91dFtdID0gewogCQkJcHdtX2NhbGlicmF0aW9uX3VzICogMTAwMCwgdGVz dF91cyAqIDEwMDAKIAkJfTsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2Jq ID0ge307CiAJCXVpbnQ2NF90IHRvdGFsX2J1c3lfbnMgPSAwLCB0b3RhbF9pZGxlX25zID0gMDsK IAkJaWd0X3NwaW5fdCAqc3BpbjsKIAkJaW50IHJldDsKQEAgLTE1MzAsMTIgKzE1OTEsOSBAQCBh Y2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCiAJCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHNldCBzY2hlZHVsaW5nIHBvbGljeSFcbiIpOwog CiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlzcGluID0g aWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQlv YmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwg Jm9iaiwgZSk7IC8qIHJlY29yZCBpdHMgbG9jYXRpb24gKi8KKwkJc3BpbiA9IHNwaW5fc3luYyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4p OwotCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOwotCQlvYmouZmxhZ3MgfD0gRVhFQ19P QkpFQ1RfUElOTkVEOworCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKIAkJLyog MXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLwogCQlm b3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZX1NJWkUodGltZW91dCk7IHBhc3MrKykgewpA QCAtMTU0NSwyNCArMTYwMywzMCBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAKIAkJCWlndF9uc2VjX2VsYXBzZWQoJnRlc3Rf c3RhcnQpOwogCQkJZG8gewotCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91cywgdF9idXN5 OworCQkJCXVuc2lnbmVkIGludCB0YXJnZXRfaWRsZV91czsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMg c3RhcnQgPSB7IH07CisJCQkJdW5zaWduZWQgbG9uZyBwcmVwX2RlbGF5X25zOwogCiAJCQkJLyog UmVzdGFydCB0aGUgc3BpbmJhdGNoLiAqLworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsK IAkJCQlfX3JlYXJtX3NwaW5fYmF0Y2goc3Bpbik7Ci0JCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChn ZW1fZmQsICZvYmosIGUpOworCQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBl KTsKIAotCQkJCS8qCi0JCQkJICogTm90ZSB0aGF0IHRoZSBzdWJtaXNzaW9uIG1heSBiZSBkZWxh eWVkIHRvIGEKLQkJCQkgKiB0YXNrbGV0IChrc29mdGlycWQpIHdoaWNoIGNhbm5vdCBydW4gdW50 aWwgd2UKLQkJCQkgKiBzbGVlcCBhcyB3ZSBob2cgdGhlIGNwdSAod2UgYXJlIFJUKS4KLQkJCQkg Ki8KKwkJCQkgLyogV2FpdCBmb3IgYmF0Y2ggdG8gc3RhcnQgZXhlY3V0aW5nLiAqLworCQkJCV9f c3Bpbl93YWl0KGdlbV9mZCwgc3Bpbik7CisJCQkJcHJlcF9kZWxheV9ucyA9IGlndF9uc2VjX2Vs YXBzZWQoJnN0YXJ0KTsKIAotCQkJCXRfYnVzeSA9IG1lYXN1cmVkX3VzbGVlcChidXN5X3VzKTsK KwkJCQkvKiBQV00gYnVzeSBzbGVlcC4gKi8KKwkJCQltZW1zZXQoJnN0YXJ0LCAwLCBzaXplb2Yo c3RhcnQpKTsKKwkJCQlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisJCQkJbWVhc3VyZWRfdXNs ZWVwKGJ1c3lfdXMpOwogCQkJCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1fc3lu YyhnZW1fZmQsIG9iai5oYW5kbGUpOworCQkJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxl KTsKIAotCQkJCXRvdGFsX2J1c3lfbnMgKz0gdF9idXN5OworCQkJCXRvdGFsX2J1c3lfbnMgKz0g aWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCQkJCXRvdGFsX2lkbGVfbnMgKz0gcHJlcF9kZWxh eV9uczsKIAorCQkJCS8qIFJlLWNhbGlicmF0ZS4gKi8KIAkJCQl0YXJnZXRfaWRsZV91cyA9CiAJ CQkJCSgxMDAgKiB0b3RhbF9idXN5X25zIC8gdGFyZ2V0X2J1c3lfcGN0IC0gKHRvdGFsX2J1c3lf bnMgKyB0b3RhbF9pZGxlX25zKSkgLyAxMDAwOwogCQkJCXRvdGFsX2lkbGVfbnMgKz0gbWVhc3Vy ZWRfdXNsZWVwKHRhcmdldF9pZGxlX3VzKTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==