From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6415D89402 for ; Thu, 21 Feb 2019 09:43:42 +0000 (UTC) From: Dhinakaran Pandiyan Date: Wed, 20 Feb 2019 18:41:20 -0800 Message-Id: <20190221024123.17516-2-dhinakaran.pandiyan@intel.com> In-Reply-To: <20190221024123.17516-1-dhinakaran.pandiyan@intel.com> References: <20190221024123.17516-1-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [HAX 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 dCdzIHRlc3QgWWYgdGlsaW5nIG5vdyB0aGF0IHJlbmRlcmNvcHkgY2FuIGhhbmRsZSBpdC4KCnYy OiBGcm9tIERLClNldCBicHAgZm9yIFlmIGJ1ZmZlci4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERo aW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgotLS0KIHRl c3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgfCAyNDYgKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYyBiL3Rlc3Rz L2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKaW5kZXggMGNkNGU1MGYuLmFmZTJkZjA1IDEwMDY0NAot LS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3Jl bmRlcl9jb3B5LmMKQEAgLTcyLDExICs3Miw4NSBAQCBzdGF0aWMgY29uc3QgY2hhciAqbWFrZV9m aWxlbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAlyZXR1cm4gYnVmOwogfQogCi1zdGF0aWMg dm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQorc3Rh dGljIHZvaWQgKnlmX3B0cih2b2lkICpwdHIsCisJCSAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWdu ZWQgaW50IHksCisJCSAgICB1bnNpZ25lZCBpbnQgc3RyaWRlLCB1bnNpZ25lZCBpbnQgY3BwKQog ewotCXZvaWQgKm1hcCwgKmxpbmVhcjsKKyAgICAgICB4ICo9IGNwcDsKKworICAgICAgIHJldHVy biBwdHIgKworCSAgICAgICAoKHkgJiB+MHgxZikgKiBzdHJpZGUpICsKKwkgICAgICAgKCh5ICYg MHgxMCkgKiA2NCkgKworCSAgICAgICAoKHkgJiAweDgpICogMzIpICsKKwkgICAgICAgKCh5ICYg MHg3KSAqIDE2KSArCisJICAgICAgICgoeCAmIH4weDNmKSAqIDMyKSArCisJICAgICAgICgoeCAm IDB4MjApICogMTYpICsKKwkgICAgICAgKCh4ICYgMHgxMCkgKiA4KSArCisJICAgICAgICh4ICYg MHhmKTsKK30KIAotCWlndF9hc3NlcnRfZXEocG9zaXhfbWVtYWxpZ24oJmxpbmVhciwgMTYsIGJ1 Zi0+Ym8tPnNpemUpLCAwKTsKK3N0YXRpYyB2b2lkIGNvcHlfbGluZWFyX3RvX3lmKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwgY29uc3QgdWludDMyX3QgKmxpbmVhcikKK3sKKwlp bnQgaGVpZ2h0ID0gaWd0X2J1Zl9oZWlnaHQoYnVmKTsKKwlpbnQgd2lkdGggPSBpZ3RfYnVmX3dp ZHRoKGJ1Zik7CisJdm9pZCAqbWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBi dWYtPmJvLT5oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9E T01BSU5fQ1BVKTsKKwltYXAgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+ aGFuZGxlLCAwLAorCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUp OworCisJZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworCQlmb3IgKGludCB4ID0g MDsgeCA8IHdpZHRoOyB4KyspIHsKKwkJCXVpbnQzMl90ICpwdHIgPSB5Zl9wdHIobWFwLCB4LCB5 LCBidWYtPnN0cmlkZSwgNCk7CisKKwkJCSpwdHIgPSBsaW5lYXJbeSAqIHdpZHRoICsgeF07CisJ CX0KKwl9CisKKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQg Y29weV95Zl90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCB1aW50 MzJfdCAqbGluZWFyKQoreworCWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOworCWlu dCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKKwl2b2lkICptYXA7CisKKwlnZW1fc2V0X2Rv bWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VNX0RP TUFJTl9DUFUsIDApOworCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYtPmJv LT5oYW5kbGUsIDAsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCWZvciAo aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKwkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0 aDsgeCsrKSB7CisJCQl1aW50MzJfdCAqcHRyID0geWZfcHRyKG1hcCwgeCwgeSwgYnVmLT5zdHJp ZGUsIDQpOworCisJCQlsaW5lYXJbeSAqIHdpZHRoICsgeF0gPSAqcHRyOworCQl9CisJfQorCisJ bXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfbGluZWFy X3RvX2d0dChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsIGNvbnN0IHVpbnQzMl90 ICpsaW5lYXIpCit7CisJdm9pZCAqbWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2Zk LCBidWYtPmJvLT5oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dF TV9ET01BSU5fR1RUKTsKKworCW1hcCA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBidWYt PmJvLT5oYW5kbGUsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU RSk7CisKKwltZW1jcHkobWFwLCBsaW5lYXIsIGJ1Zi0+Ym8tPnNpemUpOworCisJbXVubWFwKG1h cCwgYnVmLT5iby0+c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfZ3R0X3RvX2xpbmVhcihk YXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsIHVpbnQzMl90ICpsaW5lYXIpCit7CisJ dm9pZCAqbWFwOwogCiAJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5k bGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKQEAgLTg3LDYgKzE2MSwxOCBA QCBzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAq YnVmKQogCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCwgYnVmLT5iby0+c2l6ZSk7CiAK IAltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQgKmxpbmVhcl9j b3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKK3sKKwl2b2lkICpsaW5lYXI7 CisKKwlpZ3RfYXNzZXJ0X2VxKHBvc2l4X21lbWFsaWduKCZsaW5lYXIsIDE2LCBidWYtPmJvLT5z aXplKSwgMCk7CisKKwlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCisJCWNvcHlf eWZfdG9fbGluZWFyKGRhdGEsIGJ1ZiwgbGluZWFyKTsKKwllbHNlCisJCWNvcHlfZ3R0X3RvX2xp bmVhcihkYXRhLCBidWYsIGxpbmVhcik7CiAKIAlyZXR1cm4gbGluZWFyOwogfQpAQCAtMTczLDcg KzI1OSw3IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRh dGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAJY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwogCWNh aXJvX3BhdHRlcm5fdCAqcGF0OwogCWNhaXJvX3QgKmNyOwotCXZvaWQgKm1hcCwgKmxpbmVhcjsK Kwl2b2lkICpsaW5lYXI7CiAKIAlsaW5lYXIgPSBsaW5lYXJfY29weShkYXRhLCBidWYpOwogCkBA IC0yMTYsMTUgKzMwMiwxMCBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4o ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCiAJY2Fpcm9fc3VyZmFjZV9kZXN0 cm95KHN1cmZhY2UpOwogCi0JZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5o YW5kbGUsCi0JCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RU KTsKLQotCW1hcCA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUs Ci0JCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0KLQltZW1j cHkobWFwLCBsaW5lYXIsIGJ1Zi0+Ym8tPnNpemUpOwotCi0JbXVubWFwKG1hcCwgYnVmLT5iby0+ c2l6ZSk7CisJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1lmKQorCQljb3B5X2xpbmVh cl90b195ZihkYXRhLCBidWYsIGxpbmVhcik7CisJZWxzZQorCQljb3B5X2xpbmVhcl90b19ndHQo ZGF0YSwgYnVmLCBsaW5lYXIpOwogCiAJZnJlZShsaW5lYXIpOwogfQpAQCAtMjM2LDM2ICszMTcs NTkgQEAgc2NyYXRjaF9idWZfY29weShkYXRhX3QgKmRhdGEsCiB7CiAJaW50IHdpZHRoID0gaWd0 X2J1Zl93aWR0aChkc3QpOwogCWludCBoZWlnaHQgID0gaWd0X2J1Zl9oZWlnaHQoZHN0KTsKLQl1 aW50MzJfdCAqbGluZWFyX2RzdCwgKmxpbmVhcl9zcmM7CisJdWludDMyX3QgKmxpbmVhcl9kc3Q7 CiAKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgoZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMp KTsKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0KGRzdCksIGlndF9idWZfaGVpZ2h0KHNy YykpOwogCWlndF9hc3NlcnRfZXEoZHN0LT5iby0+c2l6ZSwgc3JjLT5iby0+c2l6ZSk7CiAKKwl3 ID0gbWluKHcsIHdpZHRoIC0gc3gpOworCXcgPSBtaW4odywgd2lkdGggLSBkeCk7CisKKwloID0g bWluKGgsIGhlaWdodCAtIHN5KTsKKwloID0gbWluKGgsIGhlaWdodCAtIGR5KTsKKwogCWdlbV9z ZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgZHN0LT5iby0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9H RU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Ci0JZ2VtX3NldF9kb21haW4oZGF0 YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCi0JCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RU LCAwKTsKLQogCWxpbmVhcl9kc3QgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgZHN0LT5i by0+aGFuZGxlLAogCQkJCSAgIGRzdC0+Ym8tPnNpemUsIFBST1RfV1JJVEUpOwotCWxpbmVhcl9z cmMgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAotCQkJCSAg IHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CiAKLQl3ID0gbWluKHcsIHdpZHRoIC0gc3gpOwot CXcgPSBtaW4odywgd2lkdGggLSBkeCk7CisJaWYgKHNyYy0+dGlsaW5nID09IEk5MTVfVElMSU5H X1lmKSB7CisJCXZvaWQgKm1hcDsKIAotCWggPSBtaW4oaCwgaGVpZ2h0IC0gc3kpOwotCWggPSBt aW4oaCwgaGVpZ2h0IC0gZHkpOworCQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+ Ym8tPmhhbmRsZSwKKwkJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwkJbWFwID0g Z2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKKwkJCQkgICAg c3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCQlmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkr KykgeworCQkJZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4KyspIHsKKwkJCQljb25zdCB1aW50MzJf dCAqcHRyID0geWZfcHRyKG1hcCwgc3greCwgc3kreSwgc3JjLT5zdHJpZGUsIDQpOworCisJCQkJ bGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4K3hdID0gKnB0cjsKKwkJCX0KKwkJfQorCisJ CW11bm1hcChtYXAsIHNyYy0+Ym8tPnNpemUpOworCX0gZWxzZSB7CisJCXVpbnQzMl90ICpsaW5l YXJfc3JjOworCisJCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxl LAorCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwogCi0JZm9yIChpbnQgeSA9IDA7 IHkgPCBoOyB5KyspIHsKLQkJaWd0X21lbWNweV9mcm9tX3djKCZsaW5lYXJfZHN0WyhkeSt5KSAq IHdpZHRoICsgZHhdLAotCQkJCSAgICZsaW5lYXJfc3JjWyhzeSt5KSAqIHdpZHRoICsgc3hdLAot CQkJCSAgIHcgKiA0KTsKKwkJbGluZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2Zk LCBzcmMtPmJvLT5oYW5kbGUsCisJCQkJCSAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisK KwkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJCWlndF9tZW1jcHlfZnJvbV93Yygm bGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4XSwKKwkJCQkJICAgJmxpbmVhcl9zcmNbKHN5 K3kpICogd2lkdGggKyBzeF0sCisJCQkJCSAgIHcgKiA0KTsKKwkJfQorCisJCW11bm1hcChsaW5l YXJfc3JjLCBzcmMtPmJvLT5zaXplKTsKIAl9CiAKIAltdW5tYXAobGluZWFyX2RzdCwgZHN0LT5i by0+c2l6ZSk7Ci0JbXVubWFwKGxpbmVhcl9zcmMsIHNyYy0+Ym8tPnNpemUpOwogfQogCiBzdGF0 aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1 ZiwKQEAgLTI4Miw3ICszODYsOCBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFf dCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAkJaW50IHNpemU7CiAKIAkJaWd0X3JlcXVp cmUoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA+PSA5KTsKLQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcs IEk5MTVfVElMSU5HX1kpOworCQlpZ3RfYXNzZXJ0KHRpbGluZyA9PSBJOTE1X1RJTElOR19ZIHx8 CisJCQkgICB0aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpOwogCiAJCWJ1Zi0+c3RyaWRlID0gQUxJ R04od2lkdGggKiA0LCAxMjgpOwogCQlidWYtPnNpemUgPSBidWYtPnN0cmlkZSAqIGhlaWdodDsK QEAgLTI5OSw4ICs0MDQsMjEgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3Qg KmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAKIAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19h bGxvYyhkYXRhLT5idWZtZ3IsICIiLCBzaXplLCA0MDk2KTsKIAotCQlkcm1faW50ZWxfYm9fc2V0 X3RpbGluZyhidWYtPmJvLCAmdGlsaW5nLCBidWYtPnN0cmlkZSk7Ci0JCWlndF9hc3NlcnRfZXEo dGlsaW5nLCByZXFfdGlsaW5nKTsKKwkJaWYgKHRpbGluZyA9PSBJOTE1X1RJTElOR19ZKSB7CisJ CQlkcm1faW50ZWxfYm9fc2V0X3RpbGluZyhidWYtPmJvLCAmdGlsaW5nLCBidWYtPnN0cmlkZSk7 CisJCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7CisJCX0KKwl9IGVsc2UgaWYg KHJlcV90aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpIHsKKwkJaW50IHNpemU7CisKKwkJYnVmLT5z dHJpZGUgPSBBTElHTih3aWR0aCAqIDQsIDEyOCk7CisJCWJ1Zi0+c2l6ZSA9IGJ1Zi0+c3RyaWRl ICogaGVpZ2h0OworCQlidWYtPnRpbGluZyA9IHRpbGluZzsKKwkJYnVmLT5icHAgPSAzMjsKKwor CQlzaXplID0gYnVmLT5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsKKworCQlidWYtPmJvID0g ZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwogCX0gZWxz ZSB7CiAJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2NfdGlsZWQoZGF0YS0+YnVmbWdyLCAi IiwKIAkJCQkJCSAgIHdpZHRoLCBoZWlnaHQsIDQsCkBAIC0zOTYsNyArNTE0LDcgQEAgc3RhdGlj IHZvaWQgc2NyYXRjaF9idWZfYXV4X2NoZWNrKGRhdGFfdCAqZGF0YSwKIAkJICAgICAiQXV4IHN1 cmZhY2UgaW5kaWNhdGVzIHRoYXQgbm90aGluZyB3YXMgY29tcHJlc3NlZFxuIik7CiB9CiAKLXN0 YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9j Y3MpCitzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5nLCB1aW50 NjRfdCBjY3NfbW9kaWZpZXIpCiB7CiAJc3RydWN0IGlndF9idWYgZHN0LCBjY3MsIHJlZjsKIAlz dHJ1Y3QgewpAQCAtNDA0LDcgKzUyMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRh LCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJCWNvbnN0IGNoYXIgKmZpbGVuYW1l OwogCQl1aW50MzJfdCB0aWxpbmc7CiAJCWludCB4LCB5OwotCX0gc3JjWzNdID0geworCX0gc3Jj W10gPSB7CiAJCXsKIAkJCS5maWxlbmFtZSA9ICJzb3VyY2UtbGluZWFyLnBuZyIsCiAJCQkudGls aW5nID0gSTkxNV9USUxJTkdfTk9ORSwKQEAgLTQyMCwxOCArNTM4LDMxIEBAIHN0YXRpYyB2b2lk IHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJCQku dGlsaW5nID0gSTkxNV9USUxJTkdfWSwKIAkJCS54ID0gV0lEVEgvMisxLCAueSA9IDEsCiAJCX0s CisJCXsKKwkJCS5maWxlbmFtZSA9ICJzb3VyY2UteWYtdGlsZWQucG5nIiwKKwkJCS50aWxpbmcg PSBJOTE1X1RJTElOR19ZZiwKKwkJCS54ID0gMSwgLnkgPSAxLAorCQl9LAogCX07CiAKIAlpbnQg b3B0X2R1bXBfYXViID0gaWd0X2F1Yl9kdW1wX2VuYWJsZWQoKTsKKwlpbnQgbnVtX3NyYyA9IEFS UkFZX1NJWkUoc3JjKTsKKworCS8qIG5vIFlmIGJlZm9yZSBnZW45ICovCisJaWYgKGludGVsX2dl bihkYXRhLT5kZXZpZCkgPCA5KQorCQludW1fc3JjLS07CisKKwlpZiAodGlsaW5nID09IEk5MTVf VElMSU5HX1lmIHx8IGNjc19tb2RpZmllcikKKwkJaWd0X3JlcXVpcmUoaW50ZWxfZ2VuKGRhdGEt PmRldmlkKSA+PSA5KTsKIAotCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShzcmMpOyBp KyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJCXNjcmF0Y2hfYnVmX2lu aXQoZGF0YSwgJnNyY1tpXS5idWYsIFdJRFRILCBIRUlHSFQsIHNyY1tpXS50aWxpbmcsIGZhbHNl KTsKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZkc3QsIFdJRFRILCBIRUlHSFQsIHRpbGluZywg ZmFsc2UpOwotCWlmICh0ZXN0X2NjcykKLQkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmY2NzLCBX SURUSCwgSEVJR0hULCBJOTE1X1RJTElOR19ZLCB0cnVlKTsKKwlpZiAoY2NzX21vZGlmaWVyKQor CQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZjY3MsIFdJRFRILCBIRUlHSFQsIGNjc19tb2RpZmll ciwgdHJ1ZSk7CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmcmVmLCBXSURUSCwgSEVJR0hULCBJ OTE1X1RJTElOR19OT05FLCBmYWxzZSk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJ WkUoc3JjKTsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsrKQogCQlzY3Jh dGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YSwgJnNyY1tpXS5idWYsCiAJCQkJCSAwLCAwLCBXSURU SCwgSEVJR0hULAogCQkJCQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwgdHJ1ZSk7CkBAIC00NDIsMTMg KzU3MywxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5n LCBib29sIHRlc3RfY2NzKQogCXNjcmF0Y2hfYnVmX2NvcHkoZGF0YSwKIAkJCSAmZHN0LCAwLCAw LCBXSURUSCwgSEVJR0hULAogCQkJICZyZWYsIDAsIDApOwotCWZvciAoaW50IGkgPSAwOyBpIDwg QVJSQVlfU0laRShzcmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKysp CiAJCXNjcmF0Y2hfYnVmX2NvcHkoZGF0YSwKIAkJCQkgJnNyY1tpXS5idWYsIFdJRFRILzQsIEhF SUdIVC80LCBXSURUSC8yLTIsIEhFSUdIVC8yLTIsCiAJCQkJICZyZWYsIHNyY1tpXS54LCBzcmNb aV0ueSk7CiAKIAlpZiAob3B0X2R1bXBfcG5nKSB7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShzcmMpOyBpKyspCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsrKQog CQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZzcmNbaV0uYnVmLCBzcmNbaV0uZmls ZW5hbWUpOwogCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdCwgImRlc3RpbmF0 aW9uLnBuZyIpOwogCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnJlZiwgInJlZmVy ZW5jZS5wbmciKTsKQEAgLTQ2OCwyNCArNTk5LDI0IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90 ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJICoJIHxkc3R8c3JjfAog CSAqCSAgLS0tLS0tLQogCSAqLwotCWlmICh0ZXN0X2NjcykKKwlpZiAoY2NzX21vZGlmaWVyKQog CQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKIAkJCQkgICZkc3QsIDAsIDAs IFdJRFRILCBIRUlHSFQsCiAJCQkJICAmY2NzLCAwLCAwKTsKIAotCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShzcmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBp KyspCiAJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAogCQkJCSAgJnNyY1tp XS5idWYsIFdJRFRILzQsIEhFSUdIVC80LCBXSURUSC8yLTIsIEhFSUdIVC8yLTIsCi0JCQkJICB0 ZXN0X2NjcyA/ICZjY3MgOiAmZHN0LCBzcmNbaV0ueCwgc3JjW2ldLnkpOworCQkJCSAgY2NzX21v ZGlmaWVyID8gJmNjcyA6ICZkc3QsIHNyY1tpXS54LCBzcmNbaV0ueSk7CiAKLQlpZiAodGVzdF9j Y3MpCisJaWYgKGNjc19tb2RpZmllcikKIAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gs IE5VTEwsCiAJCQkJICAmY2NzLCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJCSAgJmRzdCwgMCwg MCk7CiAKIAlpZiAob3B0X2R1bXBfcG5nKXsKIAkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRh dGEsICZkc3QsICJyZXN1bHQucG5nIik7Ci0JCWlmICh0ZXN0X2NjcykgeworCQlpZiAoY2NzX21v ZGlmaWVyKSB7CiAJCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmNjcywgImNvbXBy ZXNzZWQucG5nIik7CiAJCQlzY3JhdGNoX2J1Zl9hdXhfd3JpdGVfdG9fcG5nKGRhdGEsICZjY3Ms ICJjb21wcmVzc2VkLWF1eC5wbmciKTsKIAkJfQpAQCAtNTA1LDcgKzYzNiw3IEBAIHN0YXRpYyB2 b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJ CXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGEsICZkc3QsICZyZWYsIFdJRFRIIC0gMTAsIEhFSUdIVCAt IDEwKTsKIAl9CiAKLQlpZiAodGVzdF9jY3MpCisJaWYgKGNjc19tb2RpZmllcikKIAkJc2NyYXRj aF9idWZfYXV4X2NoZWNrKGRhdGEsICZjY3MpOwogfQogCkBAIC01NDYsMTggKzY3NywzMSBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJfQogCiAJaWd0X3N1YnRlc3QoImxpbmVh ciIpCi0JCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX05PTkUsIGZhbHNlKTsKKwkJdGVzdCgmZGF0 YSwgSTkxNV9USUxJTkdfTk9ORSwgMCk7CiAJaWd0X3N1YnRlc3QoIngtdGlsZWQiKQotCQl0ZXN0 KCZkYXRhLCBJOTE1X1RJTElOR19YLCBmYWxzZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5H X1gsIDApOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkIikKLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJ TkdfWSwgZmFsc2UpOworCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCAwKTsKKwlpZ3Rfc3Vi dGVzdCgieWYtdGlsZWQiKQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZZiwgMCk7CiAKIAlp Z3Rfc3VidGVzdCgieS10aWxlZC1jY3MtdG8tbGluZWFyIikKLQkJdGVzdCgmZGF0YSwgSTkxNV9U SUxJTkdfTk9ORSwgdHJ1ZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX05PTkUsIEk5MTVf VElMSU5HX1kpOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by14LXRpbGVkIikKLQkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgdHJ1ZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5H X1gsIEk5MTVfVElMSU5HX1kpOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by15LXRpbGVk IikKLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgdHJ1ZSk7CisJCXRlc3QoJmRhdGEsIEk5 MTVfVElMSU5HX1ksIEk5MTVfVElMSU5HX1kpOworCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10 by15Zi10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCBJOTE1X1RJTElOR19Z KTsKKworCWlndF9zdWJ0ZXN0KCJ5Zi10aWxlZC1jY3MtdG8tbGluZWFyIikKKwkJdGVzdCgmZGF0 YSwgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWWYpOworCWlndF9zdWJ0ZXN0KCJ5Zi10 aWxlZC1jY3MtdG8teC10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1gsIEk5MTVf VElMSU5HX1lmKTsKKwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLXktdGlsZWQiKQorCQl0 ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCBJOTE1X1RJTElOR19ZZik7CisJaWd0X3N1YnRlc3Qo InlmLXRpbGVkLWNjcy10by15Zi10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lm LCBJOTE1X1RJTElOR19ZZik7CiAKIAlpZ3RfZml4dHVyZSB7CiAJCWludGVsX2JhdGNoYnVmZmVy X2ZyZWUoZGF0YS5iYXRjaCk7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaWd0LWRldg==