From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 694D86E75A for ; Thu, 5 Apr 2018 12:40:42 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id s18so28129101wrg.9 for ; Thu, 05 Apr 2018 05:40:42 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 5 Apr 2018 13:40:27 +0100 Message-Id: <20180405124028.22766-5-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180405124028.22766-1-tvrtko.ursulin@linux.intel.com> References: <20180405124028.22766-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 4/5] tests/perf_pmu: Add tests for engine queued/runnable/running stats 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClNpbXBsZSB0 ZXN0cyB0byBjaGVjayByZXBvcnRlZCBxdWV1ZSBkZXB0aHMgYXJlIGNvcnJlY3QuCgp2MjoKICog SW1wcm92ZW1lbnRzIHNpbWlsYXIgdG8gb25lcyBmcm9tIGk5MTVfcXVlcnkuYy4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogdGVz dHMvcGVyZl9wbXUuYyB8IDI1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjU4IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRleCA1OTBl NjUyNmIwNjkuLjdmY2NiNDM3ZDA0OCAxMDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUuYworKysg Yi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0xNjksNiArMTY5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBlMnJpbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQogI2RlZmluZSBURVNUX1JVTlRJTUVfUE0gKDgpCiAjZGVmaW5lIEZMQUdfTE9ORyAoMTYp CiAjZGVmaW5lIEZMQUdfSEFORyAoMzIpCisjZGVmaW5lIFRFU1RfQ09OVEVYVFMgKDY0KQogCiBz dGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNp Z25lZCBsb25nIGZsYWdzKQogewpAQCAtOTU5LDYgKzk2MCwyMjMgQEAgbXVsdGlfY2xpZW50KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAlhc3Nl cnRfd2l0aGluX2Vwc2lsb24odmFsWzFdLCBwZXJmX3NsZXB0WzFdLCB0b2xlcmFuY2UpOwogfQog CitzdGF0aWMgZG91YmxlIGNhbGNfcXVldWVkKHVpbnQ2NF90IGRfdmFsLCB1aW50NjRfdCBkX25z KQoreworCXJldHVybiAoZG91YmxlKWRfdmFsICogMWU5IC8gSTkxNV9TQU1QTEVfUVVFVUVEX0RJ VklTT1IgLyBkX25zOworfQorCitzdGF0aWMgdm9pZAorcXVldWVkKGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQor eworCWNvbnN0IHVuc2lnbmVkIGxvbmcgZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJY29u c3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKwljb25zdCB1bnNpZ25lZCBp bnQgbWF4X3JxID0gMTA7CisJZG91YmxlIHF1ZXVlZFttYXhfcnEgKyAxXTsKKwl1bnNpZ25lZCBp bnQgbiwgaTsKKwl1aW50NjRfdCB2YWxbMl07CisJdWludDY0X3QgdHNbMl07CisJdWludDMyX3Qg Ym87CisJaW50IGZkOworCisJaWd0X3JlcXVpcmVfc3dfc3luYygpOworCWlmIChmbGFncyAmIFRF U1RfQ09OVEVYVFMpCisJCWdlbV9yZXF1aXJlX2NvbnRleHRzKGdlbV9mZCk7CisKKwltZW1zZXQo cXVldWVkLCAwLCBzaXplb2YocXVldWVkKSk7CisKKwlibyA9IGdlbV9jcmVhdGUoZ2VtX2ZkLCA0 MDk2KTsKKwlnZW1fd3JpdGUoZ2VtX2ZkLCBibywgNDA5MiwgJmJiZSwgc2l6ZW9mKGJiZSkpOwor CisJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfUVVFVUVEKGUtPmNsYXNzLCBlLT5pbnN0 YW5jZSkpOworCisJZm9yIChuID0gMDsgbiA8PSBtYXhfcnE7IG4rKykgeworCQlJR1RfQ09SS19G RU5DRShjb3JrKTsKKwkJaW50IGZlbmNlID0gLTE7CisKKwkJZ2VtX3F1aWVzY2VudF9ncHUoZ2Vt X2ZkKTsKKworCQlpZiAobikKKwkJCWZlbmNlID0gaWd0X2NvcmtfcGx1ZygmY29yaywgLTEpOwor CisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhl Y19vYmplY3QyIG9iaiA9IHsgfTsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg ZWIgPSB7IH07CisKKwkJCW9iai5oYW5kbGUgPSBibzsKKworCQkJZWIuYnVmZmVyX2NvdW50ID0g MTsKKwkJCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZvYmopOworCisJCQllYi5m bGFncyA9IGVuZ2luZSB8IEk5MTVfRVhFQ19GRU5DRV9JTjsKKwkJCWlmIChmbGFncyAmIFRFU1Rf Q09OVEVYVFMpCisJCQkJZWIucnN2ZDEgPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwkJ CWViLnJzdmQyID0gZmVuY2U7CisKKwkJCWdlbV9leGVjYnVmKGdlbV9mZCwgJmViKTsKKworCQkJ aWYgKGZsYWdzICYgVEVTVF9DT05URVhUUykKKwkJCQlnZW1fY29udGV4dF9kZXN0cm95KGdlbV9m ZCwgZWIucnN2ZDEpOworCQl9CisKKwkJdmFsWzBdID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0 c1swXSk7CisJCXVzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOworCQl2YWxbMV0gPSBf X3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzFdKTsKKworCQlxdWV1ZWRbbl0gPSBjYWxjX3F1ZXVl ZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFdIC0gdHNbMF0pOworCQlpZ3RfaW5mbygibj0ldSBxdWV1 ZWQ9JS4yZlxuIiwgbiwgcXVldWVkW25dKTsKKworCQlpZiAoZmVuY2UgPj0gMCkKKwkJCWlndF9j b3JrX3VucGx1ZygmY29yayk7CisKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJCWdlbV9z eW5jKGdlbV9mZCwgYm8pOworCX0KKworCWNsb3NlKGZkKTsKKworCWdlbV9jbG9zZShnZW1fZmQs IGJvKTsKKworCWZvciAoaSA9IDA7IGkgPD0gbWF4X3JxOyBpKyspCisJCWFzc2VydF93aXRoaW5f ZXBzaWxvbihxdWV1ZWRbaV0sIGksIHRvbGVyYW5jZSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBs b25nIF9fcXVlcnlfd2FpdChpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgbikKK3sKKwlz dHJ1Y3QgdGltZXNwZWMgdHMgPSB7IH07CisJdW5zaWduZWQgbG9uZyB0OworCisJaWd0X25zZWNf ZWxhcHNlZCgmdHMpOworCisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJaWd0X3NwaW5fYnVzeXdh aXRfdW50aWxfcnVubmluZyhzcGluKTsKKwl9IGVsc2UgeworCQlpZ3RfZGVidWcoIl9fc3Bpbl93 YWl0IC0gdXNsZWVwIG1vZGVcbiIpOworCQl1c2xlZXAoNTAwZTMpOyAvKiBCZXR0ZXIgdGhhbiBu b3RoaW5nISAqLworCX0KKworCXQgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CisKKwlyZXR1cm4g c3Bpbi0+cnVubmluZyA/IHQgOiA1MDBlNiAvIG47Cit9CisKK3N0YXRpYyB2b2lkCitydW5uYWJs ZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7 CisJY29uc3QgdW5zaWduZWQgbG9uZyBlbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwlib29s IGNvbnRleHRzID0gZ2VtX2hhc19jb250ZXh0cyhnZW1fZmQpOworCWNvbnN0IHVuc2lnbmVkIGlu dCBtYXhfcnEgPSAxMDsKKwlpZ3Rfc3Bpbl90ICpzcGluW21heF9ycSArIDFdOworCWRvdWJsZSBy dW5uYWJsZVttYXhfcnEgKyAxXTsKKwl1aW50MzJfdCBjdHhbbWF4X3JxXTsKKwl1bnNpZ25lZCBp bnQgbiwgaTsKKwl1aW50NjRfdCB2YWxbMl07CisJdWludDY0X3QgdHNbMl07CisJaW50IGZkOwor CisJbWVtc2V0KHJ1bm5hYmxlLCAwLCBzaXplb2YocnVubmFibGUpKTsKKworCWlmIChjb250ZXh0 cykgeworCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3JxOyBpKyspCisJCQljdHhbaV0gPSBnZW1fY29u dGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwl9CisKKwlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lO RV9SVU5OQUJMRShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKKworCWZvciAobiA9IDA7IG4gPD0g bWF4X3JxOyBuKyspIHsKKwkJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKworCQlmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CisJCQl1aW50MzJfdCBjdHhfID0gY29udGV4dHMgPyBjdHhbaV0g OiAwOworCisJCQlpZiAoaSA9PSAwKQorCQkJCXNwaW5baV0gPSBfX3NwaW5fcG9sbChnZW1fZmQs IGN0eF8sIGVuZ2luZSk7CisJCQllbHNlCisJCQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hf bmV3KGdlbV9mZCwgY3R4XywKKwkJCQkJCQkgICAgICAgZW5naW5lLCAwKTsKKwkJfQorCisJCWlm IChuKQorCQkJdXNsZWVwKF9fcXVlcnlfd2FpdChzcGluWzBdLCBuKSAqIG4pOworCisJCXZhbFsw XSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMF0pOworCQl1c2xlZXAoYmF0Y2hfZHVyYXRp b25fbnMgLyAxMDAwKTsKKwkJdmFsWzFdID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1sxXSk7 CisKKwkJcnVubmFibGVbbl0gPSBjYWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFdIC0g dHNbMF0pOworCQlpZ3RfaW5mbygibj0ldSBydW5uYWJsZT0lLjJmXG4iLCBuLCBydW5uYWJsZVtu XSk7CisKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQkJZW5kX3NwaW4oZ2VtX2ZkLCBz cGluW2ldLCBGTEFHX1NZTkMpOworCQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShnZW1fZmQsIHNwaW5b aV0pOworCQl9CisJfQorCisJaWYgKGNvbnRleHRzKSB7CisJCWZvciAoaSA9IDA7IGkgPCBtYXhf cnE7IGkrKykKKwkJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHhbaV0pOworCX0KKwor CWNsb3NlKGZkKTsKKworCWFzc2VydF93aXRoaW5fZXBzaWxvbihydW5uYWJsZVswXSwgMCwgdG9s ZXJhbmNlKTsKKwlpZ3RfYXNzZXJ0KHJ1bm5hYmxlW21heF9ycV0gPiAwLjApOworCisJaWYgKGNv bnRleHRzKQorCQlhc3NlcnRfd2l0aGluX2Vwc2lsb24ocnVubmFibGVbbWF4X3JxXSAtIHJ1bm5h YmxlW21heF9ycSAtIDFdLAorCQkJCSAgICAgIDEsIHRvbGVyYW5jZSk7Cit9CisKK3N0YXRpYyB2 b2lkCitydW5uaW5nKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSkKK3sKKwljb25zdCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmluZyhnZW1fZmQs IGUpOworCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfcnEgPSAxMDsKKwlpZ3Rfc3Bpbl90ICpzcGlu W21heF9ycSArIDFdOworCWRvdWJsZSBydW5uaW5nW21heF9ycSArIDFdOworCXVuc2lnbmVkIGlu dCBuLCBpOworCXVpbnQ2NF90IHZhbFsyXTsKKwl1aW50NjRfdCB0c1syXTsKKwlpbnQgZmQ7CisK KwltZW1zZXQocnVubmluZywgMCwgc2l6ZW9mKHJ1bm5pbmcpKTsKKwltZW1zZXQoc3BpbiwgMCwg c2l6ZW9mKHNwaW4pKTsKKworCWZkID0gb3Blbl9wbXUoSTkxNV9QTVVfRU5HSU5FX1JVTk5JTkco ZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7CisKKwlmb3IgKG4gPSAwOyBuIDw9IG1heF9ycTsgbisr KSB7CisJCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CisKKwkJZm9yIChpID0gMDsgaSA8IG47 IGkrKykgeworCQkJaWYgKGkgPT0gMCkKKwkJCQlzcGluW2ldID0gX19zcGluX3BvbGwoZ2VtX2Zk LCAwLCBlbmdpbmUpOworCQkJZWxzZQorCQkJCXNwaW5baV0gPSBfX2lndF9zcGluX2JhdGNoX25l dyhnZW1fZmQsIDAsCisJCQkJCQkJICAgICAgIGVuZ2luZSwgMCk7CisJCX0KKworCQlpZiAobikK KwkJCXVzbGVlcChfX3F1ZXJ5X3dhaXQoc3BpblswXSwgbikgKiBuKTsKKworCQl2YWxbMF0gPSBf X3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKKwkJdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25z IC8gMTAwMCk7CisJCXZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0pOworCisJ CXJ1bm5pbmdbbl0gPSBjYWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFdIC0gdHNbMF0p OworCQlpZ3RfaW5mbygibj0ldSBydW5uaW5nPSUuMmZcbiIsIG4sIHJ1bm5pbmdbbl0pOworCisJ CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWVuZF9zcGluKGdlbV9mZCwgc3BpbltpXSwg RkxBR19TWU5DKTsKKwkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluW2ldKTsKKwkJ fQorCX0KKworCWNsb3NlKGZkKTsKKworCWFzc2VydF93aXRoaW5fZXBzaWxvbihydW5uaW5nWzBd LCAwLCB0b2xlcmFuY2UpOworCWZvciAoaSA9IDE7IGkgPD0gbWF4X3JxOyBpKyspCisJCWlndF9h c3NlcnQocnVubmluZ1tpXSA+IDApOworfQorCiAvKioKICAqIFRlc3RzIHRoYXQgaTkxNSBQTVUg Y29yZWN0bHkgZXJyb3JzIG91dCBpbiBpbnZhbGlkIGluaXRpYWxpemF0aW9uLgogICogaTkxNSBQ TVUgaXMgdW5jb3JlIFBNVSwgdGh1czoKQEAgLTE2OTIsNiArMTkxMCwxNSBAQCBpZ3RfbWFpbgog CQlpZ3Rfc3VidGVzdF9mKCJpbml0LXNlbWEtJXMiLCBlLT5uYW1lKQogCQkJaW5pdChmZCwgZSwg STkxNV9TQU1QTEVfU0VNQSk7CiAKKwkJaWd0X3N1YnRlc3RfZigiaW5pdC1xdWV1ZWQtJXMiLCBl LT5uYW1lKQorCQkJaW5pdChmZCwgZSwgSTkxNV9TQU1QTEVfUVVFVUVEKTsKKworCQlpZ3Rfc3Vi dGVzdF9mKCJpbml0LXJ1bm5hYmxlLSVzIiwgZS0+bmFtZSkKKwkJCWluaXQoZmQsIGUsIEk5MTVf U0FNUExFX1JVTk5BQkxFKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJpbml0LXJ1bm5pbmctJXMiLCBl LT5uYW1lKQorCQkJaW5pdChmZCwgZSwgSTkxNV9TQU1QTEVfUlVOTklORyk7CisKIAkJaWd0X3N1 YnRlc3RfZ3JvdXAgewogCQkJaWd0X2ZpeHR1cmUgewogCQkJCWdlbV9yZXF1aXJlX2VuZ2luZShm ZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKQEAgLTE3OTcsNiArMjAyNCwyNyBAQCBpZ3RfbWFp bgogCiAJCQlpZ3Rfc3VidGVzdF9mKCJidXN5LWhhbmctJXMiLCBlLT5uYW1lKQogCQkJCXNpbmds ZShmZCwgZSwgVEVTVF9CVVNZIHwgRkxBR19IQU5HKTsKKworCQkJLyoqCisJCQkgKiBUZXN0IHRo YXQgcXVldWVkIG1ldHJpYyB3b3Jrcy4KKwkJCSAqLworCQkJaWd0X3N1YnRlc3RfZigicXVldWVk LSVzIiwgZS0+bmFtZSkKKwkJCQlxdWV1ZWQoZmQsIGUsIDApOworCisJCQlpZ3Rfc3VidGVzdF9m KCJxdWV1ZWQtY29udGV4dHMtJXMiLCBlLT5uYW1lKQorCQkJCXF1ZXVlZChmZCwgZSwgVEVTVF9D T05URVhUUyk7CisKKwkJCS8qKgorCQkJICogVGVzdCB0aGF0IHJ1bm5hYmxlIG1ldHJpYyB3b3Jr cy4KKwkJCSAqLworCQkJaWd0X3N1YnRlc3RfZigicnVubmFibGUtJXMiLCBlLT5uYW1lKQorCQkJ CXJ1bm5hYmxlKGZkLCBlKTsKKworCQkJLyoqCisJCQkgKiBUZXN0IHRoYXQgcnVubmluZyBtZXRy aWMgd29ya3MuCisJCQkgKi8KKwkJCWlndF9zdWJ0ZXN0X2YoInJ1bm5pbmctJXMiLCBlLT5uYW1l KQorCQkJCXJ1bm5pbmcoZmQsIGUpOwogCQl9CiAKIAkJLyoqCkBAIC0xODg5LDYgKzIxMzcsMTYg QEAgaWd0X21haW4KIAkJCQkJICAgICAgZS0+bmFtZSkKIAkJCQkJc2luZ2xlKHJlbmRlcl9mZCwg ZSwKIAkJCQkJICAgICAgIFRFU1RfQlVTWSB8IFRFU1RfVFJBSUxJTkdfSURMRSk7CisJCQkJaWd0 X3N1YnRlc3RfZigicmVuZGVyLW5vZGUtcXVldWVkLSVzIiwgZS0+bmFtZSkKKwkJCQkJcXVldWVk KHJlbmRlcl9mZCwgZSwgMCk7CisJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVyLW5vZGUtcXVldWVk LWNvbnRleHRzLSVzIiwKKwkJCQkJICAgICAgZS0+bmFtZSkKKwkJCQkJcXVldWVkKHJlbmRlcl9m ZCwgZSwgVEVTVF9DT05URVhUUyk7CisJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVyLW5vZGUtcnVu bmFibGUtJXMiLAorCQkJCQkgICAgICBlLT5uYW1lKQorCQkJCQlydW5uYWJsZShyZW5kZXJfZmQs IGUpOworCQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLXJ1bm5pbmctJXMiLCBlLT5uYW1l KQorCQkJCQlydW5uaW5nKHJlbmRlcl9mZCwgZSk7CiAJCQl9CiAJCX0KIAotLSAKMi4xNC4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK