From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 23 Mar 2018 11:54:28 +0000 Message-Id: <20180323115428.23406-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <152179884167.23562.9863516190314553500@mail.alporthouse.com> References: <152179884167.23562.9863516190314553500@mail.alporthouse.com> Subject: [Intel-gfx] [PATCH i-g-t v3 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCklmIHdlIHN0 b3AgcmVseWluZyBvbiByZWd1bGFyIEdQVSBoYW5ncyB0byBiZSBkZXRlY3RlZCwgYnV0IHRyaWdn ZXIgdGhlbQptYW51YWxseSBhcyBzb29uIGFzIHdlIGtub3cgb3VyIGJhdGNoIG9mIGludGVyZXN0 IGlzIGFjdHVhbGx5IGV4ZWN1dGluZwpvbiB0aGUgR1BVLCB3ZSBjYW4gZHJhbWF0aWNhbGx5IHNw ZWVkIHVwIHZhcmlvdXMgc3VidGVzdHMuCgpUaGlzIGlzIGVuYWJsZWQgYnkgdGhlIHBvbGxhYmxl IHNwaW4gYmF0Y2ggYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoLgoKdjI6CiAqIFRlc3QgZ2Vt X3dhaXQgYWZ0ZXIgcmVzZXQvd2VkZ2UgYW5kIHdpdGggcmVzZXQvd2VkZ2UgYWZ0ZXIgYSBmZXcK ICAgcHJlZGVmaW5lZCBpbnRlcnZhbHMgc2luY2UgZ2VtX3dhaXQgaW52b2NhdGlvbi4gKENocmlz IFdpbHNvbikKCnYzOgogQ2hyaXMgV2lsc29uOgogKiBEZWNyZWFzZSBzaG9ydCB0ZXN0IHRvIDF1 cy4KICogVXNlIFBPU0lYIHRpbWVycyBpbnN0ZWFkIG9mIHNpZ25hbHMgdG8gYXZvaWQgaW50ZXJy dXB0aW5nIGdlbV93YWl0LgogKiBJbXByb3ZlIGNvbW1lbnQuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpTdWdnZXN0ZWQtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogQW50b25pbyBBcmdlbnppYW5v IDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLmFtIHwg ICAxICsKIHRlc3RzL2dlbV9laW8uYyAgIHwgMjM1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogdGVzdHMvbWVzb24uYnVpbGQgfCAgIDggKy0K IDMgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggZGJj N2JlNzIyZWI5Li5mNDFhZDUwOTYzNDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisr KyBiL3Rlc3RzL01ha2VmaWxlLmFtCkBAIC0xMzAsNiArMTMwLDcgQEAgZ2VtX3VzZXJwdHJfYmxp dHNfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NGTEFHUykKIGdlbV91c2VycHRyX2Js aXRzX0xEQUREID0gJChMREFERCkgLWxwdGhyZWFkCiBwZXJmX3BtdV9MREFERCA9ICQoTERBREQp ICQodG9wX2J1aWxkZGlyKS9saWIvbGliaWd0X3BlcmYubGEKIAorZ2VtX2Vpb19MREFERCA9ICQo TERBREQpIC1scnQKIGdlbV93YWl0X0xEQUREID0gJChMREFERCkgLWxydAoga21zX2ZsaXBfTERB REQgPSAkKExEQUREKSAtbHJ0IC1scHRocmVhZAogcG1fcmM2X3Jlc2lkZW5jeV9MREFERCA9ICQo TERBREQpIC1scnQKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9laW8uYyBiL3Rlc3RzL2dlbV9laW8u YwppbmRleCA0YmNjNTkzN2RiMzkuLmI4MjRkOWQ0YzljMCAxMDA2NDQKLS0tIGEvdGVzdHMvZ2Vt X2Vpby5jCisrKyBiL3Rlc3RzL2dlbV9laW8uYwpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUg PGludHR5cGVzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4K KyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAKICNpbmNsdWRlIDxkcm0u aD4KIApAQCAtNjIsNiArNjQsMTAgQEAgc3RhdGljIGJvb2wgaTkxNV9yZXNldF9jb250cm9sKGJv b2wgZW5hYmxlKQogCiBzdGF0aWMgdm9pZCB0cmlnZ2VyX3Jlc2V0KGludCBmZCkKIHsKKwlzdHJ1 Y3QgdGltZXNwZWMgdHMgPSB7IH07CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CisKIAlpZ3Rf Zm9yY2VfZ3B1X3Jlc2V0KGZkKTsKIAogCS8qIEFuZCBqdXN0IGNoZWNrIHRoZSBncHUgaXMgaW5k ZWVkIHJ1bm5pbmcgYWdhaW4gKi8KQEAgLTY5LDIyICs3NSwxMiBAQCBzdGF0aWMgdm9pZCB0cmln Z2VyX3Jlc2V0KGludCBmZCkKIAlnZW1fdGVzdF9lbmdpbmUoZmQsIEFMTF9FTkdJTkVTKTsKIAog CWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKLX0KLQotc3RhdGljIHZvaWQgd2VkZ2VfZ3B1KGludCBm ZCkKLXsKLQkvKiBGaXJzdCBpZGxlIHRoZSBHUFUgdGhlbiBkaXNhYmxlIEdQVSByZXNldHMgYmVm b3JlIGluamVjdGluZyBhIGhhbmcgKi8KLQlnZW1fcXVpZXNjZW50X2dwdShmZCk7Ci0KLQlpZ3Rf cmVxdWlyZShpOTE1X3Jlc2V0X2NvbnRyb2woZmFsc2UpKTsKLQotCWlndF9kZWJ1ZygiV2VkZ2lu ZyBHUFUgYnkgaW5qZWN0aW5nIGhhbmdcbiIpOwotCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaWd0 X2hhbmdfcmluZyhmZCwgSTkxNV9FWEVDX0RFRkFVTFQpKTsKIAotCWlndF9hc3NlcnQoaTkxNV9y ZXNldF9jb250cm9sKHRydWUpKTsKKwkvKiBXZSBleHBlY3QgZm9yY2VkIHJlc2V0IGFuZCBoZWFs dGggY2hlY2sgdG8gYmUgcXVpY2suICovCisJaWd0X2Fzc2VydChpZ3Rfc2Vjb25kc19lbGFwc2Vk KCZ0cykgPCAyKTsKIH0KIAotc3RhdGljIHZvaWQgd2VkZ2VtZShpbnQgZHJtX2ZkKQorc3RhdGlj IHZvaWQgbWFudWFsX2hhbmcoaW50IGRybV9mZCkKIHsKIAlpbnQgZGlyID0gaWd0X2RlYnVnZnNf ZGlyKGRybV9mZCk7CiAKQEAgLTkzLDYgKzg5LDE2IEBAIHN0YXRpYyB2b2lkIHdlZGdlbWUoaW50 IGRybV9mZCkKIAljbG9zZShkaXIpOwogfQogCitzdGF0aWMgdm9pZCB3ZWRnZV9ncHUoaW50IGZk KQoreworCS8qIEZpcnN0IGlkbGUgdGhlIEdQVSB0aGVuIGRpc2FibGUgR1BVIHJlc2V0cyBiZWZv cmUgaW5qZWN0aW5nIGEgaGFuZyAqLworCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKKworCWlndF9y ZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOworCW1hbnVhbF9oYW5nKGZkKTsKKwlp Z3RfYXNzZXJ0KGk5MTVfcmVzZXRfY29udHJvbCh0cnVlKSk7Cit9CisKIHN0YXRpYyBpbnQgX19n ZW1fdGhyb3R0bGUoaW50IGZkKQogewogCWludCBlcnIgPSAwOwpAQCAtMTQ5LDI2ICsxNTUsMTI0 IEBAIHN0YXRpYyBpbnQgX19nZW1fd2FpdChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgaW50NjRf dCB0aW1lb3V0KQogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfd2FpdChpbnQg ZmQpCitzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bpbl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4 LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogewotCWlndF9oYW5nX3QgaGFuZzsKKwlpZiAoZ2VtX2Nh bl9zdG9yZV9kd29yZChmZCwgZmxhZ3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdf cG9sbChmZCwgY3R4LCBmbGFncyk7CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9u ZXcoZmQsIGN0eCwgZmxhZ3MsIDApOworfQorCitzdGF0aWMgdm9pZCBfX3NwaW5fd2FpdChpbnQg ZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJaWd0X3Nw aW5fYnVzeXdhaXRfdW50aWxfcnVubmluZyhzcGluKTsKKwl9IGVsc2UgeworCQlpZ3RfZGVidWco Il9fc3Bpbl93YWl0IC0gdXNsZWVwIG1vZGVcbiIpOworCQl1c2xlZXAoNTAwZTMpOyAvKiBCZXR0 ZXIgdGhhbiBub3RoaW5nISAqLworCX0KK30KKworc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5 bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJaWd0X3Nw aW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBjdHgsIGZsYWdzKTsKKworCV9fc3Bpbl93YWl0 KGZkLCBzcGluKTsKKworCXJldHVybiBzcGluOworfQorCitzdHJ1Y3QgaGFuZ19jdHggeworCWlu dCBkZWJ1Z2ZzOworCXN0cnVjdCB0aW1lc3BlYyB0czsKKwl0aW1lcl90IHRpbWVyOworfTsKKwor c3RhdGljIHZvaWQgaGFuZ19oYW5kbGVyKHVuaW9uIHNpZ3ZhbCBhcmcpCit7CisJc3RydWN0IGhh bmdfY3R4ICpjdHggPSBhcmcuc2l2YWxfcHRyOworCisJaWd0X2RlYnVnKCJoYW5nIGRlbGF5ID0g JS4yZnVzXG4iLCBpZ3RfbnNlY19lbGFwc2VkKCZjdHgtPnRzKSAvIDEwMDAuMCk7CisKKwlpZ3Rf YXNzZXJ0KGlndF9zeXNmc19zZXQoY3R4LT5kZWJ1Z2ZzLCAiaTkxNV93ZWRnZWQiLCAiLTEiKSk7 CisKKwlpZ3RfYXNzZXJ0X2VxKHRpbWVyX2RlbGV0ZShjdHgtPnRpbWVyKSwgMCk7CisJY2xvc2Uo Y3R4LT5kZWJ1Z2ZzKTsKKwlmcmVlKGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmdfYWZ0ZXIo aW50IGZkLCB1bnNpZ25lZCBpbnQgdXMpCit7CisJc3RydWN0IHNpZ2V2ZW50IHNldiA9IHsKKwkJ LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1RIUkVBRCwKKwkJLnNpZ2V2X25vdGlmeV9mdW5jdGlvbiA9 IGhhbmdfaGFuZGxlcgorCX07CisJc3RydWN0IGl0aW1lcnNwZWMgaXRzID0geworCQkuaXRfdmFs dWUudHZfc2VjID0gdXMgLyBVU0VDX1BFUl9TRUMsCisJCS5pdF92YWx1ZS50dl9uc2VjID0gdXMg JSBVU0VDX1BFUl9TRUMgKiAxMDAwLAorCX07CisJc3RydWN0IGhhbmdfY3R4ICpjdHg7CisKKwlj dHggPSBjYWxsb2MoMSwgc2l6ZW9mKCpjdHgpKTsKKwlpZ3RfYXNzZXJ0KGN0eCk7CisKKwljdHgt PmRlYnVnZnMgPSBpZ3RfZGVidWdmc19kaXIoZmQpOworCWlndF9hc3NlcnRfZmQoY3R4LT5kZWJ1 Z2ZzKTsKKworCXNldi5zaWdldl92YWx1ZS5zaXZhbF9wdHIgPSBjdHg7CisKKwlpZ3RfYXNzZXJ0 X2VxKHRpbWVyX2NyZWF0ZShDTE9DS19NT05PVE9OSUMsICZzZXYsICZjdHgtPnRpbWVyKSwgMCk7 CisKKwlpZ3RfbnNlY19lbGFwc2VkKCZjdHgtPnRzKTsKKworCWlndF9hc3NlcnRfZXEodGltZXJf c2V0dGltZShjdHgtPnRpbWVyLCAwLCAmaXRzLCBOVUxMKSwgMCk7Cit9CisKK3N0YXRpYyBpbnQg X19jaGVja193YWl0KGludCBmZCwgdWludDMyX3QgYm8sIHVuc2lnbmVkIGludCB3YWl0KQorewor CXVuc2lnbmVkIGxvbmcgd2FpdF90aW1lb3V0ID0gMjUwZTY7IC8qIFNvbWUgbWFyZ2luIGZvciBh Y3R1YWwgcmVzZXQuICovCisJaW50IHJldDsKKworCWlmICh3YWl0KSB7CisJCS8qCisJCSAqIERv dWJsZSB0aGUgd2FpdCBwbHVzIHNvbWUgZml4ZWQgbWFyZ2luIHRvIGVuc3VyZSBnZW1fd2FpdAor CQkgKiBjYW4gbmV2ZXIgdGltZSBvdXQgYmVmb3JlIHRoZSBhc3luYyBoYW5nIHJ1bnMuCisJCSAq LworCQl3YWl0X3RpbWVvdXQgKz0gd2FpdCAqIDIwMDAgKyAyNTBlNjsKKwkJaGFuZ19hZnRlcihm ZCwgd2FpdCk7CisJfSBlbHNlIHsKKwkJbWFudWFsX2hhbmcoZmQpOworCX0KKworCXJldCA9IF9f Z2VtX3dhaXQoZmQsIGJvLCB3YWl0X3RpbWVvdXQpOworCisJcmV0dXJuIHJldDsKK30KKworI2Rl ZmluZSBURVNUX1dFREdFICgxKQorCitzdGF0aWMgdm9pZCB0ZXN0X3dhaXQoaW50IGZkLCB1bnNp Z25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCB3YWl0KQoreworCWlndF9zcGluX3QgKmhhbmc7 CiAKIAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCi0JLyogSWYgdGhlIHJlcXVlc3Qgd2Ugd2FpdCBv biBjb21wbGV0ZXMgZHVlIHRvIGEgaGFuZyAoZXZlbiBmb3IKKwkvKgorCSAqIElmIHRoZSByZXF1 ZXN0IHdlIHdhaXQgb24gY29tcGxldGVzIGR1ZSB0byBhIGhhbmcgKGV2ZW4gZm9yCiAJICogdGhh dCByZXF1ZXN0KSwgdGhlIHVzZXIgZXhwZWN0cyB0aGUgcmV0dXJuIHZhbHVlIHRvIDAgKHN1Y2Nl c3MpLgogCSAqLwotCWhhbmcgPSBpZ3RfaGFuZ19yaW5nKGZkLCBJOTE1X0VYRUNfREVGQVVMVCk7 Ci0JaWd0X2Fzc2VydF9lcShfX2dlbV93YWl0KGZkLCBoYW5nLmhhbmRsZSwgLTEpLCAwKTsKLQlp Z3RfcG9zdF9oYW5nX3JpbmcoZmQsIGhhbmcpOwogCi0JLyogSWYgdGhlIEdQVSBpcyB3ZWRnZWQg ZHVyaW5nIHRoZSB3YWl0LCBhZ2FpbiB3ZSBleHBlY3QgdGhlIHJldHVybgotCSAqIHZhbHVlIHRv IGJlIDAgKHN1Y2Nlc3MpLgotCSAqLwotCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChm YWxzZSkpOwotCWhhbmcgPSBpZ3RfaGFuZ19yaW5nKGZkLCBJOTE1X0VYRUNfREVGQVVMVCk7Ci0J aWd0X2Fzc2VydF9lcShfX2dlbV93YWl0KGZkLCBoYW5nLmhhbmRsZSwgLTEpLCAwKTsKLQlpZ3Rf cG9zdF9oYW5nX3JpbmcoZmQsIGhhbmcpOworCWlmIChmbGFncyAmIFRFU1RfV0VER0UpCisJCWln dF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOworCWVsc2UKKwkJaWd0X3JlcXVp cmUoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKKworCWhhbmcgPSBzcGluX3N5bmMoZmQsIDAs IEk5MTVfRVhFQ19ERUZBVUxUKTsKKworCWlndF9hc3NlcnRfZXEoX19jaGVja193YWl0KGZkLCBo YW5nLT5oYW5kbGUsIHdhaXQpLCAwKTsKKworCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIGhhbmcp OworCiAJaWd0X3JlcXVpcmUoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKIAogCXRyaWdnZXJf cmVzZXQoZmQpOwpAQCAtMTgxLDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3VzcGVuZChp bnQgZmQsIGludCBzdGF0ZSkKIAogCS8qIENoZWNrIHdlIGNhbiBzdXNwZW5kIHdoZW4gdGhlIGRy aXZlciBpcyBhbHJlYWR5IHdlZGdlZCAqLwogCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJv bChmYWxzZSkpOwotCXdlZGdlbWUoZmQpOworCW1hbnVhbF9oYW5nKGZkKTsKIAogCWlndF9zeXN0 ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKHN0YXRlLCBTVVNQRU5EX1RFU1RfREVWSUNFUyk7CiAKQEAg LTE4OSw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N1c3BlbmQoaW50IGZkLCBpbnQgc3Rh dGUpCiAJdHJpZ2dlcl9yZXNldChmZCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHQo aW50IGZkKQorc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQsIHVuc2lnbmVkIGludCB3 YWl0KQogewogCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwpAQCAtMjA5LDExICszMTMsMTAg QEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQpCiAJCWludCBmZW5jZVs2NF07IC8q IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZSBvZiByaW5nIHNpemUgKi8KIAogCQlnZW1fcXVpZXNjZW50 X2dwdShmZCk7Ci0KIAkJaWd0X2RlYnVnKCJTdGFydGluZyAlcyBvbiBlbmdpbmUgJyVzJ1xuIiwg X19mdW5jX18sIGVfXy0+bmFtZSk7CiAJCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChm YWxzZSkpOwogCi0JCWhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgZW5naW5lLCAw KTsKKwkJaGFuZyA9IHNwaW5fc3luYyhmZCwgMCwgZW5naW5lKTsKIAkJb2JqWzBdLmhhbmRsZSA9 IGhhbmctPmhhbmRsZTsKIAogCQltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7 CkBAIC0yMjcsNyArMzMwLDggQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQpCiAJ CQlpZ3RfYXNzZXJ0KGZlbmNlW25dICE9IC0xKTsKIAkJfQogCi0JCWlndF9hc3NlcnRfZXEoX19n ZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKKwkJaWd0X2Fzc2VydF9lcShfX2No ZWNrX3dhaXQoZmQsIG9ialsxXS5oYW5kbGUsIHdhaXQpLCAwKTsKKwogCQlmb3IgKHVuc2lnbmVk IGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoZmVuY2UpOyBuKyspIHsKIAkJCWlndF9hc3NlcnRf ZXEoc3luY19mZW5jZV9zdGF0dXMoZmVuY2Vbbl0pLCAtRUlPKTsKIAkJCWNsb3NlKGZlbmNlW25d KTsKQEAgLTI1Niw3ICszNjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X3N1c3BlbmQo aW50IGZkKQogCW9ialsxXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKIAlnZW1fd3Jp dGUoZmQsIG9ialsxXS5oYW5kbGUsIDAsICZiYmUsIHNpemVvZihiYmUpKTsKIAotCWhhbmcgPSBf X2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgMCwgMCk7CisJaGFuZyA9IHNwaW5fc3luYyhmZCwg MCwgMCk7CiAJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAogCW1lbXNldCgmZXhlY2J1 ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKQEAgLTI3Myw3ICszNzcsOCBAQCBzdGF0aWMgdm9pZCB0 ZXN0X2luZmxpZ2h0X3N1c3BlbmQoaW50IGZkKQogCWlndF9zZXRfYXV0b3Jlc3VtZV9kZWxheSgz MCk7CiAJaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sIFNV U1BFTkRfVEVTVF9OT05FKTsKIAotCWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFd LmhhbmRsZSwgLTEpLCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fY2hlY2tfd2FpdChmZCwgb2JqWzFd LmhhbmRsZSwgMTApLCAwKTsKKwogCWZvciAodW5zaWduZWQgaW50IG4gPSAwOyBuIDwgQVJSQVlf U0laRShmZW5jZSk7IG4rKykgewogCQlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZl bmNlW25dKSwgLUVJTyk7CiAJCWNsb3NlKGZlbmNlW25dKTsKQEAgLTMwMSw3ICs0MDYsNyBAQCBz dGF0aWMgdWludDMyX3QgY29udGV4dF9jcmVhdGVfc2FmZShpbnQgaTkxNSkKIAlyZXR1cm4gcGFy YW0uY3R4X2lkOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2NvbnRleHRzKGludCBm ZCkKK3N0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfY29udGV4dHMoaW50IGZkLCB1bnNpZ25lZCBp bnQgd2FpdCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CiAJ Y29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKQEAgLTMzMCw3ICs0MzUs NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2NvbnRleHRzKGludCBmZCkKIAkJaWd0X2Rl YnVnKCJTdGFydGluZyAlcyBvbiBlbmdpbmUgJyVzJ1xuIiwgX19mdW5jX18sIGVfXy0+bmFtZSk7 CiAJCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwogCi0JCWhhbmcgPSBf X2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgZW5naW5lLCAwKTsKKwkJaGFuZyA9IHNwaW5fc3lu YyhmZCwgMCwgZW5naW5lKTsKIAkJb2JqWzBdLmhhbmRsZSA9IGhhbmctPmhhbmRsZTsKIAogCQlt ZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CkBAIC0zNDUsNyArNDUwLDggQEAg c3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9jb250ZXh0cyhpbnQgZmQpCiAJCQlpZ3RfYXNzZXJ0 KGZlbmNlW25dICE9IC0xKTsKIAkJfQogCi0JCWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwg b2JqWzFdLmhhbmRsZSwgLTEpLCAwKTsKKwkJaWd0X2Fzc2VydF9lcShfX2NoZWNrX3dhaXQoZmQs IG9ialsxXS5oYW5kbGUsIHdhaXQpLCAwKTsKKwogCQlmb3IgKHVuc2lnbmVkIGludCBuID0gMDsg biA8IEFSUkFZX1NJWkUoZmVuY2UpOyBuKyspIHsKIAkJCWlndF9hc3NlcnRfZXEoc3luY19mZW5j ZV9zdGF0dXMoZmVuY2Vbbl0pLCAtRUlPKTsKIAkJCWNsb3NlKGZlbmNlW25dKTsKQEAgLTM3NSw3 ICs0ODEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2V4dGVybmFsKGludCBmZCkKIAlm ZW5jZSA9IGlndF9jb3JrX3BsdWcoJmNvcmssIGZkKTsKIAogCWlndF9yZXF1aXJlKGk5MTVfcmVz ZXRfY29udHJvbChmYWxzZSkpOwotCWhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwg MCwgMCk7CisJaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsKIAogCW1lbXNldCgmb2JqLCAw LCBzaXplb2Yob2JqKSk7CiAJb2JqLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwpAQCAt MzkzLDYgKzQ5OSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfZXh0ZXJuYWwoaW50IGZk KQogCWZlbmNlID0gZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKIAlpZ3RfYXNzZXJ0KGZlbmNlICE9IC0x KTsKIAorCV9fc3Bpbl93YWl0KGZkLCBoYW5nKTsKKwltYW51YWxfaGFuZyhmZCk7CisKIAlnZW1f c3luYyhmZCwgaGFuZy0+aGFuZGxlKTsgLyogd2VkZ2VkLCB3aXRoIGFuIHVucmVhZHkgYmF0Y2gg Ki8KIAlpZ3RfYXNzZXJ0KCFnZW1fYm9fYnVzeShmZCwgaGFuZy0+aGFuZGxlKSk7CiAJaWd0X2Fz c2VydChnZW1fYm9fYnVzeShmZCwgb2JqLmhhbmRsZSkpOwpAQCAtNDA3LDcgKzUxNiw3IEBAIHN0 YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfZXh0ZXJuYWwoaW50IGZkKQogCXRyaWdnZXJfcmVzZXQo ZmQpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2ludGVybmFsKGludCBmZCkKK3N0 YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkLCB1bnNpZ25lZCBpbnQgd2Fp dCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwpAQCAtNDIwLDcgKzUyOSw3IEBAIHN0 YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQogCWlndF9yZXF1aXJlKGdl bV9oYXNfZXhlY19mZW5jZShmZCkpOwogCiAJaWd0X3JlcXVpcmUoaTkxNV9yZXNldF9jb250cm9s KGZhbHNlKSk7Ci0JaGFuZyA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCAwLCAwLCAwKTsKKwlo YW5nID0gc3Bpbl9zeW5jKGZkLCAwLCAwKTsKIAogCW1lbXNldChvYmosIDAsIHNpemVvZihvYmop KTsKIAlvYmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxlOwpAQCAtNDQxLDcgKzU1MCw4IEBAIHN0 YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQogCQluZmVuY2UrKzsKIAl9 CiAKLQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3dhaXQoZmQsIG9ialsxXS5oYW5kbGUsIC0xKSwgMCk7 CisJaWd0X2Fzc2VydF9lcShfX2NoZWNrX3dhaXQoZmQsIG9ialsxXS5oYW5kbGUsIHdhaXQpLCAw KTsKKwogCXdoaWxlIChuZmVuY2UtLSkgewogCQlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3Rh dHVzKGZlbmNlc1tuZmVuY2VdKSwgLUVJTyk7CiAJCWNsb3NlKGZlbmNlc1tuZmVuY2VdKTsKQEAg LTQ4NCwyOSArNTk0LDQ2IEBAIGlndF9tYWluCiAJaWd0X3N1YnRlc3QoImV4ZWNidWYiKQogCQl0 ZXN0X2V4ZWNidWYoZmQpOwogCi0JaWd0X3N1YnRlc3QoIndhaXQiKQotCQl0ZXN0X3dhaXQoZmQp OwotCiAJaWd0X3N1YnRlc3QoInN1c3BlbmQiKQogCQl0ZXN0X3N1c3BlbmQoZmQsIFNVU1BFTkRf U1RBVEVfTUVNKTsKIAogCWlndF9zdWJ0ZXN0KCJoaWJlcm5hdGUiKQogCQl0ZXN0X3N1c3BlbmQo ZmQsIFNVU1BFTkRfU1RBVEVfRElTSyk7CiAKLQlpZ3Rfc3VidGVzdCgiaW4tZmxpZ2h0IikKLQkJ dGVzdF9pbmZsaWdodChmZCk7Ci0KLQlpZ3Rfc3VidGVzdCgiaW4tZmxpZ2h0LWNvbnRleHRzIikK LQkJdGVzdF9pbmZsaWdodF9jb250ZXh0cyhmZCk7Ci0KIAlpZ3Rfc3VidGVzdCgiaW4tZmxpZ2h0 LWV4dGVybmFsIikKIAkJdGVzdF9pbmZsaWdodF9leHRlcm5hbChmZCk7CiAKLQlpZ3Rfc3VidGVz dCgiaW4tZmxpZ2h0LWludGVybmFsIikgewotCQlpZ3Rfc2tpcF9vbihnZW1faGFzX3NlbWFwaG9y ZXMoZmQpKTsKLQkJdGVzdF9pbmZsaWdodF9pbnRlcm5hbChmZCk7Ci0JfQotCiAJaWd0X3N1YnRl c3QoImluLWZsaWdodC1zdXNwZW5kIikKIAkJdGVzdF9pbmZsaWdodF9zdXNwZW5kKGZkKTsKKwor CWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJY29uc3Qgc3RydWN0IHsKKwkJCXVuc2lnbmVkIGludCB3 YWl0OworCQkJY29uc3QgY2hhciAqbmFtZTsKKwkJfSB3YWl0c1tdID0geworCQkJeyAud2FpdCA9 IDAsIC5uYW1lID0gImltbWVkaWF0ZSIgfSwKKwkJCXsgLndhaXQgPSAxLCAubmFtZSA9ICIxdXMi IH0sCisJCQl7IC53YWl0ID0gMTAwMDAsIC5uYW1lID0gIjEwbXMiIH0sCisJCX07CisJCXVuc2ln bmVkIGludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yod2FpdHMpIC8gc2l6ZW9mKHdh aXRzWzBdKTsgaSsrKSB7CisJCQlpZ3Rfc3VidGVzdF9mKCJ3YWl0LSVzIiwgd2FpdHNbaV0ubmFt ZSkKKwkJCQl0ZXN0X3dhaXQoZmQsIDAsIHdhaXRzW2ldLndhaXQpOworCisJCQlpZ3Rfc3VidGVz dF9mKCJ3YWl0LXdlZGdlLSVzIiwgd2FpdHNbaV0ubmFtZSkKKwkJCQl0ZXN0X3dhaXQoZmQsIFRF U1RfV0VER0UsIHdhaXRzW2ldLndhaXQpOworCisJCQlpZ3Rfc3VidGVzdF9mKCJpbi1mbGlnaHQt JXMiLCB3YWl0c1tpXS5uYW1lKQorCQkJCXRlc3RfaW5mbGlnaHQoZmQsIHdhaXRzW2ldLndhaXQp OworCisJCQlpZ3Rfc3VidGVzdF9mKCJpbi1mbGlnaHQtY29udGV4dHMtJXMiLCB3YWl0c1tpXS5u YW1lKQorCQkJCXRlc3RfaW5mbGlnaHRfY29udGV4dHMoZmQsIHdhaXRzW2ldLndhaXQpOworCisJ CQlpZ3Rfc3VidGVzdF9mKCJpbi1mbGlnaHQtaW50ZXJuYWwtJXMiLCB3YWl0c1tpXS5uYW1lKSB7 CisJCQkJaWd0X3NraXBfb24oZ2VtX2hhc19zZW1hcGhvcmVzKGZkKSk7CisJCQkJdGVzdF9pbmZs aWdodF9pbnRlcm5hbChmZCwgd2FpdHNbaV0ud2FpdCk7CisJCQl9CisJCX0KKwl9CiB9CmRpZmYg LS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDEyMmFl ZmFiZTBmMC4uNDcyMGRmZTIxYTY2IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAorKysg Yi90ZXN0cy9tZXNvbi5idWlsZApAQCAtNDAsNyArNDAsNiBAQCB0ZXN0X3Byb2dzID0gWwogCSdn ZW1fY3R4X3N3aXRjaCcsCiAJJ2dlbV9jdHhfdGhyYXNoJywKIAknZ2VtX2RvdWJsZV9pcnFfbG9v cCcsCi0JJ2dlbV9laW8nLAogCSdnZW1fZXZpY3RfYWxpZ25tZW50JywKIAknZ2VtX2V2aWN0X2V2 ZXJ5dGhpbmcnLAogCSdnZW1fZXhlY19hbGlnbm1lbnQnLApAQCAtMjg5LDYgKzI4OCwxMyBAQCBm b3JlYWNoIHByb2cgOiB0ZXN0X3Byb2dzCiAJCSAgIGluc3RhbGwgOiB0cnVlKQogZW5kZm9yZWFj aAogCit0ZXN0X2V4ZWN1dGFibGVzICs9IGV4ZWN1dGFibGUoJ2dlbV9laW8nLCAnZ2VtX2Vpby5j JywKKwkgICBkZXBlbmRlbmNpZXMgOiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1lIF0sCisJICAgaW5z dGFsbF9kaXIgOiBsaWJleGVjZGlyLAorCSAgIGluc3RhbGxfcnBhdGggOiBycGF0aGRpciwKKwkg ICBpbnN0YWxsIDogdHJ1ZSkKK3Rlc3RfcHJvZ3MgKz0gJ2dlbV9laW8nCisKIHRlc3RfZXhlY3V0 YWJsZXMgKz0gZXhlY3V0YWJsZSgncGVyZl9wbXUnLCAncGVyZl9wbXUuYycsCiAJICAgZGVwZW5k ZW5jaWVzIDogdGVzdF9kZXBzICsgWyBsaWJfaWd0X3BlcmYgXSwKIAkgICBpbnN0YWxsX2RpciA6 IGxpYmV4ZWNkaXIsCi0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=