From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 3/3] tests/perf_pmu: Improve accuracy by waiting on spinner to start Date: Thu, 22 Mar 2018 17:24:17 +0000 Message-ID: <20180322172417.13414-3-tvrtko.ursulin@linux.intel.com> References: <20180322172417.13414-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C5076EC41 for ; Thu, 22 Mar 2018 17:24:33 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id 139so17658155wmn.2 for ; Thu, 22 Mar 2018 10:24:33 -0700 (PDT) In-Reply-To: <20180322172417.13414-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 cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKdjY6CiAqIFNraXAgYWNj dXJhY3kgdGVzdHMgd2hlbiAhZ2VtX2Nhbl9zdG9yZV9kd29yZC4KCnY3OgogKiBGaXggYmF0Y2gg cmVjdXJzaW9uIHJlbG9jIGFkZHJlc3MuCgp2ODoKIENocmlzIFdpbHNvbjoKICogUHVsbCB1cCBn ZW1fY2FuX3N0b3JlX2R3b3JkIGNoZWNrIGJlZm9yZSB3ZSBzdGFydCBzdWJtaXR0aW5nLgogKiBC dWlsZCBzcGlubmVyIGJhdGNoIGluIGEgd2F5IHdlIGNhbiBza2lwIHN0b3JlIGR3b3JkIHdoZW4g bm90CiAgIG5lZWRlZCBzbyB3ZSBjYW4gcnVuIG9uIFNhbmR5QnJpZGdlLgoKdjk6CiAqIEZpeCB3 YWl0IG9uIHNwaW5uZXIuCiAqIE1vcmUgdHdlYWtzIHRvIGFjY3VyYWN5IHRlc3QuCgp2MTA6CiAq IERyb3BwZWQgYWNjdXJhY3kgc3VidGVzdCBjaGFuZ2VzIGR1ZSBwcm9ibGVtcyB3aXRoIFJUIHRo cmVhZCBhbmQKICAgdGFza2xldCBzdWJtaXNzaW9uLgoKdjExOgogKiBVc2UgUkVBRF9PTkNFLgoK U2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K U3VnZ2VzdGVkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHY5Ci0t LQogdGVzdHMvcGVyZl9wbXUuYyB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0 cy9wZXJmX3BtdS5jCmluZGV4IDE5ZmNjOTVmZmM3Zi4uZjI3YjdlYzdkMmMyIDEwMDY0NAotLS0g YS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11LmMKQEAgLTE3MCw2ICsxNzAs NTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2Rl ZmluZSBGTEFHX0hBTkcgKDMyKQogCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGlu dCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlmIChnZW1fY2Fu X3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25ld19w b2xsKGZkLCBjdHgsIGZsYWdzKTsKKwllbHNlCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25l dyhmZCwgY3R4LCBmbGFncywgMCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93 YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQg PSB7IH07CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwlpZiAoc3Bpbi0+cnVubmlu ZykgeworCQl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSAwOworCisJCXdoaWxlICghUkVBRF9PTkNF KCpzcGluLT5ydW5uaW5nKSkgeworCQkJdW5zaWduZWQgbG9uZyB0ID0gaWd0X25zZWNfZWxhcHNl ZCgmc3RhcnQpOworCisJCQlpZiAoKHQgLSB0aW1lb3V0KSA+IDI1MGU2KSB7CisJCQkJdGltZW91 dCA9IHQ7CisJCQkJaWd0X3dhcm4oIlNwaW5uZXIgbm90IHJ1bm5pbmcgYWZ0ZXIgJS4yZm1zXG4i LAorCQkJCQkgKGRvdWJsZSl0IC8gMWU2KTsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCWlndF9k ZWJ1ZygiX19zcGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVzbGVlcCg1MDBlMyk7IC8q IEJldHRlciB0aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQo JnN0YXJ0KTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVp bnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluID0g X19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCisJX19zcGluX3dhaXQoZmQsIHNwaW4pOwor CisJcmV0dXJuIHNwaW47Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jKGludCBm ZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlndF9yZXF1aXJlX2dl bShmZCk7CisKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxhZ3MpOworfQorCiBzdGF0 aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBm bGFncykKIHsKIAlpZiAoIXNwaW4pCkBAIC0xODAsOCArMjMwLDI1IEBAIHN0YXRpYyB2b2lkIGVu ZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogCWlm IChmbGFncyAmIEZMQUdfU1lOQykKIAkJZ2VtX3N5bmMoZmQsIHNwaW4tPmhhbmRsZSk7CiAKLQlp ZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCi0JCXVzbGVlcChiYXRjaF9kdXJhdGlvbl9u cyAvIDUwMDApOworCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkgeworCQl1bnNpZ25l ZCBsb25nIHQsIHRpbWVvdXQgPSAwOworCQlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQgPSB7IH07CisK KwkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJCWRvIHsKKwkJCXQgPSBpZ3RfbnNlY19l bGFwc2VkKCZzdGFydCk7CisKKwkJCWlmIChnZW1fYm9fYnVzeShmZCwgc3Bpbi0+aGFuZGxlKSAm JgorCQkJICAgICh0IC0gdGltZW91dCkgPiAxMGU2KSB7CisJCQkJdGltZW91dCA9IHQ7CisJCQkJ aWd0X3dhcm4oIlNwaW5uZXIgbm90IGlkbGUgYWZ0ZXIgJS4yZm1zXG4iLAorCQkJCQkgKGRvdWJs ZSl0IC8gMWU2KTsKKwkJCX0KKworCQkJdXNsZWVwKDFlMyk7CisJCX0gd2hpbGUgKHQgPCBiYXRj aF9kdXJhdGlvbl9ucyAvIDUpOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTE5NSw3ICsyNjIs NyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJ TkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVT WSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQs IGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUp KTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC0yNTEsMTMgKzMxOCw3IEBAIGJ1c3lfc3Rh cnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwg MCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCi0JLyoKLQkgKiBTbGVlcCBmb3IgYSBiaXQgYWZ0 ZXIgbWFraW5nIHRoZSBlbmdpbmUgYnVzeSB0byBtYWtlIHN1cmUgdGhlIFBNVQotCSAqIGdldHMg ZW5hYmxlZCB3aGVuIHRoZSBiYXRjaCBpcyBhbHJlYWR5IHJ1bm5pbmcuCi0JICovCi0JdXNsZWVw KDUwMGUzKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBl KSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5p bnN0YW5jZSkpOwogCkBAIC0zMDAsNyArMzYxLDcgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqIHJlLXN1 Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBpcyBjb3JyZWN0 bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBlbmdp bmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJdXNsZWVwKDUwMGUzKTsKIAlzcGluWzFdID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHgsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsK IApAQCAtMzg2LDcgKzQ0Nyw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9hc3NlcnRfZXEoaSwgbnVt X2VuZ2luZXMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdl bV9mZCwgZSkpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5naW5lcywgdHZhbFswXSk7 CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKIAlp ZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00MTIsMTUgKzQ3MywxNSBAQCBidXN5 X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsCiB9CiAKIHN0YXRpYyB2b2lkCi1fX3N1Ym1pdF9zcGluX2JhdGNoKGludCBnZW1fZmQs Ci0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqLAotCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorX19zdWJtaXRfc3Bpbl9iYXRj aChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAorCQkgICAgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgICAgaW50IG9mZnNldCkKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewotCQkuYnVmZmVyX2NvdW50ID0gMSwKLQkJLmJ1 ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaiksCi0JCS5mbGFncyA9IGUycmluZyhnZW1f ZmQsIGUpLAotCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNwaW4t PmV4ZWNidWY7CisKKwllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0spOwor CWViLmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX05PX1JFTE9DOworCWVi LmJhdGNoX3N0YXJ0X29mZnNldCArPSBvZmZzZXQ7CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZl Yik7CiB9CkBAIC00MjksNyArNDkwLDYgQEAgc3RhdGljIHZvaWQKIG1vc3RfYnVzeV9jaGVja19h bGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAog CQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp CiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0ge307CiAJY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKIAl1aW50NjRfdCB0dmFsWzJdW251 bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2luZXNdOwpAQCAtNDQzLDE1ICs1MDMs MTIgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlXy0+ Y2xhc3MsIGVfLT5pbnN0YW5jZSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoZSA9PSBlXykgewor CQlpZiAoZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0gaTsKLQkJfSBlbHNlIGlmIChzcGluKSB7Ci0J CQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZV8pOwotCQl9IGVsc2UgewotCQkJ c3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsCi0JCQkJCQkgIGUycmluZyhnZW1f ZmQsIGVfKSwgMCk7Ci0JCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWVsc2Ug aWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsK KwkJZWxzZQorCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZV8pKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywgZV8t Pmluc3RhbmNlKTsKIAl9CkBAIC00NjEsNiArNTE4LDkgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJZm9y IChpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZkW2ldID0gb3Blbl9ncm91cCh2YWxb aV0sIGZkWzBdKTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFsbG93IGVuZ2luZXMgdG8gc3RhcnQu ICovCisJdXNsZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpbikgKiBudW1fZW5naW5lcyAvIDFl Myk7CisKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNs ZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZs YWdzICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNDg5LDcgKzU0OSw2IEBAIHN0YXRpYyB2b2lk CiBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLAogCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqID0ge307CiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZh bFtudW1fZW5naW5lc107CkBAIC01MDMsMTMgKzU2MiwxMCBAQCBhbGxfYnVzeV9jaGVja19hbGwo aW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCQlpZiAoIWdlbV9o YXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSkKIAkJCWNvbnRpbnVlOwog Ci0JCWlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7 Ci0JCX0gZWxzZSB7Ci0JCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKLQkJ CQkJCSAgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQkJb2JqLmhhbmRsZSA9IHNwaW4tPmhhbmRs ZTsKLQkJfQorCQlpZiAoc3BpbikKKwkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGlu LCBlLCA2NCk7CisJCWVsc2UKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNs YXNzLCBlLT5pbnN0YW5jZSk7CiAJfQpAQCAtNTE5LDYgKzU3NSw5IEBAIGFsbF9idXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJZm9yIChp ID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZkW2ldID0gb3Blbl9ncm91cCh2YWxbaV0s IGZkWzBdKTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFsbG93IGVuZ2luZXMgdG8gc3RhcnQuICov CisJdXNsZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpbikgKiBudW1fZW5naW5lcyAvIDFlMyk7 CisKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNsZXB0 ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZsYWdz ICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNTUwLDcgKzYwOSw3IEBAIG5vX3NlbWEoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJb3Blbl9ncm91cChJOTE1X1BNVV9FTkdJTkVfV0FJVChlLT5jbGFzcywgZS0+ aW5zdGFuY2UpLCBmZCk7CiAKIAlpZiAoZmxhZ3MgJiBURVNUX0JVU1kpCi0JCXNwaW4gPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJCXNwaW4g PSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJZWxzZQogCQlzcGlu ID0gTlVMTDsKIApAQCAtODg0LDcgKzk0Myw3IEBAIG11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJZmRbMV0gPSBv cGVuX3BtdShjb25maWcpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSkpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUo ZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKQEAgLTEyNDgsNyArMTMwNyw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBn ZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9m cmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8q IElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSLCAwKTsKKwlzcGluID0g c3Bpbl9zeW5jKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUik7CiAKIAlzbGVwdCA9IHBtdV9y ZWFkX211bHRpKGZkLCAyLCBzdGFydCk7CiAJbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9u X25zIC8gMTAwMCk7CkBAIC0xMjc0LDcgKzEzMzMsNyBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQgZ2Vt X2ZkKQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFf bWh6IikgPT0gbWF4X2ZyZXEpOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKLQlzcGlu ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUiwgMCk7CisJ c3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIpOwogCiAJc2xlcHQg PSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9k dXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTUxNyw3ICsxNTc2LDYgQEAgYWNjdXJhY3koaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQljb25zdCB1 bnNpZ25lZCBsb25nIHRpbWVvdXRbXSA9IHsKIAkJCXB3bV9jYWxpYnJhdGlvbl91cyAqIDEwMDAs IHRlc3RfdXMgKiAxMDAwCiAJCX07Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy IG9iaiA9IHt9OwogCQl1aW50NjRfdCB0b3RhbF9idXN5X25zID0gMCwgdG90YWxfaWRsZV9ucyA9 IDA7CiAJCWlndF9zcGluX3QgKnNwaW47CiAJCWludCByZXQ7CkBAIC0xNTMxLDExICsxNTg5LDgg QEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwog CQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSks IDApOwotCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNo KGdlbV9mZCwgJm9iaiwgZSk7IC8qIHJlY29yZCBpdHMgbG9jYXRpb24gKi8KIAkJaWd0X3NwaW5f YmF0Y2hfZW5kKHNwaW4pOwotCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOwotCQlvYmou ZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOworCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhh bmRsZSk7CiAKIAkJLyogMXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRo ZSB0ZXN0LiAqLwogCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZX1NJWkUodGltZW91 dCk7IHBhc3MrKykgewpAQCAtMTU0OSw3ICsxNjA0LDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJCQkJLyogUmVzdGFy dCB0aGUgc3BpbmJhdGNoLiAqLwogCQkJCV9fcmVhcm1fc3Bpbl9iYXRjaChzcGluKTsKLQkJCQlf X3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7CisJCQkJX19zdWJtaXRfc3Bpbl9i YXRjaChnZW1fZmQsIHNwaW4sIGUsIDApOwogCiAJCQkJLyoKIAkJCQkgKiBOb3RlIHRoYXQgdGhl IHN1Ym1pc3Npb24gbWF5IGJlIGRlbGF5ZWQgdG8gYQpAQCAtMTU1OSw3ICsxNjE0LDcgQEAgYWNj dXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LAogCiAJCQkJdF9idXN5ID0gbWVhc3VyZWRfdXNsZWVwKGJ1c3lfdXMpOwogCQkJCWlndF9zcGlu X2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOworCQkJ CWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxlKTsKIAogCQkJCXRvdGFsX2J1c3lfbnMgKz0g dF9idXN5OwogCi0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 22 Mar 2018 17:24:17 +0000 Message-Id: <20180322172417.13414-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180322172417.13414-1-tvrtko.ursulin@linux.intel.com> References: <20180322172417.13414-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t 3/3] tests/perf_pmu: Improve accuracy by waiting on spinner to start List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCk1vcmUgdGhh biBvbmUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIHNwaW5uZXIgaXMgcnVubmluZyBwcmV0dHkgbXVj aAppbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIGNyZWF0ZSBvciBzdWJtaXR0ZWQgaXQuCgpJbiBh Y3R1YWxpdHkgdGhlcmUgaXMgYSB2YXJpYWJsZSBkZWxheSwgZXNwZWNpYWxseSBvbiBleGVjbGlz dHMgcGxhdGZvcm1zLApiZXR3ZWVuIHN1Ym1pc3Npb24gYW5kIHNwaW4gYmF0Y2ggc3RhcnRpbmcg dG8gcnVuIG9uIHRoZSBoYXJkd2FyZS4KClRvIGVuYWJsZSB0ZXN0cyB3aGljaCBjYXJlIGFib3V0 IHRoaXMgbGV2ZWwgb2YgdGltaW5nIHRvIGFjY291bnQgZm9yIHRoaXMsCndlIGFkZCBhIG5ldyBz cGluIGJhdGNoIGNvbnN0cnVjdG9yIHdoaWNoIHByb3ZpZGVzIGFuIG91dHB1dCBmaWVsZCB3aGlj aApjYW4gYmUgcG9sbGVkIHRvIGRldGVybWluZSB3aGVuIHRoZSBiYXRjaCBhY3R1YWxseSBzdGFy dGVkIHJ1bm5pbmcuCgpUaGlzIGlzIGltcGxlbWVudGVkIHZpYSBNSV9TVE9SRURXX0lNTSBmcm9t IHRoZSBzcGluIGJhdGNoLCB3cml0aW5nIGludG8KbWVtb3J5IG1hcHBlZCBwYWdlIHNoYXJlZCB3 aXRoIHVzZXJzcGFjZS4KClVzaW5nIHRoaXMgZmFjaWxpdHkgZnJvbSBwZXJmX3BtdSwgd2hlcmUg YXBwbGljYWJsZSwgc2hvdWxkIGltcHJvdmUgdmVyeQpvY2Nhc2lvbmFsIHRlc3QgZmFpbHMgYWNy b3NzIHRoZSBzZXQgYW5kIHBsYXRmb3Jtcy4KCnYyOgogQ2hyaXMgV2lsc29uOgogKiBVc2UgY2Fj aGluZyBtYXBwaW5nIGlmIGF2YWlsYWJsZS4KICogSGFuZGxlIG9sZCBnZW5zIGJldHRlci4KICog VXNlIGdlbV9jYW5fc3RvcmVfZHdvcmQuCiAqIENhY2hlIGV4ZWMgb2JqIGFycmF5IGluIHNwaW5f YmF0Y2hfdCBmb3IgZWFzaWVyIHJlc3VibWl0LgoKdjM6CiAqIEZvcmdvdCBJOTE1X0VYRUNfTk9f UkVMT0MuIChDaHJpcyBXaWxzb24pCgp2NDoKICogTWFzayBvdXQgYWxsIG5vbi1lbmdpbmUgZmxh Z3MgaW4gZ2VtX2Nhbl9zdG9yZV9kd29yZC4KICogQWRkZWQgc29tZSBkZWJ1ZyBsb2dnaW5nLgoK djU6CiAqIEZpeCByZWxvY3MgYW5kIGJhdGNoIG11bm1hcC4gKENocmlzKQogKiBBZGRlZCBhc3Nl cnQgaWRsZSBzcGlubmVyIGJhdGNoIGxvb2tzIGFzIGV4cGVjdGVkLgoKdjY6CiAqIFNraXAgYWNj dXJhY3kgdGVzdHMgd2hlbiAhZ2VtX2Nhbl9zdG9yZV9kd29yZC4KCnY3OgogKiBGaXggYmF0Y2gg cmVjdXJzaW9uIHJlbG9jIGFkZHJlc3MuCgp2ODoKIENocmlzIFdpbHNvbjoKICogUHVsbCB1cCBn ZW1fY2FuX3N0b3JlX2R3b3JkIGNoZWNrIGJlZm9yZSB3ZSBzdGFydCBzdWJtaXR0aW5nLgogKiBC dWlsZCBzcGlubmVyIGJhdGNoIGluIGEgd2F5IHdlIGNhbiBza2lwIHN0b3JlIGR3b3JkIHdoZW4g bm90CiAgIG5lZWRlZCBzbyB3ZSBjYW4gcnVuIG9uIFNhbmR5QnJpZGdlLgoKdjk6CiAqIEZpeCB3 YWl0IG9uIHNwaW5uZXIuCiAqIE1vcmUgdHdlYWtzIHRvIGFjY3VyYWN5IHRlc3QuCgp2MTA6CiAq IERyb3BwZWQgYWNjdXJhY3kgc3VidGVzdCBjaGFuZ2VzIGR1ZSBwcm9ibGVtcyB3aXRoIFJUIHRo cmVhZCBhbmQKICAgdGFza2xldCBzdWJtaXNzaW9uLgoKdjExOgogKiBVc2UgUkVBRF9PTkNFLgoK U2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K U3VnZ2VzdGVkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHY5Ci0t LQogdGVzdHMvcGVyZl9wbXUuYyB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0 cy9wZXJmX3BtdS5jCmluZGV4IDE5ZmNjOTVmZmM3Zi4uZjI3YjdlYzdkMmMyIDEwMDY0NAotLS0g YS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11LmMKQEAgLTE3MCw2ICsxNzAs NTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBGTEFHX0xPTkcgKDE2KQogI2Rl ZmluZSBGTEFHX0hBTkcgKDMyKQogCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGlu dCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlmIChnZW1fY2Fu X3N0b3JlX2R3b3JkKGZkLCBmbGFncykpCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25ld19w b2xsKGZkLCBjdHgsIGZsYWdzKTsKKwllbHNlCisJCXJldHVybiBfX2lndF9zcGluX2JhdGNoX25l dyhmZCwgY3R4LCBmbGFncywgMCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93 YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQg PSB7IH07CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7CisKKwlpZiAoc3Bpbi0+cnVubmlu ZykgeworCQl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSAwOworCisJCXdoaWxlICghUkVBRF9PTkNF KCpzcGluLT5ydW5uaW5nKSkgeworCQkJdW5zaWduZWQgbG9uZyB0ID0gaWd0X25zZWNfZWxhcHNl ZCgmc3RhcnQpOworCisJCQlpZiAoKHQgLSB0aW1lb3V0KSA+IDI1MGU2KSB7CisJCQkJdGltZW91 dCA9IHQ7CisJCQkJaWd0X3dhcm4oIlNwaW5uZXIgbm90IHJ1bm5pbmcgYWZ0ZXIgJS4yZm1zXG4i LAorCQkJCQkgKGRvdWJsZSl0IC8gMWU2KTsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCWlndF9k ZWJ1ZygiX19zcGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVzbGVlcCg1MDBlMyk7IC8q IEJldHRlciB0aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQo JnN0YXJ0KTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fc3luYyhpbnQgZmQsIHVp bnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluID0g X19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOworCisJX19zcGluX3dhaXQoZmQsIHNwaW4pOwor CisJcmV0dXJuIHNwaW47Cit9CisKK3N0YXRpYyBpZ3Rfc3Bpbl90ICogc3Bpbl9zeW5jKGludCBm ZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlndF9yZXF1aXJlX2dl bShmZCk7CisKKwlyZXR1cm4gX19zcGluX3N5bmMoZmQsIGN0eCwgZmxhZ3MpOworfQorCiBzdGF0 aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBm bGFncykKIHsKIAlpZiAoIXNwaW4pCkBAIC0xODAsOCArMjMwLDI1IEBAIHN0YXRpYyB2b2lkIGVu ZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogCWlm IChmbGFncyAmIEZMQUdfU1lOQykKIAkJZ2VtX3N5bmMoZmQsIHNwaW4tPmhhbmRsZSk7CiAKLQlp ZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCi0JCXVzbGVlcChiYXRjaF9kdXJhdGlvbl9u cyAvIDUwMDApOworCWlmIChmbGFncyAmIFRFU1RfVFJBSUxJTkdfSURMRSkgeworCQl1bnNpZ25l ZCBsb25nIHQsIHRpbWVvdXQgPSAwOworCQlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQgPSB7IH07CisK KwkJaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOworCisJCWRvIHsKKwkJCXQgPSBpZ3RfbnNlY19l bGFwc2VkKCZzdGFydCk7CisKKwkJCWlmIChnZW1fYm9fYnVzeShmZCwgc3Bpbi0+aGFuZGxlKSAm JgorCQkJICAgICh0IC0gdGltZW91dCkgPiAxMGU2KSB7CisJCQkJdGltZW91dCA9IHQ7CisJCQkJ aWd0X3dhcm4oIlNwaW5uZXIgbm90IGlkbGUgYWZ0ZXIgJS4yZm1zXG4iLAorCQkJCQkgKGRvdWJs ZSl0IC8gMWU2KTsKKwkJCX0KKworCQkJdXNsZWVwKDFlMyk7CisJCX0gd2hpbGUgKHQgPCBiYXRj aF9kdXJhdGlvbl9ucyAvIDUpOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTE5NSw3ICsyNjIs NyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJ TkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVT WSkKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQs IGUpLCAwKTsKKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUp KTsKIAllbHNlCiAJCXNwaW4gPSBOVUxMOwogCkBAIC0yNTEsMTMgKzMxOCw3IEBAIGJ1c3lfc3Rh cnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQog CSAqLwogCXNsZWVwKDIpOwogCi0Jc3BpbiA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwg MCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCi0JLyoKLQkgKiBTbGVlcCBmb3IgYSBiaXQgYWZ0 ZXIgbWFraW5nIHRoZSBlbmdpbmUgYnVzeSB0byBtYWtlIHN1cmUgdGhlIFBNVQotCSAqIGdldHMg ZW5hYmxlZCB3aGVuIHRoZSBiYXRjaCBpcyBhbHJlYWR5IHJ1bm5pbmcuCi0JICovCi0JdXNsZWVw KDUwMGUzKTsKKwlzcGluID0gX19zcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBl KSk7CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5p bnN0YW5jZSkpOwogCkBAIC0zMDAsNyArMzYxLDcgQEAgYnVzeV9kb3VibGVfc3RhcnQoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCSAqIHJlLXN1 Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1ha2Ugc3VyZSBidXN5bmVzcyBpcyBjb3JyZWN0 bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdpbmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBlbmdp bmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1f ZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluWzBdID0gX19zcGluX3N5bmMoZ2Vt X2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJdXNsZWVwKDUwMGUzKTsKIAlzcGluWzFdID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHgsIGUycmluZyhnZW1fZmQsIGUpLCAwKTsK IApAQCAtMzg2LDcgKzQ0Nyw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAogCWlndF9hc3NlcnRfZXEoaSwgbnVt X2VuZ2luZXMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdl bV9mZCwgZSkpOwogCXBtdV9yZWFkX211bHRpKGZkWzBdLCBudW1fZW5naW5lcywgdHZhbFswXSk7 CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKIAlp ZiAoZmxhZ3MgJiBURVNUX1RSQUlMSU5HX0lETEUpCkBAIC00MTIsMTUgKzQ3MywxNSBAQCBidXN5 X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsCiB9CiAKIHN0YXRpYyB2b2lkCi1fX3N1Ym1pdF9zcGluX2JhdGNoKGludCBnZW1fZmQs Ci0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqLAotCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorX19zdWJtaXRfc3Bpbl9iYXRj aChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAorCQkgICAgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgICAgaW50IG9mZnNldCkKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewotCQkuYnVmZmVyX2NvdW50ID0gMSwKLQkJLmJ1 ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaiksCi0JCS5mbGFncyA9IGUycmluZyhnZW1f ZmQsIGUpLAotCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNwaW4t PmV4ZWNidWY7CisKKwllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0spOwor CWViLmZsYWdzIHw9IGUycmluZyhnZW1fZmQsIGUpIHwgSTkxNV9FWEVDX05PX1JFTE9DOworCWVi LmJhdGNoX3N0YXJ0X29mZnNldCArPSBvZmZzZXQ7CiAKIAlnZW1fZXhlY2J1ZihnZW1fZmQsICZl Yik7CiB9CkBAIC00MjksNyArNDkwLDYgQEAgc3RhdGljIHZvaWQKIG1vc3RfYnVzeV9jaGVja19h bGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAog CQkgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp CiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0ge307CiAJY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKIAl1aW50NjRfdCB0dmFsWzJdW251 bV9lbmdpbmVzXTsKIAl1aW50NjRfdCB2YWxbbnVtX2VuZ2luZXNdOwpAQCAtNDQzLDE1ICs1MDMs MTIgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmICghZ2VtX2hhc19lbmdpbmUoZ2VtX2ZkLCBlXy0+ Y2xhc3MsIGVfLT5pbnN0YW5jZSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoZSA9PSBlXykgewor CQlpZiAoZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0gaTsKLQkJfSBlbHNlIGlmIChzcGluKSB7Ci0J CQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZV8pOwotCQl9IGVsc2UgewotCQkJ c3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsCi0JCQkJCQkgIGUycmluZyhnZW1f ZmQsIGVfKSwgMCk7Ci0JCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQl9CisJCWVsc2Ug aWYgKHNwaW4pCisJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsK KwkJZWxzZQorCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwg ZV8pKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywgZV8t Pmluc3RhbmNlKTsKIAl9CkBAIC00NjEsNiArNTE4LDkgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJZm9y IChpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZkW2ldID0gb3Blbl9ncm91cCh2YWxb aV0sIGZkWzBdKTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFsbG93IGVuZ2luZXMgdG8gc3RhcnQu ICovCisJdXNsZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpbikgKiBudW1fZW5naW5lcyAvIDFl Myk7CisKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNs ZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZs YWdzICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNDg5LDcgKzU0OSw2IEBAIHN0YXRpYyB2b2lk CiBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLAogCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqID0ge307CiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplOwogCXVpbnQ2NF90IHR2YWxbMl1bbnVtX2VuZ2luZXNdOwogCXVpbnQ2NF90IHZh bFtudW1fZW5naW5lc107CkBAIC01MDMsMTMgKzU2MiwxMCBAQCBhbGxfYnVzeV9jaGVja19hbGwo aW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCQlpZiAoIWdlbV9o YXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSkKIAkJCWNvbnRpbnVlOwog Ci0JCWlmIChzcGluKSB7Ci0JCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7 Ci0JCX0gZWxzZSB7Ci0JCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKLQkJ CQkJCSAgZTJyaW5nKGdlbV9mZCwgZSksIDApOwotCQkJb2JqLmhhbmRsZSA9IHNwaW4tPmhhbmRs ZTsKLQkJfQorCQlpZiAoc3BpbikKKwkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGlu LCBlLCA2NCk7CisJCWVsc2UKKwkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGUpKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNs YXNzLCBlLT5pbnN0YW5jZSk7CiAJfQpAQCAtNTE5LDYgKzU3NSw5IEBAIGFsbF9idXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJZm9yIChp ID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCWZkW2ldID0gb3Blbl9ncm91cCh2YWxbaV0s IGZkWzBdKTsKIAorCS8qIFNtYWxsIGRlbGF5IHRvIGFsbG93IGVuZ2luZXMgdG8gc3RhcnQuICov CisJdXNsZWVwKF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpbikgKiBudW1fZW5naW5lcyAvIDFlMyk7 CisKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNsZXB0 ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZsYWdz ICYgVEVTVF9UUkFJTElOR19JRExFKQpAQCAtNTUwLDcgKzYwOSw3IEBAIG5vX3NlbWEoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJb3Blbl9ncm91cChJOTE1X1BNVV9FTkdJTkVfV0FJVChlLT5jbGFzcywgZS0+ aW5zdGFuY2UpLCBmZCk7CiAKIAlpZiAoZmxhZ3MgJiBURVNUX0JVU1kpCi0JCXNwaW4gPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSwgMCk7CisJCXNwaW4g PSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlMnJpbmcoZ2VtX2ZkLCBlKSk7CiAJZWxzZQogCQlzcGlu ID0gTlVMTDsKIApAQCAtODg0LDcgKzk0Myw3IEBAIG11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJICovCiAJZmRbMV0gPSBv cGVuX3BtdShjb25maWcpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAs IGUycmluZyhnZW1fZmQsIGUpLCAwKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJy aW5nKGdlbV9mZCwgZSkpOwogCiAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUo ZmRbMF0sICZ0c1swXSk7CiAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKQEAgLTEyNDgsNyArMTMwNyw3IEBAIHRlc3RfZnJlcXVlbmN5KGludCBn ZW1fZmQpCiAJaWd0X3JlcXVpcmUoaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9ib29zdF9m cmVxX21oeiIpID09IG1pbl9mcmVxKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7IC8q IElkbGUgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIHRha2VzIGVmZmVjdCAqLwotCXNwaW4gPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSLCAwKTsKKwlzcGluID0g c3Bpbl9zeW5jKGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUik7CiAKIAlzbGVwdCA9IHBtdV9y ZWFkX211bHRpKGZkLCAyLCBzdGFydCk7CiAJbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9u X25zIC8gMTAwMCk7CkBAIC0xMjc0LDcgKzEzMzMsNyBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQgZ2Vt X2ZkKQogCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFf bWh6IikgPT0gbWF4X2ZyZXEpOwogCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKLQlzcGlu ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgSTkxNV9FWEVDX1JFTkRFUiwgMCk7CisJ c3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19SRU5ERVIpOwogCiAJc2xlcHQg PSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9k dXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTUxNyw3ICsxNTc2LDYgQEAgYWNjdXJhY3koaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQljb25zdCB1 bnNpZ25lZCBsb25nIHRpbWVvdXRbXSA9IHsKIAkJCXB3bV9jYWxpYnJhdGlvbl91cyAqIDEwMDAs IHRlc3RfdXMgKiAxMDAwCiAJCX07Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy IG9iaiA9IHt9OwogCQl1aW50NjRfdCB0b3RhbF9idXN5X25zID0gMCwgdG90YWxfaWRsZV9ucyA9 IDA7CiAJCWlndF9zcGluX3QgKnNwaW47CiAJCWludCByZXQ7CkBAIC0xNTMxLDExICsxNTg5LDgg QEAgYWNjdXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwog CQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSks IDApOwotCQlvYmouaGFuZGxlID0gc3Bpbi0+aGFuZGxlOwotCQlfX3N1Ym1pdF9zcGluX2JhdGNo KGdlbV9mZCwgJm9iaiwgZSk7IC8qIHJlY29yZCBpdHMgbG9jYXRpb24gKi8KIAkJaWd0X3NwaW5f YmF0Y2hfZW5kKHNwaW4pOwotCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOwotCQlvYmou ZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOworCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhh bmRsZSk7CiAKIAkJLyogMXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRo ZSB0ZXN0LiAqLwogCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZX1NJWkUodGltZW91 dCk7IHBhc3MrKykgewpAQCAtMTU0OSw3ICsxNjA0LDcgQEAgYWNjdXJhY3koaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCiAJCQkJLyogUmVzdGFy dCB0aGUgc3BpbmJhdGNoLiAqLwogCQkJCV9fcmVhcm1fc3Bpbl9iYXRjaChzcGluKTsKLQkJCQlf X3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgJm9iaiwgZSk7CisJCQkJX19zdWJtaXRfc3Bpbl9i YXRjaChnZW1fZmQsIHNwaW4sIGUsIDApOwogCiAJCQkJLyoKIAkJCQkgKiBOb3RlIHRoYXQgdGhl IHN1Ym1pc3Npb24gbWF5IGJlIGRlbGF5ZWQgdG8gYQpAQCAtMTU1OSw3ICsxNjE0LDcgQEAgYWNj dXJhY3koaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl LAogCiAJCQkJdF9idXN5ID0gbWVhc3VyZWRfdXNsZWVwKGJ1c3lfdXMpOwogCQkJCWlndF9zcGlu X2JhdGNoX2VuZChzcGluKTsKLQkJCQlnZW1fc3luYyhnZW1fZmQsIG9iai5oYW5kbGUpOworCQkJ CWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxlKTsKIAogCQkJCXRvdGFsX2J1c3lfbnMgKz0g dF9idXN5OwogCi0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=