From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v6] tests/perf_pmu: Verify engine busyness accuracy Date: Thu, 15 Feb 2018 15:34:53 +0000 Message-ID: <20180215153453.657-1-tvrtko.ursulin@linux.intel.com> References: <151869859558.11261.17638690172075680562@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id B4E056E534 for ; Thu, 15 Feb 2018 15:35:03 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id j199so1596469wmj.2 for ; Thu, 15 Feb 2018 07:35:03 -0800 (PST) In-Reply-To: <151869859558.11261.17638690172075680562@mail.alporthouse.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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkEgc3VidGVz dCB0byB2ZXJpZnkgdGhhdCB0aGUgZW5naW5lIGJ1c3luZXNzIGlzIHJlcG9ydGVkIHdpdGggZXhw ZWN0ZWQKYWNjdXJhY3kgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBmZWF0dXJlIGlzIGF2YWlsYWJs ZS4KCldlIHRlc3QgdGhyZWUgcGF0dGVybnM6IDIlLCA1MCUgYW5kIDk4JSBsb2FkIHBlciBlbmdp bmUuCgp2MjoKICogVXNlIHNwaW4gYmF0Y2ggaW5zdGVhZCBvZiBub3AgY2FsaWJyYXRpb24uCiAq IFZhcmlvdXMgdHdlYWtzLgoKdjM6CiAqIENoYW5nZSBsb29wcyB0byBiZSB0aW1lIGJhc2VkLgog KiBVc2UgX19pZ3Rfc3Bpbl9iYXRjaF9uZXcgaW5zaWRlIHRpbWluZyBzZW5zaXRpdmUgbG9vcHMu CiAqIEZpeGVkIFBXTSBzbGVlcCBoYW5kbGluZy4KCnY0OgogKiBVc2UgcmVzdGFydGluZyBzcGlu IGJhdGNoLgogKiBDYWxpYnJhdGUgbW9yZSBjYXJlZnVsbHkgYnkgbG9va2luZyBhdCB0aGUgcmVh bCBQV00gbG9vcC4KCnY1OgogKiBNYWRlIHN0YW5kYWxvbmUuCiAqIEJldHRlciBpbmZvIG1lc3Nh Z2VzLgogKiBUd2VhayBzbGVlcCBjb21wZW5zYXRpb24uCgp2NjoKICogU29tZSBmaW5hbCB0d2Vh a3MuIChDaHJpcyBXaWxzb24pCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Ci0tLQogdGVzdHMvcGVyZl9wbXUuYyB8IDE5OSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTgxIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3Rz L3BlcmZfcG11LmMgYi90ZXN0cy9wZXJmX3BtdS5jCmluZGV4IDdkOWM0MmQxNmEwOC4uODIwNTM0 MTZjYmVhIDEwMDY0NAotLS0gYS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11 LmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDx0aW1l Lmg+CiAjaW5jbHVkZSA8cG9sbC5oPgorI2luY2x1ZGUgPHNjaGVkLmg+CiAKICNpbmNsdWRlICJp Z3QuaCIKICNpbmNsdWRlICJpZ3RfY29yZS5oIgpAQCAtMzg1LDYgKzM4NiwyMiBAQCBidXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCiAJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIH0KIAorc3RhdGljIHZvaWQKK19fc3Vi bWl0X3NwaW5fYmF0Y2goaW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKKwkJICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7CisJCS5oYW5kbGUgPSBzcGluLT5oYW5kbGUKKwl9Owor CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7CisJCS5idWZmZXJfY291bnQg PSAxLAorCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaiksCisJCS5mbGFncyA9 IGUycmluZyhnZW1fZmQsIGUpLAorCX07CisKKwlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7Cit9 CisKIHN0YXRpYyB2b2lkCiBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJICAgIGNvbnN0IHVuc2lnbmVkIGlu dCBudW1fZW5naW5lcywgdW5zaWduZWQgaW50IGZsYWdzKQpAQCAtNDA1LDE1ICs0MjIsNyBAQCBt b3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZSwKIAkJaWYgKGUgPT0gZV8pIHsKIAkJCWlkbGVfaWR4ID0gaTsKIAkJfSBl bHNlIGlmIChzcGluKSB7Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmog PSB7Ci0JCQkJLmhhbmRsZSA9IHNwaW4tPmhhbmRsZQotCQkJfTsKLQkJCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7Ci0JCQkJLmJ1ZmZlcl9jb3VudCA9IDEsCi0JCQkJLmJ1 ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZvYmopLAotCQkJCS5mbGFncyA9IGUycmluZyhn ZW1fZmQsIGVfKSwKLQkJCX07Ci0JCQlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CisJCQlfX3N1 Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZV8pOwogCQl9IGVsc2UgewogCQkJc3BpbiA9 IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsCiAJCQkJCQkgIGUycmluZyhnZW1fZmQsIGVf KSwgMCk7CkBAIC00NjksMTUgKzQ3OCw3IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2Zk LCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCiAJCQljb250aW51ZTsKIAogCQlpZiAo c3BpbikgewotCQkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0gewotCQkJ CS5oYW5kbGUgPSBzcGluLT5oYW5kbGUKLQkJCX07Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyIGViID0gewotCQkJCS5idWZmZXJfY291bnQgPSAxLAotCQkJCS5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKLQkJCQkuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBl KSwKLQkJCX07Ci0JCQlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CisJCQlfX3N1Ym1pdF9zcGlu X2JhdGNoKGdlbV9mZCwgc3BpbiwgZSk7CiAJCX0gZWxzZSB7CiAJCQlzcGluID0gaWd0X3NwaW5f YmF0Y2hfbmV3KGdlbV9mZCwgMCwKIAkJCQkJCSAgZTJyaW5nKGdlbV9mZCwgZSksIDApOwpAQCAt MTM5Miw2ICsxMzkzLDE1NyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAlnZW1fcXVpZXNjZW50X2dwdShnZW1f ZmQpOwogfQogCitzdGF0aWMgZG91YmxlIF9fZXJyb3IoZG91YmxlIHZhbCwgZG91YmxlIHJlZikK K3sKKwlpZ3RfYXNzZXJ0KHJlZiA+IDFlLTUgLyogc21hbGx2YWwgKi8pOworCXJldHVybiAoMTAw LjAgKiB2YWwgLyByZWYpIC0gMTAwLjA7Cit9CisKK3N0YXRpYyB2b2lkIF9fcmVhcm1fc3Bpbl9i YXRjaChpZ3Rfc3Bpbl90ICpzcGluKQoreworCWNvbnN0IHVpbnQzMl90IG1pX2FyYl9jaGsgPSAw eDUgPDwgMjM7CisKKyAgICAgICAqc3Bpbi0+YmF0Y2ggPSBtaV9hcmJfY2hrOworICAgICAgIF9f c3luY19zeW5jaHJvbml6ZSgpOworfQorCisjZGVmaW5lIGRpdl9yb3VuZF91cChhLCBiKSAoKChh KSArIChiKSAtIDEpIC8gKGIpKQorCitzdGF0aWMgdm9pZAorYWNjdXJhY3koaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCSB1bnNpZ25lZCBsb25n IHRhcmdldF9idXN5X3BjdCkKK3sKKwljb25zdCB1bnNpZ25lZCBpbnQgbWluX3Rlc3RfbG9vcHMg PSA3OworCWNvbnN0IHVuc2lnbmVkIGxvbmcgbWluX3Rlc3RfdXMgPSAxZTY7CisJdW5zaWduZWQg bG9uZyBidXN5X3VzID0gMjUwMDsKKwl1bnNpZ25lZCBsb25nIGlkbGVfdXMgPSAxMDAgKiAoYnVz eV91cyAtIHRhcmdldF9idXN5X3BjdCAqCisJCQkJYnVzeV91cyAvIDEwMCkgLyB0YXJnZXRfYnVz eV9wY3Q7CisJdW5zaWduZWQgbG9uZyBwd21fY2FsaWJyYXRpb25fdXM7CisJdW5zaWduZWQgbG9u ZyB0ZXN0X3VzOworCWRvdWJsZSBidXN5X3I7CisJdWludDY0X3QgdmFsWzJdOworCXVpbnQ2NF90 IHRzWzJdOworCWludCBmZDsKKworCS8qIFNhbXBsaW5nIHBsYXRmb3JtcyBjYW5ub3QgcmVhY2gg dGhlIGhpZ2ggYWNjdXJhY3kgY3JpdGVyaWEuICovCisJaWd0X3JlcXVpcmUoZ2VtX2hhc19leGVj bGlzdHMoZ2VtX2ZkKSk7CisKKwl3aGlsZSAoaWRsZV91cyA8IDI1MDApIHsKKwkJYnVzeV91cyAq PSAyOworCQlpZGxlX3VzICo9IDI7CisJfQorCisJcHdtX2NhbGlicmF0aW9uX3VzID0gbWluX3Rl c3RfbG9vcHMgKiAoYnVzeV91cyArIGlkbGVfdXMpOworCXdoaWxlIChwd21fY2FsaWJyYXRpb25f dXMgPCBtaW5fdGVzdF91cykKKwkJcHdtX2NhbGlicmF0aW9uX3VzICs9IGJ1c3lfdXMgKyBpZGxl X3VzOworCXRlc3RfdXMgPSBtaW5fdGVzdF9sb29wcyAqIChpZGxlX3VzICsgYnVzeV91cyk7CisJ d2hpbGUgKHRlc3RfdXMgPCBtaW5fdGVzdF91cykKKwkJdGVzdF91cyArPSBidXN5X3VzICsgaWRs ZV91czsKKworCWlndF9pbmZvKCJjYWxpYnJhdGlvbj0lbHV1cywgdGVzdD0lbHV1czsgcmF0aW89 JS4yZiUlICglbHV1cy8lbHV1cylcbiIsCisJCSBwd21fY2FsaWJyYXRpb25fdXMsIHRlc3RfdXMs CisJCSAoZG91YmxlKWJ1c3lfdXMgLyAoYnVzeV91cyArIGlkbGVfdXMpICogMTAwLjAsCisJCSBi dXN5X3VzLCBpZGxlX3VzKTsKKworCWFzc2VydF93aXRoaW5fZXBzaWxvbigoZG91YmxlKWJ1c3lf dXMgLyAoYnVzeV91cyArIGlkbGVfdXMpLAorCQkJCShkb3VibGUpdGFyZ2V0X2J1c3lfcGN0IC8g MTAwLjAsIHRvbGVyYW5jZSk7CisKKwkvKiBFbWl0IFBXTSBwYXR0ZXJuIG9uIHRoZSBlbmdpbmUg ZnJvbSBhIGNoaWxkLiAqLworCWlndF9mb3JrKGNoaWxkLCAxKSB7CisJCXN0cnVjdCBzY2hlZF9w YXJhbSBydCA9IHsgLnNjaGVkX3ByaW9yaXR5ID0gOTkgfTsKKwkJY29uc3QgdW5zaWduZWQgbG9u ZyB0aW1lb3V0W10gPSB7IHB3bV9jYWxpYnJhdGlvbl91cyAqIDEwMDAsCisJCQkJCQkgIHRlc3Rf dXMgKiAyICogMTAwMCB9OworCQl1bnNpZ25lZCBsb25nIHNsZWVwX2J1c3kgPSBidXN5X3VzOwor CQl1bnNpZ25lZCBsb25nIHNsZWVwX2lkbGUgPSBpZGxlX3VzOworCQlpZ3Rfc3Bpbl90ICpzcGlu OworCQlpbnQgcmV0OworCisJCS8qIFdlIG5lZWQgdGhlIGJlc3Qgc2xlZXAgYWNjdXJhY3kgd2Ug Y2FuIGdldC4gKi8KKwkJcmV0ID0gc2NoZWRfc2V0c2NoZWR1bGVyKDAsCisJCQkJCSBTQ0hFRF9G SUZPIHwgU0NIRURfUkVTRVRfT05fRk9SSywKKwkJCQkJICZydCk7CisJCWlmIChyZXQpCisJCQlp Z3Rfd2FybigiRmFpbGVkIHRvIHNldCBzY2hlZHVsaW5nIHBvbGljeSFcbiIpOworCisJCS8qIEFs bG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLworCQlzcGluID0gaWd0X3NwaW5f YmF0Y2hfbmV3KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSksIDApOworCQlpZ3Rfc3Bpbl9i YXRjaF9lbmQoc3Bpbik7CisJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxlKTsKKworCQkv KiAxc3QgcGFzcyBpcyBjYWxpYnJhdGlvbiwgc2Vjb25kIHBhc3MgaXMgdGhlIHRlc3QuICovCisJ CWZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgQVJSQVlfU0laRSh0aW1lb3V0KTsgcGFzcysrKSB7 CisJCQl1bnNpZ25lZCBsb25nIGJ1c3lfbnMgPSAwLCBpZGxlX25zID0gMDsKKwkJCXN0cnVjdCB0 aW1lc3BlYyB0ZXN0X3N0YXJ0ID0geyB9OworCQkJdW5zaWduZWQgbG9uZyBsb29wcyA9IDA7CisJ CQlkb3VibGUgZXJyX2J1c3ksIGVycl9pZGxlOworCisJCQlpZ3RfbnNlY19lbGFwc2VkKCZ0ZXN0 X3N0YXJ0KTsKKwkJCWRvIHsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMgdF9idXN5ID0geyB9OworCisJ CQkJaWd0X25zZWNfZWxhcHNlZCgmdF9idXN5KTsKKworCQkJCS8qIFJlc3RhcnQgdGhlIHNwaW5i YXRjaC4gKi8KKwkJCQlfX3JlYXJtX3NwaW5fYmF0Y2goc3Bpbik7CisJCQkJX19zdWJtaXRfc3Bp bl9iYXRjaChnZW1fZmQsIHNwaW4sIGUpOworCQkJCW1lYXN1cmVkX3VzbGVlcChzbGVlcF9idXN5 KTsKKwkJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7CisJCQkJZ2VtX3N5bmMoZ2VtX2ZkLCBz cGluLT5oYW5kbGUpOworCisJCQkJYnVzeV9ucyArPSBpZ3RfbnNlY19lbGFwc2VkKCZ0X2J1c3kp OworCisJCQkJaWRsZV9ucyArPSBtZWFzdXJlZF91c2xlZXAoc2xlZXBfaWRsZSk7CisKKwkJCQls b29wcysrOworCQkJfSB3aGlsZSAoaWd0X25zZWNfZWxhcHNlZCgmdGVzdF9zdGFydCkgPCB0aW1l b3V0W3Bhc3NdKTsKKworCQkJYnVzeV9ucyA9IGRpdl9yb3VuZF91cChidXN5X25zLCBsb29wcyk7 CisJCQlpZGxlX25zID0gZGl2X3JvdW5kX3VwKGlkbGVfbnMsIGxvb3BzKTsKKworCQkJZXJyX2J1 c3kgPSBfX2Vycm9yKGJ1c3lfbnMgLyAxMDAwLCBidXN5X3VzKTsKKwkJCWVycl9pZGxlID0gX19l cnJvcihpZGxlX25zIC8gMTAwMCwgaWRsZV91cyk7CisKKwkJCWlndF9pbmZvKCIldTogYnVzeSAl bHUvJWx1ICUuMmYlJSwgaWRsZSAlbHUvJWx1ICUuMmYlJVxuIiwKKwkJCQkgcGFzcywKKwkJCQkg YnVzeV9ucyAvIDEwMDAsIGJ1c3lfdXMsIGVycl9idXN5LAorCQkJCSBpZGxlX25zIC8gMTAwMCwg aWRsZV91cywgZXJyX2lkbGUpOworCisJCQlpZiAocGFzcyA9PSAwKSB7CisJCQkJc2xlZXBfYnVz eSA9IChkb3VibGUpYnVzeV91cyAtCisJCQkJCSAgICAgKGRvdWJsZSlidXN5X3VzICogZXJyX2J1 c3kgLyAxMDAuMDsKKwkJCQlzbGVlcF9pZGxlID0gKGRvdWJsZSlpZGxlX3VzIC0KKwkJCQkJICAg ICAoZG91YmxlKWlkbGVfdXMgKiBlcnJfaWRsZSAvIDEwMC4wOworCQkJCWlndF9pbmZvKCJjYWxp YnJhdGVkIHNsZWVwcyByYXRpbyAlLjJmJSUgKCVsdS8lbHUpXG4iLAorCQkJCQkgKGRvdWJsZSlz bGVlcF9idXN5IC8KKwkJCQkJIChzbGVlcF9idXN5ICsgc2xlZXBfaWRsZSkgKiAxMDAuMCwKKwkJ CQkJIHNsZWVwX2J1c3ksIHNsZWVwX2lkbGUpOworCQkJfQorCQl9CisKKwkJaWd0X3NwaW5fYmF0 Y2hfZnJlZShnZW1fZmQsIHNwaW4pOworCX0KKworCS8qIExldCB0aGUgY2hpbGQgcnVuLiAqLwor CXVzbGVlcChwd21fY2FsaWJyYXRpb25fdXMgKiAyKTsKKworCS8qIENvbGxlY3QgZW5naW5lIGJ1 c3luZXNzIGZvciBhbiBpbnRlcmVzdGluZyBwYXJ0IG9mIGNoaWxkIHJ1bnRpbWUuICovCisJZmQg PSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsK Kwl2YWxbMF0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKKwl1c2xlZXAodGVzdF91 cyAvIDIpOworCXZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0pOworCWNsb3Nl KGZkKTsKKworCWlndF93YWl0Y2hpbGRyZW4oKTsKKworCWJ1c3lfciA9IChkb3VibGUpKHZhbFsx XSAtIHZhbFswXSkgLyAodHNbMV0gLSB0c1swXSk7CisKKwlpZ3RfaW5mbygiZXJyb3I9JS4yZiUl ICglLjJmJSUgdnMgJWx1JSUpXG4iLAorCQkgX19lcnJvcihidXN5X3IsIHRhcmdldF9idXN5X3Bj dCAvIDEwMC4wKSwKKwkJIGJ1c3lfciAqIDEwMC4wLCB0YXJnZXRfYnVzeV9wY3QpOworCisJYXNz ZXJ0X3dpdGhpbl9lcHNpbG9uKGJ1c3lfciwgKGRvdWJsZSl0YXJnZXRfYnVzeV9wY3QgLyAxMDAu MCwgMC4xNSk7Cit9CisKIGlndF9tYWluCiB7CiAJY29uc3QgdW5zaWduZWQgaW50IG51bV9vdGhl cl9tZXRyaWNzID0KQEAgLTE0MjAsNiArMTU3Miw4IEBAIGlndF9tYWluCiAJCWludmFsaWRfaW5p dCgpOwogCiAJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBlKSB7CisJCWNvbnN0 IHVuc2lnbmVkIGludCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07CisKIAkJLyoqCiAJCSAqIFRlc3Qg dGhhdCBhIHNpbmdsZSBlbmdpbmUgbWV0cmljIGNhbiBiZSBpbml0aWFsaXplZCBvciBpdAogCQkg KiBpcyBjb3JyZWN0bHkgcmVqZWN0ZWQuCkBAIC0xNTI2LDYgKzE2ODAsMTUgQEAgaWd0X21haW4K IAkJCSAqLwogCQkJaWd0X3N1YnRlc3RfZigiZW5hYmxlLXJhY2UtJXMiLCBlLT5uYW1lKQogCQkJ CXRlc3RfZW5hYmxlX3JhY2UoZmQsIGUpOworCisJCQkvKioKKwkJCSAqIENoZWNrIGVuZ2luZSBi dXN5bmVzcyBhY2N1cmFjeSBpcyBhcyBleHBlY3RlZC4KKwkJCSAqLworCQkJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUocGN0KTsgaSsrKSB7CisJCQkJaWd0X3N1YnRlc3RfZigiYnVzeS1hY2N1 cmFjeS0ldS0lcyIsCisJCQkJCSAgICAgIHBjdFtpXSwgZS0+bmFtZSkKKwkJCQkJYWNjdXJhY3ko ZmQsIGUsIHBjdFtpXSk7CisJCQl9CiAJCX0KIAogCQkvKioKLS0gCjIuMTQuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==