From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 7 Jan 2019 17:36:40 +0000 Message-Id: <20190107173640.9620-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190104153709.19350-1-tvrtko.ursulin@linux.intel.com> References: <20190104153709.19350-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2] 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 YXR2YWxhKQoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KLS0tCiBsaWIvaWd0X2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5 ICsrCiBsaWIvaWd0X2NvcmUuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRlc3Rz L2k5MTUvZ2VtX3Nocmluay5jICAgICAgICAgICAgICAgfCAzOTkgKysrKysrKysrKysrKysrKysr KysrKysrKysKIHRlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQgICAgICAgICAgfCAgIDIgKy0K IHRlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QgfCAgIDMgKwogNSBmaWxlcyBj aGFuZ2VkLCA0MjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfY29yZS5jIGIvbGliL2lndF9jb3JlLmMKaW5kZXggNTBkNjAwOGY2YzgyLi4zNTFkYTBi NGUwMjAgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29yZS5jCisrKyBiL2xpYi9pZ3RfY29yZS5jCkBA IC0xNjg1LDYgKzE2ODUsMjUgQEAgdm9pZCBpZ3Rfc3RvcF9oZWxwZXIoc3RydWN0IGlndF9oZWxw ZXJfcHJvY2VzcyAqcHJvYykKIAlhc3NlcnQoaGVscGVyX3dhc19hbGl2ZShwcm9jLCBzdGF0dXMp KTsKIH0KIAorLyoqCisgKiBpZ3RfdHJ5X3N0b3BfaGVscGVyOgorICogQHByb2M6ICNpZ3RfaGVs cGVyX3Byb2Nlc3Mgc3RydWN0dXJlCisgKgorICogVGVybWluYXRlcyBhIGhlbHBlciBwcm9jZXNz IGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcgYW5kIHJldHVybnMgdHJ1ZSwgb3IgZmFsc2UKKyAqIGlm IHRoZSBwcm9jZXNzIHdhc24ndCBydW5uaW5nLgorICovCitib29sIGlndF90cnlfc3RvcF9oZWxw ZXIoc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYykKK3sKKwlpbnQgc3RhdHVzOworCisJ LyogZmFpbHVyZSBoZXJlIG1lYW5zIHRoZSBwaWQgaXMgYWxyZWFkeSBkZWFkIGFuZCBzbyB3YWl0 aW5nIGlzIHNhZmUgKi8KKwlraWxsKHByb2MtPnBpZCwgcHJvYy0+dXNlX1NJR0tJTEwgPyBTSUdL SUxMIDogU0lHVEVSTSk7CisKKwlzdGF0dXMgPSBpZ3Rfd2FpdF9oZWxwZXIocHJvYyk7CisKKwly ZXR1cm4gaGVscGVyX3dhc19hbGl2ZShwcm9jLCBzdGF0dXMpOworfQorCiBzdGF0aWMgdm9pZCBj aGlsZHJlbl9leGl0X2hhbmRsZXIoaW50IHNpZykKIHsKIAlpbnQgc3RhdHVzOwpkaWZmIC0tZ2l0 IGEvbGliL2lndF9jb3JlLmggYi9saWIvaWd0X2NvcmUuaAppbmRleCA2ZjhjMzg1MmE2ODYuLmVk NWNlZWJmMTIwNSAxMDA2NDQKLS0tIGEvbGliL2lndF9jb3JlLmgKKysrIGIvbGliL2lndF9jb3Jl LmgKQEAgLTc5NSw2ICs3OTUsNyBAQCBib29sIF9faWd0X2ZvcmtfaGVscGVyKHN0cnVjdCBpZ3Rf aGVscGVyX3Byb2Nlc3MgKnByb2MpOwogCWZvciAoOyBfX2lndF9mb3JrX2hlbHBlcihwcm9jKTsg ZXhpdCgwKSkKIGludCBpZ3Rfd2FpdF9oZWxwZXIoc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyAq cHJvYyk7CiB2b2lkIGlndF9zdG9wX2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzICpw cm9jKTsKK2Jvb2wgaWd0X3RyeV9zdG9wX2hlbHBlcihzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNz ICpwcm9jKTsKIAogLyogZXhpdCBoYW5kbGVyIGNvZGUgKi8KIApkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fc2hyaW5rLmMgYi90ZXN0cy9pOTE1L2dlbV9zaHJpbmsuYwppbmRleCBjOGUwNTgx NGVlNzAuLjdjMDAyZGUwZWYxZiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMK KysrIGIvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMKQEAgLTI2LDYgKzI2LDEwIEBACiAgKgogICog RXhlcmNpc2UgdGhlIHNocmlua2VyIGJ5IG92ZXJhbGxvY2F0aW5nIEdFTSBvYmplY3RzCiAgKi8K KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg PHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KIAogI2luY2x1ZGUgImlndC5oIgogI2lu Y2x1ZGUgImlndF9ndC5oIgpAQCAtMzY2LDYgKzM3MCwzNzYgQEAgc3RhdGljIHZvaWQgcmVjbGFp bSh1bnNpZ25lZCBlbmdpbmUsIGludCB0aW1lb3V0KQogCWNsb3NlKGZkKTsKIH0KIAorc3RhdGlj IHVuc2lnbmVkIGxvbmcgZ2V0X21lbWluZm8oY29uc3QgY2hhciAqaW5mbywgY29uc3QgY2hhciAq dGFnKQoreworCWNvbnN0IGNoYXIgKnN0cjsKKwl1bnNpZ25lZCBsb25nIHZhbDsKKworCXN0ciA9 IHN0cnN0cihpbmZvLCB0YWcpOworCWlmIChzdHIgJiYgc3NjYW5mKHN0ciArIHN0cmxlbih0YWcp LCAiICVsdSIsICZ2YWwpID09IDEpCisJCXJldHVybiB2YWwgPj4gMTA7CisKKwlpZ3Rfd2Fybigi VW5yZWNvZ25pc2VkIC9wcm9jL21lbWluZm8gZmllbGQ6ICclcydcbiIsIHRhZyk7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9hdmFpbF9yYW1fbWIodm9pZCkKK3sK KwlpbnQgZmQ7CisJaW50IHJldDsKKwljaGFyIGJ1Zls0MDk2XTsKKwl1bnNpZ25lZCBsb25nIHJh bTsKKworCWZkID0gb3BlbigiL3Byb2MvbWVtaW5mbyIsIE9fUkRPTkxZKTsKKwlpZ3RfYXNzZXJ0 X2ZkKGZkKTsKKworCXJldCA9IHJlYWQoZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCWlndF9hc3Nl cnQocmV0ID49IDApOworCisJY2xvc2UoZmQpOworCisJcmFtID0gZ2V0X21lbWluZm8oYnVmLCAi TWVtQXZhaWxhYmxlOiIpOworCXJhbSArPSBnZXRfbWVtaW5mbyhidWYsICJCdWZmZXJzOiIpOwor CXJhbSArPSBnZXRfbWVtaW5mbyhidWYsICJDYWNoZWQ6Iik7CisJcmFtICs9IGdldF9tZW1pbmZv KGJ1ZiwgIlN3YXBDYWNoZWQ6Iik7CisKKwlyZXR1cm4gcmFtOworfQorCitzdHJ1Y3QgdGVzdCB7 CisjZGVmaW5lIFRFU1RfQk8JCSgxKQorI2RlZmluZSBURVNUX1VTRVJQVFIJKDIpCisJdW5zaWdu ZWQgaW50IGZsYWdzOworCWludCBmZDsKK307CisKK3N0YXRpYyB1aW50MzJfdCBfX2dldF9wYWdl cyhpbnQgZmQsIHVuc2lnbmVkIGxvbmcgYWxsb2MpCit7CisJdWludDMyX3QgaGFuZGxlID0gZ2Vt X2NyZWF0ZShmZCwgYWxsb2MpOworCisJZ2VtX3NldF9kb21haW4oZmQsIGhhbmRsZSwgSTkxNV9H RU1fRE9NQUlOX0dUVCwgMCk7CisJZ2VtX21hZHZpc2UoZmQsIGhhbmRsZSwgSTkxNV9NQURWX0RP TlRORUVEKTsKKworCXJldHVybiBoYW5kbGU7Cit9CisKK3N0cnVjdCB0ZXN0X29iaiB7CisJdm9p ZCAqcHRyOworCXVpbnQzMl90IGhhbmRsZTsKK307CisKKyNkZWZpbmUgUEFHRV9TSVpFIDQwOTYK K3N0YXRpYyB2b2lkCitfX2dldF91c2VycHRyKGludCBmZCwgc3RydWN0IHRlc3Rfb2JqICpvYmos IHVuc2lnbmVkIGxvbmcgc3opCit7CisJc3RydWN0IGxvY2FsX2k5MTVfZ2VtX3VzZXJwdHIgdXNl cnB0ciA9IHsgfTsKKwl2b2lkICpwdHI7CisKKwlpZ3RfYXNzZXJ0X2VxKHN6ICYgNDA5NSwgMCk7 CisKKwlwdHIgPSBtbWFwKE5VTEwsIHN6LCBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9B Tk9OWU1PVVMsIC0xLCAwKTsKKwlhc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCisJZm9yIChz aXplX3QgcGFnZSA9IDA7IHBhZ2UgPCBzejsgcGFnZSArPSBQQUdFX1NJWkUpCisJCSoodm9sYXRp bGUgdWludDMyX3QgKikoKHVuc2lnbmVkIGNoYXIgKilwdHIgKyBwYWdlKSA9IDA7CisKKwl1c2Vy cHRyLnVzZXJfc2l6ZSA9IHN6OworCXVzZXJwdHIudXNlcl9wdHIgPSB0b191c2VyX3BvaW50ZXIo cHRyKTsKKwlkb19pb2N0bChmZCwgTE9DQUxfSU9DVExfSTkxNV9HRU1fVVNFUlBUUiwgJnVzZXJw dHIpOworCisJZ2VtX3NldF9kb21haW4oZmQsIHVzZXJwdHIuaGFuZGxlLCBJOTE1X0dFTV9ET01B SU5fR1RULCAwKTsKKwlnZW1fbWFkdmlzZShmZCwgdXNlcnB0ci5oYW5kbGUsIEk5MTVfTUFEVl9E T05UTkVFRCk7CisKKwlvYmotPnB0ciA9IHB0cjsKKwlvYmotPmhhbmRsZSA9IHVzZXJwdHIuaGFu ZGxlOworfQorCisvKgorICogVXNlIGEgc3BlY2lmaWMgd2F5IG9mIHVzaW5nIHVwIG1lbW9yeSB1 bnRpbCB3ZSBhcmUgYmVsb3cgYSBjZXJ0YWluIHRocmVzaG9sZC4KKyAqLworc3RhdGljIHZvaWQg Km1lbXByZXNzdXJlKHZvaWQgKmFyZykKK3sKKwljb25zdCB1bnNpZ25lZCBpbnQgZnJlZV90aHJl c2hvbGRfbWIgPSAyNTY7CisJc3RydWN0IHRlc3Rfb2JqICpsaXN0ID0gTlVMTDsKKwlzdHJ1Y3Qg dGVzdCAqdGVzdCA9IGFyZzsKKwljb25zdCB1bnNpZ25lZCBpbnQgc3pfbWIgPSAyOworCWNvbnN0 IHVuc2lnbmVkIGludCBzeiA9IHN6X21iIDw8IDIwOworCXVuc2lnbmVkIGludCBuID0gMCwgbWF4 ID0gMDsKKwl1bnNpZ25lZCBpbnQgYmxvY2tzOworCisJZm9yICg7OykgeworCQl1bnNpZ25lZCBs b25nIHJhbV9tYiA9IGdldF9hdmFpbF9yYW1fbWIoKTsKKworCQlpZiAoIWxpc3QpIHsKKwkJCS8q CisJCQkgKiBPbiBmaXJzdCBwYXNzIGVzdGltYXRlIGhvdyBtYW55IHN6X21iIHNpemVkIGJsb2Nr cworCQkJICogd2UgY291bGQgbmVlZCB0byB1c2UgdXAgYWxsIFJBTS4KKwkJCSAqLworCQkJYmxv Y2tzID0gcmFtX21iIC8gc3pfbWI7CisJCQlsaXN0ID0gY2FsbG9jKGJsb2Nrcywgc2l6ZW9mKCps aXN0KSk7CisJCQlpZ3RfYXNzZXJ0KGxpc3QpOworCQl9IGVsc2UgaWYgKHJhbV9tYiA8IGZyZWVf dGhyZXNob2xkX21iKSB7CisJCQkvKiBMaW1pdCB0aGUgd29ya2luZyBzZXQgb25jZSB1bmRlciB0 aGUgdGhyZXNob2xkLiAqLworCQkJYmxvY2tzID0gbWF4ICsgMTsKKwkJfQorCisJCS8qIEZyZWUg dGhlIG9sZGVzdCBibG9jayBvbmNlIHRoZSB3b3JraW5nIHNldCB3cmFwcGVkLiAqLworCQlpZiAo bGlzdFtuXS5wdHIgfHwgbGlzdFtuXS5oYW5kbGUpIHsKKwkJCWlmICh0ZXN0LT5mbGFncyAmIFRF U1RfVVNFUlBUUikgeworCQkJCW11bm1hcChsaXN0W25dLnB0ciwgc3opOworCQkJCWdlbV9jbG9z ZSh0ZXN0LT5mZCwgbGlzdFtuXS5oYW5kbGUpOworCQkJfSBlbHNlIGlmICh0ZXN0LT5mbGFncyAm IFRFU1RfQk8pIHsKKwkJCQlnZW1fY2xvc2UodGVzdC0+ZmQsIGxpc3Rbbl0uaGFuZGxlKTsKKwkJ CX0gZWxzZSB7CisJCQkJbXVubWFwKGxpc3Rbbl0ucHRyLCBzeik7CisJCQl9CisJCX0KKworCQkv KgorCQkgKiBBbGxvY2F0ZSBtZW1vcnkgYmxvY2tzIGFuZCByZWNvcmQgdGhlIGN1cnJlbnQgd29y a2luZyBzZXQKKwkJICogc2l6ZS4KKwkJICovCisJCWlmICh0ZXN0LT5mbGFncyAmIFRFU1RfQk8p IHsKKwkJCWxpc3Rbbl0uaGFuZGxlID0gX19nZXRfcGFnZXModGVzdC0+ZmQsIHN6KTsKKwkJfSBl bHNlIGlmICh0ZXN0LT5mbGFncyAmIFRFU1RfVVNFUlBUUikgeworCQkJX19nZXRfdXNlcnB0cih0 ZXN0LT5mZCwgJmxpc3Rbbl0sIHN6KTsKKwkJfSBlbHNlIHsKKwkJCWxpc3Rbbl0ucHRyID0gbW1h cChOVUxMLCBzeiwgUFJPVF9XUklURSwKKwkJCQkJICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllN T1VTLCAtMSwgMCk7CisJCQlhc3NlcnQobGlzdFtuXS5wdHIgIT0gTUFQX0ZBSUxFRCk7CisKKwkJ CW1hZHZpc2UobGlzdFtuXS5wdHIsIHN6LCBNQURWX0hVR0VQQUdFKTsKKworCQkJZm9yIChzaXpl X3QgcGFnZSA9IDA7IHBhZ2UgPCBzejsgcGFnZSArPSBQQUdFX1NJWkUpCisJCQkJKih2b2xhdGls ZSB1aW50MzJfdCAqKSgodW5zaWduZWQgY2hhciAqKWxpc3Rbbl0ucHRyICsgcGFnZSkgPSAwOwor CQl9CisKKwkJaWYgKG4gPiBtYXgpCisJCQltYXggPSBuOworCisJCW4rKzsKKworCQkvKgorCQkg KiBTdGFydCBmcmVlaW5nIHRoZSBvbGRlc3QgYW5kIHJlYWxsb2NhdGluZyBvbmNlIG1heGltdW0K KwkJICogd29ya2luZyBzZXQgc2l6ZSBoYXMgYmVlbiByZWFjaGVkLgorCQkgKi8KKwkJaWYgKG4g Pj0gYmxvY2tzKQorCQkJbiA9IDA7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2 b2lkIG9vbV9hZGp1c3QoY29uc3QgY2hhciAqc2NvcmUpCit7CisJaW50IGZkOworCisJZmQgPSBv cGVuKCIvcHJvYy9zZWxmL29vbV9zY29yZV9hZGoiLCBPX1dST05MWSk7CisJaWd0X2Fzc2VydF9m ZChmZCk7CisJaWd0X2Fzc2VydCh3cml0ZShmZCwgc2NvcmUsIHNpemVvZihzY29yZSkpID09IHNp emVvZihzY29yZSkpOworCWNsb3NlKGZkKTsKK30KKworc3RhdGljIHZvaWQgdHJpZ2dlcl9vb20o dm9pZCkKK3sKKwljb25zdCBjaGFyICpjbWQgPSAiZiI7CisJaW50IGZkOworCisJZmQgPSBvcGVu KCIvcHJvYy9zeXNycS10cmlnZ2VyIiwgT19XUk9OTFkpOworCWlndF9hc3NlcnRfZmQoZmQpOwor CWlndF9hc3NlcnQod3JpdGUoZmQsIGNtZCwgc2l6ZW9mKGNtZCkpID09IHNpemVvZihjbWQpKTsK KwljbG9zZShmZCk7Cit9CisKK3N0YXRpYyBib29sIGhhc19zeXNycV90cmlnZ2VyKHZvaWQpCit7 CisJaW50IGZkOworCisJZmQgPSBvcGVuKCIvcHJvYy9zeXNycS10cmlnZ2VyIiwgT19XUk9OTFkp OworCWNsb3NlKGZkKTsKKworCXJldHVybiBmZCA+PSAwOworfQorCisvKgorICogRXhlcmNpc2Ug ZGlmZmVyZW50IHBhdGhzIHRvIG91ciBzaHJpbmtlciBjb2RlLCBpbmNsdWRpbmcgT09NLCBpbiBw cmVkaWN0YWJsZQorICogYW5kIHJlYXNvbmFibGUgdGltZSBidWRnZXQuCisgKi8KK3N0YXRpYyB2 b2lkIHJlY2xhaW1fb29tKHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHBhc3NlcykK K3sKKwl1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCisJb29tX2FkanVzdCgiLTEwMDAiKTsKKwor CWRvIHsKKwkJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBnZW1fY2hpbGQgPSB7IC51c2VfU0lH S0lMTCA9IHRydWUgfTsKKwkJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBtZW1fY2hpbGQgPSB7 IC51c2VfU0lHS0lMTCA9IHRydWUgfTsKKwkJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBlYl9j aGlsZCA9IHsgLnVzZV9TSUdLSUxMID0gdHJ1ZSB9OworCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9j ZXNzIGRyb3BfY2hpbGQgPSB7IC51c2VfU0lHS0lMTCA9IHRydWUgfTsKKworCQlpZ3RfZGVidWco Ikl0ZXJhdGlvbiAldS4uLlxuIiwgKytjb3VudCk7CisKKwkJLyoKKwkJICogQXBwbHkgZWl0aGVy IGFub24gYmFja2VkIG9yIHNobWVtIGJhY2tlZCBtZW1vcnkgcHJlc3N1cmUKKwkJICogdG8gdGhl IGFtb3VudCB0byB1c2UgdXAgYWxtb3N0IGFsbCBhdmFpbGFibGUgUkFNLgorCQkgKi8KKwkJaWd0 X2ZvcmtfaGVscGVyKCZtZW1fY2hpbGQpIHsKKwkJCXN0cnVjdCB0ZXN0IHRlc3QgPSB7IH07CisK KwkJCWlmICgoZmxhZ3MgJiAoVEVTVF9CTyB8IFRFU1RfVVNFUlBUUikpID09CisJCQkgICAgKFRF U1RfQk8gfCBURVNUX1VTRVJQVFIpKQorCQkJCXRlc3QuZmxhZ3MgPSBURVNUX0JPOworCisJCQkv KiBTYWNyaWZpY2UgdGhlIG1lbW9yeSBob2cgaWYgaXQgY29tZXMgdG8gdGhhdC4gKi8KKwkJCW9v bV9hZGp1c3QoIjUwMCIpOworCisJCQlpZiAodGVzdC5mbGFncyA9PSBURVNUX0JPKSB7CisJCQkJ dGVzdC5mZCA9IGRybV9vcGVuX2RyaXZlcl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsKKwkJCQlpZ3Rf cmVxdWlyZV9nZW0odGVzdC5mZCk7CisJCQl9CisKKwkJCW1lbXByZXNzdXJlKCZ0ZXN0KTsKKwor CQkJaWYgKHRlc3QuZmxhZ3MgPT0gVEVTVF9CTykKKwkJCQljbG9zZSh0ZXN0LmZkKTsKKwkJfQor CisJCS8qCisJCSAqIEFwcGx5IGVpdGhlciB1c2VycHRyIGJhY2tlZCBvciBzaG1lbSBiYWNrZWQg bWVtb3J5IHByZXNzdXJlCisJCSAqIHRvIHRoZSBhbW91bnQgdG8gdXNlIHVwIGFsbW9zdCBhbGwg YXZhaWxhYmxlIFJBTS4KKwkJICovCisJCWlndF9mb3JrX2hlbHBlcigmZ2VtX2NoaWxkKSB7CisJ CQlzdHJ1Y3QgdGVzdCB0ZXN0ID0geyAuZmxhZ3MgPSBmbGFncyB9OworCisJCQlpZiAoKGZsYWdz ICYgKFRFU1RfQk8gfCBURVNUX1VTRVJQVFIpKSA9PQorCQkJICAgIChURVNUX0JPIHwgVEVTVF9V U0VSUFRSKSkKKwkJCQl0ZXN0LmZsYWdzID0gVEVTVF9VU0VSUFRSOworCisJCQkvKiBTYWNyaWZp Y2UgdGhlIG1lbW9yeSBob2cgaWYgaXQgY29tZXMgdG8gdGhhdC4gKi8KKwkJCW9vbV9hZGp1c3Qo IjUwMCIpOworCisJCQl0ZXN0LmZkID0gZHJtX29wZW5fZHJpdmVyX3JlbmRlcihEUklWRVJfSU5U RUwpOworCQkJaWd0X3JlcXVpcmVfZ2VtKHRlc3QuZmQpOworCisJCQltZW1wcmVzc3VyZSgmdGVz dCk7CisKKwkJCWNsb3NlKHRlc3QuZmQpOworCQl9CisKKwkJLyoKKwkJICogQXBwbHkgYW4gZXhl Y2J1ZiBsb2FkIHRvIGV4ZXJjaXNlIHRoZSByZXF1ZXN0IGFsbG9jYXRpb24gYW5kCisJCSAqIGRp cmVjdCByZWNsYWltIGZyb20gdGhpcyBwYXRoLgorCQkgKgorCQkgKiBPY2Nhc2lvbmFseSBzeW5j IHdpdGggZXhlY3V0aW9uIGFuZCBwYXVzZSBmb3IgYSBsaXR0bGUgYml0IHRvCisJCSAqIGF2b2lk IGhvZ2dpbmcgdG8gbXVjaCBmcm9tIHRoaXMgY2xpZW50LgorCQkgKi8KKwkJaWd0X2ZvcmtfaGVs cGVyKCZlYl9jaGlsZCkgeworCQkJc3RydWN0IHRlc3QgdGVzdCA9IHsgLmZsYWdzID0gZmxhZ3Mg fTsKKwkJCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7IH07CisJCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWYgPSB7IH07CisKKwkJCWV4ZWNidWYuYnVmZmVyc19w dHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7CisJCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7 CisKKwkJCXRlc3QuZmQgPSBkcm1fb3Blbl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRFTCk7CisJ CQlpZ3RfcmVxdWlyZV9nZW0odGVzdC5mZCk7CisKKwkJCWZvciAoOzspIHsKKwkJCQl1bnNpZ25l ZCBsb25nIGViID0gMDsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMgdHMgPSB7IH07CisJCQkJdW5zaWdu ZWQgbG9uZyBzdGFydDsKKworCQkJCWlndF9uc2VjX2VsYXBzZWQoJnRzKTsKKwkJCQlzdGFydCA9 IGlndF9uc2VjX2VsYXBzZWQoJnRzKSAvIDFlNjsKKworCQkJCWZvciAoOzspIHsKKwkJCQkJdW5z aWduZWQgbG9uZyBub3c7CisKKwkJCQkJb2JqLmhhbmRsZSA9IGdlbV9jcmVhdGUodGVzdC5mZCwg NDA5Nik7CisJCQkJCWdlbV93cml0ZSh0ZXN0LmZkLCBvYmouaGFuZGxlLCAwLCAmYmJlLAorCQkJ CQkJc2l6ZW9mKGJiZSkpOworCQkJCQlnZW1fZXhlY2J1Zih0ZXN0LmZkLCAmZXhlY2J1Zik7CisJ CQkJCWViKys7CisJCQkJCW5vdyA9IGlndF9uc2VjX2VsYXBzZWQoJnRzKSAvIDFlNjsKKwkJCQkJ aWYgKG5vdyA+IChzdGFydCArIDEwMDApKSB7CisJCQkJCQlnZW1fc3luYyh0ZXN0LmZkLCBvYmou aGFuZGxlKTsKKwkJCQkJCWlmIChub3cgPiAoc3RhcnQgKyAyMDAwKSkgeworCQkJCQkJCWdlbV9j bG9zZSh0ZXN0LmZkLAorCQkJCQkJCQkgIG9iai5oYW5kbGUpOworCQkJCQkJCWJyZWFrOworCQkJ CQkJfQorCQkJCQl9CisJCQkJCWdlbV9jbG9zZSh0ZXN0LmZkLCBvYmouaGFuZGxlKTsKKwkJCQl9 CisKKwkJCQlpZ3RfZGVidWcoIiVsdSBleGVjYnVmc1xuIiwgZWIpOworCQkJCXVzbGVlcCg1MDBl Myk7CisJCQl9CisKKwkJCWNsb3NlKHRlc3QuZmQpOworCQl9CisKKwkJLyoKKwkJICogTWFudWFs bHkgZHJvcCBjYWNoZWQgd2l0aCB0aGUgRFJPUF9BQ1RJVkUgZmxhZyBzZXQgZXZlcnkgbm93CisJ CSAqIGFuZCB0aGVuIGluIG9yZGVyIHRvIGV4ZXJjaXNlIHRoaXMgcGF0aCBhcyB3ZWxsLgorCQkg Ki8KKwkJaWd0X2ZvcmtfaGVscGVyKCZkcm9wX2NoaWxkKSB7CisJCQlpbnQgZmQ7CisKKwkJCWZk ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCQlpZ3RfcmVxdWlyZV9nZW0oZmQp OworCisJCQlmb3IgKDs7KSB7CisJCQkJdXNsZWVwKDMzNGUzKTsKKwkJCQlpZ3RfZGVidWcoIkRy b3BwaW5nIGNhY2hlcy4uLlxuIik7CisJCQkJaWd0X2Ryb3BfY2FjaGVzX3NldChmZCwgRFJPUF9B Q1RJVkUpOworCQkJfQorCisJCQljbG9zZShmZCk7CisJCX0KKworCQkvKgorCQkgKiBXaGVuIG1l bW9yeSBwcmVzc3VyZSBjbGllbnRzIGhhdmUgbWFuYWdlZCB0byB1c2UgdXAgYWxsCisJCSAqIGF2 YWlsYWJsZSBSQU0sIGxldCB0aGVtIHJ1biBmb3IgYSBicmllZiBtb21lbnQgeWV0IGFuZCB0aGVu CisJCSAqIG1hbnVhbGx5IHRyaWdnZXIgdGhlIE9PTSBjb25kaXRpb24uCisJCSAqLworCQlmb3Ig KHVuc2lnbmVkIGxvbmcgcmFtX21iID0gMDsKKwkJICAgICAocmFtX21iID0gZ2V0X2F2YWlsX3Jh bV9tYigpKSA+IDUxMjspIHsKKwkJCWludCBzdGF0dXM7CisJCQlwaWRfdCBwaWQ7CisKKwkJCWln dF9kZWJ1ZygiWyV1XSAlbHUgTWlCIGZyZWVcbiIsIGNvdW50LCByYW1fbWIpOworCisJCQlwaWQg PSB3YWl0cGlkKG1lbV9jaGlsZC5waWQsICZzdGF0dXMsIFdOT0hBTkcpOworCQkJaWYgKHBpZCkK KwkJCQlicmVhazsKKworCQkJcGlkID0gd2FpdHBpZChnZW1fY2hpbGQucGlkLCAmc3RhdHVzLCBX Tk9IQU5HKTsKKwkJCWlmIChwaWQpCisJCQkJYnJlYWs7CisKKwkJCXBpZCA9IHdhaXRwaWQoZWJf Y2hpbGQucGlkLCAmc3RhdHVzLCBXTk9IQU5HKTsKKwkJCWlndF9hc3NlcnRfZXEocGlkLCAwKTsK KworCQkJcGlkID0gd2FpdHBpZChkcm9wX2NoaWxkLnBpZCwgJnN0YXR1cywgV05PSEFORyk7CisJ CQlpZ3RfYXNzZXJ0X2VxKHBpZCwgMCk7CisKKwkJCXNsZWVwKDEpOworCQl9CisKKwkJaWd0X2Rl YnVnKCJUcmlnZ2VyaW5nIE9PTS4uLlxuIik7CisJCXRyaWdnZXJfb29tKCk7CisKKwkJc2xlZXAo MSk7CisKKwkJaWd0X3RyeV9zdG9wX2hlbHBlcigmbWVtX2NoaWxkKTsKKwkJaWd0X3RyeV9zdG9w X2hlbHBlcigmZ2VtX2NoaWxkKTsKKwkJaWd0X3N0b3BfaGVscGVyKCZlYl9jaGlsZCk7CisJCWln dF9zdG9wX2hlbHBlcigmZHJvcF9jaGlsZCk7CisJfSB3aGlsZSAoY291bnQgPCBwYXNzZXMpOwor fQorCiBpZ3RfbWFpbgogewogCWNvbnN0IHN0cnVjdCB0ZXN0IHsKQEAgLTQzMiw2ICs4MDYsMzEg QEAgaWd0X21haW4KIAlpZ3Rfc3VidGVzdCgicmVjbGFpbSIpCiAJCXJlY2xhaW0oSTkxNV9FWEVD X0RFRkFVTFQsIDIpOwogCisJaWd0X3N1YnRlc3RfZ3JvdXAgeworCQlzdHJ1Y3QgeworCQkJY29u c3QgY2hhciAqbmFtZTsKKwkJCXVuc2lnbmVkIGludCBmbGFnczsKKwkJCXVuc2lnbmVkIGludCBw YXNzZXM7CisJCX0gKnAsIHBhc3Nlc1tdID0geworCQkJeyAicmVjbGFpbXMtYW5kLW9vbS1iYXNp YyIsIFRFU1RfQk8sIDEgfSwKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20iLCBURVNUX0JPLCAzIH0s CisJCQl7ICJyZWNsYWltcy1hbmQtb29tLXVzZXJwdHItYmFzaWMiLCBURVNUX1VTRVJQVFIsIDEg fSwKKwkJCXsgInJlY2xhaW1zLWFuZC1vb20tdXNlcnB0ciIsIFRFU1RfVVNFUlBUUiwgMyB9LAor CQkJeyAicmVjbGFpbXMtYW5kLW9vbS1ib3RoLWJhc2ljIiwgVEVTVF9CTyB8IFRFU1RfVVNFUlBU UiwgMSB9LAorCQkJeyAicmVjbGFpbXMtYW5kLW9vbS1ib3RoIiwgVEVTVF9CTyB8IFRFU1RfVVNF UlBUUiwgMyB9LAorCQkJeyBOVUxMLCAwLCAwIH0sCisJCX07CisKKwkJaWd0X2ZpeHR1cmUgewor CQkJaWd0X3JlcXVpcmUoaGFzX3N5c3JxX3RyaWdnZXIoKSk7CisJCX0KKworCQlmb3IgKHAgPSBw YXNzZXM7IHAtPm5hbWU7IHArKykgeworCQkJaWd0X3N1YnRlc3QocC0+bmFtZSkKKwkJCQlyZWNs YWltX29vbShwLT5mbGFncywgcC0+cGFzc2VzKTsKKwkJfQorCX0KKwogCWZvcihjb25zdCBzdHJ1 Y3QgdGVzdCAqdCA9IHRlc3RzOyB0LT5uYW1lOyB0KyspIHsKIAkJZm9yKGNvbnN0IHN0cnVjdCBt b2RlICptID0gbW9kZXM7IG0tPnN1ZmZpeDsgbSsrKSB7CiAJCQlpZ3Rfc3VidGVzdF9mKCIlcyVz IiwgdC0+bmFtZSwgbS0+c3VmZml4KQpkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwtY2kvYmxhY2ts aXN0LnR4dCBiL3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQKaW5kZXggNzNkMTI3NjAzZDI4 Li5iNmUzMDJkYjM4MWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQK KysrIGIvdGVzdHMvaW50ZWwtY2kvYmxhY2tsaXN0LnR4dApAQCAtNTksNyArNTksNyBAQCBpZ3RA Z2VtX3JpbmdmaWxsQCg/IS4qYmFzaWMpLioKIGlndEBnZW1fcmluZ19zeW5jX2NvcHkoQC4qKT8K IGlndEBnZW1fcmluZ19zeW5jX2xvb3AoQC4qKT8KIGlndEBnZW1fc2Vxbm9fd3JhcChALiopPwot aWd0QGdlbV9zaHJpbmtAKD8hcmVjbGFpbSQpLioKK2lndEBnZW1fc2hyaW5rQCg/IXJlY2xhaW0p LioKIGlndEBnZW1fc29mdHBpbkAuKihoYW5nfFM0KS4qCiBpZ3RAZ2VtX3NwaW5fYmF0Y2goQC4q KT8KIGlndEBnZW1fc3RvbGVuQC4qaGliZXJuYXRlLioKZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVs LWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QgYi90ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRiYWNr LnRlc3RsaXN0CmluZGV4IDZkNDI3OTJjNjdmNy4uMGRmN2NjMmZkOWZkIDEwMDY0NAotLS0gYS90 ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRiYWNrLnRlc3RsaXN0CisrKyBiL3Rlc3RzL2ludGVsLWNp L2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QKQEAgLTEyNCw2ICsxMjQsOSBAQCBpZ3RAZ2VtX3Jpbmdm aWxsQGJhc2ljLWRlZmF1bHQKIGlndEBnZW1fcmluZ2ZpbGxAYmFzaWMtZGVmYXVsdC1pbnRlcnJ1 cHRpYmxlCiBpZ3RAZ2VtX3JpbmdmaWxsQGJhc2ljLWRlZmF1bHQtZm9ya2VkCiBpZ3RAZ2VtX3Jp bmdmaWxsQGJhc2ljLWRlZmF1bHQtZmQKK2lndEBnZW1fc2hyaW5rQHJlY2xhaW1zLWFuZC1vb20t YmFzaWMKK2lndEBnZW1fc2hyaW5rQHJlY2xhaW1zLWFuZC1vb20tdXNlcnB0ci1iYXNpYworaWd0 QGdlbV9zaHJpbmtAcmVjbGFpbXMtYW5kLW9vbS1ib3RoLWJhc2ljCiBpZ3RAZ2VtX3N5bmNAYmFz aWMtYWxsCiBpZ3RAZ2VtX3N5bmNAYmFzaWMtZWFjaAogaWd0QGdlbV9zeW5jQGJhc2ljLW1hbnkt ZWFjaAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK