From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6173F89E65 for ; Tue, 30 Oct 2018 16:20:45 +0000 (UTC) From: Ville Syrjala Date: Tue, 30 Oct 2018 18:20:35 +0200 Message-Id: <20181030162038.27373-2-ville.syrjala@linux.intel.com> In-Reply-To: <20181030162038.27373-1-ville.syrjala@linux.intel.com> References: <20181030162038.27373-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/5] tests/gem_render_copy: Test Yf tiling 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 List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkxl dCdzIHRlc3QgWWYgdGlsaW5nIG5vdyB0aGF0IHJlbmRlcmNvcHkgY2FuIGhhbmRsZSBpdC4KClNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Ci0tLQogdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYyB8IDI0NSArKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCsp LCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29w eS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwppbmRleCAxN2E2NjU2NDI3ZjguLjFi YjFkNGZmYTM3YSAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYworKysg Yi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCkBAIC03MiwxMSArNzIsODUgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKm1ha2VfZmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJcmV0dXJu IGJ1ZjsKIH0KIAotc3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0 IGlndF9idWYgKmJ1ZikKK3N0YXRpYyB2b2lkICp5Zl9wdHIodm9pZCAqcHRyLAorCQkgICAgdW5z aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAorCQkgICAgdW5zaWduZWQgaW50IHN0cmlkZSwg dW5zaWduZWQgaW50IGNwcCkKIHsKLQl2b2lkICptYXAsICpsaW5lYXI7CisgICAgICAgeCAqPSBj cHA7CisKKyAgICAgICByZXR1cm4gcHRyICsKKwkgICAgICAgKCh5ICYgfjB4MWYpICogc3RyaWRl KSArCisJICAgICAgICgoeSAmIDB4MTApICogNjQpICsKKwkgICAgICAgKCh5ICYgMHg4KSAqIDMy KSArCisJICAgICAgICgoeSAmIDB4NykgKiAxNikgKworCSAgICAgICAoKHggJiB+MHgzZikgKiAz MikgKworCSAgICAgICAoKHggJiAweDIwKSAqIDE2KSArCisJICAgICAgICgoeCAmIDB4MTApICog OCkgKworCSAgICAgICAoeCAmIDB4Zik7Cit9CiAKLQlpZ3RfYXNzZXJ0X2VxKHBvc2l4X21lbWFs aWduKCZsaW5lYXIsIDE2LCBidWYtPmJvLT5zaXplKSwgMCk7CitzdGF0aWMgdm9pZCBjb3B5X2xp bmVhcl90b195ZihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsIGNvbnN0IHVpbnQz Ml90ICpsaW5lYXIpCit7CisJaW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7CisJaW50 IHdpZHRoID0gaWd0X2J1Zl93aWR0aChidWYpOworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRfZG9t YWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9N QUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJbWFwID0gZ2VtX21tYXBfX2NwdShkYXRh LT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKKwkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFKTsKKworCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp IHsKKwkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisJCQl1aW50MzJfdCAqcHRy ID0geWZfcHRyKG1hcCwgeCwgeSwgYnVmLT5zdHJpZGUsIDQpOworCisJCQkqcHRyID0gbGluZWFy W3kgKiB3aWR0aCArIHhdOworCQl9CisJfQorCisJbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7 Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfeWZfdG9fbGluZWFyKGRhdGFfdCAqZGF0YSwgc3RydWN0 IGlndF9idWYgKmJ1ZiwgdWludDMyX3QgKmxpbmVhcikKK3sKKwlpbnQgaGVpZ2h0ID0gaWd0X2J1 Zl9oZWlnaHQoYnVmKTsKKwlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRoKGJ1Zik7CisJdm9pZCAq bWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCisJ CSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwltYXAgPSBnZW1fbW1hcF9fY3B1KGRh dGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLCAwLAorCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBS T1RfUkVBRCk7CisKKwlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisJCWZvciAo aW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworCQkJdWludDMyX3QgKnB0ciA9IHlmX3B0ciht YXAsIHgsIHksIGJ1Zi0+c3RyaWRlLCA0KTsKKworCQkJbGluZWFyW3kgKiB3aWR0aCArIHhdID0g KnB0cjsKKwkJfQorCX0KKworCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworfQorCitzdGF0 aWMgdm9pZCBjb3B5X2xpbmVhcl90b19ndHQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAq YnVmLCBjb25zdCB1aW50MzJfdCAqbGluZWFyKQoreworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRf ZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1f RE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisKKwltYXAgPSBnZW1fbW1hcF9fZ3R0 KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBS T1RfUkVBRCB8IFBST1RfV1JJVEUpOworCisJbWVtY3B5KG1hcCwgbGluZWFyLCBidWYtPmJvLT5z aXplKTsKKworCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworfQorCitzdGF0aWMgdm9pZCBj b3B5X2d0dF90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCB1aW50 MzJfdCAqbGluZWFyKQoreworCXZvaWQgKm1hcDsKIAogCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRy bV9mZCwgYnVmLT5iby0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7 CkBAIC04Nyw2ICsxNjEsMTggQEAgc3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5KGRhdGFfdCAqZGF0 YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKIAlpZ3RfbWVtY3B5X2Zyb21fd2MobGluZWFyLCBtYXAs IGJ1Zi0+Ym8tPnNpemUpOwogCiAJbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7Cit9CisKK3N0 YXRpYyB2b2lkICpsaW5lYXJfY29weShkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYp Cit7CisJdm9pZCAqbGluZWFyOworCisJaWd0X2Fzc2VydF9lcShwb3NpeF9tZW1hbGlnbigmbGlu ZWFyLCAxNiwgYnVmLT5iby0+c2l6ZSksIDApOworCisJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1lmKQorCQljb3B5X3lmX3RvX2xpbmVhcihkYXRhLCBidWYsIGxpbmVhcik7CisJZWxz ZQorCQljb3B5X2d0dF90b19saW5lYXIoZGF0YSwgYnVmLCBsaW5lYXIpOwogCiAJcmV0dXJuIGxp bmVhcjsKIH0KQEAgLTE3Myw3ICsyNTksNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3 X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCWNhaXJvX3N1cmZh Y2VfdCAqc3VyZmFjZTsKIAljYWlyb19wYXR0ZXJuX3QgKnBhdDsKIAljYWlyb190ICpjcjsKLQl2 b2lkICptYXAsICpsaW5lYXI7CisJdm9pZCAqbGluZWFyOwogCiAJbGluZWFyID0gbGluZWFyX2Nv cHkoZGF0YSwgYnVmKTsKIApAQCAtMjE2LDE1ICszMDIsMTAgQEAgc3RhdGljIHZvaWQgc2NyYXRj aF9idWZfZHJhd19wYXR0ZXJuKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAog CWNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKIAotCWdlbV9zZXRfZG9tYWluKGRhdGEt PmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwg STkxNV9HRU1fRE9NQUlOX0dUVCk7Ci0KLQltYXAgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9m ZCwgYnVmLT5iby0+aGFuZGxlLAotCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBS T1RfV1JJVEUpOwotCi0JbWVtY3B5KG1hcCwgbGluZWFyLCBidWYtPmJvLT5zaXplKTsKLQotCW11 bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworCWlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElO R19ZZikKKwkJY29weV9saW5lYXJfdG9feWYoZGF0YSwgYnVmLCBsaW5lYXIpOworCWVsc2UKKwkJ Y29weV9saW5lYXJfdG9fZ3R0KGRhdGEsIGJ1ZiwgbGluZWFyKTsKIAogCWZyZWUobGluZWFyKTsK IH0KQEAgLTIzNiwzNiArMzE3LDU5IEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAog ewogCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoZHN0KTsKIAlpbnQgaGVpZ2h0ICA9IGlndF9i dWZfaGVpZ2h0KGRzdCk7Ci0JdWludDMyX3QgKmxpbmVhcl9kc3QsICpsaW5lYXJfc3JjOworCXVp bnQzMl90ICpsaW5lYXJfZHN0OwogCiAJaWd0X2Fzc2VydF9lcShpZ3RfYnVmX3dpZHRoKGRzdCks IGlndF9idWZfd2lkdGgoc3JjKSk7CiAJaWd0X2Fzc2VydF9lcShpZ3RfYnVmX2hlaWdodChkc3Qp LCBpZ3RfYnVmX2hlaWdodChzcmMpKTsKIAlpZ3RfYXNzZXJ0X2VxKGRzdC0+Ym8tPnNpemUsIHNy Yy0+Ym8tPnNpemUpOwogCisJdyA9IG1pbih3LCB3aWR0aCAtIHN4KTsKKwl3ID0gbWluKHcsIHdp ZHRoIC0gZHgpOworCisJaCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7CisJaCA9IG1pbihoLCBoZWln aHQgLSBkeSk7CisKIAlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGRzdC0+Ym8tPmhhbmRs ZSwKIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwot CWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAotCQkgICAgICAg STkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Ci0KIAlsaW5lYXJfZHN0ID0gZ2VtX21tYXBfX2d0dChk YXRhLT5kcm1fZmQsIGRzdC0+Ym8tPmhhbmRsZSwKIAkJCQkgICBkc3QtPmJvLT5zaXplLCBQUk9U X1dSSVRFKTsKLQlsaW5lYXJfc3JjID0gZ2VtX21tYXBfX2d0dChkYXRhLT5kcm1fZmQsIHNyYy0+ Ym8tPmhhbmRsZSwKLQkJCQkgICBzcmMtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwogCi0JdyA9IG1p bih3LCB3aWR0aCAtIHN4KTsKLQl3ID0gbWluKHcsIHdpZHRoIC0gZHgpOworCWlmIChzcmMtPnRp bGluZyA9PSBJOTE1X1RJTElOR19ZZikgeworCQl2b2lkICptYXA7CiAKLQloID0gbWluKGgsIGhl aWdodCAtIHN5KTsKLQloID0gbWluKGgsIGhlaWdodCAtIGR5KTsKKwkJZ2VtX3NldF9kb21haW4o ZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCisJCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0NQVSwgMCk7CisJCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5o YW5kbGUsIDAsCisJCQkJICAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisKKwkJZm9yIChp bnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJCWZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7 CisJCQkJY29uc3QgdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHN4K3gsIHN5K3ksIHNyYy0+ c3RyaWRlLCA0KTsKKworCQkJCWxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKyBkeCt4XSA9ICpw dHI7CisJCQl9CisJCX0KKworCQltdW5tYXAobWFwLCBzcmMtPmJvLT5zaXplKTsKKwl9IGVsc2Ug eworCQl1aW50MzJfdCAqbGluZWFyX3NyYzsKKworCQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1f ZmQsIHNyYy0+Ym8tPmhhbmRsZSwKKwkJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsK IAotCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Ci0JCWlndF9tZW1jcHlfZnJvbV93Yygm bGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4XSwKLQkJCQkgICAmbGluZWFyX3NyY1soc3kr eSkgKiB3aWR0aCArIHN4XSwKLQkJCQkgICB3ICogNCk7CisJCWxpbmVhcl9zcmMgPSBnZW1fbW1h cF9fZ3R0KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAorCQkJCQkgICBzcmMtPmJvLT5z aXplLCBQUk9UX1JFQUQpOworCisJCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7CisJCQlp Z3RfbWVtY3B5X2Zyb21fd2MoJmxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKyBkeF0sCisJCQkJ CSAgICZsaW5lYXJfc3JjWyhzeSt5KSAqIHdpZHRoICsgc3hdLAorCQkJCQkgICB3ICogNCk7CisJ CX0KKworCQltdW5tYXAobGluZWFyX3NyYywgc3JjLT5iby0+c2l6ZSk7CiAJfQogCiAJbXVubWFw KGxpbmVhcl9kc3QsIGRzdC0+Ym8tPnNpemUpOwotCW11bm1hcChsaW5lYXJfc3JjLCBzcmMtPmJv LT5zaXplKTsKIH0KIAogc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYsCkBAIC0yODIsNyArMzg2LDggQEAgc3RhdGljIHZvaWQgc2Ny YXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAJCWludCBz aXplOwogCiAJCWlndF9yZXF1aXJlKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPj0gOSk7Ci0JCWln dF9hc3NlcnRfZXEodGlsaW5nLCBJOTE1X1RJTElOR19ZKTsKKwkJaWd0X2Fzc2VydCh0aWxpbmcg PT0gSTkxNV9USUxJTkdfWSB8fAorCQkJICAgdGlsaW5nID09IEk5MTVfVElMSU5HX1lmKTsKIAog CQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKIAkJYnVmLT5zaXplID0gYnVm LT5zdHJpZGUgKiBoZWlnaHQ7CkBAIC0yOTgsOCArNDAzLDIwIEBAIHN0YXRpYyB2b2lkIHNjcmF0 Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCiAJCWJ1Zi0+ Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZGF0YS0+YnVmbWdyLCAiIiwgc2l6ZSwgNDA5Nik7CiAK LQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywgYnVmLT5zdHJpZGUp OwotCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7CisJCWlmICh0aWxpbmcgPT0g STkxNV9USUxJTkdfWSkgeworCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRp bGluZywgYnVmLT5zdHJpZGUpOworCQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcp OworCQl9CisJfSBlbHNlIGlmIChyZXFfdGlsaW5nID09IEk5MTVfVElMSU5HX1lmKSB7CisJCWlu dCBzaXplOworCisJCWJ1Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiA0LCAxMjgpOworCQlidWYt PnNpemUgPSBidWYtPnN0cmlkZSAqIGhlaWdodDsKKwkJYnVmLT50aWxpbmcgPSB0aWxpbmc7CisK KwkJc2l6ZSA9IGJ1Zi0+c3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7CisKKwkJYnVmLT5ibyA9 IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBzaXplLCA0MDk2KTsKIAl9IGVs c2UgewogCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jX3RpbGVkKGRhdGEtPmJ1Zm1nciwg IiIsCiAJCQkJCQkgICB3aWR0aCwgaGVpZ2h0LCA0LApAQCAtMzk0LDcgKzUxMSw3IEBAIHN0YXRp YyB2b2lkIHNjcmF0Y2hfYnVmX2F1eF9jaGVjayhkYXRhX3QgKmRhdGEsCiAJCSAgICAgIkF1eCBz dXJmYWNlIGluZGljYXRlcyB0aGF0IG5vdGhpbmcgd2FzIGNvbXByZXNzZWRcbiIpOwogfQogCi1z dGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3Rf Y2NzKQorc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywgdWlu dDY0X3QgY2NzX21vZGlmaWVyKQogewogCXN0cnVjdCBpZ3RfYnVmIGRzdCwgY2NzLCByZWY7CiAJ c3RydWN0IHsKQEAgLTQwMiw3ICs1MTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0 YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3RfY2NzKQogCQljb25zdCBjaGFyICpmaWxlbmFt ZTsKIAkJdWludDMyX3QgdGlsaW5nOwogCQlpbnQgeCwgeTsKLQl9IHNyY1szXSA9IHsKKwl9IHNy Y1tdID0gewogCQl7CiAJCQkuZmlsZW5hbWUgPSAic291cmNlLWxpbmVhci5wbmciLAogCQkJLnRp bGluZyA9IEk5MTVfVElMSU5HX05PTkUsCkBAIC00MTgsMTggKzUzNSwzMSBAQCBzdGF0aWMgdm9p ZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3RfY2NzKQogCQkJ LnRpbGluZyA9IEk5MTVfVElMSU5HX1ksCiAJCQkueCA9IFdJRFRILzIrMSwgLnkgPSAxLAogCQl9 LAorCQl7CisJCQkuZmlsZW5hbWUgPSAic291cmNlLXlmLXRpbGVkLnBuZyIsCisJCQkudGlsaW5n ID0gSTkxNV9USUxJTkdfWWYsCisJCQkueCA9IDEsIC55ID0gMSwKKwkJfSwKIAl9OwogCiAJaW50 IG9wdF9kdW1wX2F1YiA9IGlndF9hdWJfZHVtcF9lbmFibGVkKCk7CisJaW50IG51bV9zcmMgPSBB UlJBWV9TSVpFKHNyYyk7CisKKwkvKiBubyBZZiBiZWZvcmUgZ2VuOSAqLworCWlmIChpbnRlbF9n ZW4oZGF0YS0+ZGV2aWQpIDwgOSkKKwkJbnVtX3NyYy0tOworCisJaWYgKHRpbGluZyA9PSBJOTE1 X1RJTElOR19ZZiB8fCBjY3NfbW9kaWZpZXIpCisJCWlndF9yZXF1aXJlKGludGVsX2dlbihkYXRh LT5kZXZpZCkgPj0gOSk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsg aSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsrKQogCQlzY3JhdGNoX2J1Zl9p bml0KGRhdGEsICZzcmNbaV0uYnVmLCBXSURUSCwgSEVJR0hULCBzcmNbaV0udGlsaW5nLCBmYWxz ZSk7CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmZHN0LCBXSURUSCwgSEVJR0hULCB0aWxpbmcs IGZhbHNlKTsKLQlpZiAodGVzdF9jY3MpCi0JCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJmNjcywg V0lEVEgsIEhFSUdIVCwgSTkxNV9USUxJTkdfWSwgdHJ1ZSk7CisJaWYgKGNjc19tb2RpZmllcikK KwkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmY2NzLCBXSURUSCwgSEVJR0hULCBjY3NfbW9kaWZp ZXIsIHRydWUpOwogCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJnJlZiwgV0lEVEgsIEhFSUdIVCwg STkxNV9USUxJTkdfTk9ORSwgZmFsc2UpOwogCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHNyYyk7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykKIAkJc2Ny YXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGEsICZzcmNbaV0uYnVmLAogCQkJCQkgMCwgMCwgV0lE VEgsIEhFSUdIVCwKIAkJCQkJIDAsIDAsIFdJRFRILCBIRUlHSFQsIHRydWUpOwpAQCAtNDQwLDEz ICs1NzAsMTMgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGlu ZywgYm9vbCB0ZXN0X2NjcykKIAlzY3JhdGNoX2J1Zl9jb3B5KGRhdGEsCiAJCQkgJmRzdCwgMCwg MCwgV0lEVEgsIEhFSUdIVCwKIAkJCSAmcmVmLCAwLCAwKTsKLQlmb3IgKGludCBpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc3JjKTsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsr KQogCQlzY3JhdGNoX2J1Zl9jb3B5KGRhdGEsCiAJCQkJICZzcmNbaV0uYnVmLCBXSURUSC80LCBI RUlHSFQvNCwgV0lEVEgvMi0yLCBIRUlHSFQvMi0yLAogCQkJCSAmcmVmLCBzcmNbaV0ueCwgc3Jj W2ldLnkpOwogCiAJaWYgKG9wdF9kdW1wX3BuZykgewotCQlmb3IgKGludCBpID0gMDsgaSA8IEFS UkFZX1NJWkUoc3JjKTsgaSsrKQorCQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykK IAkJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmc3JjW2ldLmJ1Ziwgc3JjW2ldLmZp bGVuYW1lKTsKIAkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZkc3QsICJkZXN0aW5h dGlvbi5wbmciKTsKIAkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZyZWYsICJyZWZl cmVuY2UucG5nIik7CkBAIC00NjYsMjQgKzU5NiwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFf dCAqZGF0YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3RfY2NzKQogCSAqCSB8ZHN0fHNyY3wK IAkgKgkgIC0tLS0tLS0KIAkgKi8KLQlpZiAodGVzdF9jY3MpCisJaWYgKGNjc19tb2RpZmllcikK IAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCiAJCQkJICAmZHN0LCAwLCAw LCBXSURUSCwgSEVJR0hULAogCQkJCSAgJmNjcywgMCwgMCk7CiAKLQlmb3IgKGludCBpID0gMDsg aSA8IEFSUkFZX1NJWkUoc3JjKTsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsg aSsrKQogCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKIAkJCQkgICZzcmNb aV0uYnVmLCBXSURUSC80LCBIRUlHSFQvNCwgV0lEVEgvMi0yLCBIRUlHSFQvMi0yLAotCQkJCSAg dGVzdF9jY3MgPyAmY2NzIDogJmRzdCwgc3JjW2ldLngsIHNyY1tpXS55KTsKKwkJCQkgIGNjc19t b2RpZmllciA/ICZjY3MgOiAmZHN0LCBzcmNbaV0ueCwgc3JjW2ldLnkpOwogCi0JaWYgKHRlc3Rf Y2NzKQorCWlmIChjY3NfbW9kaWZpZXIpCiAJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNo LCBOVUxMLAogCQkJCSAgJmNjcywgMCwgMCwgV0lEVEgsIEhFSUdIVCwKIAkJCQkgICZkc3QsIDAs IDApOwogCiAJaWYgKG9wdF9kdW1wX3BuZyl7CiAJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhk YXRhLCAmZHN0LCAicmVzdWx0LnBuZyIpOwotCQlpZiAodGVzdF9jY3MpIHsKKwkJaWYgKGNjc19t b2RpZmllcikgewogCQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZjY3MsICJjb21w cmVzc2VkLnBuZyIpOwogCQkJc2NyYXRjaF9idWZfYXV4X3dyaXRlX3RvX3BuZyhkYXRhLCAmY2Nz LCAiY29tcHJlc3NlZC1hdXgucG5nIik7CiAJCX0KQEAgLTUwMyw3ICs2MzMsNyBAQCBzdGF0aWMg dm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5nLCBib29sIHRlc3RfY2NzKQog CQlzY3JhdGNoX2J1Zl9jaGVjayhkYXRhLCAmZHN0LCAmcmVmLCBXSURUSCAtIDEwLCBIRUlHSFQg LSAxMCk7CiAJfQogCi0JaWYgKHRlc3RfY2NzKQorCWlmIChjY3NfbW9kaWZpZXIpCiAJCXNjcmF0 Y2hfYnVmX2F1eF9jaGVjayhkYXRhLCAmY2NzKTsKIH0KIApAQCAtNTQ0LDE4ICs2NzQsMzEgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX0KIAogCWlndF9zdWJ0ZXN0KCJsaW5l YXIiKQotCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19OT05FLCBmYWxzZSk7CisJCXRlc3QoJmRh dGEsIEk5MTVfVElMSU5HX05PTkUsIDApOwogCWlndF9zdWJ0ZXN0KCJ4LXRpbGVkIikKLQkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgZmFsc2UpOworCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElO R19YLCAwKTsKIAlpZ3Rfc3VidGVzdCgieS10aWxlZCIpCi0JCXRlc3QoJmRhdGEsIEk5MTVfVElM SU5HX1ksIGZhbHNlKTsKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgMCk7CisJaWd0X3N1 YnRlc3QoInlmLXRpbGVkIikKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWWYsIDApOwogCiAJ aWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRvLWxpbmVhciIpCi0JCXRlc3QoJmRhdGEsIEk5MTVf VElMSU5HX05PTkUsIHRydWUpOworCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19OT05FLCBJOTE1 X1RJTElOR19ZKTsKIAlpZ3Rfc3VidGVzdCgieS10aWxlZC1jY3MtdG8teC10aWxlZCIpCi0JCXRl c3QoJmRhdGEsIEk5MTVfVElMSU5HX1gsIHRydWUpOworCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElO R19YLCBJOTE1X1RJTElOR19ZKTsKIAlpZ3Rfc3VidGVzdCgieS10aWxlZC1jY3MtdG8teS10aWxl ZCIpCi0JCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1ksIHRydWUpOworCQl0ZXN0KCZkYXRhLCBJ OTE1X1RJTElOR19ZLCBJOTE1X1RJTElOR19ZKTsKKwlpZ3Rfc3VidGVzdCgieS10aWxlZC1jY3Mt dG8teWYtdGlsZWQiKQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZZiwgSTkxNV9USUxJTkdf WSk7CisKKwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLWxpbmVhciIpCisJCXRlc3QoJmRh dGEsIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfVElMSU5HX1lmKTsKKwlpZ3Rfc3VidGVzdCgieWYt dGlsZWQtY2NzLXRvLXgtdGlsZWQiKQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19YLCBJOTE1 X1RJTElOR19ZZik7CisJaWd0X3N1YnRlc3QoInlmLXRpbGVkLWNjcy10by15LXRpbGVkIikKKwkJ dGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgSTkxNV9USUxJTkdfWWYpOworCWlndF9zdWJ0ZXN0 KCJ5Zi10aWxlZC1jY3MtdG8teWYtdGlsZWQiKQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19Z ZiwgSTkxNV9USUxJTkdfWWYpOwogCiAJaWd0X2ZpeHR1cmUgewogCQlpbnRlbF9iYXRjaGJ1ZmZl cl9mcmVlKGRhdGEuYmF0Y2gpOwotLSAKMi4xOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK