From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 7 Jan 2019 18:22:44 +0000 Message-Id: <20190107182244.10538-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190107173640.9620-1-tvrtko.ursulin@linux.intel.com> References: <20190107173640.9620-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3] tests/gem_shrink: Exercise OOM and other routes to shrinking in reasonable time List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkEgc2V0IG9m IHN1YnRlc3RzIHdoaWNoIGV4ZXJjaXNlcyBkaWZmZXJlbnQgcGF0aHMgdG8gb3VyIHNocmlua2Vy IGNvZGUKKGluY2x1ZGluZyB0aGUgT09NIGtpbGxlcikgaW4gcHJlZGljdGFibGUgYW5kIHJlYXNv bmFibGUgdGltZSBidWRnZXQuCgp2MjoKICogRml4IGJsYWNrbGlzdCByZWdleHAuIChQZXRyaSBM YXR2YWxhKQoKdjM6CiAqIFNraXAgdXNlcnB0ciB0ZXN0IGlmIG5vdCB1c2VycHRyIHN1cHBvcnQu CgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgotLS0KIGxpYi9pZ3RfY29yZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKysKIGxp Yi9pZ3RfY29yZS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogdGVzdHMvaTkxNS9n ZW1fc2hyaW5rLmMgICAgICAgICAgICAgICB8IDQwMSArKysrKysrKysrKysrKysrKysrKysrKysr KwogdGVzdHMvaW50ZWwtY2kvYmxhY2tsaXN0LnR4dCAgICAgICAgICB8ICAgMiArLQogdGVzdHMv aW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdCB8ICAgMyArCiA1IGZpbGVzIGNoYW5nZWQs IDQyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9j b3JlLmMgYi9saWIvaWd0X2NvcmUuYwppbmRleCA1MGQ2MDA4ZjZjODIuLjM1MWRhMGI0ZTAyMCAx MDA2NDQKLS0tIGEvbGliL2lndF9jb3JlLmMKKysrIGIvbGliL2lndF9jb3JlLmMKQEAgLTE2ODUs NiArMTY4NSwyNSBAQCB2b2lkIGlndF9zdG9wX2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9j ZXNzICpwcm9jKQogCWFzc2VydChoZWxwZXJfd2FzX2FsaXZlKHByb2MsIHN0YXR1cykpOwogfQog CisvKioKKyAqIGlndF90cnlfc3RvcF9oZWxwZXI6CisgKiBAcHJvYzogI2lndF9oZWxwZXJfcHJv Y2VzcyBzdHJ1Y3R1cmUKKyAqCisgKiBUZXJtaW5hdGVzIGEgaGVscGVyIHByb2Nlc3MgaWYgaXQg aXMgc3RpbGwgcnVubmluZyBhbmQgcmV0dXJucyB0cnVlLCBvciBmYWxzZQorICogaWYgdGhlIHBy b2Nlc3Mgd2Fzbid0IHJ1bm5pbmcuCisgKi8KK2Jvb2wgaWd0X3RyeV9zdG9wX2hlbHBlcihzdHJ1 Y3QgaWd0X2hlbHBlcl9wcm9jZXNzICpwcm9jKQoreworCWludCBzdGF0dXM7CisKKwkvKiBmYWls dXJlIGhlcmUgbWVhbnMgdGhlIHBpZCBpcyBhbHJlYWR5IGRlYWQgYW5kIHNvIHdhaXRpbmcgaXMg c2FmZSAqLworCWtpbGwocHJvYy0+cGlkLCBwcm9jLT51c2VfU0lHS0lMTCA/IFNJR0tJTEwgOiBT SUdURVJNKTsKKworCXN0YXR1cyA9IGlndF93YWl0X2hlbHBlcihwcm9jKTsKKworCXJldHVybiBo ZWxwZXJfd2FzX2FsaXZlKHByb2MsIHN0YXR1cyk7Cit9CisKIHN0YXRpYyB2b2lkIGNoaWxkcmVu X2V4aXRfaGFuZGxlcihpbnQgc2lnKQogewogCWludCBzdGF0dXM7CmRpZmYgLS1naXQgYS9saWIv aWd0X2NvcmUuaCBiL2xpYi9pZ3RfY29yZS5oCmluZGV4IDZmOGMzODUyYTY4Ni4uZWQ1Y2VlYmYx MjA1IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuaAorKysgYi9saWIvaWd0X2NvcmUuaApAQCAt Nzk1LDYgKzc5NSw3IEBAIGJvb2wgX19pZ3RfZm9ya19oZWxwZXIoc3RydWN0IGlndF9oZWxwZXJf cHJvY2VzcyAqcHJvYyk7CiAJZm9yICg7IF9faWd0X2ZvcmtfaGVscGVyKHByb2MpOyBleGl0KDAp KQogaW50IGlndF93YWl0X2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzICpwcm9jKTsK IHZvaWQgaWd0X3N0b3BfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpOwor Ym9vbCBpZ3RfdHJ5X3N0b3BfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2Mp OwogCiAvKiBleGl0IGhhbmRsZXIgY29kZSAqLwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dl bV9zaHJpbmsuYyBiL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCmluZGV4IGM4ZTA1ODE0ZWU3MC4u M2Q0OGNiZWJjMmY5IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9zaHJpbmsuYworKysgYi90 ZXN0cy9pOTE1L2dlbV9zaHJpbmsuYwpAQCAtMjYsNiArMjYsMTAgQEAKICAqCiAgKiBFeGVyY2lz ZSB0aGUgc2hyaW5rZXIgYnkgb3ZlcmFsbG9jYXRpbmcgR0VNIG9iamVjdHMKICAqLworI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3dh aXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgogCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAi aWd0X2d0LmgiCkBAIC0zNjYsNiArMzcwLDM3OCBAQCBzdGF0aWMgdm9pZCByZWNsYWltKHVuc2ln bmVkIGVuZ2luZSwgaW50IHRpbWVvdXQpCiAJY2xvc2UoZmQpOwogfQogCitzdGF0aWMgdW5zaWdu ZWQgbG9uZyBnZXRfbWVtaW5mbyhjb25zdCBjaGFyICppbmZvLCBjb25zdCBjaGFyICp0YWcpCit7 CisJY29uc3QgY2hhciAqc3RyOworCXVuc2lnbmVkIGxvbmcgdmFsOworCisJc3RyID0gc3Ryc3Ry KGluZm8sIHRhZyk7CisJaWYgKHN0ciAmJiBzc2NhbmYoc3RyICsgc3RybGVuKHRhZyksICIgJWx1 IiwgJnZhbCkgPT0gMSkKKwkJcmV0dXJuIHZhbCA+PiAxMDsKKworCWlndF93YXJuKCJVbnJlY29n bmlzZWQgL3Byb2MvbWVtaW5mbyBmaWVsZDogJyVzJ1xuIiwgdGFnKTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X2F2YWlsX3JhbV9tYih2b2lkKQoreworCWludCBm ZDsKKwlpbnQgcmV0OworCWNoYXIgYnVmWzQwOTZdOworCXVuc2lnbmVkIGxvbmcgcmFtOworCisJ ZmQgPSBvcGVuKCIvcHJvYy9tZW1pbmZvIiwgT19SRE9OTFkpOworCWlndF9hc3NlcnRfZmQoZmQp OworCisJcmV0ID0gcmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWd0X2Fzc2VydChyZXQg Pj0gMCk7CisKKwljbG9zZShmZCk7CisKKwlyYW0gPSBnZXRfbWVtaW5mbyhidWYsICJNZW1BdmFp bGFibGU6Iik7CisJcmFtICs9IGdldF9tZW1pbmZvKGJ1ZiwgIkJ1ZmZlcnM6Iik7CisJcmFtICs9 IGdldF9tZW1pbmZvKGJ1ZiwgIkNhY2hlZDoiKTsKKwlyYW0gKz0gZ2V0X21lbWluZm8oYnVmLCAi U3dhcENhY2hlZDoiKTsKKworCXJldHVybiByYW07Cit9CisKK3N0cnVjdCB0ZXN0IHsKKyNkZWZp bmUgVEVTVF9CTwkJKDEpCisjZGVmaW5lIFRFU1RfVVNFUlBUUgkoMikKKwl1bnNpZ25lZCBpbnQg ZmxhZ3M7CisJaW50IGZkOworfTsKKworc3RhdGljIHVpbnQzMl90IF9fZ2V0X3BhZ2VzKGludCBm ZCwgdW5zaWduZWQgbG9uZyBhbGxvYykKK3sKKwl1aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRl KGZkLCBhbGxvYyk7CisKKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLCBJOTE1X0dFTV9ET01B SU5fR1RULCAwKTsKKwlnZW1fbWFkdmlzZShmZCwgaGFuZGxlLCBJOTE1X01BRFZfRE9OVE5FRUQp OworCisJcmV0dXJuIGhhbmRsZTsKK30KKworc3RydWN0IHRlc3Rfb2JqIHsKKwl2b2lkICpwdHI7 CisJdWludDMyX3QgaGFuZGxlOworfTsKKworI2RlZmluZSBQQUdFX1NJWkUgNDA5Ngorc3RhdGlj IHZvaWQKK19fZ2V0X3VzZXJwdHIoaW50IGZkLCBzdHJ1Y3QgdGVzdF9vYmogKm9iaiwgdW5zaWdu ZWQgbG9uZyBzeikKK3sKKwlzdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fdXNlcnB0ciB1c2VycHRyID0g eyB9OworCXZvaWQgKnB0cjsKKworCWlndF9hc3NlcnRfZXEoc3ogJiA0MDk1LCAwKTsKKworCXB0 ciA9IG1tYXAoTlVMTCwgc3osIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9V UywgLTEsIDApOworCWFzc2VydChwdHIgIT0gTUFQX0ZBSUxFRCk7CisKKwlmb3IgKHNpemVfdCBw YWdlID0gMDsgcGFnZSA8IHN6OyBwYWdlICs9IFBBR0VfU0laRSkKKwkJKih2b2xhdGlsZSB1aW50 MzJfdCAqKSgodW5zaWduZWQgY2hhciAqKXB0ciArIHBhZ2UpID0gMDsKKworCXVzZXJwdHIudXNl cl9zaXplID0gc3o7CisJdXNlcnB0ci51c2VyX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihwdHIpOwor CWRvX2lvY3RsKGZkLCBMT0NBTF9JT0NUTF9JOTE1X0dFTV9VU0VSUFRSLCAmdXNlcnB0cik7CisK KwlnZW1fc2V0X2RvbWFpbihmZCwgdXNlcnB0ci5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQs IDApOworCWdlbV9tYWR2aXNlKGZkLCB1c2VycHRyLmhhbmRsZSwgSTkxNV9NQURWX0RPTlRORUVE KTsKKworCW9iai0+cHRyID0gcHRyOworCW9iai0+aGFuZGxlID0gdXNlcnB0ci5oYW5kbGU7Cit9 CisKKy8qCisgKiBVc2UgYSBzcGVjaWZpYyB3YXkgb2YgdXNpbmcgdXAgbWVtb3J5IHVudGlsIHdl IGFyZSBiZWxvdyBhIGNlcnRhaW4gdGhyZXNob2xkLgorICovCitzdGF0aWMgdm9pZCAqbWVtcHJl c3N1cmUodm9pZCAqYXJnKQoreworCWNvbnN0IHVuc2lnbmVkIGludCBmcmVlX3RocmVzaG9sZF9t YiA9IDI1NjsKKwlzdHJ1Y3QgdGVzdF9vYmogKmxpc3QgPSBOVUxMOworCXN0cnVjdCB0ZXN0ICp0 ZXN0ID0gYXJnOworCWNvbnN0IHVuc2lnbmVkIGludCBzel9tYiA9IDI7CisJY29uc3QgdW5zaWdu ZWQgaW50IHN6ID0gc3pfbWIgPDwgMjA7CisJdW5zaWduZWQgaW50IG4gPSAwLCBtYXggPSAwOwor CXVuc2lnbmVkIGludCBibG9ja3M7CisKKwlmb3IgKDs7KSB7CisJCXVuc2lnbmVkIGxvbmcgcmFt X21iID0gZ2V0X2F2YWlsX3JhbV9tYigpOworCisJCWlmICghbGlzdCkgeworCQkJLyoKKwkJCSAq IE9uIGZpcnN0IHBhc3MgZXN0aW1hdGUgaG93IG1hbnkgc3pfbWIgc2l6ZWQgYmxvY2tzCisJCQkg KiB3ZSBjb3VsZCBuZWVkIHRvIHVzZSB1cCBhbGwgUkFNLgorCQkJICovCisJCQlibG9ja3MgPSBy YW1fbWIgLyBzel9tYjsKKwkJCWxpc3QgPSBjYWxsb2MoYmxvY2tzLCBzaXplb2YoKmxpc3QpKTsK KwkJCWlndF9hc3NlcnQobGlzdCk7CisJCX0gZWxzZSBpZiAocmFtX21iIDwgZnJlZV90aHJlc2hv bGRfbWIpIHsKKwkJCS8qIExpbWl0IHRoZSB3b3JraW5nIHNldCBvbmNlIHVuZGVyIHRoZSB0aHJl c2hvbGQuICovCisJCQlibG9ja3MgPSBtYXggKyAxOworCQl9CisKKwkJLyogRnJlZSB0aGUgb2xk ZXN0IGJsb2NrIG9uY2UgdGhlIHdvcmtpbmcgc2V0IHdyYXBwZWQuICovCisJCWlmIChsaXN0W25d LnB0ciB8fCBsaXN0W25dLmhhbmRsZSkgeworCQkJaWYgKHRlc3QtPmZsYWdzICYgVEVTVF9VU0VS UFRSKSB7CisJCQkJbXVubWFwKGxpc3Rbbl0ucHRyLCBzeik7CisJCQkJZ2VtX2Nsb3NlKHRlc3Qt PmZkLCBsaXN0W25dLmhhbmRsZSk7CisJCQl9IGVsc2UgaWYgKHRlc3QtPmZsYWdzICYgVEVTVF9C TykgeworCQkJCWdlbV9jbG9zZSh0ZXN0LT5mZCwgbGlzdFtuXS5oYW5kbGUpOworCQkJfSBlbHNl IHsKKwkJCQltdW5tYXAobGlzdFtuXS5wdHIsIHN6KTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAq IEFsbG9jYXRlIG1lbW9yeSBibG9ja3MgYW5kIHJlY29yZCB0aGUgY3VycmVudCB3b3JraW5nIHNl dAorCQkgKiBzaXplLgorCQkgKi8KKwkJaWYgKHRlc3QtPmZsYWdzICYgVEVTVF9CTykgeworCQkJ bGlzdFtuXS5oYW5kbGUgPSBfX2dldF9wYWdlcyh0ZXN0LT5mZCwgc3opOworCQl9IGVsc2UgaWYg KHRlc3QtPmZsYWdzICYgVEVTVF9VU0VSUFRSKSB7CisJCQlfX2dldF91c2VycHRyKHRlc3QtPmZk LCAmbGlzdFtuXSwgc3opOworCQl9IGVsc2UgeworCQkJbGlzdFtuXS5wdHIgPSBtbWFwKE5VTEws IHN6LCBQUk9UX1dSSVRFLAorCQkJCQkgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIC0x LCAwKTsKKwkJCWFzc2VydChsaXN0W25dLnB0ciAhPSBNQVBfRkFJTEVEKTsKKworCQkJbWFkdmlz ZShsaXN0W25dLnB0ciwgc3osIE1BRFZfSFVHRVBBR0UpOworCisJCQlmb3IgKHNpemVfdCBwYWdl ID0gMDsgcGFnZSA8IHN6OyBwYWdlICs9IFBBR0VfU0laRSkKKwkJCQkqKHZvbGF0aWxlIHVpbnQz Ml90ICopKCh1bnNpZ25lZCBjaGFyICopbGlzdFtuXS5wdHIgKyBwYWdlKSA9IDA7CisJCX0KKwor CQlpZiAobiA+IG1heCkKKwkJCW1heCA9IG47CisKKwkJbisrOworCisJCS8qCisJCSAqIFN0YXJ0 IGZyZWVpbmcgdGhlIG9sZGVzdCBhbmQgcmVhbGxvY2F0aW5nIG9uY2UgbWF4aW11bQorCQkgKiB3 b3JraW5nIHNldCBzaXplIGhhcyBiZWVuIHJlYWNoZWQuCisJCSAqLworCQlpZiAobiA+PSBibG9j a3MpCisJCQluID0gMDsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgb29t X2FkanVzdChjb25zdCBjaGFyICpzY29yZSkKK3sKKwlpbnQgZmQ7CisKKwlmZCA9IG9wZW4oIi9w cm9jL3NlbGYvb29tX3Njb3JlX2FkaiIsIE9fV1JPTkxZKTsKKwlpZ3RfYXNzZXJ0X2ZkKGZkKTsK KwlpZ3RfYXNzZXJ0KHdyaXRlKGZkLCBzY29yZSwgc2l6ZW9mKHNjb3JlKSkgPT0gc2l6ZW9mKHNj b3JlKSk7CisJY2xvc2UoZmQpOworfQorCitzdGF0aWMgdm9pZCB0cmlnZ2VyX29vbSh2b2lkKQor eworCWNvbnN0IGNoYXIgKmNtZCA9ICJmIjsKKwlpbnQgZmQ7CisKKwlmZCA9IG9wZW4oIi9wcm9j L3N5c3JxLXRyaWdnZXIiLCBPX1dST05MWSk7CisJaWd0X2Fzc2VydF9mZChmZCk7CisJaWd0X2Fz c2VydCh3cml0ZShmZCwgY21kLCBzaXplb2YoY21kKSkgPT0gc2l6ZW9mKGNtZCkpOworCWNsb3Nl KGZkKTsKK30KKworc3RhdGljIGJvb2wgaGFzX3N5c3JxX3RyaWdnZXIodm9pZCkKK3sKKwlpbnQg ZmQ7CisKKwlmZCA9IG9wZW4oIi9wcm9jL3N5c3JxLXRyaWdnZXIiLCBPX1dST05MWSk7CisJY2xv c2UoZmQpOworCisJcmV0dXJuIGZkID49IDA7Cit9CisKKy8qCisgKiBFeGVyY2lzZSBkaWZmZXJl bnQgcGF0aHMgdG8gb3VyIHNocmlua2VyIGNvZGUsIGluY2x1ZGluZyBPT00sIGluIHByZWRpY3Rh YmxlCisgKiBhbmQgcmVhc29uYWJsZSB0aW1lIGJ1ZGdldC4KKyAqLworc3RhdGljIHZvaWQgcmVj bGFpbV9vb20odW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgcGFzc2VzKQoreworCXVu c2lnbmVkIGludCBjb3VudCA9IDA7CisKKwlpZ3RfcmVxdWlyZSghKGZsYWdzICYgVEVTVF9VU0VS UFRSKSB8fCBoYXNfdXNlcnB0cigpKTsKKworCW9vbV9hZGp1c3QoIi0xMDAwIik7CisKKwlkbyB7 CisJCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZ2VtX2NoaWxkID0geyAudXNlX1NJR0tJTEwg PSB0cnVlIH07CisJCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgbWVtX2NoaWxkID0geyAudXNl X1NJR0tJTEwgPSB0cnVlIH07CisJCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgZWJfY2hpbGQg PSB7IC51c2VfU0lHS0lMTCA9IHRydWUgfTsKKwkJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBk cm9wX2NoaWxkID0geyAudXNlX1NJR0tJTEwgPSB0cnVlIH07CisKKwkJaWd0X2RlYnVnKCJJdGVy YXRpb24gJXUuLi5cbiIsICsrY291bnQpOworCisJCS8qCisJCSAqIEFwcGx5IGVpdGhlciBhbm9u IGJhY2tlZCBvciBzaG1lbSBiYWNrZWQgbWVtb3J5IHByZXNzdXJlCisJCSAqIHRvIHRoZSBhbW91 bnQgdG8gdXNlIHVwIGFsbW9zdCBhbGwgYXZhaWxhYmxlIFJBTS4KKwkJICovCisJCWlndF9mb3Jr X2hlbHBlcigmbWVtX2NoaWxkKSB7CisJCQlzdHJ1Y3QgdGVzdCB0ZXN0ID0geyB9OworCisJCQlp ZiAoKGZsYWdzICYgKFRFU1RfQk8gfCBURVNUX1VTRVJQVFIpKSA9PQorCQkJICAgIChURVNUX0JP IHwgVEVTVF9VU0VSUFRSKSkKKwkJCQl0ZXN0LmZsYWdzID0gVEVTVF9CTzsKKworCQkJLyogU2Fj cmlmaWNlIHRoZSBtZW1vcnkgaG9nIGlmIGl0IGNvbWVzIHRvIHRoYXQuICovCisJCQlvb21fYWRq dXN0KCI1MDAiKTsKKworCQkJaWYgKHRlc3QuZmxhZ3MgPT0gVEVTVF9CTykgeworCQkJCXRlc3Qu ZmQgPSBkcm1fb3Blbl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRFTCk7CisJCQkJaWd0X3JlcXVp cmVfZ2VtKHRlc3QuZmQpOworCQkJfQorCisJCQltZW1wcmVzc3VyZSgmdGVzdCk7CisKKwkJCWlm ICh0ZXN0LmZsYWdzID09IFRFU1RfQk8pCisJCQkJY2xvc2UodGVzdC5mZCk7CisJCX0KKworCQkv KgorCQkgKiBBcHBseSBlaXRoZXIgdXNlcnB0ciBiYWNrZWQgb3Igc2htZW0gYmFja2VkIG1lbW9y eSBwcmVzc3VyZQorCQkgKiB0byB0aGUgYW1vdW50IHRvIHVzZSB1cCBhbG1vc3QgYWxsIGF2YWls YWJsZSBSQU0uCisJCSAqLworCQlpZ3RfZm9ya19oZWxwZXIoJmdlbV9jaGlsZCkgeworCQkJc3Ry dWN0IHRlc3QgdGVzdCA9IHsgLmZsYWdzID0gZmxhZ3MgfTsKKworCQkJaWYgKChmbGFncyAmIChU RVNUX0JPIHwgVEVTVF9VU0VSUFRSKSkgPT0KKwkJCSAgICAoVEVTVF9CTyB8IFRFU1RfVVNFUlBU UikpCisJCQkJdGVzdC5mbGFncyA9IFRFU1RfVVNFUlBUUjsKKworCQkJLyogU2FjcmlmaWNlIHRo ZSBtZW1vcnkgaG9nIGlmIGl0IGNvbWVzIHRvIHRoYXQuICovCisJCQlvb21fYWRqdXN0KCI1MDAi KTsKKworCQkJdGVzdC5mZCA9IGRybV9vcGVuX2RyaXZlcl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsK KwkJCWlndF9yZXF1aXJlX2dlbSh0ZXN0LmZkKTsKKworCQkJbWVtcHJlc3N1cmUoJnRlc3QpOwor CisJCQljbG9zZSh0ZXN0LmZkKTsKKwkJfQorCisJCS8qCisJCSAqIEFwcGx5IGFuIGV4ZWNidWYg bG9hZCB0byBleGVyY2lzZSB0aGUgcmVxdWVzdCBhbGxvY2F0aW9uIGFuZAorCQkgKiBkaXJlY3Qg cmVjbGFpbSBmcm9tIHRoaXMgcGF0aC4KKwkJICoKKwkJICogT2NjYXNpb25hbHkgc3luYyB3aXRo IGV4ZWN1dGlvbiBhbmQgcGF1c2UgZm9yIGEgbGl0dGxlIGJpdCB0bworCQkgKiBhdm9pZCBob2dn aW5nIHRvIG11Y2ggZnJvbSB0aGlzIGNsaWVudC4KKwkJICovCisJCWlndF9mb3JrX2hlbHBlcigm ZWJfY2hpbGQpIHsKKwkJCXN0cnVjdCB0ZXN0IHRlc3QgPSB7IC5mbGFncyA9IGZsYWdzIH07CisJ CQljb25zdCB1aW50MzJfdCBiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCQkJc3RydWN0IGRy bV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0geyB9OworCQkJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyMiBleGVjYnVmID0geyB9OworCisJCQlleGVjYnVmLmJ1ZmZlcnNfcHRyID0g dG9fdXNlcl9wb2ludGVyKCZvYmopOworCQkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAxOworCisJ CQl0ZXN0LmZkID0gZHJtX29wZW5fZHJpdmVyX3JlbmRlcihEUklWRVJfSU5URUwpOworCQkJaWd0 X3JlcXVpcmVfZ2VtKHRlc3QuZmQpOworCisJCQlmb3IgKDs7KSB7CisJCQkJdW5zaWduZWQgbG9u ZyBlYiA9IDA7CisJCQkJc3RydWN0IHRpbWVzcGVjIHRzID0geyB9OworCQkJCXVuc2lnbmVkIGxv bmcgc3RhcnQ7CisKKwkJCQlpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CisJCQkJc3RhcnQgPSBpZ3Rf bnNlY19lbGFwc2VkKCZ0cykgLyAxZTY7CisKKwkJCQlmb3IgKDs7KSB7CisJCQkJCXVuc2lnbmVk IGxvbmcgbm93OworCisJCQkJCW9iai5oYW5kbGUgPSBnZW1fY3JlYXRlKHRlc3QuZmQsIDQwOTYp OworCQkJCQlnZW1fd3JpdGUodGVzdC5mZCwgb2JqLmhhbmRsZSwgMCwgJmJiZSwKKwkJCQkJCXNp emVvZihiYmUpKTsKKwkJCQkJZ2VtX2V4ZWNidWYodGVzdC5mZCwgJmV4ZWNidWYpOworCQkJCQll YisrOworCQkJCQlub3cgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0cykgLyAxZTY7CisJCQkJCWlmIChu b3cgPiAoc3RhcnQgKyAxMDAwKSkgeworCQkJCQkJZ2VtX3N5bmModGVzdC5mZCwgb2JqLmhhbmRs ZSk7CisJCQkJCQlpZiAobm93ID4gKHN0YXJ0ICsgMjAwMCkpIHsKKwkJCQkJCQlnZW1fY2xvc2Uo dGVzdC5mZCwKKwkJCQkJCQkJICBvYmouaGFuZGxlKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0K KwkJCQkJfQorCQkJCQlnZW1fY2xvc2UodGVzdC5mZCwgb2JqLmhhbmRsZSk7CisJCQkJfQorCisJ CQkJaWd0X2RlYnVnKCIlbHUgZXhlY2J1ZnNcbiIsIGViKTsKKwkJCQl1c2xlZXAoNTAwZTMpOwor CQkJfQorCisJCQljbG9zZSh0ZXN0LmZkKTsKKwkJfQorCisJCS8qCisJCSAqIE1hbnVhbGx5IGRy b3AgY2FjaGVkIHdpdGggdGhlIERST1BfQUNUSVZFIGZsYWcgc2V0IGV2ZXJ5IG5vdworCQkgKiBh bmQgdGhlbiBpbiBvcmRlciB0byBleGVyY2lzZSB0aGlzIHBhdGggYXMgd2VsbC4KKwkJICovCisJ CWlndF9mb3JrX2hlbHBlcigmZHJvcF9jaGlsZCkgeworCQkJaW50IGZkOworCisJCQlmZCA9IGRy bV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKwor CQkJZm9yICg7OykgeworCQkJCXVzbGVlcCgzMzRlMyk7CisJCQkJaWd0X2RlYnVnKCJEcm9wcGlu ZyBjYWNoZXMuLi5cbiIpOworCQkJCWlndF9kcm9wX2NhY2hlc19zZXQoZmQsIERST1BfQUNUSVZF KTsKKwkJCX0KKworCQkJY2xvc2UoZmQpOworCQl9CisKKwkJLyoKKwkJICogV2hlbiBtZW1vcnkg cHJlc3N1cmUgY2xpZW50cyBoYXZlIG1hbmFnZWQgdG8gdXNlIHVwIGFsbAorCQkgKiBhdmFpbGFi bGUgUkFNLCBsZXQgdGhlbSBydW4gZm9yIGEgYnJpZWYgbW9tZW50IHlldCBhbmQgdGhlbgorCQkg KiBtYW51YWxseSB0cmlnZ2VyIHRoZSBPT00gY29uZGl0aW9uLgorCQkgKi8KKwkJZm9yICh1bnNp Z25lZCBsb25nIHJhbV9tYiA9IDA7CisJCSAgICAgKHJhbV9tYiA9IGdldF9hdmFpbF9yYW1fbWIo KSkgPiA1MTI7KSB7CisJCQlpbnQgc3RhdHVzOworCQkJcGlkX3QgcGlkOworCisJCQlpZ3RfZGVi dWcoIlsldV0gJWx1IE1pQiBmcmVlXG4iLCBjb3VudCwgcmFtX21iKTsKKworCQkJcGlkID0gd2Fp dHBpZChtZW1fY2hpbGQucGlkLCAmc3RhdHVzLCBXTk9IQU5HKTsKKwkJCWlmIChwaWQpCisJCQkJ YnJlYWs7CisKKwkJCXBpZCA9IHdhaXRwaWQoZ2VtX2NoaWxkLnBpZCwgJnN0YXR1cywgV05PSEFO Ryk7CisJCQlpZiAocGlkKQorCQkJCWJyZWFrOworCisJCQlwaWQgPSB3YWl0cGlkKGViX2NoaWxk LnBpZCwgJnN0YXR1cywgV05PSEFORyk7CisJCQlpZ3RfYXNzZXJ0X2VxKHBpZCwgMCk7CisKKwkJ CXBpZCA9IHdhaXRwaWQoZHJvcF9jaGlsZC5waWQsICZzdGF0dXMsIFdOT0hBTkcpOworCQkJaWd0 X2Fzc2VydF9lcShwaWQsIDApOworCisJCQlzbGVlcCgxKTsKKwkJfQorCisJCWlndF9kZWJ1Zygi VHJpZ2dlcmluZyBPT00uLi5cbiIpOworCQl0cmlnZ2VyX29vbSgpOworCisJCXNsZWVwKDEpOwor CisJCWlndF90cnlfc3RvcF9oZWxwZXIoJm1lbV9jaGlsZCk7CisJCWlndF90cnlfc3RvcF9oZWxw ZXIoJmdlbV9jaGlsZCk7CisJCWlndF9zdG9wX2hlbHBlcigmZWJfY2hpbGQpOworCQlpZ3Rfc3Rv cF9oZWxwZXIoJmRyb3BfY2hpbGQpOworCX0gd2hpbGUgKGNvdW50IDwgcGFzc2VzKTsKK30KKwog aWd0X21haW4KIHsKIAljb25zdCBzdHJ1Y3QgdGVzdCB7CkBAIC00MzIsNiArODA4LDMxIEBAIGln dF9tYWluCiAJaWd0X3N1YnRlc3QoInJlY2xhaW0iKQogCQlyZWNsYWltKEk5MTVfRVhFQ19ERUZB VUxULCAyKTsKIAorCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJc3RydWN0IHsKKwkJCWNvbnN0IGNo YXIgKm5hbWU7CisJCQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJCQl1bnNpZ25lZCBpbnQgcGFzc2Vz OworCQl9ICpwLCBwYXNzZXNbXSA9IHsKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20tYmFzaWMiLCBU RVNUX0JPLCAxIH0sCisJCQl7ICJyZWNsYWltcy1hbmQtb29tIiwgVEVTVF9CTywgMyB9LAorCQkJ eyAicmVjbGFpbXMtYW5kLW9vbS11c2VycHRyLWJhc2ljIiwgVEVTVF9VU0VSUFRSLCAxIH0sCisJ CQl7ICJyZWNsYWltcy1hbmQtb29tLXVzZXJwdHIiLCBURVNUX1VTRVJQVFIsIDMgfSwKKwkJCXsg InJlY2xhaW1zLWFuZC1vb20tYm90aC1iYXNpYyIsIFRFU1RfQk8gfCBURVNUX1VTRVJQVFIsIDEg fSwKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20tYm90aCIsIFRFU1RfQk8gfCBURVNUX1VTRVJQVFIs IDMgfSwKKwkJCXsgTlVMTCwgMCwgMCB9LAorCQl9OworCisJCWlndF9maXh0dXJlIHsKKwkJCWln dF9yZXF1aXJlKGhhc19zeXNycV90cmlnZ2VyKCkpOworCQl9CisKKwkJZm9yIChwID0gcGFzc2Vz OyBwLT5uYW1lOyBwKyspIHsKKwkJCWlndF9zdWJ0ZXN0KHAtPm5hbWUpCisJCQkJcmVjbGFpbV9v b20ocC0+ZmxhZ3MsIHAtPnBhc3Nlcyk7CisJCX0KKwl9CisKIAlmb3IoY29uc3Qgc3RydWN0IHRl c3QgKnQgPSB0ZXN0czsgdC0+bmFtZTsgdCsrKSB7CiAJCWZvcihjb25zdCBzdHJ1Y3QgbW9kZSAq bSA9IG1vZGVzOyBtLT5zdWZmaXg7IG0rKykgewogCQkJaWd0X3N1YnRlc3RfZigiJXMlcyIsIHQt Pm5hbWUsIG0tPnN1ZmZpeCkKZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50 eHQgYi90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0CmluZGV4IDczZDEyNzYwM2QyOC4uYjZl MzAyZGIzODFlIDEwMDY0NAotLS0gYS90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0CisrKyBi L3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQKQEAgLTU5LDcgKzU5LDcgQEAgaWd0QGdlbV9y aW5nZmlsbEAoPyEuKmJhc2ljKS4qCiBpZ3RAZ2VtX3Jpbmdfc3luY19jb3B5KEAuKik/CiBpZ3RA Z2VtX3Jpbmdfc3luY19sb29wKEAuKik/CiBpZ3RAZ2VtX3NlcW5vX3dyYXAoQC4qKT8KLWlndEBn ZW1fc2hyaW5rQCg/IXJlY2xhaW0kKS4qCitpZ3RAZ2VtX3Nocmlua0AoPyFyZWNsYWltKS4qCiBp Z3RAZ2VtX3NvZnRwaW5ALiooaGFuZ3xTNCkuKgogaWd0QGdlbV9zcGluX2JhdGNoKEAuKik/CiBp Z3RAZ2VtX3N0b2xlbkAuKmhpYmVybmF0ZS4qCmRpZmYgLS1naXQgYS90ZXN0cy9pbnRlbC1jaS9m YXN0LWZlZWRiYWNrLnRlc3RsaXN0IGIvdGVzdHMvaW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0 bGlzdAppbmRleCA2ZDQyNzkyYzY3ZjcuLjBkZjdjYzJmZDlmZCAxMDA2NDQKLS0tIGEvdGVzdHMv aW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdAorKysgYi90ZXN0cy9pbnRlbC1jaS9mYXN0 LWZlZWRiYWNrLnRlc3RsaXN0CkBAIC0xMjQsNiArMTI0LDkgQEAgaWd0QGdlbV9yaW5nZmlsbEBi YXNpYy1kZWZhdWx0CiBpZ3RAZ2VtX3JpbmdmaWxsQGJhc2ljLWRlZmF1bHQtaW50ZXJydXB0aWJs ZQogaWd0QGdlbV9yaW5nZmlsbEBiYXNpYy1kZWZhdWx0LWZvcmtlZAogaWd0QGdlbV9yaW5nZmls bEBiYXNpYy1kZWZhdWx0LWZkCitpZ3RAZ2VtX3Nocmlua0ByZWNsYWltcy1hbmQtb29tLWJhc2lj CitpZ3RAZ2VtX3Nocmlua0ByZWNsYWltcy1hbmQtb29tLXVzZXJwdHItYmFzaWMKK2lndEBnZW1f c2hyaW5rQHJlY2xhaW1zLWFuZC1vb20tYm90aC1iYXNpYwogaWd0QGdlbV9zeW5jQGJhc2ljLWFs bAogaWd0QGdlbV9zeW5jQGJhc2ljLWVhY2gKIGlndEBnZW1fc3luY0BiYXNpYy1tYW55LWVhY2gK LS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==