From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 7 Dec 2018 14:04:05 +0000 Message-Id: <20181207140405.15259-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181207101453.25199-1-tvrtko.ursulin@linux.intel.com> References: <20181207101453.25199-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCi4uLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0t CiBsaWIvaWd0X2NvcmUuYyAgICAgICAgICB8ICAxOCArKysKIGxpYi9pZ3RfY29yZS5oICAgICAg ICAgIHwgICAxICsKIHRlc3RzL2k5MTUvZ2VtX3Nocmluay5jIHwgMjk5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzE4IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9saWIvaWd0X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCmluZGV4 IDY0ODgzZDY0MDJhZi4uZDhmYTBjODNlMjc5IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuYwor KysgYi9saWIvaWd0X2NvcmUuYwpAQCAtMTY4MCw2ICsxNjgwLDI0IEBAIHZvaWQgaWd0X3N0b3Bf aGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpCiAJYXNzZXJ0KGhlbHBlcl93 YXNfYWxpdmUocHJvYywgc3RhdHVzKSk7CiB9CiAKKy8qKgorICogaWd0X3RyeV9zdG9wX2hlbHBl cjoKKyAqIEBwcm9jOiAjaWd0X2hlbHBlcl9wcm9jZXNzIHN0cnVjdHVyZQorICoKKyAqIFRlcm1p bmF0ZXMgYSBoZWxwZXIgcHJvY2VzcyBpZiBpdCBpcyBzdGlsbCBydW5uaW5nLgorICovCit2b2lk IGlndF90cnlfc3RvcF9oZWxwZXIoc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYykKK3sK KwlpbnQgc3RhdHVzOworCisJLyogZmFpbHVyZSBoZXJlIG1lYW5zIHRoZSBwaWQgaXMgYWxyZWFk eSBkZWFkIGFuZCBzbyB3YWl0aW5nIGlzIHNhZmUgKi8KKwlraWxsKHByb2MtPnBpZCwgcHJvYy0+ dXNlX1NJR0tJTEwgPyBTSUdLSUxMIDogU0lHVEVSTSk7CisKKwlzdGF0dXMgPSBpZ3Rfd2FpdF9o ZWxwZXIocHJvYyk7CisJaWYgKCFoZWxwZXJfd2FzX2FsaXZlKHByb2MsIHN0YXR1cykpCisJCWln dF9kZWJ1ZygiSGVscGVyIGRpZWQgdG9vIGVhcmx5IHdpdGggc3RhdHVzPSVkXG4iLCBzdGF0dXMp OworfQorCiBzdGF0aWMgdm9pZCBjaGlsZHJlbl9leGl0X2hhbmRsZXIoaW50IHNpZykKIHsKIAlp bnQgc3RhdHVzOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmggYi9saWIvaWd0X2NvcmUuaApp bmRleCA2ZjhjMzg1MmE2ODYuLmJlZWMzNDY2NzUyNCAxMDA2NDQKLS0tIGEvbGliL2lndF9jb3Jl LmgKKysrIGIvbGliL2lndF9jb3JlLmgKQEAgLTc5NSw2ICs3OTUsNyBAQCBib29sIF9faWd0X2Zv cmtfaGVscGVyKHN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgKnByb2MpOwogCWZvciAoOyBfX2ln dF9mb3JrX2hlbHBlcihwcm9jKTsgZXhpdCgwKSkKIGludCBpZ3Rfd2FpdF9oZWxwZXIoc3RydWN0 IGlndF9oZWxwZXJfcHJvY2VzcyAqcHJvYyk7CiB2b2lkIGlndF9zdG9wX2hlbHBlcihzdHJ1Y3Qg aWd0X2hlbHBlcl9wcm9jZXNzICpwcm9jKTsKK3ZvaWQgaWd0X3RyeV9zdG9wX2hlbHBlcihzdHJ1 Y3QgaWd0X2hlbHBlcl9wcm9jZXNzICpwcm9jKTsKIAogLyogZXhpdCBoYW5kbGVyIGNvZGUgKi8K IApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMgYi90ZXN0cy9pOTE1L2dlbV9z aHJpbmsuYwppbmRleCBjOGUwNTgxNGVlNzAuLjJjOGU4Zjk0NTNkMiAxMDA2NDQKLS0tIGEvdGVz dHMvaTkxNS9nZW1fc2hyaW5rLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMKQEAgLTI2 LDYgKzI2LDkgQEAKICAqCiAgKiBFeGVyY2lzZSB0aGUgc2hyaW5rZXIgYnkgb3ZlcmFsbG9jYXRp bmcgR0VNIG9iamVjdHMKICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KIAogI2luY2x1ZGUgImlndC5oIgogI2luY2x1 ZGUgImlndF9ndC5oIgpAQCAtMzY2LDYgKzM2OSwyODcgQEAgc3RhdGljIHZvaWQgcmVjbGFpbSh1 bnNpZ25lZCBlbmdpbmUsIGludCB0aW1lb3V0KQogCWNsb3NlKGZkKTsKIH0KIAorc3RhdGljIHVu c2lnbmVkIGxvbmcgZ2V0X21lbWluZm8oY29uc3QgY2hhciAqaW5mbywgY29uc3QgY2hhciAqdGFn KQoreworCWNvbnN0IGNoYXIgKnN0cjsKKwl1bnNpZ25lZCBsb25nIHZhbDsKKworCXN0ciA9IHN0 cnN0cihpbmZvLCB0YWcpOworCWlmIChzdHIgJiYgc3NjYW5mKHN0ciArIHN0cmxlbih0YWcpLCAi ICVsdSIsICZ2YWwpID09IDEpCisJCXJldHVybiB2YWwgPj4gMTA7CisKKwlpZ3Rfd2FybigiVW5y ZWNvZ25pc2VkIC9wcm9jL21lbWluZm8gZmllbGQ6ICclcydcbiIsIHRhZyk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9hdmFpbF9yYW1fbWIodm9pZCkKK3sKKwlp bnQgZmQ7CisJaW50IHJldDsKKwljaGFyIGJ1Zls0MDk2XTsKKwl1bnNpZ25lZCBsb25nIHJhbTsK KworCWZkID0gb3BlbigiL3Byb2MvbWVtaW5mbyIsIE9fUkRPTkxZKTsKKwlpZ3RfYXNzZXJ0X2Zk KGZkKTsKKworCXJldCA9IHJlYWQoZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCWlndF9hc3NlcnQo cmV0ID49IDApOworCisJY2xvc2UoZmQpOworCisJcmFtID0gZ2V0X21lbWluZm8oYnVmLCAiTWVt QXZhaWxhYmxlOiIpOworCXJhbSArPSBnZXRfbWVtaW5mbyhidWYsICJCdWZmZXJzOiIpOworCXJh bSArPSBnZXRfbWVtaW5mbyhidWYsICJDYWNoZWQ6Iik7CisJcmFtICs9IGdldF9tZW1pbmZvKGJ1 ZiwgIlN3YXBDYWNoZWQ6Iik7CisKKwlyZXR1cm4gcmFtOworfQorCitzdHJ1Y3QgdGVzdCB7Cisj ZGVmaW5lIFRFU1RfQk8JCSgxKQorI2RlZmluZSBURVNUX1VTRVJQVFIJKDIpCisJdW5zaWduZWQg aW50IGZsYWdzOworCWludCBmZDsKK307CisKK3N0YXRpYyB1aW50MzJfdCBfX2dldF9wYWdlcyhp bnQgZmQsIHVuc2lnbmVkIGxvbmcgYWxsb2MpCit7CisJdWludDMyX3QgaGFuZGxlID0gZ2VtX2Ny ZWF0ZShmZCwgYWxsb2MpOworCisJZ2VtX3NldF9kb21haW4oZmQsIGhhbmRsZSwgSTkxNV9HRU1f RE9NQUlOX0dUVCwgMCk7CisJZ2VtX21hZHZpc2UoZmQsIGhhbmRsZSwgSTkxNV9NQURWX0RPTlRO RUVEKTsKKworCXJldHVybiBoYW5kbGU7Cit9CisKK3N0cnVjdCB0ZXN0X29iaiB7CisJdm9pZCAq cHRyOworCXVpbnQzMl90IGhhbmRsZTsKK307CisKK3N0YXRpYyB2b2lkCitfX2dldF91c2VycHRy KGludCBmZCwgc3RydWN0IHRlc3Rfb2JqICpvYmosIHVuc2lnbmVkIGxvbmcgc3opCit7CisJc3Ry dWN0IGxvY2FsX2k5MTVfZ2VtX3VzZXJwdHIgdXNlcnB0ciA9IHsgfTsKKwl2b2lkICpwdHI7CisK KwlpZ3RfYXNzZXJ0X2VxKHN6ICYgNDA5NSwgMCk7CisKKwlwdHIgPSBtbWFwKE5VTEwsIHN6LCBQ Uk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKKwlhc3NlcnQo cHRyICE9IE1BUF9GQUlMRUQpOworCisJdXNlcnB0ci51c2VyX3NpemUgPSBzejsKKwl1c2VycHRy LnVzZXJfcHRyID0gdG9fdXNlcl9wb2ludGVyKHB0cik7CisJZG9faW9jdGwoZmQsIExPQ0FMX0lP Q1RMX0k5MTVfR0VNX1VTRVJQVFIsICZ1c2VycHRyKTsKKworCWdlbV9zZXRfZG9tYWluKGZkLCB1 c2VycHRyLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CisJZ2VtX21hZHZpc2UoZmQs IHVzZXJwdHIuaGFuZGxlLCBJOTE1X01BRFZfRE9OVE5FRUQpOworCisJb2JqLT5wdHIgPSBwdHI7 CisJb2JqLT5oYW5kbGUgPSB1c2VycHRyLmhhbmRsZTsKK30KKworI2RlZmluZSBQQUdFX1NJWkUg NDA5Ngorc3RhdGljIHZvaWQgKm1lbXByZXNzdXJlKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgdGVz dF9vYmogKmxpc3QgPSBOVUxMOworCXN0cnVjdCB0ZXN0ICp0ZXN0ID0gYXJnOworCWNvbnN0IHVu c2lnbmVkIGludCBzel9tYiA9IDI7CisJY29uc3QgdW5zaWduZWQgaW50IHN6ID0gc3pfbWIgPDwg MjA7CisJdW5zaWduZWQgaW50IG4gPSAwLCBtYXggPSAwOworCXVuc2lnbmVkIGludCBibG9ja3M7 CisKKwl3aGlsZSAodHJ1ZSkgeworCQl1bnNpZ25lZCBsb25nIHJhbV9tYiA9IGdldF9hdmFpbF9y YW1fbWIoKTsKKworCQlpZiAoIWxpc3QpIHsKKwkJCWJsb2NrcyA9IHJhbV9tYiAvIHN6X21iOwor CQkJbGlzdCA9IGNhbGxvYyhibG9ja3MsIHNpemVvZigqbGlzdCkpOworCQkJaWd0X2Fzc2VydChs aXN0KTsKKwkJfSBlbHNlIGlmIChyYW1fbWIgPCAyNTYpIHsKKwkJCWJsb2NrcyA9IG1heCArIDE7 CisJCX0KKworCQlpZiAobGlzdFtuXS5wdHIgfHwgbGlzdFtuXS5oYW5kbGUpIHsKKwkJCWlmICh0 ZXN0LT5mbGFncyAmIFRFU1RfVVNFUlBUUikgeworCQkJCW11bm1hcChsaXN0W25dLnB0ciwgc3op OworCQkJCWdlbV9jbG9zZSh0ZXN0LT5mZCwgbGlzdFtuXS5oYW5kbGUpOworCQkJfSBlbHNlIGlm ICh0ZXN0LT5mbGFncyAmIFRFU1RfQk8pIHsKKwkJCQlnZW1fY2xvc2UodGVzdC0+ZmQsIGxpc3Rb bl0uaGFuZGxlKTsKKwkJCX0gZWxzZSB7CisJCQkJbXVubWFwKGxpc3Rbbl0ucHRyLCBzeik7CisJ CQl9CisJCX0KKworCQlpZiAodGVzdC0+ZmxhZ3MgJiBURVNUX0JPKSB7CisJCQlsaXN0W25dLmhh bmRsZSA9IF9fZ2V0X3BhZ2VzKHRlc3QtPmZkLCBzeik7CisJCX0gZWxzZSBpZiAodGVzdC0+Zmxh Z3MgJiBURVNUX1VTRVJQVFIpIHsKKwkJCV9fZ2V0X3VzZXJwdHIodGVzdC0+ZmQsICZsaXN0W25d LCBzeik7CisJCX0gZWxzZSB7CisJCQlsaXN0W25dLnB0ciA9IG1tYXAoTlVMTCwgc3osIFBST1Rf V1JJVEUsCisJCQkJCSAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOworCQkJ YXNzZXJ0KGxpc3Rbbl0ucHRyICE9IE1BUF9GQUlMRUQpOworCisJCQltYWR2aXNlKGxpc3Rbbl0u cHRyLCBzeiwgTUFEVl9IVUdFUEFHRSk7CisKKwkJCWZvciAoc2l6ZV90IHBhZ2UgPSAwOyBwYWdl IDwgc3o7IHBhZ2UgKz0gUEFHRV9TSVpFKQorCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKikoKHVu c2lnbmVkIGNoYXIgKilsaXN0W25dLnB0ciArIHBhZ2UpID0gMDsKKwkJfQorCisJCWlmIChuID4g bWF4KQorCQkJbWF4ID0gbjsKKworCQluKys7CisKKwkJaWYgKG4gPj0gYmxvY2tzKQorCQkJbiA9 IDA7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIG9vbV9hZGp1c3QoY29u c3QgY2hhciAqc2NvcmUpCit7CisJaW50IGZkOworCisJZmQgPSBvcGVuKCIvcHJvYy9zZWxmL29v bV9zY29yZV9hZGoiLCBPX1dST05MWSk7CisJaWd0X2Fzc2VydF9mZChmZCk7CisJaWd0X2Fzc2Vy dCh3cml0ZShmZCwgc2NvcmUsIHNpemVvZihzY29yZSkpID09IHNpemVvZihzY29yZSkpOworCWNs b3NlKGZkKTsKK30KKworc3RhdGljIHZvaWQgdHJpZ2dlcl9vb20odm9pZCkKK3sKKwljb25zdCBj aGFyICpjbWQgPSAiZiI7CisJaW50IGZkOworCisJZmQgPSBvcGVuKCIvcHJvYy9zeXNycS10cmln Z2VyIiwgT19XUk9OTFkpOworCWlndF9hc3NlcnRfZmQoZmQpOworCWlndF9hc3NlcnQod3JpdGUo ZmQsIGNtZCwgc2l6ZW9mKGNtZCkpID09IHNpemVvZihjbWQpKTsKKwljbG9zZShmZCk7Cit9CisK K3N0YXRpYyBib29sIGhhc19zeXNycV90cmlnZ2VyKHZvaWQpCit7CisJaW50IGZkOworCisJZmQg PSBvcGVuKCIvcHJvYy9zeXNycS10cmlnZ2VyIiwgT19XUk9OTFkpOworCWNsb3NlKGZkKTsKKwor CXJldHVybiBmZCA+PSAwOworfQorCitzdGF0aWMgdm9pZCByZWNsYWltX29vbSh1bnNpZ25lZCBp bnQgZmxhZ3MpCit7CisJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKworCWlndF9hc3NlcnRfZXEo X19idWlsdGluX3BvcGNvdW50KGZsYWdzKSwgMSk7CisKKwlvb21fYWRqdXN0KCItMTAwMCIpOwor CisJZG8geworCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIGdlbV9jaGlsZCA9IHsgLnVzZV9T SUdLSUxMID0gdHJ1ZSB9OworCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIG1lbV9jaGlsZCA9 IHsgLnVzZV9TSUdLSUxMID0gdHJ1ZSB9OworCQlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9jZXNzIGVi X2NoaWxkID0geyAudXNlX1NJR0tJTEwgPSB0cnVlIH07CisJCXN0cnVjdCBpZ3RfaGVscGVyX3By b2Nlc3MgZHJvcF9jaGlsZCA9IHsgLnVzZV9TSUdLSUxMID0gdHJ1ZSB9OworCisJCWlndF9kZWJ1 ZygiSXRlcmF0aW9uICV1Li4uXG4iLCArK2NvdW50KTsKKworCQlpZ3RfZm9ya19oZWxwZXIoJm1l bV9jaGlsZCkgeworCQkJc3RydWN0IHRlc3QgdGVzdCA9IHsgfTsKKworCQkJb29tX2FkanVzdCgi NTAwIik7CisJCQltZW1wcmVzc3VyZSgmdGVzdCk7CisJCX0KKworCQlpZ3RfZm9ya19oZWxwZXIo JmdlbV9jaGlsZCkgeworCQkJc3RydWN0IHRlc3QgdGVzdCA9IHsgLmZsYWdzID0gZmxhZ3MgfTsK KworCQkJb29tX2FkanVzdCgiNTAwIik7CisKKwkJCXRlc3QuZmQgPSBkcm1fb3Blbl9kcml2ZXJf cmVuZGVyKERSSVZFUl9JTlRFTCk7CisJCQlpZ3RfcmVxdWlyZV9nZW0odGVzdC5mZCk7CisKKwkJ CW1lbXByZXNzdXJlKCZ0ZXN0KTsKKworCQkJY2xvc2UodGVzdC5mZCk7CisJCX0KKworCQlpZ3Rf Zm9ya19oZWxwZXIoJmViX2NoaWxkKSB7CisJCQlzdHJ1Y3QgdGVzdCB0ZXN0ID0geyAuZmxhZ3Mg PSBmbGFncyB9OworCQkJY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsK KwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKKwkJCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsgfTsKKworCQkJb29tX2FkanVz dCgiNTAwIik7CisKKwkJCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9i aik7CisJCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7CisKKwkJCXRlc3QuZmQgPSBkcm1fb3Bl bl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRFTCk7CisJCQlpZ3RfcmVxdWlyZV9nZW0odGVzdC5m ZCk7CisKKwkJCWZvciAoOzspIHsKKwkJCQl1bnNpZ25lZCBsb25nIGViID0gMDsKKwkJCQlzdHJ1 Y3QgdGltZXNwZWMgdHMgPSB7IH07CisJCQkJdW5zaWduZWQgbG9uZyBzZWMsIGxhc3QgPSAwOwor CisJCQkJaWd0X25zZWNfZWxhcHNlZCgmdHMpOworCisJCQkJZm9yICg7OykgeworCQkJCQlvYmou aGFuZGxlID0gZ2VtX2NyZWF0ZSh0ZXN0LmZkLCA0MDk2KTsKKwkJCQkJZ2VtX3dyaXRlKHRlc3Qu ZmQsIG9iai5oYW5kbGUsIDAsICZiYmUsCisJCQkJCQlzaXplb2YoYmJlKSk7CisJCQkJCWdlbV9l eGVjYnVmKHRlc3QuZmQsICZleGVjYnVmKTsKKwkJCQkJZWIrKzsKKwkJCQkJc2VjID0gaWd0X25z ZWNfZWxhcHNlZCgmdHMpIC8gMWU5OworCQkJCQlpZiAoc2VjID4gbGFzdCkKKwkJCQkJCWdlbV9z eW5jKHRlc3QuZmQsIG9iai5oYW5kbGUpOworCQkJCQlnZW1fY2xvc2UodGVzdC5mZCwgb2JqLmhh bmRsZSk7CisJCQkJCWlmICgobGFzdCAtIHNlYykgPiAxKQorCQkJCQkJYnJlYWs7CisJCQkJCWxh c3QgPSBzZWM7CisJCQkJfQorCisJCQkJaWd0X2RlYnVnKCIlbHUgZWJcbiIsIGViKTsKKwkJCQl1 c2xlZXAoNTAwZTMpOworCQkJfQorCisJCQljbG9zZSh0ZXN0LmZkKTsKKwkJfQorCisJCWlndF9m b3JrX2hlbHBlcigmZHJvcF9jaGlsZCkgeworCQkJaW50IGZkOworCisJCQlmZCA9IGRybV9vcGVu X2RyaXZlcihEUklWRVJfSU5URUwpOworCQkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKworCQkJZm9y ICg7OykgeworCQkJCXVzbGVlcCgzMzRlMyk7CisJCQkJaWd0X2Ryb3BfY2FjaGVzX3NldChmZCwg RFJPUF9BQ1RJVkUpOworCQkJfQorCisJCQljbG9zZShmZCk7CisJCX0KKworCQlmb3IgKHVuc2ln bmVkIGxvbmcgcmFtX21iID0gMDsKKwkJICAgICAocmFtX21iID0gZ2V0X2F2YWlsX3JhbV9tYigp KSA+IDUxMjspIHsKKwkJCWlndF9kZWJ1ZygiWyV1XSAlbHUgZnJlZSBtYlxuIiwgY291bnQsIHJh bV9tYik7CisJCQlzbGVlcCgxKTsKKwkJfQorCisJCWlndF9kZWJ1ZygiVHJpZ2dlcmluZyBPT01c biIpOworCQl0cmlnZ2VyX29vbSgpOworCisJCXNsZWVwKDEpOworCisJCWlndF90cnlfc3RvcF9o ZWxwZXIoJm1lbV9jaGlsZCk7CisJCWlndF90cnlfc3RvcF9oZWxwZXIoJmdlbV9jaGlsZCk7CisJ CWlndF90cnlfc3RvcF9oZWxwZXIoJmViX2NoaWxkKTsKKwkJaWd0X3RyeV9zdG9wX2hlbHBlcigm ZHJvcF9jaGlsZCk7CisJfSB3aGlsZSAoY291bnQgPCAzKTsKK30KKwogaWd0X21haW4KIHsKIAlj b25zdCBzdHJ1Y3QgdGVzdCB7CkBAIC00MzIsNiArNzE2LDIxIEBAIGlndF9tYWluCiAJaWd0X3N1 YnRlc3QoInJlY2xhaW0iKQogCQlyZWNsYWltKEk5MTVfRVhFQ19ERUZBVUxULCAyKTsKIAorCWln dF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJaWd0X3JlcXVpcmUoaGFzX3N5 c3JxX3RyaWdnZXIoKSk7CisJCX0KKworCQlpZ3Rfc3VidGVzdCgidHdvLXJlY2xhaW1zLWFuZC1v b20iKQorCQkJcmVjbGFpbV9vb20oVEVTVF9CTyk7CisKKwkJaWd0X3N1YnRlc3QoInR3by1yZWNs YWltcy1hbmQtb29tLXVzZXJwdHIiKSB7CisJCQlpZ3RfcmVxdWlyZShoYXNfdXNlcnB0cigpKTsK KworCQkJcmVjbGFpbV9vb20oVEVTVF9VU0VSUFRSKTsKKwkJfQorCX0KKwogCWZvcihjb25zdCBz dHJ1Y3QgdGVzdCAqdCA9IHRlc3RzOyB0LT5uYW1lOyB0KyspIHsKIAkJZm9yKGNvbnN0IHN0cnVj dCBtb2RlICptID0gbW9kZXM7IG0tPnN1ZmZpeDsgbSsrKSB7CiAJCQlpZ3Rfc3VidGVzdF9mKCIl cyVzIiwgdC0+bmFtZSwgbS0+c3VmZml4KQotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK