From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 4 Jan 2019 15:37:09 +0000 Message-Id: <20190104153709.19350-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkEgc2V0IG9m IHN1YnRlc3RzIHdoaWNoIGV4ZXJjaXNlcyBkaWZmZXJlbnQgcGF0aHMgdG8gb3VyIHNocmlua2Vy IGNvZGUKKGluY2x1ZGluZyB0aGUgT09NIGtpbGxlcikgaW4gcHJlZGljdGFibGUgYW5kIHJlYXNv bmFibGUgdGltZSBidWRnZXQuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfY29yZS5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTkgKysKIGxpYi9pZ3RfY29yZS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMgICAgICAgICAgICAgICB8IDM5OSArKysrKysr KysrKysrKysrKysrKysrKysrKwogdGVzdHMvaW50ZWwtY2kvYmxhY2tsaXN0LnR4dCAgICAgICAg ICB8ICAgMSArCiB0ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRiYWNrLnRlc3RsaXN0IHwgICAzICsK IDUgZmlsZXMgY2hhbmdlZCwgNDIzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvaWd0 X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCmluZGV4IDUwZDYwMDhmNmM4Mi4uMzUxZGEwYjRlMDIw IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuYworKysgYi9saWIvaWd0X2NvcmUuYwpAQCAtMTY4 NSw2ICsxNjg1LDI1IEBAIHZvaWQgaWd0X3N0b3BfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3By b2Nlc3MgKnByb2MpCiAJYXNzZXJ0KGhlbHBlcl93YXNfYWxpdmUocHJvYywgc3RhdHVzKSk7CiB9 CiAKKy8qKgorICogaWd0X3RyeV9zdG9wX2hlbHBlcjoKKyAqIEBwcm9jOiAjaWd0X2hlbHBlcl9w cm9jZXNzIHN0cnVjdHVyZQorICoKKyAqIFRlcm1pbmF0ZXMgYSBoZWxwZXIgcHJvY2VzcyBpZiBp dCBpcyBzdGlsbCBydW5uaW5nIGFuZCByZXR1cm5zIHRydWUsIG9yIGZhbHNlCisgKiBpZiB0aGUg cHJvY2VzcyB3YXNuJ3QgcnVubmluZy4KKyAqLworYm9vbCBpZ3RfdHJ5X3N0b3BfaGVscGVyKHN0 cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpCit7CisJaW50IHN0YXR1czsKKworCS8qIGZh aWx1cmUgaGVyZSBtZWFucyB0aGUgcGlkIGlzIGFscmVhZHkgZGVhZCBhbmQgc28gd2FpdGluZyBp cyBzYWZlICovCisJa2lsbChwcm9jLT5waWQsIHByb2MtPnVzZV9TSUdLSUxMID8gU0lHS0lMTCA6 IFNJR1RFUk0pOworCisJc3RhdHVzID0gaWd0X3dhaXRfaGVscGVyKHByb2MpOworCisJcmV0dXJu IGhlbHBlcl93YXNfYWxpdmUocHJvYywgc3RhdHVzKTsKK30KKwogc3RhdGljIHZvaWQgY2hpbGRy ZW5fZXhpdF9oYW5kbGVyKGludCBzaWcpCiB7CiAJaW50IHN0YXR1czsKZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfY29yZS5oIGIvbGliL2lndF9jb3JlLmgKaW5kZXggNmY4YzM4NTJhNjg2Li5lZDVjZWVi ZjEyMDUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29yZS5oCisrKyBiL2xpYi9pZ3RfY29yZS5oCkBA IC03OTUsNiArNzk1LDcgQEAgYm9vbCBfX2lndF9mb3JrX2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBl cl9wcm9jZXNzICpwcm9jKTsKIAlmb3IgKDsgX19pZ3RfZm9ya19oZWxwZXIocHJvYyk7IGV4aXQo MCkpCiBpbnQgaWd0X3dhaXRfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2Mp Owogdm9pZCBpZ3Rfc3RvcF9oZWxwZXIoc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYyk7 Citib29sIGlndF90cnlfc3RvcF9oZWxwZXIoc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJv Yyk7CiAKIC8qIGV4aXQgaGFuZGxlciBjb2RlICovCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUv Z2VtX3Nocmluay5jIGIvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMKaW5kZXggYzhlMDU4MTRlZTcw Li43YzAwMmRlMGVmMWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCkBAIC0yNiw2ICsyNiwxMCBAQAogICoKICAqIEV4ZXJj aXNlIHRoZSBzaHJpbmtlciBieSBvdmVyYWxsb2NhdGluZyBHRU0gb2JqZWN0cwogICovCisjaW5j bHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMv d2FpdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CiAKICNpbmNsdWRlICJpZ3QuaCIKICNpbmNsdWRl ICJpZ3RfZ3QuaCIKQEAgLTM2Niw2ICszNzAsMzc2IEBAIHN0YXRpYyB2b2lkIHJlY2xhaW0odW5z aWduZWQgZW5naW5lLCBpbnQgdGltZW91dCkKIAljbG9zZShmZCk7CiB9CiAKK3N0YXRpYyB1bnNp Z25lZCBsb25nIGdldF9tZW1pbmZvKGNvbnN0IGNoYXIgKmluZm8sIGNvbnN0IGNoYXIgKnRhZykK K3sKKwljb25zdCBjaGFyICpzdHI7CisJdW5zaWduZWQgbG9uZyB2YWw7CisKKwlzdHIgPSBzdHJz dHIoaW5mbywgdGFnKTsKKwlpZiAoc3RyICYmIHNzY2FuZihzdHIgKyBzdHJsZW4odGFnKSwgIiAl bHUiLCAmdmFsKSA9PSAxKQorCQlyZXR1cm4gdmFsID4+IDEwOworCisJaWd0X3dhcm4oIlVucmVj b2duaXNlZCAvcHJvYy9tZW1pbmZvIGZpZWxkOiAnJXMnXG4iLCB0YWcpOworCXJldHVybiAwOwor fQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfYXZhaWxfcmFtX21iKHZvaWQpCit7CisJaW50 IGZkOworCWludCByZXQ7CisJY2hhciBidWZbNDA5Nl07CisJdW5zaWduZWQgbG9uZyByYW07CisK KwlmZCA9IG9wZW4oIi9wcm9jL21lbWluZm8iLCBPX1JET05MWSk7CisJaWd0X2Fzc2VydF9mZChm ZCk7CisKKwlyZXQgPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKTsKKwlpZ3RfYXNzZXJ0KHJl dCA+PSAwKTsKKworCWNsb3NlKGZkKTsKKworCXJhbSA9IGdldF9tZW1pbmZvKGJ1ZiwgIk1lbUF2 YWlsYWJsZToiKTsKKwlyYW0gKz0gZ2V0X21lbWluZm8oYnVmLCAiQnVmZmVyczoiKTsKKwlyYW0g Kz0gZ2V0X21lbWluZm8oYnVmLCAiQ2FjaGVkOiIpOworCXJhbSArPSBnZXRfbWVtaW5mbyhidWYs ICJTd2FwQ2FjaGVkOiIpOworCisJcmV0dXJuIHJhbTsKK30KKworc3RydWN0IHRlc3QgeworI2Rl ZmluZSBURVNUX0JPCQkoMSkKKyNkZWZpbmUgVEVTVF9VU0VSUFRSCSgyKQorCXVuc2lnbmVkIGlu dCBmbGFnczsKKwlpbnQgZmQ7Cit9OworCitzdGF0aWMgdWludDMyX3QgX19nZXRfcGFnZXMoaW50 IGZkLCB1bnNpZ25lZCBsb25nIGFsbG9jKQoreworCXVpbnQzMl90IGhhbmRsZSA9IGdlbV9jcmVh dGUoZmQsIGFsbG9jKTsKKworCWdlbV9zZXRfZG9tYWluKGZkLCBoYW5kbGUsIEk5MTVfR0VNX0RP TUFJTl9HVFQsIDApOworCWdlbV9tYWR2aXNlKGZkLCBoYW5kbGUsIEk5MTVfTUFEVl9ET05UTkVF RCk7CisKKwlyZXR1cm4gaGFuZGxlOworfQorCitzdHJ1Y3QgdGVzdF9vYmogeworCXZvaWQgKnB0 cjsKKwl1aW50MzJfdCBoYW5kbGU7Cit9OworCisjZGVmaW5lIFBBR0VfU0laRSA0MDk2CitzdGF0 aWMgdm9pZAorX19nZXRfdXNlcnB0cihpbnQgZmQsIHN0cnVjdCB0ZXN0X29iaiAqb2JqLCB1bnNp Z25lZCBsb25nIHN6KQoreworCXN0cnVjdCBsb2NhbF9pOTE1X2dlbV91c2VycHRyIHVzZXJwdHIg PSB7IH07CisJdm9pZCAqcHRyOworCisJaWd0X2Fzc2VydF9lcShzeiAmIDQwOTUsIDApOworCisJ cHRyID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllN T1VTLCAtMSwgMCk7CisJYXNzZXJ0KHB0ciAhPSBNQVBfRkFJTEVEKTsKKworCWZvciAoc2l6ZV90 IHBhZ2UgPSAwOyBwYWdlIDwgc3o7IHBhZ2UgKz0gUEFHRV9TSVpFKQorCQkqKHZvbGF0aWxlIHVp bnQzMl90ICopKCh1bnNpZ25lZCBjaGFyICopcHRyICsgcGFnZSkgPSAwOworCisJdXNlcnB0ci51 c2VyX3NpemUgPSBzejsKKwl1c2VycHRyLnVzZXJfcHRyID0gdG9fdXNlcl9wb2ludGVyKHB0cik7 CisJZG9faW9jdGwoZmQsIExPQ0FMX0lPQ1RMX0k5MTVfR0VNX1VTRVJQVFIsICZ1c2VycHRyKTsK KworCWdlbV9zZXRfZG9tYWluKGZkLCB1c2VycHRyLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dU VCwgMCk7CisJZ2VtX21hZHZpc2UoZmQsIHVzZXJwdHIuaGFuZGxlLCBJOTE1X01BRFZfRE9OVE5F RUQpOworCisJb2JqLT5wdHIgPSBwdHI7CisJb2JqLT5oYW5kbGUgPSB1c2VycHRyLmhhbmRsZTsK K30KKworLyoKKyAqIFVzZSBhIHNwZWNpZmljIHdheSBvZiB1c2luZyB1cCBtZW1vcnkgdW50aWwg d2UgYXJlIGJlbG93IGEgY2VydGFpbiB0aHJlc2hvbGQuCisgKi8KK3N0YXRpYyB2b2lkICptZW1w cmVzc3VyZSh2b2lkICphcmcpCit7CisJY29uc3QgdW5zaWduZWQgaW50IGZyZWVfdGhyZXNob2xk X21iID0gMjU2OworCXN0cnVjdCB0ZXN0X29iaiAqbGlzdCA9IE5VTEw7CisJc3RydWN0IHRlc3Qg KnRlc3QgPSBhcmc7CisJY29uc3QgdW5zaWduZWQgaW50IHN6X21iID0gMjsKKwljb25zdCB1bnNp Z25lZCBpbnQgc3ogPSBzel9tYiA8PCAyMDsKKwl1bnNpZ25lZCBpbnQgbiA9IDAsIG1heCA9IDA7 CisJdW5zaWduZWQgaW50IGJsb2NrczsKKworCWZvciAoOzspIHsKKwkJdW5zaWduZWQgbG9uZyBy YW1fbWIgPSBnZXRfYXZhaWxfcmFtX21iKCk7CisKKwkJaWYgKCFsaXN0KSB7CisJCQkvKgorCQkJ ICogT24gZmlyc3QgcGFzcyBlc3RpbWF0ZSBob3cgbWFueSBzel9tYiBzaXplZCBibG9ja3MKKwkJ CSAqIHdlIGNvdWxkIG5lZWQgdG8gdXNlIHVwIGFsbCBSQU0uCisJCQkgKi8KKwkJCWJsb2NrcyA9 IHJhbV9tYiAvIHN6X21iOworCQkJbGlzdCA9IGNhbGxvYyhibG9ja3MsIHNpemVvZigqbGlzdCkp OworCQkJaWd0X2Fzc2VydChsaXN0KTsKKwkJfSBlbHNlIGlmIChyYW1fbWIgPCBmcmVlX3RocmVz aG9sZF9tYikgeworCQkJLyogTGltaXQgdGhlIHdvcmtpbmcgc2V0IG9uY2UgdW5kZXIgdGhlIHRo cmVzaG9sZC4gKi8KKwkJCWJsb2NrcyA9IG1heCArIDE7CisJCX0KKworCQkvKiBGcmVlIHRoZSBv bGRlc3QgYmxvY2sgb25jZSB0aGUgd29ya2luZyBzZXQgd3JhcHBlZC4gKi8KKwkJaWYgKGxpc3Rb bl0ucHRyIHx8IGxpc3Rbbl0uaGFuZGxlKSB7CisJCQlpZiAodGVzdC0+ZmxhZ3MgJiBURVNUX1VT RVJQVFIpIHsKKwkJCQltdW5tYXAobGlzdFtuXS5wdHIsIHN6KTsKKwkJCQlnZW1fY2xvc2UodGVz dC0+ZmQsIGxpc3Rbbl0uaGFuZGxlKTsKKwkJCX0gZWxzZSBpZiAodGVzdC0+ZmxhZ3MgJiBURVNU X0JPKSB7CisJCQkJZ2VtX2Nsb3NlKHRlc3QtPmZkLCBsaXN0W25dLmhhbmRsZSk7CisJCQl9IGVs c2UgeworCQkJCW11bm1hcChsaXN0W25dLnB0ciwgc3opOworCQkJfQorCQl9CisKKwkJLyoKKwkJ ICogQWxsb2NhdGUgbWVtb3J5IGJsb2NrcyBhbmQgcmVjb3JkIHRoZSBjdXJyZW50IHdvcmtpbmcg c2V0CisJCSAqIHNpemUuCisJCSAqLworCQlpZiAodGVzdC0+ZmxhZ3MgJiBURVNUX0JPKSB7CisJ CQlsaXN0W25dLmhhbmRsZSA9IF9fZ2V0X3BhZ2VzKHRlc3QtPmZkLCBzeik7CisJCX0gZWxzZSBp ZiAodGVzdC0+ZmxhZ3MgJiBURVNUX1VTRVJQVFIpIHsKKwkJCV9fZ2V0X3VzZXJwdHIodGVzdC0+ ZmQsICZsaXN0W25dLCBzeik7CisJCX0gZWxzZSB7CisJCQlsaXN0W25dLnB0ciA9IG1tYXAoTlVM TCwgc3osIFBST1RfV1JJVEUsCisJCQkJCSAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywg LTEsIDApOworCQkJYXNzZXJ0KGxpc3Rbbl0ucHRyICE9IE1BUF9GQUlMRUQpOworCisJCQltYWR2 aXNlKGxpc3Rbbl0ucHRyLCBzeiwgTUFEVl9IVUdFUEFHRSk7CisKKwkJCWZvciAoc2l6ZV90IHBh Z2UgPSAwOyBwYWdlIDwgc3o7IHBhZ2UgKz0gUEFHRV9TSVpFKQorCQkJCSoodm9sYXRpbGUgdWlu dDMyX3QgKikoKHVuc2lnbmVkIGNoYXIgKilsaXN0W25dLnB0ciArIHBhZ2UpID0gMDsKKwkJfQor CisJCWlmIChuID4gbWF4KQorCQkJbWF4ID0gbjsKKworCQluKys7CisKKwkJLyoKKwkJICogU3Rh cnQgZnJlZWluZyB0aGUgb2xkZXN0IGFuZCByZWFsbG9jYXRpbmcgb25jZSBtYXhpbXVtCisJCSAq IHdvcmtpbmcgc2V0IHNpemUgaGFzIGJlZW4gcmVhY2hlZC4KKwkJICovCisJCWlmIChuID49IGJs b2NrcykKKwkJCW4gPSAwOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCBv b21fYWRqdXN0KGNvbnN0IGNoYXIgKnNjb3JlKQoreworCWludCBmZDsKKworCWZkID0gb3Blbigi L3Byb2Mvc2VsZi9vb21fc2NvcmVfYWRqIiwgT19XUk9OTFkpOworCWlndF9hc3NlcnRfZmQoZmQp OworCWlndF9hc3NlcnQod3JpdGUoZmQsIHNjb3JlLCBzaXplb2Yoc2NvcmUpKSA9PSBzaXplb2Yo c2NvcmUpKTsKKwljbG9zZShmZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyaWdnZXJfb29tKHZvaWQp Cit7CisJY29uc3QgY2hhciAqY21kID0gImYiOworCWludCBmZDsKKworCWZkID0gb3BlbigiL3By b2Mvc3lzcnEtdHJpZ2dlciIsIE9fV1JPTkxZKTsKKwlpZ3RfYXNzZXJ0X2ZkKGZkKTsKKwlpZ3Rf YXNzZXJ0KHdyaXRlKGZkLCBjbWQsIHNpemVvZihjbWQpKSA9PSBzaXplb2YoY21kKSk7CisJY2xv c2UoZmQpOworfQorCitzdGF0aWMgYm9vbCBoYXNfc3lzcnFfdHJpZ2dlcih2b2lkKQoreworCWlu dCBmZDsKKworCWZkID0gb3BlbigiL3Byb2Mvc3lzcnEtdHJpZ2dlciIsIE9fV1JPTkxZKTsKKwlj bG9zZShmZCk7CisKKwlyZXR1cm4gZmQgPj0gMDsKK30KKworLyoKKyAqIEV4ZXJjaXNlIGRpZmZl cmVudCBwYXRocyB0byBvdXIgc2hyaW5rZXIgY29kZSwgaW5jbHVkaW5nIE9PTSwgaW4gcHJlZGlj dGFibGUKKyAqIGFuZCByZWFzb25hYmxlIHRpbWUgYnVkZ2V0LgorICovCitzdGF0aWMgdm9pZCBy ZWNsYWltX29vbSh1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBwYXNzZXMpCit7CisJ dW5zaWduZWQgaW50IGNvdW50ID0gMDsKKworCW9vbV9hZGp1c3QoIi0xMDAwIik7CisKKwlkbyB7 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 aWd0X21haW4KIHsKIAljb25zdCBzdHJ1Y3QgdGVzdCB7CkBAIC00MzIsNiArODA2LDMxIEBAIGln dF9tYWluCiAJaWd0X3N1YnRlc3QoInJlY2xhaW0iKQogCQlyZWNsYWltKEk5MTVfRVhFQ19ERUZB VUxULCAyKTsKIAorCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJc3RydWN0IHsKKwkJCWNvbnN0IGNo YXIgKm5hbWU7CisJCQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJCQl1bnNpZ25lZCBpbnQgcGFzc2Vz OworCQl9ICpwLCBwYXNzZXNbXSA9IHsKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20tYmFzaWMiLCBU RVNUX0JPLCAxIH0sCisJCQl7ICJyZWNsYWltcy1hbmQtb29tIiwgVEVTVF9CTywgMyB9LAorCQkJ eyAicmVjbGFpbXMtYW5kLW9vbS11c2VycHRyLWJhc2ljIiwgVEVTVF9VU0VSUFRSLCAxIH0sCisJ CQl7ICJyZWNsYWltcy1hbmQtb29tLXVzZXJwdHIiLCBURVNUX1VTRVJQVFIsIDMgfSwKKwkJCXsg InJlY2xhaW1zLWFuZC1vb20tYm90aC1iYXNpYyIsIFRFU1RfQk8gfCBURVNUX1VTRVJQVFIsIDEg fSwKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20tYm90aCIsIFRFU1RfQk8gfCBURVNUX1VTRVJQVFIs IDMgfSwKKwkJCXsgTlVMTCwgMCwgMCB9LAorCQl9OworCisJCWlndF9maXh0dXJlIHsKKwkJCWln dF9yZXF1aXJlKGhhc19zeXNycV90cmlnZ2VyKCkpOworCQl9CisKKwkJZm9yIChwID0gcGFzc2Vz OyBwLT5uYW1lOyBwKyspIHsKKwkJCWlndF9zdWJ0ZXN0KHAtPm5hbWUpCisJCQkJcmVjbGFpbV9v b20ocC0+ZmxhZ3MsIHAtPnBhc3Nlcyk7CisJCX0KKwl9CisKIAlmb3IoY29uc3Qgc3RydWN0IHRl c3QgKnQgPSB0ZXN0czsgdC0+bmFtZTsgdCsrKSB7CiAJCWZvcihjb25zdCBzdHJ1Y3QgbW9kZSAq bSA9IG1vZGVzOyBtLT5zdWZmaXg7IG0rKykgewogCQkJaWd0X3N1YnRlc3RfZigiJXMlcyIsIHQt Pm5hbWUsIG0tPnN1ZmZpeCkKZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50 eHQgYi90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0CmluZGV4IDczZDEyNzYwM2QyOC4uZDc2 YTRiM2IxYzcxIDEwMDY0NAotLS0gYS90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0CisrKyBi L3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQKQEAgLTYwLDYgKzYwLDcgQEAgaWd0QGdlbV9y aW5nX3N5bmNfY29weShALiopPwogaWd0QGdlbV9yaW5nX3N5bmNfbG9vcChALiopPwogaWd0QGdl bV9zZXFub193cmFwKEAuKik/CiBpZ3RAZ2VtX3Nocmlua0AoPyFyZWNsYWltJCkuKgoraWd0QGdl bV9zaHJpbmtAKD8hcmVjbGFpbXMtYW5kLW9vbSkuKgogaWd0QGdlbV9zb2Z0cGluQC4qKGhhbmd8 UzQpLioKIGlndEBnZW1fc3Bpbl9iYXRjaChALiopPwogaWd0QGdlbV9zdG9sZW5ALipoaWJlcm5h dGUuKgpkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdCBi L3Rlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QKaW5kZXggNmQ0Mjc5MmM2N2Y3 Li4wZGY3Y2MyZmQ5ZmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2su dGVzdGxpc3QKKysrIGIvdGVzdHMvaW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdApAQCAt MTI0LDYgKzEyNCw5IEBAIGlndEBnZW1fcmluZ2ZpbGxAYmFzaWMtZGVmYXVsdAogaWd0QGdlbV9y aW5nZmlsbEBiYXNpYy1kZWZhdWx0LWludGVycnVwdGlibGUKIGlndEBnZW1fcmluZ2ZpbGxAYmFz aWMtZGVmYXVsdC1mb3JrZWQKIGlndEBnZW1fcmluZ2ZpbGxAYmFzaWMtZGVmYXVsdC1mZAoraWd0 QGdlbV9zaHJpbmtAcmVjbGFpbXMtYW5kLW9vbS1iYXNpYworaWd0QGdlbV9zaHJpbmtAcmVjbGFp bXMtYW5kLW9vbS11c2VycHRyLWJhc2ljCitpZ3RAZ2VtX3Nocmlua0ByZWNsYWltcy1hbmQtb29t LWJvdGgtYmFzaWMKIGlndEBnZW1fc3luY0BiYXNpYy1hbGwKIGlndEBnZW1fc3luY0BiYXNpYy1l YWNoCiBpZ3RAZ2VtX3N5bmNAYmFzaWMtbWFueS1lYWNoCi0tIAoyLjE5LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=