From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 10 Dec 2018 10:11:06 +0000 Message-Id: <20181210101107.1771-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFT i-g-t 1/2] tests/gem_shrink: Background, direct and OOM shrinker plus userptr tests 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCi4uLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0t CiBsaWIvaWd0X2NvcmUuYyAgICAgICAgICB8ICAxOSArKysKIGxpYi9pZ3RfY29yZS5oICAgICAg ICAgIHwgICAxICsKIHRlc3RzL2k5MTUvZ2VtX3Nocmluay5jIHwgMzQ4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzY4IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9saWIvaWd0X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCmluZGV4 IDY0ODgzZDY0MDJhZi4uYTIyYzRiMDc3ZDg1IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuYwor KysgYi9saWIvaWd0X2NvcmUuYwpAQCAtMTY4MCw2ICsxNjgwLDI1IEBAIHZvaWQgaWd0X3N0b3Bf aGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpCiAJYXNzZXJ0KGhlbHBlcl93 YXNfYWxpdmUocHJvYywgc3RhdHVzKSk7CiB9CiAKKy8qKgorICogaWd0X3RyeV9zdG9wX2hlbHBl cjoKKyAqIEBwcm9jOiAjaWd0X2hlbHBlcl9wcm9jZXNzIHN0cnVjdHVyZQorICoKKyAqIFRlcm1p bmF0ZXMgYSBoZWxwZXIgcHJvY2VzcyBpZiBpdCBpcyBzdGlsbCBydW5uaW5nIGFuZCByZXR1cm5z IHRydWUsIG9yIGZhbHNlCisgKiBpZiB0aGUgcHJvY2VzcyB3YXNuJ3QgcnVubmluZy4KKyAqLwor Ym9vbCBpZ3RfdHJ5X3N0b3BfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2Mp Cit7CisJaW50IHN0YXR1czsKKworCS8qIGZhaWx1cmUgaGVyZSBtZWFucyB0aGUgcGlkIGlzIGFs cmVhZHkgZGVhZCBhbmQgc28gd2FpdGluZyBpcyBzYWZlICovCisJa2lsbChwcm9jLT5waWQsIHBy b2MtPnVzZV9TSUdLSUxMID8gU0lHS0lMTCA6IFNJR1RFUk0pOworCisJc3RhdHVzID0gaWd0X3dh aXRfaGVscGVyKHByb2MpOworCisJcmV0dXJuIGhlbHBlcl93YXNfYWxpdmUocHJvYywgc3RhdHVz KTsKK30KKwogc3RhdGljIHZvaWQgY2hpbGRyZW5fZXhpdF9oYW5kbGVyKGludCBzaWcpCiB7CiAJ aW50IHN0YXR1czsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5oIGIvbGliL2lndF9jb3JlLmgK aW5kZXggNmY4YzM4NTJhNjg2Li5lZDVjZWViZjEyMDUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29y ZS5oCisrKyBiL2xpYi9pZ3RfY29yZS5oCkBAIC03OTUsNiArNzk1LDcgQEAgYm9vbCBfX2lndF9m b3JrX2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzICpwcm9jKTsKIAlmb3IgKDsgX19p Z3RfZm9ya19oZWxwZXIocHJvYyk7IGV4aXQoMCkpCiBpbnQgaWd0X3dhaXRfaGVscGVyKHN0cnVj dCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpOwogdm9pZCBpZ3Rfc3RvcF9oZWxwZXIoc3RydWN0 IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYyk7Citib29sIGlndF90cnlfc3RvcF9oZWxwZXIoc3Ry dWN0IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYyk7CiAKIC8qIGV4aXQgaGFuZGxlciBjb2RlICov CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jIGIvdGVzdHMvaTkxNS9nZW1f c2hyaW5rLmMKaW5kZXggYzhlMDU4MTRlZTcwLi4xNDVmOWQzNWU1ODQgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvZ2VtX3Nocmluay5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCkBAIC0y Niw2ICsyNiwxMCBAQAogICoKICAqIEV4ZXJjaXNlIHRoZSBzaHJpbmtlciBieSBvdmVyYWxsb2Nh dGluZyBHRU0gb2JqZWN0cwogICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8 c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CiAK ICNpbmNsdWRlICJpZ3QuaCIKICNpbmNsdWRlICJpZ3RfZ3QuaCIKQEAgLTM2Niw2ICszNzAsMzI5 IEBAIHN0YXRpYyB2b2lkIHJlY2xhaW0odW5zaWduZWQgZW5naW5lLCBpbnQgdGltZW91dCkKIAlj bG9zZShmZCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9tZW1pbmZvKGNvbnN0IGNo YXIgKmluZm8sIGNvbnN0IGNoYXIgKnRhZykKK3sKKwljb25zdCBjaGFyICpzdHI7CisJdW5zaWdu ZWQgbG9uZyB2YWw7CisKKwlzdHIgPSBzdHJzdHIoaW5mbywgdGFnKTsKKwlpZiAoc3RyICYmIHNz Y2FuZihzdHIgKyBzdHJsZW4odGFnKSwgIiAlbHUiLCAmdmFsKSA9PSAxKQorCQlyZXR1cm4gdmFs ID4+IDEwOworCisJaWd0X3dhcm4oIlVucmVjb2duaXNlZCAvcHJvYy9tZW1pbmZvIGZpZWxkOiAn JXMnXG4iLCB0YWcpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRf YXZhaWxfcmFtX21iKHZvaWQpCit7CisJaW50IGZkOworCWludCByZXQ7CisJY2hhciBidWZbNDA5 Nl07CisJdW5zaWduZWQgbG9uZyByYW07CisKKwlmZCA9IG9wZW4oIi9wcm9jL21lbWluZm8iLCBP X1JET05MWSk7CisJaWd0X2Fzc2VydF9mZChmZCk7CisKKwlyZXQgPSByZWFkKGZkLCBidWYsIHNp emVvZihidWYpKTsKKwlpZ3RfYXNzZXJ0KHJldCA+PSAwKTsKKworCWNsb3NlKGZkKTsKKworCXJh bSA9IGdldF9tZW1pbmZvKGJ1ZiwgIk1lbUF2YWlsYWJsZToiKTsKKwlyYW0gKz0gZ2V0X21lbWlu Zm8oYnVmLCAiQnVmZmVyczoiKTsKKwlyYW0gKz0gZ2V0X21lbWluZm8oYnVmLCAiQ2FjaGVkOiIp OworCXJhbSArPSBnZXRfbWVtaW5mbyhidWYsICJTd2FwQ2FjaGVkOiIpOworCisJcmV0dXJuIHJh bTsKK30KKworc3RydWN0IHRlc3QgeworI2RlZmluZSBURVNUX0JPCQkoMSkKKyNkZWZpbmUgVEVT VF9VU0VSUFRSCSgyKQorCXVuc2lnbmVkIGludCBmbGFnczsKKwlpbnQgZmQ7Cit9OworCitzdGF0 aWMgdWludDMyX3QgX19nZXRfcGFnZXMoaW50IGZkLCB1bnNpZ25lZCBsb25nIGFsbG9jKQorewor CXVpbnQzMl90IGhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIGFsbG9jKTsKKworCWdlbV9zZXRfZG9t YWluKGZkLCBoYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOworCWdlbV9tYWR2aXNlKGZk LCBoYW5kbGUsIEk5MTVfTUFEVl9ET05UTkVFRCk7CisKKwlyZXR1cm4gaGFuZGxlOworfQorCitz dHJ1Y3QgdGVzdF9vYmogeworCXZvaWQgKnB0cjsKKwl1aW50MzJfdCBoYW5kbGU7Cit9OworCisj ZGVmaW5lIFBBR0VfU0laRSA0MDk2CitzdGF0aWMgdm9pZAorX19nZXRfdXNlcnB0cihpbnQgZmQs IHN0cnVjdCB0ZXN0X29iaiAqb2JqLCB1bnNpZ25lZCBsb25nIHN6KQoreworCXN0cnVjdCBsb2Nh bF9pOTE1X2dlbV91c2VycHRyIHVzZXJwdHIgPSB7IH07CisJdm9pZCAqcHRyOworCisJaWd0X2Fz c2VydF9lcShzeiAmIDQwOTUsIDApOworCisJcHRyID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklU RSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7CisJYXNzZXJ0KHB0ciAhPSBN QVBfRkFJTEVEKTsKKworCWZvciAoc2l6ZV90IHBhZ2UgPSAwOyBwYWdlIDwgc3o7IHBhZ2UgKz0g UEFHRV9TSVpFKQorCQkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh1bnNpZ25lZCBjaGFyICopcHRy ICsgcGFnZSkgPSAwOworCisJdXNlcnB0ci51c2VyX3NpemUgPSBzejsKKwl1c2VycHRyLnVzZXJf cHRyID0gdG9fdXNlcl9wb2ludGVyKHB0cik7CisJZG9faW9jdGwoZmQsIExPQ0FMX0lPQ1RMX0k5 MTVfR0VNX1VTRVJQVFIsICZ1c2VycHRyKTsKKworCWdlbV9zZXRfZG9tYWluKGZkLCB1c2VycHRy LmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CisJZ2VtX21hZHZpc2UoZmQsIHVzZXJw dHIuaGFuZGxlLCBJOTE1X01BRFZfRE9OVE5FRUQpOworCisJb2JqLT5wdHIgPSBwdHI7CisJb2Jq LT5oYW5kbGUgPSB1c2VycHRyLmhhbmRsZTsKK30KKworc3RhdGljIHZvaWQgKm1lbXByZXNzdXJl KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgdGVzdF9vYmogKmxpc3QgPSBOVUxMOworCXN0cnVjdCB0 ZXN0ICp0ZXN0ID0gYXJnOworCWNvbnN0IHVuc2lnbmVkIGludCBzel9tYiA9IDI7CisJY29uc3Qg dW5zaWduZWQgaW50IHN6ID0gc3pfbWIgPDwgMjA7CisJdW5zaWduZWQgaW50IG4gPSAwLCBtYXgg PSAwOworCXVuc2lnbmVkIGludCBibG9ja3M7CisKKwlpZ3RfZGVidWcoIm1lbXByZXNzdXJlIGZs YWdzPSV4XG4iLCB0ZXN0LT5mbGFncyk7CisKKwlmb3IgKDs7KSB7CisJCXVuc2lnbmVkIGxvbmcg cmFtX21iID0gZ2V0X2F2YWlsX3JhbV9tYigpOworCisJCWlmICghbGlzdCkgeworCQkJYmxvY2tz ID0gcmFtX21iIC8gc3pfbWI7CisJCQlsaXN0ID0gY2FsbG9jKGJsb2Nrcywgc2l6ZW9mKCpsaXN0 KSk7CisJCQlpZ3RfYXNzZXJ0KGxpc3QpOworCQl9IGVsc2UgaWYgKHJhbV9tYiA8IDI1Nikgewor CQkJYmxvY2tzID0gbWF4ICsgMTsKKwkJfQorCisJCWlmIChsaXN0W25dLnB0ciB8fCBsaXN0W25d LmhhbmRsZSkgeworCQkJaWYgKHRlc3QtPmZsYWdzICYgVEVTVF9VU0VSUFRSKSB7CisJCQkJbXVu bWFwKGxpc3Rbbl0ucHRyLCBzeik7CisJCQkJZ2VtX2Nsb3NlKHRlc3QtPmZkLCBsaXN0W25dLmhh bmRsZSk7CisJCQl9IGVsc2UgaWYgKHRlc3QtPmZsYWdzICYgVEVTVF9CTykgeworCQkJCWdlbV9j bG9zZSh0ZXN0LT5mZCwgbGlzdFtuXS5oYW5kbGUpOworCQkJfSBlbHNlIHsKKwkJCQltdW5tYXAo bGlzdFtuXS5wdHIsIHN6KTsKKwkJCX0KKwkJfQorCisJCWlmICh0ZXN0LT5mbGFncyAmIFRFU1Rf Qk8pIHsKKwkJCWxpc3Rbbl0uaGFuZGxlID0gX19nZXRfcGFnZXModGVzdC0+ZmQsIHN6KTsKKwkJ fSBlbHNlIGlmICh0ZXN0LT5mbGFncyAmIFRFU1RfVVNFUlBUUikgeworCQkJX19nZXRfdXNlcnB0 cih0ZXN0LT5mZCwgJmxpc3Rbbl0sIHN6KTsKKwkJfSBlbHNlIHsKKwkJCWxpc3Rbbl0ucHRyID0g bW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwKKwkJCQkJICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5P TllNT1VTLCAtMSwgMCk7CisJCQlhc3NlcnQobGlzdFtuXS5wdHIgIT0gTUFQX0ZBSUxFRCk7CisK KwkJCW1hZHZpc2UobGlzdFtuXS5wdHIsIHN6LCBNQURWX0hVR0VQQUdFKTsKKworCQkJZm9yIChz aXplX3QgcGFnZSA9IDA7IHBhZ2UgPCBzejsgcGFnZSArPSBQQUdFX1NJWkUpCisJCQkJKih2b2xh dGlsZSB1aW50MzJfdCAqKSgodW5zaWduZWQgY2hhciAqKWxpc3Rbbl0ucHRyICsgcGFnZSkgPSAw OworCQl9CisKKwkJaWYgKG4gPiBtYXgpCisJCQltYXggPSBuOworCisJCW4rKzsKKworCQlpZiAo biA+PSBibG9ja3MpCisJCQluID0gMDsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IHZvaWQgb29tX2FkanVzdChjb25zdCBjaGFyICpzY29yZSkKK3sKKwlpbnQgZmQ7CisKKwlmZCA9 IG9wZW4oIi9wcm9jL3NlbGYvb29tX3Njb3JlX2FkaiIsIE9fV1JPTkxZKTsKKwlpZ3RfYXNzZXJ0 X2ZkKGZkKTsKKwlpZ3RfYXNzZXJ0KHdyaXRlKGZkLCBzY29yZSwgc2l6ZW9mKHNjb3JlKSkgPT0g c2l6ZW9mKHNjb3JlKSk7CisJY2xvc2UoZmQpOworfQorCitzdGF0aWMgdm9pZCB0cmlnZ2VyX29v bSh2b2lkKQoreworCWNvbnN0IGNoYXIgKmNtZCA9ICJmIjsKKwlpbnQgZmQ7CisKKwlmZCA9IG9w ZW4oIi9wcm9jL3N5c3JxLXRyaWdnZXIiLCBPX1dST05MWSk7CisJaWd0X2Fzc2VydF9mZChmZCk7 CisJaWd0X2Fzc2VydCh3cml0ZShmZCwgY21kLCBzaXplb2YoY21kKSkgPT0gc2l6ZW9mKGNtZCkp OworCWNsb3NlKGZkKTsKK30KKworc3RhdGljIGJvb2wgaGFzX3N5c3JxX3RyaWdnZXIodm9pZCkK K3sKKwlpbnQgZmQ7CisKKwlmZCA9IG9wZW4oIi9wcm9jL3N5c3JxLXRyaWdnZXIiLCBPX1dST05M WSk7CisJY2xvc2UoZmQpOworCisJcmV0dXJuIGZkID49IDA7Cit9CisKK3N0YXRpYyB2b2lkIHJl Y2xhaW1fb29tKHVuc2lnbmVkIGludCBmbGFncykKK3sKKwl1bnNpZ25lZCBpbnQgY291bnQgPSAw OworCisJb29tX2FkanVzdCgiLTEwMDAiKTsKKworCWRvIHsKKwkJc3RydWN0IGlndF9oZWxwZXJf cHJvY2VzcyBnZW1fY2hpbGQgPSB7IC51c2VfU0lHS0lMTCA9IHRydWUgfTsKKwkJc3RydWN0IGln dF9oZWxwZXJfcHJvY2VzcyBtZW1fY2hpbGQgPSB7IC51c2VfU0lHS0lMTCA9IHRydWUgfTsKKwkJ c3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBlYl9jaGlsZCA9IHsgLnVzZV9TSUdLSUxMID0gdHJ1 ZSB9OworCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIGRyb3BfY2hpbGQgPSB7IC51c2VfU0lH S0lMTCA9IHRydWUgfTsKKworCQlpZ3RfZGVidWcoIkl0ZXJhdGlvbiAldS4uLlxuIiwgKytjb3Vu dCk7CisKKwkJaWd0X2ZvcmtfaGVscGVyKCZtZW1fY2hpbGQpIHsKKwkJCXN0cnVjdCB0ZXN0IHRl c3QgPSB7IH07CisKKwkJCWlmICgoZmxhZ3MgJiAoVEVTVF9CTyB8IFRFU1RfVVNFUlBUUikpID09 CisJCQkgICAgKFRFU1RfQk8gfCBURVNUX1VTRVJQVFIpKQorCQkJCXRlc3QuZmxhZ3MgPSBURVNU X0JPOworCisJCQlvb21fYWRqdXN0KCI1MDAiKTsKKworCQkJaWYgKHRlc3QuZmxhZ3MgPT0gVEVT VF9CTykgeworCQkJCXRlc3QuZmQgPSBkcm1fb3Blbl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRF TCk7CisJCQkJaWd0X3JlcXVpcmVfZ2VtKHRlc3QuZmQpOworCQkJfQorCisJCQltZW1wcmVzc3Vy ZSgmdGVzdCk7CisKKwkJCWlmICh0ZXN0LmZsYWdzID09IFRFU1RfQk8pCisJCQkJY2xvc2UodGVz dC5mZCk7CisJCX0KKworCQlpZ3RfZm9ya19oZWxwZXIoJmdlbV9jaGlsZCkgeworCQkJc3RydWN0 IHRlc3QgdGVzdCA9IHsgLmZsYWdzID0gZmxhZ3MgfTsKKworCQkJaWYgKChmbGFncyAmIChURVNU X0JPIHwgVEVTVF9VU0VSUFRSKSkgPT0KKwkJCSAgICAoVEVTVF9CTyB8IFRFU1RfVVNFUlBUUikp CisJCQkJdGVzdC5mbGFncyA9IFRFU1RfVVNFUlBUUjsKKworCQkJb29tX2FkanVzdCgiNTAwIik7 CisKKwkJCXRlc3QuZmQgPSBkcm1fb3Blbl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRFTCk7CisJ CQlpZ3RfcmVxdWlyZV9nZW0odGVzdC5mZCk7CisKKwkJCW1lbXByZXNzdXJlKCZ0ZXN0KTsKKwor CQkJY2xvc2UodGVzdC5mZCk7CisJCX0KKworCQlpZ3RfZm9ya19oZWxwZXIoJmViX2NoaWxkKSB7 CisJCQlzdHJ1Y3QgdGVzdCB0ZXN0ID0geyAuZmxhZ3MgPSBmbGFncyB9OworCQkJY29uc3QgdWlu dDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZl cjIgZXhlY2J1ZiA9IHsgfTsKKworCQkJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9p bnRlcigmb2JqKTsKKwkJCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMTsKKworCQkJdGVzdC5mZCA9 IGRybV9vcGVuX2RyaXZlcl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsKKwkJCWlndF9yZXF1aXJlX2dl bSh0ZXN0LmZkKTsKKworCQkJZm9yICg7OykgeworCQkJCXVuc2lnbmVkIGxvbmcgZWIgPSAwOwor CQkJCXN0cnVjdCB0aW1lc3BlYyB0cyA9IHsgfTsKKwkJCQl1bnNpZ25lZCBsb25nIHN0YXJ0Owor CisJCQkJaWd0X25zZWNfZWxhcHNlZCgmdHMpOworCQkJCXN0YXJ0ID0gaWd0X25zZWNfZWxhcHNl ZCgmdHMpIC8gMWU2OworCisJCQkJZm9yICg7OykgeworCQkJCQl1bnNpZ25lZCBsb25nIG5vdzsK KworCQkJCQlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZSh0ZXN0LmZkLCA0MDk2KTsKKwkJCQkJZ2Vt X3dyaXRlKHRlc3QuZmQsIG9iai5oYW5kbGUsIDAsICZiYmUsCisJCQkJCQlzaXplb2YoYmJlKSk7 CisJCQkJCWdlbV9leGVjYnVmKHRlc3QuZmQsICZleGVjYnVmKTsKKwkJCQkJZWIrKzsKKwkJCQkJ bm93ID0gaWd0X25zZWNfZWxhcHNlZCgmdHMpIC8gMWU2OworCQkJCQlpZiAobm93ID4gKHN0YXJ0 ICsgMTAwMCkpIHsKKwkJCQkJCWdlbV9zeW5jKHRlc3QuZmQsIG9iai5oYW5kbGUpOworCQkJCQkJ aWYgKG5vdyA+IChzdGFydCArIDIwMDApKSB7CisJCQkJCQkJZ2VtX2Nsb3NlKHRlc3QuZmQsCisJ CQkJCQkJCSAgb2JqLmhhbmRsZSk7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJ CQkJZ2VtX2Nsb3NlKHRlc3QuZmQsIG9iai5oYW5kbGUpOworCQkJCX0KKworCQkJCWlndF9kZWJ1 ZygiJWx1IGViXG4iLCBlYik7CisJCQkJdXNsZWVwKDUwMGUzKTsKKwkJCX0KKworCQkJY2xvc2Uo dGVzdC5mZCk7CisJCX0KKworCQlpZ3RfZm9ya19oZWxwZXIoJmRyb3BfY2hpbGQpIHsKKwkJCWlu dCBmZDsKKworCQkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJCWlndF9y ZXF1aXJlX2dlbShmZCk7CisKKwkJCWZvciAoOzspIHsKKwkJCQl1c2xlZXAoMzM0ZTMpOworCQkJ CWlndF9kcm9wX2NhY2hlc19zZXQoZmQsIERST1BfQUNUSVZFKTsKKwkJCX0KKworCQkJY2xvc2Uo ZmQpOworCQl9CisKKwkJZm9yICh1bnNpZ25lZCBsb25nIHJhbV9tYiA9IDA7CisJCSAgICAgKHJh bV9tYiA9IGdldF9hdmFpbF9yYW1fbWIoKSkgPiA1MTI7KSB7CisJCQlpbnQgc3RhdHVzOworCQkJ cGlkX3QgcGlkOworCisJCQlpZ3RfZGVidWcoIlsldV0gJWx1IGZyZWUgbWJcbiIsIGNvdW50LCBy YW1fbWIpOworCisJCQlwaWQgPSB3YWl0cGlkKG1lbV9jaGlsZC5waWQsICZzdGF0dXMsIFdOT0hB TkcpOworCQkJaWYgKHBpZCkKKwkJCQlicmVhazsKKworCQkJcGlkID0gd2FpdHBpZChnZW1fY2hp bGQucGlkLCAmc3RhdHVzLCBXTk9IQU5HKTsKKwkJCWlmIChwaWQpCisJCQkJYnJlYWs7CisKKwkJ CXBpZCA9IHdhaXRwaWQoZWJfY2hpbGQucGlkLCAmc3RhdHVzLCBXTk9IQU5HKTsKKwkJCWlndF9h c3NlcnRfZXEocGlkLCAwKTsKKworCQkJcGlkID0gd2FpdHBpZChkcm9wX2NoaWxkLnBpZCwgJnN0 YXR1cywgV05PSEFORyk7CisJCQlpZ3RfYXNzZXJ0X2VxKHBpZCwgMCk7CisKKwkJCXNsZWVwKDEp OworCQl9CisKKwkJaWd0X2RlYnVnKCJUcmlnZ2VyaW5nIE9PTVxuIik7CisJCXRyaWdnZXJfb29t KCk7CisKKwkJc2xlZXAoMSk7CisKKwkJaWd0X3RyeV9zdG9wX2hlbHBlcigmbWVtX2NoaWxkKTsK KwkJaWd0X3RyeV9zdG9wX2hlbHBlcigmZ2VtX2NoaWxkKTsKKwkJaWd0X3N0b3BfaGVscGVyKCZl Yl9jaGlsZCk7CisJCWlndF9zdG9wX2hlbHBlcigmZHJvcF9jaGlsZCk7CisJfSB3aGlsZSAoY291 bnQgPCAzKTsKK30KKwogaWd0X21haW4KIHsKIAljb25zdCBzdHJ1Y3QgdGVzdCB7CkBAIC00MzIs NiArNzU5LDI3IEBAIGlndF9tYWluCiAJaWd0X3N1YnRlc3QoInJlY2xhaW0iKQogCQlyZWNsYWlt KEk5MTVfRVhFQ19ERUZBVUxULCAyKTsKIAorCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2Zp eHR1cmUgeworCQkJaWd0X3JlcXVpcmUoaGFzX3N5c3JxX3RyaWdnZXIoKSk7CisJCX0KKworCQlp Z3Rfc3VidGVzdCgidHdvLXJlY2xhaW1zLWFuZC1vb20iKQorCQkJcmVjbGFpbV9vb20oVEVTVF9C Tyk7CisKKwkJaWd0X3N1YnRlc3QoInR3by1yZWNsYWltcy1hbmQtb29tLXVzZXJwdHIiKSB7CisJ CQlpZ3RfcmVxdWlyZShoYXNfdXNlcnB0cigpKTsKKworCQkJcmVjbGFpbV9vb20oVEVTVF9VU0VS UFRSKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0KCJ0d28tcmVjbGFpbXMtYW5kLW9vbS1ib3RoIikg eworCQkJaWd0X3JlcXVpcmUoaGFzX3VzZXJwdHIoKSk7CisKKwkJCXJlY2xhaW1fb29tKFRFU1Rf Qk8gfCBURVNUX1VTRVJQVFIpOworCQl9CisJfQorCiAJZm9yKGNvbnN0IHN0cnVjdCB0ZXN0ICp0 ID0gdGVzdHM7IHQtPm5hbWU7IHQrKykgewogCQlmb3IoY29uc3Qgc3RydWN0IG1vZGUgKm0gPSBt b2RlczsgbS0+c3VmZml4OyBtKyspIHsKIAkJCWlndF9zdWJ0ZXN0X2YoIiVzJXMiLCB0LT5uYW1l LCBtLT5zdWZmaXgpCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldgo=