From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t] tests/perf_pmu: Verify engine busyness accuracy Date: Thu, 15 Feb 2018 11:53:44 +0000 Message-ID: <20180215115344.27625-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-wr0-x244.google.com (mail-wr0-x244.google.com [IPv6:2a00:1450:400c:c0c::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id D94F06E461 for ; Thu, 15 Feb 2018 11:53:54 +0000 (UTC) Received: by mail-wr0-x244.google.com with SMTP id s5so3080919wra.0 for ; Thu, 15 Feb 2018 03:53:54 -0800 (PST) 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 Z2VzLgogKiBUd2VhayBzbGVlcCBjb21wZW5zYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIHRlc3RzL3BlcmZfcG11LmMg fCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRleCBh NzUwMWNhNWY3YTQuLmZhOWI1NDc5M2E1MiAxMDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUuYwor KysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8ZGlyZW50 Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHBvbGwuaD4KKyNpbmNsdWRlIDxzY2hl ZC5oPgogCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKQEAgLTM4NSw2 ICszODYsMjIgQEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CiB9CiAK K3N0YXRpYyB2b2lkCitfX3N1Ym1pdF9zcGluX2JhdGNoKGludCBnZW1fZmQsIGlndF9zcGluX3Qg KnNwaW4sCisJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0geworCQkuaGFuZGxlID0g c3Bpbi0+aGFuZGxlCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0g eworCQkuYnVmZmVyX2NvdW50ID0gMSwKKwkJLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZvYmopLAorCQkuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlKSwKKwl9OworCisJZ2VtX2V4ZWNi dWYoZ2VtX2ZkLCAmZWIpOworfQorCiBzdGF0aWMgdm9pZAogbW9zdF9idXN5X2NoZWNrX2FsbChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCSAg ICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFncykKQEAg LTQwNSwxNSArNDIyLDcgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJCWlmIChlID09IGVfKSB7CiAJCQlp ZGxlX2lkeCA9IGk7CiAJCX0gZWxzZSBpZiAoc3BpbikgewotCQkJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqID0gewotCQkJCS5oYW5kbGUgPSBzcGluLT5oYW5kbGUKLQkJCX07 Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewotCQkJCS5idWZmZXJf Y291bnQgPSAxLAotCQkJCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKLQkJ CQkuZmxhZ3MgPSBlMnJpbmcoZ2VtX2ZkLCBlXyksCi0JCQl9OwotCQkJZ2VtX2V4ZWNidWYoZ2Vt X2ZkLCAmZWIpOworCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGVfKTsKIAkJ fSBlbHNlIHsKIAkJCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCAwLAogCQkJCQkJ ICBlMnJpbmcoZ2VtX2ZkLCBlXyksIDApOwpAQCAtNDY5LDE1ICs0NzgsNyBAQCBhbGxfYnVzeV9j aGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAogCQkJ Y29udGludWU7CiAKIAkJaWYgKHNwaW4pIHsKLQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIG9iaiA9IHsKLQkJCQkuaGFuZGxlID0gc3Bpbi0+aGFuZGxlCi0JCQl9OwotCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsKLQkJCQkuYnVmZmVyX2NvdW50ID0g MSwKLQkJCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaiksCi0JCQkJLmZsYWdz ID0gZTJyaW5nKGdlbV9mZCwgZSksCi0JCQl9OwotCQkJZ2VtX2V4ZWNidWYoZ2VtX2ZkLCAmZWIp OworCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUpOwogCQl9IGVsc2Ugewog CQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsCiAJCQkJCQkgIGUycmluZyhn ZW1fZmQsIGUpLCAwKTsKQEAgLTEzOTAsNiArMTM5MSwxNTAgQEAgdGVzdF9lbmFibGVfcmFjZShp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiAJZ2Vt X3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKIH0KIAorc3RhdGljIGRvdWJsZSBfX2Vycm9yKGRvdWJs ZSB2YWwsIGRvdWJsZSByZWYpCit7CisJaWd0X2Fzc2VydChyZWYgIT0gMC4wKTsKKwlyZXR1cm4g KDEwMC4wICogdmFsIC8gcmVmKSAtIDEwMC4wOworfQorCitzdGF0aWMgdm9pZCBfX3JlYXJtX3Nw aW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKK3sKKwljb25zdCB1aW50MzJfdCBtaV9hcmJfY2hr ID0gMHg1IDw8IDIzOworCisgICAgICAgKnNwaW4tPmJhdGNoID0gbWlfYXJiX2NoazsKKyAgICAg ICBfX3N5bmNfc3luY2hyb25pemUoKTsKK30KKworI2RlZmluZSBkaXZfcm91bmRfdXAoYSwgYikg KCgoYSkgKyAoYikgLSAxKSAvIChiKSkKKworc3RhdGljIHZvaWQKK2FjY3VyYWN5KGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkgdW5zaWduZWQg bG9uZyB0YXJnZXRfYnVzeV9wY3QpCit7CisJY29uc3QgdW5zaWduZWQgaW50IG1pbl90ZXN0X2xv b3BzID0gNzsKKwljb25zdCB1bnNpZ25lZCBsb25nIG1pbl90ZXN0X3VzID0gMWU2OworCXVuc2ln bmVkIGxvbmcgYnVzeV91cyA9IDI1MDA7CisJdW5zaWduZWQgbG9uZyBpZGxlX3VzID0gMTAwICog KGJ1c3lfdXMgLSB0YXJnZXRfYnVzeV9wY3QgKgorCQkJCWJ1c3lfdXMgLyAxMDApIC8gdGFyZ2V0 X2J1c3lfcGN0OworCXVuc2lnbmVkIGxvbmcgcHdtX2NhbGlicmF0aW9uX3VzOworCXVuc2lnbmVk IGxvbmcgdGVzdF91czsKKwlkb3VibGUgYnVzeV9yOworCXVpbnQ2NF90IHZhbFsyXTsKKwl1aW50 NjRfdCB0c1syXTsKKwlpbnQgZmQ7CisKKwkvKiBTYW1wbGluZyBwbGF0Zm9ybXMgY2Fubm90IHJl YWNoIHRoZSBoaWdoIGFjY3VyYWN5IGNyaXRlcmlhLiAqLworCWlndF9yZXF1aXJlKGludGVsX2dl bihpbnRlbF9nZXRfZHJtX2RldmlkKGdlbV9mZCkpID49IDgpOworCisJd2hpbGUgKGlkbGVfdXMg PCAyNTAwKSB7CisJCWJ1c3lfdXMgKj0gMjsKKwkJaWRsZV91cyAqPSAyOworCX0KKworCXB3bV9j YWxpYnJhdGlvbl91cyA9IG1pbl90ZXN0X2xvb3BzICogKGJ1c3lfdXMgKyBpZGxlX3VzKTsKKwl3 aGlsZSAocHdtX2NhbGlicmF0aW9uX3VzIDwgbWluX3Rlc3RfdXMpCisJCXB3bV9jYWxpYnJhdGlv bl91cyArPSBidXN5X3VzICsgaWRsZV91czsKKwl0ZXN0X3VzID0gbWluX3Rlc3RfbG9vcHMgKiAo aWRsZV91cyArIGJ1c3lfdXMpOworCXdoaWxlICh0ZXN0X3VzIDwgbWluX3Rlc3RfdXMpCisJCXRl c3RfdXMgKz0gYnVzeV91cyArIGlkbGVfdXM7CisKKwlpZ3RfaW5mbygiY2FsaWJyYXRpb249JWx1 dXMsIHRlc3Q9JWx1dXM7IGJ1c3k9JWx1dXMsIGlkbGU9JWx1dXNcbiIsCisJCSBwd21fY2FsaWJy YXRpb25fdXMsIHRlc3RfdXMsIGJ1c3lfdXMsIGlkbGVfdXMpOworCisJYXNzZXJ0X3dpdGhpbl9l cHNpbG9uKChkb3VibGUpYnVzeV91cyAvIChidXN5X3VzICsgaWRsZV91cyksCisJCQkJKGRvdWJs ZSl0YXJnZXRfYnVzeV9wY3QgLyAxMDAuMCwgdG9sZXJhbmNlKTsKKworCS8qIEVtaXQgUFdNIHBh dHRlcm4gb24gdGhlIGVuZ2luZSBmcm9tIGEgY2hpbGQuICovCisJaWd0X2ZvcmsoY2hpbGQsIDEp IHsKKwkJc3RydWN0IHNjaGVkX3BhcmFtIHJ0ID0geyAuc2NoZWRfcHJpb3JpdHkgPSA5OSB9Owor CQljb25zdCB1bnNpZ25lZCBsb25nIHRpbWVvdXRbXSA9IHsgcHdtX2NhbGlicmF0aW9uX3VzICog MTAwMCwKKwkJCQkJCSAgdGVzdF91cyAqIDIgKiAxMDAwIH07CisJCXVuc2lnbmVkIGxvbmcgc2xl ZXBfYnVzeSA9IGJ1c3lfdXM7CisJCXVuc2lnbmVkIGxvbmcgc2xlZXBfaWRsZSA9IGlkbGVfdXM7 CisJCWlndF9zcGluX3QgKnNwaW47CisKKwkJLyogV2UgbmVlZCB0aGUgYmVzdCBzbGVlcCBhY2N1 cmFjeSB3ZSBjYW4gZ2V0LiAqLworCQlpZ3RfcmVxdWlyZShzY2hlZF9zZXRzY2hlZHVsZXIoMCwK KwkJCQkJICAgICAgIFNDSEVEX0ZJRk8gfCBTQ0hFRF9SRVNFVF9PTl9GT1JLLAorCQkJCQkgICAg ICAgJnJ0KSA9PSAwKTsKKworCQkvKiBBbGxvY2F0ZSBvdXIgc3BpbiBiYXRjaCBhbmQgaWRsZSBp dC4gKi8KKwkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIDAsIGUycmluZyhnZW1f ZmQsIGUpLCAwKTsKKwkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4pOworCQlnZW1fc3luYyhnZW1f ZmQsIHNwaW4tPmhhbmRsZSk7CisKKwkJLyogMXN0IHBhc3MgaXMgY2FsaWJyYXRpb24sIHNlY29u ZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLworCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IEFSUkFZ X1NJWkUodGltZW91dCk7IHBhc3MrKykgeworCQkJdW5zaWduZWQgbG9uZyBidXN5X25zID0gMCwg aWRsZV9ucyA9IDA7CisJCQlzdHJ1Y3QgdGltZXNwZWMgdGVzdF9zdGFydCA9IHsgfTsKKwkJCXVu c2lnbmVkIGxvbmcgbG9vcHMgPSAwOworCQkJZG91YmxlIGVycl9idXN5LCBlcnJfaWRsZTsKKwor CQkJaWd0X25zZWNfZWxhcHNlZCgmdGVzdF9zdGFydCk7CisJCQlkbyB7CisJCQkJc3RydWN0IHRp bWVzcGVjIHRfYnVzeSA9IHsgfTsKKworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnRfYnVzeSk7CisK KwkJCQkvKiBSZXN0YXJ0IHRoZSBzcGluYmF0Y2guICovCisJCQkJX19yZWFybV9zcGluX2JhdGNo KHNwaW4pOworCQkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2VtX2ZkLCBzcGluLCBlKTsKKwkJCQlt ZWFzdXJlZF91c2xlZXAoc2xlZXBfYnVzeSk7CisJCQkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4p OworCQkJCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxlKTsKKworCQkJCWJ1c3lfbnMgKz0g aWd0X25zZWNfZWxhcHNlZCgmdF9idXN5KTsKKworCQkJCWlkbGVfbnMgKz0gbWVhc3VyZWRfdXNs ZWVwKHNsZWVwX2lkbGUpOworCisJCQkJbG9vcHMrKzsKKwkJCX0gd2hpbGUgKGlndF9uc2VjX2Vs YXBzZWQoJnRlc3Rfc3RhcnQpIDwgdGltZW91dFtwYXNzXSk7CisKKwkJCWJ1c3lfbnMgPSBkaXZf cm91bmRfdXAoYnVzeV9ucywgbG9vcHMpOworCQkJaWRsZV9ucyA9IGRpdl9yb3VuZF91cChpZGxl X25zLCBsb29wcyk7CisKKwkJCWVycl9idXN5ID0gX19lcnJvcihidXN5X25zIC8gMTAwMCwgYnVz eV91cyk7CisJCQllcnJfaWRsZSA9IF9fZXJyb3IoaWRsZV9ucyAvIDEwMDAsIGlkbGVfdXMpOwor CisJCQlpZ3RfaW5mbygiJXU6IGJ1c3kgJWx1LyVsdSAlLjJmJSUsIGlkbGUgJWx1LyVsdSAlLjJm JSVcbiIsCisJCQkJIHBhc3MsCisJCQkJIGJ1c3lfbnMgLyAxMDAwLCBidXN5X3VzLCBlcnJfYnVz eSwKKwkJCQkgaWRsZV9ucyAvIDEwMDAsIGlkbGVfdXMsIGVycl9pZGxlKTsKKworCQkJaWYgKHBh c3MgPT0gMCkgeworCQkJCXNsZWVwX2J1c3kgPSAoZG91YmxlKWJ1c3lfdXMgLQorCQkJCQkgICAg IChkb3VibGUpYnVzeV91cyAqIGVycl9idXN5IC8gMTAwLjA7CisJCQkJc2xlZXBfaWRsZSA9IChk b3VibGUpaWRsZV91cyAtCisJCQkJCSAgICAgKGRvdWJsZSlpZGxlX3VzICogZXJyX2lkbGUgLyAx MDAuMDsKKwkJCQlpZ3RfaW5mbygiY2FsaWJyYXRlZCBzbGVlcHM6IGJ1c3k9JWx1LCBpZGxlPSVs dVxuIiwKKwkJCQkJIHNsZWVwX2J1c3ksIHNsZWVwX2lkbGUpOworCQkJfQorCQl9CisKKwkJaWd0 X3NwaW5fYmF0Y2hfZnJlZShnZW1fZmQsIHNwaW4pOworCX0KKworCS8qIExldCB0aGUgY2hpbGQg cnVuLiAqLworCXVzbGVlcChwd21fY2FsaWJyYXRpb25fdXMgKiAyKTsKKworCS8qIENvbGxlY3Qg ZW5naW5lIGJ1c3luZXNzIGZvciBhbiBpbnRlcmVzdGluZyBwYXJ0IG9mIGNoaWxkIHJ1bnRpbWUu ICovCisJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5z dGFuY2UpKTsKKwl2YWxbMF0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKKwl1c2xl ZXAodGVzdF91cyAvIDIpOworCXZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0p OworCWNsb3NlKGZkKTsKKworCWlndF93YWl0Y2hpbGRyZW4oKTsKKworCWJ1c3lfciA9IChkb3Vi bGUpKHZhbFsxXSAtIHZhbFswXSkgLyAodHNbMV0gLSB0c1swXSk7CisKKwlpZ3RfaW5mbygiZXJy b3I9JS4yZiUlICglLjJmJSUgdnMgJWx1JSUpXG4iLAorCQkgX19lcnJvcihidXN5X3IsIHRhcmdl dF9idXN5X3BjdCAvIDEwMC4wKSwKKwkJIGJ1c3lfciAqIDEwMC4wLCB0YXJnZXRfYnVzeV9wY3Qp OworCisJYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKGJ1c3lfciwgKGRvdWJsZSl0YXJnZXRfYnVzeV9w Y3QgLyAxMDAuMCwgMC4xNSk7Cit9CisKIGlndF9tYWluCiB7CiAJY29uc3QgdW5zaWduZWQgaW50 IG51bV9vdGhlcl9tZXRyaWNzID0KQEAgLTE0MTgsNiArMTU2Myw4IEBAIGlndF9tYWluCiAJCWlu dmFsaWRfaW5pdCgpOwogCiAJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBlKSB7 CisJCWNvbnN0IHVuc2lnbmVkIGludCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07CisKIAkJLyoqCiAJ CSAqIFRlc3QgdGhhdCBhIHNpbmdsZSBlbmdpbmUgbWV0cmljIGNhbiBiZSBpbml0aWFsaXplZCBv ciBpdAogCQkgKiBpcyBjb3JyZWN0bHkgcmVqZWN0ZWQuCkBAIC0xNTI0LDYgKzE2NzEsMTUgQEAg aWd0X21haW4KIAkJCSAqLwogCQkJaWd0X3N1YnRlc3RfZigiZW5hYmxlLXJhY2UtJXMiLCBlLT5u YW1lKQogCQkJCXRlc3RfZW5hYmxlX3JhY2UoZmQsIGUpOworCisJCQkvKioKKwkJCSAqIENoZWNr IGVuZ2luZSBidXN5bmVzcyBhY2N1cmFjeSBpcyBhcyBleHBlY3RlZC4KKwkJCSAqLworCQkJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGN0KTsgaSsrKSB7CisJCQkJaWd0X3N1YnRlc3RfZigi YnVzeS1hY2N1cmFjeS0ldS0lcyIsCisJCQkJCSAgICAgIHBjdFtpXSwgZS0+bmFtZSkKKwkJCQkJ YWNjdXJhY3koZmQsIGUsIHBjdFtpXSk7CisJCQl9CiAJCX0KIAogCQkvKioKLS0gCjIuMTQuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==