From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v2 2/3] tests/gem_eio: Speed up test execution Date: Thu, 22 Mar 2018 11:27:03 +0000 Message-ID: <20180322112703.9453-1-tvrtko.ursulin@linux.intel.com> References: <20180322111712.9056-2-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-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8EC586EB98 for ; Thu, 22 Mar 2018 11:27:13 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id t6so15448177wmt.5 for ; Thu, 22 Mar 2018 04:27:13 -0700 (PDT) In-Reply-To: <20180322111712.9056-2-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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCklmIHdlIHN0 b3AgcmVseWluZyBvbiByZWd1bGFyIEdQVSBoYW5ncyB0byBiZSBkZXRlY3RlZCwgYnV0IHRyaWdn ZXIgdGhlbQptYW51YWxseSBhcyBzb29uIGFzIHdlIGtub3cgb3VyIGJhdGNoIG9mIGludGVyZXN0 IGlzIGFjdHVhbGx5IGV4ZWN1dGluZwpvbiB0aGUgR1BVLCB3ZSBjYW4gZHJhbWF0aWNhbGx5IHNw ZWVkIHVwIHZhcmlvdXMgc3VidGVzdHMuCgpUaGlzIGlzIGVuYWJsZWQgYnkgdGhlIHBvbGxhYmxl IHNwaW4gYmF0Y2ggYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IEFudG9uaW8gQXJnZW56 aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVsLmNvbT4KLS0tCk5vdGUgdGhhdCB0aGUgJ3dh aXQnIHN1YnRlc3QgaXMgbXlzdGVyaW91c2x5IGhhbmdpbmcgZm9yIG1lIGluIHRoZSBuby1vcApi YXRjaCBzZW5kIGJ5IGdlbV90ZXN0X2VuZ2luZXMsIGJ1dCBvbmx5IG9uIFJDUyBlbmdpbmUuIFRC RCB3aGlsZSBJIGFtCmdldHRpbmcgc29tZSBDSSByZXN1bHRzLgotLS0KIHRlc3RzL2dlbV9laW8u YyB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9laW8uYyBiL3Rlc3RzL2dlbV9laW8uYwppbmRleCA0 YmNjNTkzN2RiMzkuLjkzNDAwMDU2MTI0YiAxMDA2NDQKLS0tIGEvdGVzdHMvZ2VtX2Vpby5jCisr KyBiL3Rlc3RzL2dlbV9laW8uYwpAQCAtNzEsMjYgKzcxLDIzIEBAIHN0YXRpYyB2b2lkIHRyaWdn ZXJfcmVzZXQoaW50IGZkKQogCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKIH0KIAotc3RhdGljIHZv aWQgd2VkZ2VfZ3B1KGludCBmZCkKK3N0YXRpYyB2b2lkIG1hbnVhbF9oYW5nKGludCBkcm1fZmQp CiB7Ci0JLyogRmlyc3QgaWRsZSB0aGUgR1BVIHRoZW4gZGlzYWJsZSBHUFUgcmVzZXRzIGJlZm9y ZSBpbmplY3RpbmcgYSBoYW5nICovCi0JZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwotCi0JaWd0X3Jl cXVpcmUoaTkxNV9yZXNldF9jb250cm9sKGZhbHNlKSk7CisJaW50IGRpciA9IGlndF9kZWJ1Z2Zz X2Rpcihkcm1fZmQpOwogCi0JaWd0X2RlYnVnKCJXZWRnaW5nIEdQVSBieSBpbmplY3RpbmcgaGFu Z1xuIik7Ci0JaWd0X3Bvc3RfaGFuZ19yaW5nKGZkLCBpZ3RfaGFuZ19yaW5nKGZkLCBJOTE1X0VY RUNfREVGQVVMVCkpOworCWlndF9zeXNmc19zZXQoZGlyLCAiaTkxNV93ZWRnZWQiLCAiLTEiKTsK IAotCWlndF9hc3NlcnQoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKKwljbG9zZShkaXIpOwog fQogCi1zdGF0aWMgdm9pZCB3ZWRnZW1lKGludCBkcm1fZmQpCitzdGF0aWMgdm9pZCB3ZWRnZV9n cHUoaW50IGZkKQogewotCWludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKLQotCWln dF9zeXNmc19zZXQoZGlyLCAiaTkxNV93ZWRnZWQiLCAiLTEiKTsKKwkvKiBGaXJzdCBpZGxlIHRo ZSBHUFUgdGhlbiBkaXNhYmxlIEdQVSByZXNldHMgYmVmb3JlIGluamVjdGluZyBhIGhhbmcgKi8K KwlnZW1fcXVpZXNjZW50X2dwdShmZCk7CiAKLQljbG9zZShkaXIpOworCWlndF9yZXF1aXJlKGk5 MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOworCW1hbnVhbF9oYW5nKGZkKTsKKwlpZ3RfYXNzZXJ0 KGk5MTVfcmVzZXRfY29udHJvbCh0cnVlKSk7CiB9CiAKIHN0YXRpYyBpbnQgX19nZW1fdGhyb3R0 bGUoaW50IGZkKQpAQCAtMTQ5LDI5ICsxNDYsNjYgQEAgc3RhdGljIGludCBfX2dlbV93YWl0KGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCBpbnQ2NF90IHRpbWVvdXQpCiAJcmV0dXJuIGVycjsKIH0K IAorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwg dW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxh Z3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChmZCwgY3R4LCBmbGFncyk7 CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZmxhZ3MsIDAp OworfQorCitzdGF0aWMgdm9pZCBfX3NwaW5fd2FpdChpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4p Cit7CisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJd2hpbGUgKCEqKCh2b2xhdGlsZSBib29sICop c3Bpbi0+cnVubmluZykpCisJCQk7CisJfSBlbHNlIHsKKwkJaWd0X2RlYnVnKCJfX3NwaW5fd2Fp dCAtIHVzbGVlcCBtb2RlXG4iKTsKKwkJdXNsZWVwKDUwMGUzKTsgLyogQmV0dGVyIHRoYW4gbm90 aGluZyEgKi8KKwl9Cit9CisKKy8qCisgKiBXZWRnZSB0aGUgR1BVIHdoZW4gd2Uga25vdyBvdXIg YmF0Y2ggaXMgcnVubmluZy4KKyAqLworc3RhdGljIHZvaWQgd2VkZ2VfYWZ0ZXJfcnVubmluZyhp bnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJX19zcGluX3dhaXQoZmQsIHNwaW4pOworCW1h bnVhbF9oYW5nKGZkKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdF93YWl0KGludCBmZCkKIHsKLQlp Z3RfaGFuZ190IGhhbmc7CisJc3RydWN0IHRpbWVzcGVjIHRzID0geyB9OworCWlndF9zcGluX3Qg Kmhhbmc7CiAKIAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCisJaWd0X25zZWNfZWxhcHNlZCgmdHMp OworCiAJLyogSWYgdGhlIHJlcXVlc3Qgd2Ugd2FpdCBvbiBjb21wbGV0ZXMgZHVlIHRvIGEgaGFu ZyAoZXZlbiBmb3IKIAkgKiB0aGF0IHJlcXVlc3QpLCB0aGUgdXNlciBleHBlY3RzIHRoZSByZXR1 cm4gdmFsdWUgdG8gMCAoc3VjY2VzcykuCiAJICovCi0JaGFuZyA9IGlndF9oYW5nX3JpbmcoZmQs IEk5MTVfRVhFQ19ERUZBVUxUKTsKLQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmcu aGFuZGxlLCAtMSksIDApOwotCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaGFuZyk7CisJaWd0X3Jl cXVpcmUoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKKwloYW5nID0gX19zcGluX3BvbGwoZmQs IDAsIEk5MTVfRVhFQ19ERUZBVUxUKTsKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmctPmhhbmRsZSwgLTEpLCAwKTsKKwlp Z3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKIAogCS8qIElmIHRoZSBHUFUgaXMgd2VkZ2Vk IGR1cmluZyB0aGUgd2FpdCwgYWdhaW4gd2UgZXhwZWN0IHRoZSByZXR1cm4KIAkgKiB2YWx1ZSB0 byBiZSAwIChzdWNjZXNzKS4KIAkgKi8KIAlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2wo ZmFsc2UpKTsKLQloYW5nID0gaWd0X2hhbmdfcmluZyhmZCwgSTkxNV9FWEVDX0RFRkFVTFQpOwot CWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgaGFuZy5oYW5kbGUsIC0xKSwgMCk7Ci0JaWd0 X3Bvc3RfaGFuZ19yaW5nKGZkLCBoYW5nKTsKKwloYW5nID0gX19zcGluX3BvbGwoZmQsIDAsIEk5 MTVfRVhFQ19ERUZBVUxUKTsKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmctPmhhbmRsZSwgLTEpLCAwKTsKKwlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKIAlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2wo dHJ1ZSkpOwogCiAJdHJpZ2dlcl9yZXNldChmZCk7CisKKwkvKiBIQUNLIGZvciBDSSAqLworCWln dF9hc3NlcnQoaWd0X25zZWNfZWxhcHNlZCgmdHMpIDwgNWU5KTsKIH0KIAogc3RhdGljIHZvaWQg dGVzdF9zdXNwZW5kKGludCBmZCwgaW50IHN0YXRlKQpAQCAtMTgxLDcgKzIxNSw3IEBAIHN0YXRp YyB2b2lkIHRlc3Rfc3VzcGVuZChpbnQgZmQsIGludCBzdGF0ZSkKIAogCS8qIENoZWNrIHdlIGNh biBzdXNwZW5kIHdoZW4gdGhlIGRyaXZlciBpcyBhbHJlYWR5IHdlZGdlZCAqLwogCWlndF9yZXF1 aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwotCXdlZGdlbWUoZmQpOworCW1hbnVhbF9o YW5nKGZkKTsKIAogCWlndF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKHN0YXRlLCBTVVNQRU5E X1RFU1RfREVWSUNFUyk7CiAKQEAgLTIwOSwxMSArMjQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rf aW5mbGlnaHQoaW50IGZkKQogCQlpbnQgZmVuY2VbNjRdOyAvKiBjb25zZXJ2YXRpdmUgZXN0aW1h dGUgb2YgcmluZyBzaXplICovCiAKIAkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwotCiAJCWlndF9k ZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18tPm5hbWUp OwogCQlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2woZmFsc2UpKTsKIAotCQloYW5nID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIDAsIGVuZ2luZSwgMCk7CisJCWhhbmcgPSBfX3NwaW5f cG9sbChmZCwgMCwgZW5naW5lKTsKIAkJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAog CQltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CkBAIC0yMjcsNiArMjYwLDgg QEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQpCiAJCQlpZ3RfYXNzZXJ0KGZlbmNl W25dICE9IC0xKTsKIAkJfQogCisJCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOworCiAJ CWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKIAkJ Zm9yICh1bnNpZ25lZCBpbnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKGZlbmNlKTsgbisrKSB7CiAJ CQlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25dKSwgLUVJTyk7CkBAIC0y NTYsNyArMjkxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9zdXNwZW5kKGludCBmZCkK IAlvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CiAJZ2VtX3dyaXRlKGZkLCBv YmpbMV0uaGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7CiAKLQloYW5nID0gX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoZmQsIDAsIDAsIDApOworCWhhbmcgPSBfX3NwaW5fcG9sbChmZCwgMCwgMCk7 CiAJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAogCW1lbXNldCgmZXhlY2J1ZiwgMCwg c2l6ZW9mKGV4ZWNidWYpKTsKQEAgLTI3Myw2ICszMDgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2lu ZmxpZ2h0X3N1c3BlbmQoaW50IGZkKQogCWlndF9zZXRfYXV0b3Jlc3VtZV9kZWxheSgzMCk7CiAJ aWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sIFNVU1BFTkRf VEVTVF9OT05FKTsKIAorCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOworCiAJaWd0X2Fz c2VydF9lcShfX2dlbV93YWl0KGZkLCBvYmpbMV0uaGFuZGxlLCAtMSksIDApOwogCWZvciAodW5z aWduZWQgaW50IG4gPSAwOyBuIDwgQVJSQVlfU0laRShmZW5jZSk7IG4rKykgewogCQlpZ3RfYXNz ZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25dKSwgLUVJTyk7CkBAIC0zMzAsNyArMzY3 LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9jb250ZXh0cyhpbnQgZmQpCiAJCWlndF9k ZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18tPm5hbWUp OwogCQlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2woZmFsc2UpKTsKIAotCQloYW5nID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIDAsIGVuZ2luZSwgMCk7CisJCWhhbmcgPSBfX3NwaW5f cG9sbChmZCwgY3R4WzBdLCBlbmdpbmUpOwogCQlvYmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxl OwogCiAJCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKQEAgLTM0NSw2ICsz ODIsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2NvbnRleHRzKGludCBmZCkKIAkJCWln dF9hc3NlcnQoZmVuY2Vbbl0gIT0gLTEpOwogCQl9CiAKKwkJd2VkZ2VfYWZ0ZXJfcnVubmluZyhm ZCwgaGFuZyk7CisKIAkJaWd0X2Fzc2VydF9lcShfX2dlbV93YWl0KGZkLCBvYmpbMV0uaGFuZGxl LCAtMSksIDApOwogCQlmb3IgKHVuc2lnbmVkIGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoZmVu Y2UpOyBuKyspIHsKIAkJCWlndF9hc3NlcnRfZXEoc3luY19mZW5jZV9zdGF0dXMoZmVuY2Vbbl0p LCAtRUlPKTsKQEAgLTM3NSw3ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2V4 dGVybmFsKGludCBmZCkKIAlmZW5jZSA9IGlndF9jb3JrX3BsdWcoJmNvcmssIGZkKTsKIAogCWln dF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwotCWhhbmcgPSBfX2lndF9zcGlu X2JhdGNoX25ldyhmZCwgMCwgMCwgMCk7CisJaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsK IAogCW1lbXNldCgmb2JqLCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqLmhhbmRsZSA9IGdlbV9jcmVh dGUoZmQsIDQwOTYpOwpAQCAtMzkzLDYgKzQzMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5mbGln aHRfZXh0ZXJuYWwoaW50IGZkKQogCWZlbmNlID0gZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKIAlpZ3Rf YXNzZXJ0KGZlbmNlICE9IC0xKTsKIAorCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOwor CiAJZ2VtX3N5bmMoZmQsIGhhbmctPmhhbmRsZSk7IC8qIHdlZGdlZCwgd2l0aCBhbiB1bnJlYWR5 IGJhdGNoICovCiAJaWd0X2Fzc2VydCghZ2VtX2JvX2J1c3koZmQsIGhhbmctPmhhbmRsZSkpOwog CWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9iai5oYW5kbGUpKTsKQEAgLTQyMCw3ICs0NjEs NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2ludGVybmFsKGludCBmZCkKIAlpZ3RfcmVx dWlyZShnZW1faGFzX2V4ZWNfZmVuY2UoZmQpKTsKIAogCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRf Y29udHJvbChmYWxzZSkpOwotCWhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgMCwg MCk7CisJaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsKIAogCW1lbXNldChvYmosIDAsIHNp emVvZihvYmopKTsKIAlvYmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxlOwpAQCAtNDQxLDYgKzQ4 Miw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQogCQluZmVu Y2UrKzsKIAl9CiAKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsKKwogCWlndF9hc3Nl cnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKIAl3aGlsZSAobmZl bmNlLS0pIHsKIAkJaWd0X2Fzc2VydF9lcShzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZXNbbmZlbmNl XSksIC1FSU8pOwotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id B7D2D6EBC6 for ; Thu, 22 Mar 2018 11:27:13 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id l16so15446335wmh.3 for ; Thu, 22 Mar 2018 04:27:13 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 22 Mar 2018 11:27:03 +0000 Message-Id: <20180322112703.9453-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180322111712.9056-2-tvrtko.ursulin@linux.intel.com> References: <20180322111712.9056-2-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t v2 2/3] tests/gem_eio: Speed up test execution 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCklmIHdlIHN0 b3AgcmVseWluZyBvbiByZWd1bGFyIEdQVSBoYW5ncyB0byBiZSBkZXRlY3RlZCwgYnV0IHRyaWdn ZXIgdGhlbQptYW51YWxseSBhcyBzb29uIGFzIHdlIGtub3cgb3VyIGJhdGNoIG9mIGludGVyZXN0 IGlzIGFjdHVhbGx5IGV4ZWN1dGluZwpvbiB0aGUgR1BVLCB3ZSBjYW4gZHJhbWF0aWNhbGx5IHNw ZWVkIHVwIHZhcmlvdXMgc3VidGVzdHMuCgpUaGlzIGlzIGVuYWJsZWQgYnkgdGhlIHBvbGxhYmxl IHNwaW4gYmF0Y2ggYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IEFudG9uaW8gQXJnZW56 aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVsLmNvbT4KLS0tCk5vdGUgdGhhdCB0aGUgJ3dh aXQnIHN1YnRlc3QgaXMgbXlzdGVyaW91c2x5IGhhbmdpbmcgZm9yIG1lIGluIHRoZSBuby1vcApi YXRjaCBzZW5kIGJ5IGdlbV90ZXN0X2VuZ2luZXMsIGJ1dCBvbmx5IG9uIFJDUyBlbmdpbmUuIFRC RCB3aGlsZSBJIGFtCmdldHRpbmcgc29tZSBDSSByZXN1bHRzLgotLS0KIHRlc3RzL2dlbV9laW8u YyB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9laW8uYyBiL3Rlc3RzL2dlbV9laW8uYwppbmRleCA0 YmNjNTkzN2RiMzkuLjkzNDAwMDU2MTI0YiAxMDA2NDQKLS0tIGEvdGVzdHMvZ2VtX2Vpby5jCisr KyBiL3Rlc3RzL2dlbV9laW8uYwpAQCAtNzEsMjYgKzcxLDIzIEBAIHN0YXRpYyB2b2lkIHRyaWdn ZXJfcmVzZXQoaW50IGZkKQogCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKIH0KIAotc3RhdGljIHZv aWQgd2VkZ2VfZ3B1KGludCBmZCkKK3N0YXRpYyB2b2lkIG1hbnVhbF9oYW5nKGludCBkcm1fZmQp CiB7Ci0JLyogRmlyc3QgaWRsZSB0aGUgR1BVIHRoZW4gZGlzYWJsZSBHUFUgcmVzZXRzIGJlZm9y ZSBpbmplY3RpbmcgYSBoYW5nICovCi0JZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwotCi0JaWd0X3Jl cXVpcmUoaTkxNV9yZXNldF9jb250cm9sKGZhbHNlKSk7CisJaW50IGRpciA9IGlndF9kZWJ1Z2Zz X2Rpcihkcm1fZmQpOwogCi0JaWd0X2RlYnVnKCJXZWRnaW5nIEdQVSBieSBpbmplY3RpbmcgaGFu Z1xuIik7Ci0JaWd0X3Bvc3RfaGFuZ19yaW5nKGZkLCBpZ3RfaGFuZ19yaW5nKGZkLCBJOTE1X0VY RUNfREVGQVVMVCkpOworCWlndF9zeXNmc19zZXQoZGlyLCAiaTkxNV93ZWRnZWQiLCAiLTEiKTsK IAotCWlndF9hc3NlcnQoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKKwljbG9zZShkaXIpOwog fQogCi1zdGF0aWMgdm9pZCB3ZWRnZW1lKGludCBkcm1fZmQpCitzdGF0aWMgdm9pZCB3ZWRnZV9n cHUoaW50IGZkKQogewotCWludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKLQotCWln dF9zeXNmc19zZXQoZGlyLCAiaTkxNV93ZWRnZWQiLCAiLTEiKTsKKwkvKiBGaXJzdCBpZGxlIHRo ZSBHUFUgdGhlbiBkaXNhYmxlIEdQVSByZXNldHMgYmVmb3JlIGluamVjdGluZyBhIGhhbmcgKi8K KwlnZW1fcXVpZXNjZW50X2dwdShmZCk7CiAKLQljbG9zZShkaXIpOworCWlndF9yZXF1aXJlKGk5 MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOworCW1hbnVhbF9oYW5nKGZkKTsKKwlpZ3RfYXNzZXJ0 KGk5MTVfcmVzZXRfY29udHJvbCh0cnVlKSk7CiB9CiAKIHN0YXRpYyBpbnQgX19nZW1fdGhyb3R0 bGUoaW50IGZkKQpAQCAtMTQ5LDI5ICsxNDYsNjYgQEAgc3RhdGljIGludCBfX2dlbV93YWl0KGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCBpbnQ2NF90IHRpbWVvdXQpCiAJcmV0dXJuIGVycjsKIH0K IAorc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwg dW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxh Z3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChmZCwgY3R4LCBmbGFncyk7 CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZmxhZ3MsIDAp OworfQorCitzdGF0aWMgdm9pZCBfX3NwaW5fd2FpdChpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4p Cit7CisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJd2hpbGUgKCEqKCh2b2xhdGlsZSBib29sICop c3Bpbi0+cnVubmluZykpCisJCQk7CisJfSBlbHNlIHsKKwkJaWd0X2RlYnVnKCJfX3NwaW5fd2Fp dCAtIHVzbGVlcCBtb2RlXG4iKTsKKwkJdXNsZWVwKDUwMGUzKTsgLyogQmV0dGVyIHRoYW4gbm90 aGluZyEgKi8KKwl9Cit9CisKKy8qCisgKiBXZWRnZSB0aGUgR1BVIHdoZW4gd2Uga25vdyBvdXIg YmF0Y2ggaXMgcnVubmluZy4KKyAqLworc3RhdGljIHZvaWQgd2VkZ2VfYWZ0ZXJfcnVubmluZyhp bnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJX19zcGluX3dhaXQoZmQsIHNwaW4pOworCW1h bnVhbF9oYW5nKGZkKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdF93YWl0KGludCBmZCkKIHsKLQlp Z3RfaGFuZ190IGhhbmc7CisJc3RydWN0IHRpbWVzcGVjIHRzID0geyB9OworCWlndF9zcGluX3Qg Kmhhbmc7CiAKIAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCisJaWd0X25zZWNfZWxhcHNlZCgmdHMp OworCiAJLyogSWYgdGhlIHJlcXVlc3Qgd2Ugd2FpdCBvbiBjb21wbGV0ZXMgZHVlIHRvIGEgaGFu ZyAoZXZlbiBmb3IKIAkgKiB0aGF0IHJlcXVlc3QpLCB0aGUgdXNlciBleHBlY3RzIHRoZSByZXR1 cm4gdmFsdWUgdG8gMCAoc3VjY2VzcykuCiAJICovCi0JaGFuZyA9IGlndF9oYW5nX3JpbmcoZmQs IEk5MTVfRVhFQ19ERUZBVUxUKTsKLQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmcu aGFuZGxlLCAtMSksIDApOwotCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaGFuZyk7CisJaWd0X3Jl cXVpcmUoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKKwloYW5nID0gX19zcGluX3BvbGwoZmQs IDAsIEk5MTVfRVhFQ19ERUZBVUxUKTsKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmctPmhhbmRsZSwgLTEpLCAwKTsKKwlp Z3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKIAogCS8qIElmIHRoZSBHUFUgaXMgd2VkZ2Vk IGR1cmluZyB0aGUgd2FpdCwgYWdhaW4gd2UgZXhwZWN0IHRoZSByZXR1cm4KIAkgKiB2YWx1ZSB0 byBiZSAwIChzdWNjZXNzKS4KIAkgKi8KIAlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2wo ZmFsc2UpKTsKLQloYW5nID0gaWd0X2hhbmdfcmluZyhmZCwgSTkxNV9FWEVDX0RFRkFVTFQpOwot CWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgaGFuZy5oYW5kbGUsIC0xKSwgMCk7Ci0JaWd0 X3Bvc3RfaGFuZ19yaW5nKGZkLCBoYW5nKTsKKwloYW5nID0gX19zcGluX3BvbGwoZmQsIDAsIEk5 MTVfRVhFQ19ERUZBVUxUKTsKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIGhhbmctPmhhbmRsZSwgLTEpLCAwKTsKKwlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKIAlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2wo dHJ1ZSkpOwogCiAJdHJpZ2dlcl9yZXNldChmZCk7CisKKwkvKiBIQUNLIGZvciBDSSAqLworCWln dF9hc3NlcnQoaWd0X25zZWNfZWxhcHNlZCgmdHMpIDwgNWU5KTsKIH0KIAogc3RhdGljIHZvaWQg dGVzdF9zdXNwZW5kKGludCBmZCwgaW50IHN0YXRlKQpAQCAtMTgxLDcgKzIxNSw3IEBAIHN0YXRp YyB2b2lkIHRlc3Rfc3VzcGVuZChpbnQgZmQsIGludCBzdGF0ZSkKIAogCS8qIENoZWNrIHdlIGNh biBzdXNwZW5kIHdoZW4gdGhlIGRyaXZlciBpcyBhbHJlYWR5IHdlZGdlZCAqLwogCWlndF9yZXF1 aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwotCXdlZGdlbWUoZmQpOworCW1hbnVhbF9o YW5nKGZkKTsKIAogCWlndF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKHN0YXRlLCBTVVNQRU5E X1RFU1RfREVWSUNFUyk7CiAKQEAgLTIwOSwxMSArMjQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rf aW5mbGlnaHQoaW50IGZkKQogCQlpbnQgZmVuY2VbNjRdOyAvKiBjb25zZXJ2YXRpdmUgZXN0aW1h dGUgb2YgcmluZyBzaXplICovCiAKIAkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwotCiAJCWlndF9k ZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18tPm5hbWUp OwogCQlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2woZmFsc2UpKTsKIAotCQloYW5nID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIDAsIGVuZ2luZSwgMCk7CisJCWhhbmcgPSBfX3NwaW5f cG9sbChmZCwgMCwgZW5naW5lKTsKIAkJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAog CQltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CkBAIC0yMjcsNiArMjYwLDgg QEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQpCiAJCQlpZ3RfYXNzZXJ0KGZlbmNl W25dICE9IC0xKTsKIAkJfQogCisJCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOworCiAJ CWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKIAkJ Zm9yICh1bnNpZ25lZCBpbnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKGZlbmNlKTsgbisrKSB7CiAJ CQlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25dKSwgLUVJTyk7CkBAIC0y NTYsNyArMjkxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9zdXNwZW5kKGludCBmZCkK IAlvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CiAJZ2VtX3dyaXRlKGZkLCBv YmpbMV0uaGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7CiAKLQloYW5nID0gX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoZmQsIDAsIDAsIDApOworCWhhbmcgPSBfX3NwaW5fcG9sbChmZCwgMCwgMCk7 CiAJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAogCW1lbXNldCgmZXhlY2J1ZiwgMCwg c2l6ZW9mKGV4ZWNidWYpKTsKQEAgLTI3Myw2ICszMDgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2lu ZmxpZ2h0X3N1c3BlbmQoaW50IGZkKQogCWlndF9zZXRfYXV0b3Jlc3VtZV9kZWxheSgzMCk7CiAJ aWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sIFNVU1BFTkRf VEVTVF9OT05FKTsKIAorCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOworCiAJaWd0X2Fz c2VydF9lcShfX2dlbV93YWl0KGZkLCBvYmpbMV0uaGFuZGxlLCAtMSksIDApOwogCWZvciAodW5z aWduZWQgaW50IG4gPSAwOyBuIDwgQVJSQVlfU0laRShmZW5jZSk7IG4rKykgewogCQlpZ3RfYXNz ZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25dKSwgLUVJTyk7CkBAIC0zMzAsNyArMzY3 LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9jb250ZXh0cyhpbnQgZmQpCiAJCWlndF9k ZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18tPm5hbWUp OwogCQlpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2woZmFsc2UpKTsKIAotCQloYW5nID0g X19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIDAsIGVuZ2luZSwgMCk7CisJCWhhbmcgPSBfX3NwaW5f cG9sbChmZCwgY3R4WzBdLCBlbmdpbmUpOwogCQlvYmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxl OwogCiAJCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKQEAgLTM0NSw2ICsz ODIsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2NvbnRleHRzKGludCBmZCkKIAkJCWln dF9hc3NlcnQoZmVuY2Vbbl0gIT0gLTEpOwogCQl9CiAKKwkJd2VkZ2VfYWZ0ZXJfcnVubmluZyhm ZCwgaGFuZyk7CisKIAkJaWd0X2Fzc2VydF9lcShfX2dlbV93YWl0KGZkLCBvYmpbMV0uaGFuZGxl LCAtMSksIDApOwogCQlmb3IgKHVuc2lnbmVkIGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoZmVu Y2UpOyBuKyspIHsKIAkJCWlndF9hc3NlcnRfZXEoc3luY19mZW5jZV9zdGF0dXMoZmVuY2Vbbl0p LCAtRUlPKTsKQEAgLTM3NSw3ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2V4 dGVybmFsKGludCBmZCkKIAlmZW5jZSA9IGlndF9jb3JrX3BsdWcoJmNvcmssIGZkKTsKIAogCWln dF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwotCWhhbmcgPSBfX2lndF9zcGlu X2JhdGNoX25ldyhmZCwgMCwgMCwgMCk7CisJaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsK IAogCW1lbXNldCgmb2JqLCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqLmhhbmRsZSA9IGdlbV9jcmVh dGUoZmQsIDQwOTYpOwpAQCAtMzkzLDYgKzQzMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5mbGln aHRfZXh0ZXJuYWwoaW50IGZkKQogCWZlbmNlID0gZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKIAlpZ3Rf YXNzZXJ0KGZlbmNlICE9IC0xKTsKIAorCXdlZGdlX2FmdGVyX3J1bm5pbmcoZmQsIGhhbmcpOwor CiAJZ2VtX3N5bmMoZmQsIGhhbmctPmhhbmRsZSk7IC8qIHdlZGdlZCwgd2l0aCBhbiB1bnJlYWR5 IGJhdGNoICovCiAJaWd0X2Fzc2VydCghZ2VtX2JvX2J1c3koZmQsIGhhbmctPmhhbmRsZSkpOwog CWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9iai5oYW5kbGUpKTsKQEAgLTQyMCw3ICs0NjEs NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2ludGVybmFsKGludCBmZCkKIAlpZ3RfcmVx dWlyZShnZW1faGFzX2V4ZWNfZmVuY2UoZmQpKTsKIAogCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRf Y29udHJvbChmYWxzZSkpOwotCWhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgMCwg MCk7CisJaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsKIAogCW1lbXNldChvYmosIDAsIHNp emVvZihvYmopKTsKIAlvYmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxlOwpAQCAtNDQxLDYgKzQ4 Miw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQogCQluZmVu Y2UrKzsKIAl9CiAKKwl3ZWRnZV9hZnRlcl9ydW5uaW5nKGZkLCBoYW5nKTsKKwogCWlndF9hc3Nl cnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKIAl3aGlsZSAobmZl bmNlLS0pIHsKIAkJaWd0X2Fzc2VydF9lcShzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZXNbbmZlbmNl XSksIC1FSU8pOwotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXYK