From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 16 Mar 2018 13:31:36 +0000 Message-Id: <20180316133136.25569-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180316121813.24864-1-tvrtko.ursulin@linux.intel.com> References: <20180316121813.24864-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t v6] tests/perf_pmu: Improve accuracy by waiting on spinner to start List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk1vcmUgdGhh biBvbmUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIHNwaW5uZXIgaXMgcnVubmluZyBwcmV0dHkgbXVj aAppbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIGNyZWF0ZSBvciBzdWJtaXR0ZWQgaXQuCgpJbiBh Y3R1YWxpdHkgdGhlcmUgaXMgYSB2YXJpYWJsZSBkZWxheSwgZXNwZWNpYWxseSBvbiBleGVjbGlz dHMgcGxhdGZvcm1zLApiZXR3ZWVuIHN1Ym1pc3Npb24gYW5kIHNwaW4gYmF0Y2ggc3RhcnRpbmcg dG8gcnVuIG9uIHRoZSBoYXJkd2FyZS4KClRvIGVuYWJsZSB0ZXN0cyB3aGljaCBjYXJlIGFib3V0 IHRoaXMgbGV2ZWwgb2YgdGltaW5nIHRvIGFjY291bnQgZm9yIHRoaXMsCndlIGFkZCBhIG5ldyBz cGluIGJhdGNoIGNvbnN0cnVjdG9yIHdoaWNoIHByb3ZpZGVzIGFuIG91dHB1dCBmaWVsZCB3aGlj aApjYW4gYmUgcG9sbGVkIHRvIGRldGVybWluZSB3aGVuIHRoZSBiYXRjaCBhY3R1YWxseSBzdGFy dGVkIHJ1bm5pbmcuCgpUaGlzIGlzIGltcGxlbWVudGVkIHZpYSBNSV9TVE9SRURXX0lNTSBmcm9t IHRoZSBzcGluIGJhdGNoLCB3cml0aW5nIGludG8KbWVtb3J5IG1hcHBlZCBwYWdlIHNoYXJlZCB3 aXRoIHVzZXJzcGFjZS4KClVzaW5nIHRoaXMgZmFjaWxpdHkgZnJvbSBwZXJmX3BtdSwgd2hlcmUg YXBwbGljYWJsZSwgc2hvdWxkIGltcHJvdmUgdmVyeQpvY2Nhc2lvbmFsIHRlc3QgZmFpbHMgYWNy b3NzIHRoZSBzZXQgYW5kIHBsYXRmb3Jtcy4KCnYyOgogQ2hyaXMgV2lsc29uOgogKiBVc2UgY2Fj aGluZyBtYXBwaW5nIGlmIGF2YWlsYWJsZS4KICogSGFuZGxlIG9sZCBnZW5zIGJldHRlci4KICog VXNlIGdlbV9jYW5fc3RvcmVfZHdvcmQuCiAqIENhY2hlIGV4ZWMgb2JqIGFycmF5IGluIHNwaW5f YmF0Y2hfdCBmb3IgZWFzaWVyIHJlc3VibWl0LgoKdjM6CiAqIEZvcmdvdCBJOTE1X0VYRUNfTk9f UkVMT0MuIChDaHJpcyBXaWxzb24pCgp2NDoKICogTWFzayBvdXQgYWxsIG5vbi1lbmdpbmUgZmxh Z3MgaW4gZ2VtX2Nhbl9zdG9yZV9kd29yZC4KICogQWRkZWQgc29tZSBkZWJ1ZyBsb2dnaW5nLgoK djU6CiAqIEZpeCByZWxvY3MgYW5kIGJhdGNoIG11bm1hcC4gKENocmlzKQogKiBBZGRlZCBhc3Nl cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKdjY6CiAqIFNraXAgYWNj dXJhY3kgdGVzdHMgd2hlbiAhZ2VtX2Nhbl9zdG9yZV9kd29yZC4KClNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClN1Z2dlc3RlZC1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL2lndF9kdW1teWxv YWQuYyAgfCAxNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQog bGliL2lndF9kdW1teWxvYWQuaCAgfCAgMTEgKysrKwogbGliL2lndF9ndC5jICAgICAgICAgfCAg IDIgKy0KIGxpYi9pb2N0bF93cmFwcGVycy5jIHwgICAyICstCiBsaWIvaW9jdGxfd3JhcHBlcnMu aCB8ICAgMSArCiB0ZXN0cy9wZXJmX3BtdS5jICAgICB8IDE3OSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMjY2IGlu c2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXls b2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCmluZGV4IDRiMjBmMjNkZmUyNi4uMjQ2Mjc3MTI5 MWE2IDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBiL2xpYi9pZ3RfZHVtbXls b2FkLmMKQEAgLTc0LDE2ICs3NCwxOSBAQCBmaWxsX3JlbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCiAJcmVsb2MtPndyaXRlX2RvbWFpbiA9IHdyaXRlX2Rv bWFpbnM7CiB9CiAKLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAq c3BpbiwKLQkJCQlpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLAotCQkJCXVp bnQzMl90IGRlcCwgYm9vbCBvdXRfZmVuY2UpCisjZGVmaW5lIE9VVF9GRU5DRQkoMSA8PCAwKQor I2RlZmluZSBQT0xMX1JVTgkoMSA8PCAxKQorCitzdGF0aWMgaW50CitlbWl0X3JlY3Vyc2l2ZV9i YXRjaChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5n aW5lLAorCQkgICAgIHVpbnQzMl90IGRlcCwgdW5zaWduZWQgaW50IGZsYWdzKQogewogI2RlZmlu ZSBTQ1JBVENIIDAKICNkZWZpbmUgQkFUQ0ggMQogCWNvbnN0IGludCBnZW4gPSBpbnRlbF9nZW4o aW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmpl Y3QyIG9ialsyXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2Nz WzJdOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyICpvYmo7CiAJdW5zaWduZWQgaW50IGVuZ2luZXNbMTZdOwogCXVuc2lnbmVk IGludCBuZW5naW5lOwogCWludCBmZW5jZV9mZCA9IC0xOwpAQCAtMTAxLDggKzEwNCwxMCBAQCBz dGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJfQogCWln dF9yZXF1aXJlKG5lbmdpbmUpOwogCi0JbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1 ZikpOwotCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwltZW1zZXQoJnNwaW4tPmV4ZWNi dWYsIDAsIHNpemVvZihzcGluLT5leGVjYnVmKSk7CisJZXhlY2J1ZiA9ICZzcGluLT5leGVjYnVm OworCW1lbXNldChzcGluLT5vYmosIDAsIHNpemVvZihzcGluLT5vYmopKTsKKwlvYmogPSBzcGlu LT5vYmo7CiAJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykpOwogCiAJb2JqW0JBVENI XS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCQVRDSF9TSVpFKTsKQEAgLTExMywxNiArMTE4LDYy IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwKIAkJ CQkgICAgICAgCUJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwogCWdlbV9zZXRfZG9tYWluKGZkLCBv YmpbQkFUQ0hdLmhhbmRsZSwKIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJ Tl9HVFQpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50Kys7CisJZXhlY2J1Zi0+YnVmZmVyX2NvdW50 Kys7CiAKIAlpZiAoZGVwKSB7CisJCWlndF9hc3NlcnQoIShmbGFncyAmIFBPTExfUlVOKSk7CisK IAkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwogCQlvYmpbU0NSQVRDSF0uaGFuZGxl ID0gZGVwOwogCQlmaWxsX3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5yZWxvY2F0aW9uX2NvdW50 KytdLAogCQkJICAgZGVwLCAxMDIwLAogCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKIAkJ CSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwotCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCsrOwor CQlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwl9IGVsc2UgaWYgKGZsYWdzICYgUE9MTF9SVU4p IHsKKwkJdW5zaWduZWQgaW50IG9mZnNldDsKKworCQlpZ3RfYXNzZXJ0KCFkZXApOworCisJCWlm IChnZW4gPT0gNCB8fCBnZW4gPT0gNSkKKwkJCWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVfRVhFQ19T RUNVUkU7CisKKwkJc3Bpbi0+cG9sbF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwor CQlpZiAoX19nZW1fc2V0X2NhY2hpbmcoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCSAgICAg IEk5MTVfQ0FDSElOR19DQUNIRUQpID09IDApCisJCQlzcGluLT5ydW5uaW5nID0gX19nZW1fbW1h cF9fY3B1KGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCQkwLCA0MDk2LAorCQkJCQkJCVBS T1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQllbHNlCisJCQlzcGluLT5ydW5uaW5nID0gX19nZW1f bW1hcF9fd2MoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCQkJICAgICAgIDAsIDQwOTYsCisJ CQkJCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJCWlndF9hc3NlcnQoc3Bpbi0+ cnVubmluZyk7CisJCWlndF9hc3NlcnRfZXEoKnNwaW4tPnJ1bm5pbmcsIDApOworCisJCSpiYXRj aCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CisKKwkJ aWYgKGdlbiA+PSA4KSB7CisJCQlvZmZzZXQgPSAxOworCQkJKmJhdGNoKysgPSAwOworCQkJKmJh dGNoKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7CisJCQlvZmZzZXQgPSAyOworCQkJ KmJhdGNoKysgPSAwOworCQkJKmJhdGNoKysgPSAwOworCQl9IGVsc2UgeworCQkJb2Zmc2V0ID0g MTsKKwkJCWJhdGNoWy0xXS0tOworCQkJKmJhdGNoKysgPSAwOworCQl9CisKKwkJKmJhdGNoKysg PSAxOworCisJCW9ialtTQ1JBVENIXS5oYW5kbGUgPSBzcGluLT5wb2xsX2hhbmRsZTsKKwkJZmls bF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrXSwKKwkJCSAgIHNw aW4tPnBvbGxfaGFuZGxlLCBvZmZzZXQsIDAsIDApOworCQlleGVjYnVmLT5idWZmZXJfY291bnQr KzsKIAl9CiAKIAlzcGluLT5iYXRjaCA9IGJhdGNoOwpAQCAtMTY3LDE4ICsyMTgsMjMgQEAgc3Rh dGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAogCW9ialtCQVRD SF0ucmVsb2NhdGlvbl9jb3VudCsrOwogCW9ialtCQVRDSF0ucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcihyZWxvY3MpOwogCi0JZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRl cihvYmogKyAoMiAtIGV4ZWNidWYuYnVmZmVyX2NvdW50KSk7Ci0JZXhlY2J1Zi5yc3ZkMSA9IGN0 eDsKKwlleGVjYnVmLT5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmogKworCQkJCQkg ICAgICAgKDIgLSBleGVjYnVmLT5idWZmZXJfY291bnQpKTsKKwlleGVjYnVmLT5yc3ZkMSA9IGN0 eDsKIAotCWlmIChvdXRfZmVuY2UpCi0JCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX0ZFTkNF X09VVDsKKwlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpCisJCWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVf RVhFQ19GRU5DRV9PVVQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7Ci0JCWV4 ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwotCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2luZXNb aV07Ci0JCWdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1Zik7Ci0JCWlmIChvdXRfZmVuY2UpIHsK LQkJCWludCBfZmQgPSBleGVjYnVmLnJzdmQyID4+IDMyOworCQlleGVjYnVmLT5mbGFncyAmPSB+ RU5HSU5FX01BU0s7CisJCWV4ZWNidWYtPmZsYWdzIHw9IGVuZ2luZXNbaV07CisKKwkJaWYgKGZs YWdzICYgUE9MTF9SVU4pCisJCQlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBl eGVjYnVmLT5mbGFncykpOworCisJCWdlbV9leGVjYnVmX3dyKGZkLCBleGVjYnVmKTsKKwkJaWYg KGZsYWdzICYgT1VUX0ZFTkNFKSB7CisJCQlpbnQgX2ZkID0gZXhlY2J1Zi0+cnN2ZDIgPj4gMzI7 CiAKIAkJCWlndF9hc3NlcnQoX2ZkID49IDApOwogCQkJaWYgKGZlbmNlX2ZkID09IC0xKSB7CkBA IC0xOTQsMTIgKzI1MCwyMCBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9z cGluX3QgKnNwaW4sCiAJCX0KIAl9CiAKKwkvKiBNYWtlIGl0IGVhc2llciBmb3IgY2FsbGVycyB0 byByZXN1Ym1pdC4gKi8KKworCW9ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCA9IDA7CisJb2Jq W0JBVENIXS5yZWxvY3NfcHRyID0gMDsKKworCW9ialtTQ1JBVENIXS5mbGFncyA9IEVYRUNfT0JK RUNUX1BJTk5FRDsKKwlvYmpbQkFUQ0hdLmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOworCiAJ cmV0dXJuIGZlbmNlX2ZkOwogfQogCiBzdGF0aWMgaWd0X3NwaW5fdCAqCiBfX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3Qg ZGVwLAotCQkgICAgICBpbnQgb3V0X2ZlbmNlKQorCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Mp CiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIApAQCAtMjA3LDcgKzI3MSw3IEBAIF9fX2lndF9zcGlu X2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJf dCBkZXAsCiAJaWd0X2Fzc2VydChzcGluKTsKIAogCXNwaW4tPm91dF9mZW5jZSA9IGVtaXRfcmVj dXJzaXZlX2JhdGNoKHNwaW4sIGZkLCBjdHgsIGVuZ2luZSwgZGVwLAotCQkJCQkgICAgICAgb3V0 X2ZlbmNlKTsKKwkJCQkJICAgICAgIGZsYWdzKTsKIAogCXB0aHJlYWRfbXV0ZXhfbG9jaygmbGlz dF9sb2NrKTsKIAlpZ3RfbGlzdF9hZGQoJnNwaW4tPmxpbmssICZzcGluX2xpc3QpOwpAQCAtMjE5 LDcgKzI4Myw3IEBAIF9fX2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwg dW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBkZXAsCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3NwaW5f YmF0Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQzMl90 IGRlcCkKIHsKLQlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwg ZGVwLCBmYWxzZSk7CisJcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBlbmdp bmUsIGRlcCwgMCk7CiB9CiAKIC8qKgpAQCAtMjUzLDcgKzMxNyw3IEBAIGlndF9zcGluX2JhdGNo X25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBkZXAp CiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWludDMy X3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCiB7Ci0JcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25l dyhmZCwgY3R4LCBlbmdpbmUsIDAsIHRydWUpOworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9u ZXcoZmQsIGN0eCwgZW5naW5lLCAwLCBPVVRfRkVOQ0UpOwogfQogCiAvKioKQEAgLTI4Niw2ICsz NTAsNDIgQEAgaWd0X3NwaW5fYmF0Y2hfbmV3X2ZlbmNlKGludCBmZCwgdWludDMyX3QgY3R4LCB1 bnNpZ25lZCBlbmdpbmUpCiAJcmV0dXJuIHNwaW47CiB9CiAKK2lndF9zcGluX3QgKgorX19pZ3Rf c3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5l KQoreworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZW5naW5lLCAwLCBQ T0xMX1JVTik7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGw6CisgKiBAZmQ6 IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAZW5naW5lOiBSaW5nIHRvIGV4ZWN1 dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKKyAqICAg ICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgorICoKKyAqIFN0 YXJ0IGEgcmVjdXJzaXZlIGJhdGNoIG9uIGEgcmluZy4gSW1tZWRpYXRlbHkgcmV0dXJucyBhICNp Z3Rfc3Bpbl90IHRoYXQKKyAqIGNvbnRhaW5zIHRoZSBiYXRjaCdzIGhhbmRsZSB0aGF0IGNhbiBi ZSB3YWl0ZWQgdXBvbi4gVGhlIHJldHVybmVkIHN0cnVjdHVyZQorICogbXVzdCBiZSBwYXNzZWQg dG8gaWd0X3NwaW5fYmF0Y2hfZnJlZSgpIGZvciBwb3N0LXByb2Nlc3NpbmcuCisgKgorICogaWd0 X3NwaW5fdC0+cnVubmluZyB3aWxsIGNvbnRhaW50IGEgcG9pbnRlciB3aGljaCB0YXJnZXQgd2ls bCBjaGFuZ2UgZnJvbQorICogemVybyB0byBvbmUgb25jZSB0aGUgc3Bpbm5lciBhY3R1YWxseSBz dGFydHMgZXhlY3V0aW5nIG9uIHRoZSBHUFUuCisgKgorICogUmV0dXJuczoKKyAqIFN0cnVjdHVy ZSB3aXRoIGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3IgaWd0X3NwaW5fYmF0Y2hfZnJlZSgpLgor ICovCitpZ3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwgdWludDMy X3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUpCit7CisJaWd0X3NwaW5fdCAqc3BpbjsKKworCWlndF9y ZXF1aXJlX2dlbShmZCk7CisJaWd0X3JlcXVpcmUoZ2VtX21tYXBfX2hhc193YyhmZCkpOworCisJ c3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoZmQsIGN0eCwgZW5naW5lKTsKKwlpZ3Rf YXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpKTsKKworCXJldHVybiBzcGluOwor fQorCiBzdGF0aWMgdm9pZCBub3RpZnkodW5pb24gc2lndmFsIGFyZykKIHsKIAlpZ3Rfc3Bpbl90 ICpzcGluID0gYXJnLnNpdmFsX3B0cjsKQEAgLTM2NSw3ICs0NjUsMTMgQEAgdm9pZCBpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKIAkJdGltZXJfZGVsZXRlKHNw aW4tPnRpbWVyKTsKIAogCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKLQlnZW1fbXVubWFwKHNw aW4tPmJhdGNoLCBCQVRDSF9TSVpFKTsKKwlnZW1fbXVubWFwKCh2b2lkICopKCh1bnNpZ25lZCBs b25nKXNwaW4tPmJhdGNoICYgKH40MDk1VUwpKSwKKwkJICAgQkFUQ0hfU0laRSk7CisKKwlpZiAo c3Bpbi0+cnVubmluZykgeworCQlnZW1fbXVubWFwKHNwaW4tPnJ1bm5pbmcsIDQwOTYpOworCQln ZW1fY2xvc2UoZmQsIHNwaW4tPnBvbGxfaGFuZGxlKTsKKwl9CiAKIAlnZW1fY2xvc2UoZmQsIHNw aW4tPmhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0 X2R1bW15bG9hZC5oCmluZGV4IDQxMDNlNGFiOWUzNi4uMzEwMzkzNWEzMDliIDEwMDY0NAotLS0g YS9saWIvaWd0X2R1bW15bG9hZC5oCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKQEAgLTM2LDYg KzM2LDEwIEBAIHR5cGVkZWYgc3RydWN0IGlndF9zcGluIHsKIAlzdHJ1Y3QgaWd0X2xpc3QgbGlu azsKIAl1aW50MzJfdCAqYmF0Y2g7CiAJaW50IG91dF9mZW5jZTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiBleGVjYnVmOworCXVpbnQzMl90IHBvbGxfaGFuZGxlOworCWJvb2wgKnJ1bm5pbmc7CiB9IGln dF9zcGluX3Q7CiAKIGlndF9zcGluX3QgKl9faWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwKQEAg LTU1LDYgKzU5LDEzIEBAIGlndF9zcGluX3QgKmlndF9zcGluX2JhdGNoX25ld19mZW5jZShpbnQg ZmQsCiAJCQkJICAgICB1aW50MzJfdCBjdHgsCiAJCQkJICAgICB1bnNpZ25lZCBlbmdpbmUpOwog CitpZ3Rfc3Bpbl90ICpfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwKKwkJCQkgICAg ICAgdWludDMyX3QgY3R4LAorCQkJCSAgICAgICB1bnNpZ25lZCBlbmdpbmUpOworaWd0X3NwaW5f dCAqaWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLAorCQkJCSAgICB1aW50MzJfdCBjdHgs CisJCQkJICAgIHVuc2lnbmVkIGVuZ2luZSk7CisKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfc2V0X3Rp bWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucyk7CiB2b2lkIGlndF9zcGluX2JhdGNo X2VuZChpZ3Rfc3Bpbl90ICpzcGluKTsKIHZvaWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQgZmQs IGlndF9zcGluX3QgKnNwaW4pOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2lndF9n dC5jCmluZGV4IDAxYWViYzY3MDg2Mi4uNDU2OWZkMzZiZDg1IDEwMDY0NAotLS0gYS9saWIvaWd0 X2d0LmMKKysrIGIvbGliL2lndF9ndC5jCkBAIC02MDksNyArNjA5LDcgQEAgYm9vbCBnZW1fY2Fu X3N0b3JlX2R3b3JkKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSkKIAlpZiAoZ2VuID09IDMg JiYgKGluZm8tPmlzX2dyYW50c2RhbGUgfHwgaW5mby0+aXNfYWx2aXNvKSkKIAkJcmV0dXJuIGZh bHNlOyAvKiBvbmx5IHN1cHBvcnRzIHBoeXNpY2FsIGFkZHJlc3NlcyAqLwogCi0JaWYgKGdlbiA9 PSA2ICYmIChlbmdpbmUgJiB+KDM8PDEzKSkgPT0gSTkxNV9FWEVDX0JTRCkKKwlpZiAoZ2VuID09 IDYgJiYgKChlbmdpbmUgJiAweDNmKSA9PSBJOTE1X0VYRUNfQlNEKSkKIAkJcmV0dXJuIGZhbHNl OyAvKiBraWxscyB0aGUgbWFjaGluZSEgKi8KIAogCWlmIChpbmZvLT5pc19icm9hZHdhdGVyKQpk aWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmMgYi9saWIvaW9jdGxfd3JhcHBlcnMuYwpp bmRleCA4NzQ4Y2ZjZmMwNGYuLjRlMWEwOGJmMDZiNCAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dy YXBwZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKQEAgLTE5OCw3ICsxOTgsNyBAQCB2 b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB0aWxp bmcsIHVpbnQzMl90IHN0cmlkZSkKIAlpZ3RfYXNzZXJ0KF9fZ2VtX3NldF90aWxpbmcoZmQsIGhh bmRsZSwgdGlsaW5nLCBzdHJpZGUpID09IDApOwogfQogCi1zdGF0aWMgaW50IF9fZ2VtX3NldF9j YWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5nKQoraW50IF9f Z2VtX3NldF9jYWNoaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5n KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyBhcmc7CiAJaW50IGVycjsKZGlmZiAt LWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5kZXgg MTNmYmUzYzEwM2MwLi5iOTY2ZjcyYzkwYTggMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFwcGVy cy5oCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCkBAIC02MSw2ICs2MSw3IEBAIGJvb2wgZ2Vt X2dldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90ICp0aWxpbmcsIHVp bnQzMl90ICpzd2l6emxlCiB2b2lkIGdlbV9zZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFu ZGxlLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IHN0cmlkZSk7CiBpbnQgX19nZW1fc2V0X3Rp bGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgdGlsaW5nLCB1aW50MzJfdCBz dHJpZGUpOwogCitpbnQgX19nZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IHVpbnQzMl90IGNhY2hpbmcpOwogdm9pZCBnZW1fc2V0X2NhY2hpbmcoaW50IGZkLCB1aW50MzJf dCBoYW5kbGUsIHVpbnQzMl90IGNhY2hpbmcpOwogdWludDMyX3QgZ2VtX2dldF9jYWNoaW5nKGlu dCBmZCwgdWludDMyX3QgaGFuZGxlKTsKIHVpbnQzMl90IGdlbV9mbGluayhpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9w bXUuYwppbmRleCAxOWZjYzk1ZmZjN2YuLjg3ODc1ZmI5ZTA2YSAxMDA2NDQKLS0tIGEvdGVzdHMv cGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0xNzAsNiArMTcwLDU2IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgZTJyaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKICNkZWZpbmUgRkxBR19MT05HICgxNikKICNkZWZpbmUgRkxB R19IQU5HICgzMikKIAorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVp bnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9k d29yZChmZCwgZmxhZ3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChmZCwg Y3R4LCBmbGFncyk7CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0 eCwgZmxhZ3MsIDApOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChpbnQg ZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJc3RydWN0IHRpbWVzcGVjIHN0YXJ0ID0geyB9Owor CisJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQo ZmQsIHNwaW4tPmV4ZWNidWYuZmxhZ3MpKSB7CisJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IDA7 CisKKwkJd2hpbGUgKCFzcGluLT5ydW5uaW5nKSB7CisJCQl1bnNpZ25lZCBsb25nIHQgPSBpZ3Rf bnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmICgodCAtIHRpbWVvdXQpID4gMjUwZTYpIHsK KwkJCQl0aW1lb3V0ID0gdDsKKwkJCQlpZ3Rfd2FybigiU3Bpbm5lciBub3QgcnVubmluZyBhZnRl ciAlLjJmbXNcbiIsCisJCQkJCSAoZG91YmxlKXQgLyAxZTYpOworCQkJfQorCQl9OworCX0gZWxz ZSB7CisJCWlndF9kZWJ1ZygiX19zcGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVzbGVl cCg1MDBlMyk7IC8qIEJldHRlciB0aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGlndF9u c2VjX2VsYXBzZWQoJnN0YXJ0KTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3lu YyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3Rfc3Bp bl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCisJX19zcGluX3dhaXQo ZmQsIHNwaW4pOworCisJcmV0dXJuIHNwaW47Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bp bl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWln dF9yZXF1aXJlX2dlbShmZCk7CisKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxhZ3Mp OworfQorCiBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4sIHVu c2lnbmVkIGludCBmbGFncykKIHsKIAlpZiAoIXNwaW4pCkBAIC0xODAsOCArMjMwLDI1IEBAIHN0 YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50 IGZsYWdzKQogCWlmIChmbGFncyAmIEZMQUdfU1lOQykKIAkJZ2VtX3N5bmMoZmQsIHNwaW4tPmhh bmRsZSk7CiAKLQlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCi0JCXVzbGVlcChiYXRj aF9kdXJhdGlvbl9ucyAvIDUwMDApOworCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkg eworCQl1bnNpZ25lZCBsb25nIHQsIHRpbWVvdXQgPSAwOworCQlzdHJ1Y3QgdGltZXNwZWMgc3Rh cnQgPSB7IH07CisKKwkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJCWRvIHsKKwkJCXQg PSBpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwkJCWlmIChnZW1fYm9fYnVzeShmZCwgc3Bp bi0+aGFuZGxlKSAmJgorCQkJICAgICh0IC0gdGltZW91dCkgPiAxMGU2KSB7CisJCQkJdGltZW91 dCA9IHQ7CisJCQkJaWd0X3dhcm4oIlNwaW5uZXIgbm90IGlkbGUgYWZ0ZXIgJS4yZm1zXG4iLAor CQkJCQkgKGRvdWJsZSl0IC8gMWU2KTsKKwkJCX0KKworCQkJdXNsZWVwKDFlMyk7CisJCX0gd2hp bGUgKHQgPCBiYXRjaF9kdXJhdGlvbl9ucyAvIDUpOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAg LTE5NSw3ICsyNjIsNyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJ OTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChmbGFn cyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUy cmluZyhnZW1fZmQsIGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpKTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC0yNTEsMTMgKzMxOCw3 IEBAIGJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplKQogCSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hf bmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCi0JLyoKLQkgKiBTbGVlcCBm b3IgYSBiaXQgYWZ0ZXIgbWFraW5nIHRoZSBlbmdpbmUgYnVzeSB0byBtYWtlIHN1cmUgdGhlIFBN VQotCSAqIGdldHMgZW5hYmxlZCB3aGVuIHRoZSBiYXRjaCBpcyBhbHJlYWR5IHJ1bm5pbmcuCi0J ICovCi0JdXNsZWVwKDUwMGUzKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJp bmcoZ2VtX2ZkLCBlKSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUt PmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCkBAIC0zMDAsNyArMzYxLDcgQEAgYnVzeV9kb3VibGVf c3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQogCSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVz cyBpcyBjb3JyZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFm dGVyIHRoZSBlbmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX2lndF9zcGluX2Jh dGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluWzBdID0gX19z cGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJdXNsZWVwKDUwMGUzKTsK IAlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHgsIGUycmluZyhnZW1f ZmQsIGUpLCAwKTsKIApAQCAtMzg2LDcgKzQ0Nyw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9hc3Nl cnRfZXEoaSwgbnVtX2VuZ2luZXMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwg MCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5naW5l cywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMg LyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00MTIsMTUgKzQ3 MywxMyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUsCiB9CiAKIHN0YXRpYyB2b2lkCi1fX3N1Ym1pdF9zcGluX2JhdGNo KGludCBnZW1fZmQsCi0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2Jq LAorX19zdWJtaXRfc3Bpbl9iYXRjaChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAogCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogewotCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7Ci0JCS5idWZmZXJfY291bnQgPSAxLAotCQku YnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKSwKLQkJLmZsYWdzID0gZTJyaW5nKGdl bV9mZCwgZSksCi0JfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gc3Bp bi0+ZXhlY2J1ZjsKKworCWViLmZsYWdzICY9IH4oMHgzZiB8IEk5MTVfRVhFQ19CU0RfTUFTSyk7 CisJZWIuZmxhZ3MgfD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7CiAK IAlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CiB9CkBAIC00MjksNyArNDg4LDYgQEAgc3RhdGlj IHZvaWQKIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdp bmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgb2JqID0ge307CiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl XzsKIAl1aW50NjRfdCB0dmFsWzJdW251bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2Vu Z2luZXNdOwpAQCAtNDQzLDE1ICs1MDEsMTIgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmICghZ2Vt X2hhc19lbmdpbmUoZ2VtX2ZkLCBlXy0+Y2xhc3MsIGVfLT5pbnN0YW5jZSkpCiAJCQljb250aW51 ZTsKIAotCQlpZiAoZSA9PSBlXykgeworCQlpZiAoZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0gaTsK LQkJfSBlbHNlIGlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9i aiwgZV8pOwotCQl9IGVsc2UgewotCQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQs IDAsCi0JCQkJCQkgIGUycmluZyhnZW1fZmQsIGVfKSwgMCk7Ci0JCQlvYmouaGFuZGxlID0gc3Bp bi0+aGFuZGxlOwotCQl9CisJCWVsc2UgaWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2JhdGNo KGdlbV9mZCwgc3BpbiwgZV8pOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2Zk LCAwLCBlMnJpbmcoZ2VtX2ZkLCBlXykpOwogCiAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5F X0JVU1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwogCX0KQEAgLTQ2MSw2ICs1MTYsOSBAQCBt b3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSwKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJZmRb aV0gPSBvcGVuX2dyb3VwKHZhbFtpXSwgZmRbMF0pOwogCisJLyogU21hbGwgZGVsYXkgdG8gYWxs b3cgZW5naW5lcyB0byBzdGFydC4gKi8KKwl1c2xlZXAoX19zcGluX3dhaXQoZ2VtX2ZkLCBzcGlu KSAqIG51bV9lbmdpbmVzIC8gMWUzKTsKKwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5n aW5lcywgdHZhbFswXSk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25f bnMgLyAxMDAwKTsKIAlpZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00ODksNyAr NTQ3LDYgQEAgc3RhdGljIHZvaWQKIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25z dCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCSAgIHVuc2lnbmVkIGludCBmbGFncykKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAljb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5n aW5lc107CiAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKQEAgLTUwMywxMyArNTYwLDEwIEBA IGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2Vu Z2luZXMsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5zdGFu Y2UpKQogCQkJY29udGludWU7CiAKLQkJaWYgKHNwaW4pIHsKLQkJCV9fc3VibWl0X3NwaW5fYmF0 Y2goZ2VtX2ZkLCAmb2JqLCBlKTsKLQkJfSBlbHNlIHsKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRj aF9uZXcoZ2VtX2ZkLCAwLAotCQkJCQkJICBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7Ci0JCQlvYmou aGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWlmIChzcGluKQorCQkJX19zdWJtaXRfc3Bp bl9iYXRjaChnZW1fZmQsIHNwaW4sIGUpOworCQllbHNlCisJCQlzcGluID0gX19zcGluX3BvbGwo Z2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAKIAkJdmFsW2krK10gPSBJOTE1X1BNVV9F TkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwogCX0KQEAgLTUxOSw2ICs1NzMsOSBA QCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLAogCWZvciAoaSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQogCQlmZFtpXSA9IG9w ZW5fZ3JvdXAodmFsW2ldLCBmZFswXSk7CiAKKwkvKiBTbWFsbCBkZWxheSB0byBhbGxvdyBlbmdp bmVzIHRvIHN0YXJ0LiAqLworCXVzbGVlcChfX3NwaW5fd2FpdChnZW1fZmQsIHNwaW4pICogbnVt X2VuZ2luZXMgLyAxZTMpOworCiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0 dmFsWzBdKTsKIAlzbGVwdCA9IG1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEw MDApOwogCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkKQEAgLTU1MCw3ICs2MDcsNyBA QCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCW9wZW5fZ3JvdXAoSTkxNV9QTVVfRU5HSU5FX1dB SVQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwgZmQpOwogCiAJaWYgKGZsYWdzICYgVEVTVF9CVVNZ KQotCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZSksIDApOworCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkp OwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTg4NCw3ICs5NDEsNyBAQCBtdWx0aV9jbGll bnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqLwogCWZkWzFdID0gb3Blbl9wbXUoY29uZmlnKTsKIAotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRj aF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJc3BpbiA9IHNwaW5fc3lu YyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIAogCXZhbFswXSA9IHZhbFsxXSA9IF9f cG11X3JlYWRfc2luZ2xlKGZkWzBdLCAmdHNbMF0pOwogCXNsZXB0WzFdID0gbWVhc3VyZWRfdXNs ZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xMjQ4LDcgKzEzMDUsNyBAQCB0ZXN0 X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5 c2ZzLCAiZ3RfYm9vc3RfZnJlcV9taHoiKSA9PSBtaW5fZnJlcSk7CiAKIAlnZW1fcXVpZXNjZW50 X2dwdShnZW1fZmQpOyAvKiBJZGxlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSB0YWtlcyBlZmZlY3Qg Ki8KLQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRF UiwgMCk7CisJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIpOwog CiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVl cChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTI3NCw3ICsxMzMxLDcgQEAgdGVzdF9m cmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0X3UzMihzeXNm cywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1 KGdlbV9mZCk7Ci0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIEk5MTVfRVhF Q19SRU5ERVIsIDApOworCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVO REVSKTsKIAogCXNsZXB0ID0gcG11X3JlYWRfbXVsdGkoZmQsIDIsIHN0YXJ0KTsKIAltZWFzdXJl ZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKQEAgLTE0NTUsNiArMTUxMiwxMSBA QCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKIHsKIAlj b25zdCB1aW50MzJfdCBtaV9hcmJfY2hrID0gMHg1IDw8IDIzOwogCisJaWYgKHNwaW4tPnJ1bm5p bmcpIHsKKwkJaWd0X2Fzc2VydCgqc3Bpbi0+cnVubmluZyk7CisJCSpzcGluLT5ydW5uaW5nID0g MDsKKwl9CisJaWd0X2Fzc2VydF9lcSgqc3Bpbi0+YmF0Y2gsIE1JX0JBVENIX0JVRkZFUl9FTkQp OwogICAgICAgICpzcGluLT5iYXRjaCA9IG1pX2FyYl9jaGs7CiAgICAgICAgX19zeW5jX3N5bmNo cm9uaXplKCk7CiB9CkBAIC0xNDg5LDYgKzE1NTEsOSBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJLyogU2FtcGxpbmcgcGxh dGZvcm1zIGNhbm5vdCByZWFjaCB0aGUgaGlnaCBhY2N1cmFjeSBjcml0ZXJpYS4gKi8KIAlpZ3Rf cmVxdWlyZShnZW1faGFzX2V4ZWNsaXN0cyhnZW1fZmQpKTsKIAorCS8qIE5lZWQgc3RvcmUgZHdv cmQgZm9yIGFjY3VyYXRlIFBXTS4gKi8KKwlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3Jk KGdlbV9mZCwgZTJyaW5nKGdlbV9mZCwgZSkpKTsKKwogCXdoaWxlIChpZGxlX3VzIDwgMjUwMCkg ewogCQlidXN5X3VzICo9IDI7CiAJCWlkbGVfdXMgKj0gMjsKQEAgLTE1MTcsNyArMTU4Miw2IEBA IGFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwKIAkJY29uc3QgdW5zaWduZWQgbG9uZyB0aW1lb3V0W10gPSB7CiAJCQlwd21fY2FsaWJy YXRpb25fdXMgKiAxMDAwLCB0ZXN0X3VzICogMTAwMAogCQl9OwotCQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7fTsKIAkJdWludDY0X3QgdG90YWxfYnVzeV9ucyA9IDAs IHRvdGFsX2lkbGVfbnMgPSAwOwogCQlpZ3Rfc3Bpbl90ICpzcGluOwogCQlpbnQgcmV0OwpAQCAt MTUzMCwxMiArMTU5NCw5IEBAIGFjY3VyYWN5KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJCWlndF93YXJuKCJGYWlsZWQgdG8gc2V0IHNjaGVk dWxpbmcgcG9saWN5IVxuIik7CiAKIAkJLyogQWxsb2NhdGUgb3VyIHNwaW4gYmF0Y2ggYW5kIGlk bGUgaXQuICovCi0JCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmco Z2VtX2ZkLCBlKSwgMCk7Ci0JCW9iai5oYW5kbGUgPSBzcGluLT5oYW5kbGU7Ci0JCV9fc3VibWl0 X3NwaW5fYmF0Y2goZ2VtX2ZkLCAmb2JqLCBlKTsgLyogcmVjb3JkIGl0cyBsb2NhdGlvbiAqLwor CQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwogCQlpZ3Rf c3Bpbl9iYXRjaF9lbmQoc3Bpbik7Ci0JCWdlbV9zeW5jKGdlbV9mZCwgb2JqLmhhbmRsZSk7Ci0J CW9iai5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCWdlbV9zeW5jKGdlbV9mZCwgc3Bp bi0+aGFuZGxlKTsKIAogCQkvKiAxc3QgcGFzcyBpcyBjYWxpYnJhdGlvbiwgc2Vjb25kIHBhc3Mg aXMgdGhlIHRlc3QuICovCiAJCWZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgQVJSQVlfU0laRSh0 aW1lb3V0KTsgcGFzcysrKSB7CkBAIC0xNTQ1LDI0ICsxNjA2LDMwIEBAIGFjY3VyYWN5KGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCQkJaWd0 X25zZWNfZWxhcHNlZCgmdGVzdF9zdGFydCk7CiAJCQlkbyB7Ci0JCQkJdW5zaWduZWQgaW50IHRh cmdldF9pZGxlX3VzLCB0X2J1c3k7CisJCQkJdW5zaWduZWQgaW50IHRhcmdldF9pZGxlX3VzOwor CQkJCXN0cnVjdCB0aW1lc3BlYyBzdGFydCA9IHsgfTsKKwkJCQl1bnNpZ25lZCBsb25nIHByZXBf ZGVsYXlfbnM7CiAKIAkJCQkvKiBSZXN0YXJ0IHRoZSBzcGluYmF0Y2guICovCisJCQkJaWd0X25z ZWNfZWxhcHNlZCgmc3RhcnQpOwogCQkJCV9fcmVhcm1fc3Bpbl9iYXRjaChzcGluKTsKLQkJCQlf X3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7CisJCQkJX19zdWJtaXRfc3Bpbl9i YXRjaChnZW1fZmQsIHNwaW4sIGUpOwogCi0JCQkJLyoKLQkJCQkgKiBOb3RlIHRoYXQgdGhlIHN1 Ym1pc3Npb24gbWF5IGJlIGRlbGF5ZWQgdG8gYQotCQkJCSAqIHRhc2tsZXQgKGtzb2Z0aXJxZCkg d2hpY2ggY2Fubm90IHJ1biB1bnRpbCB3ZQotCQkJCSAqIHNsZWVwIGFzIHdlIGhvZyB0aGUgY3B1 ICh3ZSBhcmUgUlQpLgotCQkJCSAqLworCQkJCSAvKiBXYWl0IGZvciBiYXRjaCB0byBzdGFydCBl eGVjdXRpbmcuICovCisJCQkJX19zcGluX3dhaXQoZ2VtX2ZkLCBzcGluKTsKKwkJCQlwcmVwX2Rl bGF5X25zID0gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwogCi0JCQkJdF9idXN5ID0gbWVhc3Vy ZWRfdXNsZWVwKGJ1c3lfdXMpOworCQkJCS8qIFBXTSBidXN5IHNsZWVwLiAqLworCQkJCW1lbXNl dCgmc3RhcnQsIDAsIHNpemVvZihzdGFydCkpOworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0 KTsKKwkJCQltZWFzdXJlZF91c2xlZXAoYnVzeV91cyk7CiAJCQkJaWd0X3NwaW5fYmF0Y2hfZW5k KHNwaW4pOwotCQkJCWdlbV9zeW5jKGdlbV9mZCwgb2JqLmhhbmRsZSk7CisJCQkJZ2VtX3N5bmMo Z2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCi0JCQkJdG90YWxfYnVzeV9ucyArPSB0X2J1c3k7CisJ CQkJdG90YWxfYnVzeV9ucyArPSBpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisJCQkJdG90YWxf aWRsZV9ucyArPSBwcmVwX2RlbGF5X25zOwogCisJCQkJLyogUmUtY2FsaWJyYXRlLiAqLwogCQkJ CXRhcmdldF9pZGxlX3VzID0KIAkJCQkJKDEwMCAqIHRvdGFsX2J1c3lfbnMgLyB0YXJnZXRfYnVz eV9wY3QgLSAodG90YWxfYnVzeV9ucyArIHRvdGFsX2lkbGVfbnMpKSAvIDEwMDA7CiAJCQkJdG90 YWxfaWRsZV9ucyArPSBtZWFzdXJlZF91c2xlZXAodGFyZ2V0X2lkbGVfdXMpOwotLSAKMi4xNC4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK