From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80B2E6E223 for ; Thu, 7 Mar 2019 01:38:14 +0000 (UTC) From: Dhinakaran Pandiyan Date: Wed, 6 Mar 2019 17:33:25 -0800 Message-Id: <20190307013325.30705-1-dhinakaran.pandiyan@intel.com> In-Reply-To: <20190305014742.3598-3-dhinakaran.pandiyan@intel.com> References: <20190305014742.3598-3-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 3/7] 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 Cc: Dhinakaran Pandiyan List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkxl dCdzIHRlc3QgWWYgdGlsaW5nIG5vdyB0aGF0IHJlbmRlcmNvcHkgY2FuIGhhbmRsZSBpdC4KCnYy OiBGcm9tIERLCiBTZXQgYnBwIGZvciBZZiBidWZmZXIgYW5kIHJlYmFzZS4KCnYzOiBGcm9tIERL CiBNb3JlIGRvY3VtZW50YXRpb24sIGZld2VyIHVuZXhwbGFpbmVkIGNvbnN0YW50cyAoS2FzaWEp CgpDYzogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgpDYzogS2F0 YXJ6eW5hIERlYyA8a2F0YXJ6eW5hLmRlY0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgotLS0K IHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgfCAyNjUgKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgNTUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYyBiL3Rl c3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKaW5kZXggMGNkNGU1MGYuLjI1Mjg3NmJmIDEwMDY0 NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2Vt X3JlbmRlcl9jb3B5LmMKQEAgLTcyLDExICs3Miw5MSBAQCBzdGF0aWMgY29uc3QgY2hhciAqbWFr ZV9maWxlbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAlyZXR1cm4gYnVmOwogfQogCi1zdGF0 aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQor c3RhdGljIHZvaWQgKnlmX3B0cih2b2lkICpwdHIsCisJCSAgICB1bnNpZ25lZCBpbnQgeCwgdW5z aWduZWQgaW50IHksCisJCSAgICB1bnNpZ25lZCBpbnQgc3RyaWRlLCB1bnNpZ25lZCBpbnQgY3Bw KQogewotCXZvaWQgKm1hcCwgKmxpbmVhcjsKKwl4ICo9IGNwcDsKKworCXJldHVybiBwdHIgKwor CSAgICAgICAoKHkgJiB+MHgxZikgKiBzdHJpZGUpICsKKwkgICAgICAgKCh5ICYgMHgxMCkgKiA2 NCkgKworCSAgICAgICAoKHkgJiAweDgpICogMzIpICsKKwkgICAgICAgKCh5ICYgMHg3KSAqIDE2 KSArCisJICAgICAgICgoeCAmIH4weDNmKSAqIDMyKSArCisJICAgICAgICgoeCAmIDB4MjApICog MTYpICsKKwkgICAgICAgKCh4ICYgMHgxMCkgKiA4KSArCisJICAgICAgICh4ICYgMHhmKTsKK30K IAotCWlndF9hc3NlcnRfZXEocG9zaXhfbWVtYWxpZ24oJmxpbmVhciwgMTYsIGJ1Zi0+Ym8tPnNp emUpLCAwKTsKK3N0YXRpYyB2b2lkIGNvcHlfbGluZWFyX3RvX3lmKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGlndF9idWYgKmJ1ZiwKKwkJCSAgICAgIGNvbnN0IHVpbnQzMl90ICpsaW5lYXIpCit7CisJ aW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7CisJaW50IHdpZHRoID0gaWd0X2J1Zl93 aWR0aChidWYpOworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwg YnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1f RE9NQUlOX0NQVSk7CisJbWFwID0gZ2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8t PmhhbmRsZSwgMCwKKwkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF KTsKKworCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKwkJZm9yIChpbnQgeCA9 IDA7IHggPCB3aWR0aDsgeCsrKSB7CisJCQl1aW50MzJfdCAqcHRyID0geWZfcHRyKG1hcCwgeCwg eSwKKwkJCQkJICAgICAgIGJ1Zi0+c3RyaWRlLCBidWYtPmJwcCAvIDgpOworCisJCQkqcHRyID0g bGluZWFyW3kgKiB3aWR0aCArIHhdOworCQl9CisJfQorCisJbXVubWFwKG1hcCwgYnVmLT5iby0+ c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfeWZfdG9fbGluZWFyKGRhdGFfdCAqZGF0YSwg c3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCSAgICAgIHVpbnQzMl90ICpsaW5lYXIpCit7CisJaW50 IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7CisJaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0 aChidWYpOworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVm LT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7CisJbWFwID0g Z2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKKwkJCSAgICBi dWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOworCisJZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7 IHkrKykgeworCQlmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKwkJCXVpbnQzMl90 ICpwdHIgPSB5Zl9wdHIobWFwLCB4LCB5LAorCQkJCQkgICAgICAgYnVmLT5zdHJpZGUsIGJ1Zi0+ YnBwIC8gOCk7CisKKwkJCWxpbmVhclt5ICogd2lkdGggKyB4XSA9ICpwdHI7CisJCX0KKwl9CisK KwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQgY29weV9saW5l YXJfdG9fZ3R0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCSAgICAgICBj b25zdCB1aW50MzJfdCAqbGluZWFyKQoreworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRfZG9tYWlu KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisKKwltYXAgPSBnZW1fbW1hcF9fZ3R0KGRhdGEt PmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVB RCB8IFBST1RfV1JJVEUpOworCisJbWVtY3B5KG1hcCwgbGluZWFyLCBidWYtPmJvLT5zaXplKTsK KworCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworfQorCitzdGF0aWMgdm9pZCBjb3B5X2d0 dF90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorCQkJICAgICAg IHVpbnQzMl90ICpsaW5lYXIpCit7CisJdm9pZCAqbWFwOwogCiAJZ2VtX3NldF9kb21haW4oZGF0 YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RU LCAwKTsKQEAgLTg3LDYgKzE2NywxOSBAQCBzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90 ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQogCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIs IG1hcCwgYnVmLT5iby0+c2l6ZSk7CiAKIAltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30K Kworc3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KmJ1ZikKK3sKKwl2b2lkICpsaW5lYXI7CisKKwkvKiAxNkIgYWxpZ25tZW50IGFsbG93cyB0byBw b3RlbnRpYWxseSBtYWtlIHVzZSBvZiBTU0U0IGZvciBjb3B5aW5nICovCisJaWd0X2Fzc2VydF9l cShwb3NpeF9tZW1hbGlnbigmbGluZWFyLCAxNiwgYnVmLT5iby0+c2l6ZSksIDApOworCisJaWYg KGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1lmKQorCQljb3B5X3lmX3RvX2xpbmVhcihkYXRh LCBidWYsIGxpbmVhcik7CisJZWxzZQorCQljb3B5X2d0dF90b19saW5lYXIoZGF0YSwgYnVmLCBs aW5lYXIpOwogCiAJcmV0dXJuIGxpbmVhcjsKIH0KQEAgLTE3Myw3ICsyNjYsNyBAQCBzdGF0aWMg dm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1 ZiAqYnVmLAogCWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKIAljYWlyb19wYXR0ZXJuX3QgKnBh dDsKIAljYWlyb190ICpjcjsKLQl2b2lkICptYXAsICpsaW5lYXI7CisJdm9pZCAqbGluZWFyOwog CiAJbGluZWFyID0gbGluZWFyX2NvcHkoZGF0YSwgYnVmKTsKIApAQCAtMjE2LDE1ICszMDksMTAg QEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGlndF9idWYgKmJ1ZiwKIAogCWNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKIAot CWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkgICAgICAg STkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Ci0KLQltYXAgPSBnZW1f bW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkJICAgIGJ1Zi0+Ym8t PnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwotCi0JbWVtY3B5KG1hcCwgbGluZWFyLCBi dWYtPmJvLT5zaXplKTsKLQotCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworCWlmIChidWYt PnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikKKwkJY29weV9saW5lYXJfdG9feWYoZGF0YSwgYnVm LCBsaW5lYXIpOworCWVsc2UKKwkJY29weV9saW5lYXJfdG9fZ3R0KGRhdGEsIGJ1ZiwgbGluZWFy KTsKIAogCWZyZWUobGluZWFyKTsKIH0KQEAgLTIzNiwzNiArMzI0LDYyIEBAIHNjcmF0Y2hfYnVm X2NvcHkoZGF0YV90ICpkYXRhLAogewogCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoZHN0KTsK IAlpbnQgaGVpZ2h0ICA9IGlndF9idWZfaGVpZ2h0KGRzdCk7Ci0JdWludDMyX3QgKmxpbmVhcl9k c3QsICpsaW5lYXJfc3JjOworCXVpbnQzMl90ICpsaW5lYXJfZHN0OwogCiAJaWd0X2Fzc2VydF9l cShpZ3RfYnVmX3dpZHRoKGRzdCksIGlndF9idWZfd2lkdGgoc3JjKSk7CiAJaWd0X2Fzc2VydF9l cShpZ3RfYnVmX2hlaWdodChkc3QpLCBpZ3RfYnVmX2hlaWdodChzcmMpKTsKIAlpZ3RfYXNzZXJ0 X2VxKGRzdC0+Ym8tPnNpemUsIHNyYy0+Ym8tPnNpemUpOworCWlndF9hc3NlcnRfZXEoZHN0LT5i cHAsIHNyYy0+YnBwKTsKKworCXcgPSBtaW4odywgd2lkdGggLSBzeCk7CisJdyA9IG1pbih3LCB3 aWR0aCAtIGR4KTsKKworCWggPSBtaW4oaCwgaGVpZ2h0IC0gc3kpOworCWggPSBtaW4oaCwgaGVp Z2h0IC0gZHkpOwogCiAJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBkc3QtPmJvLT5oYW5k bGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsK LQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwKLQkJICAgICAg IEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwotCiAJbGluZWFyX2RzdCA9IGdlbV9tbWFwX19ndHQo ZGF0YS0+ZHJtX2ZkLCBkc3QtPmJvLT5oYW5kbGUsCiAJCQkJICAgZHN0LT5iby0+c2l6ZSwgUFJP VF9XUklURSk7Ci0JbGluZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBzcmMt PmJvLT5oYW5kbGUsCi0JCQkJICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKIAotCXcgPSBt aW4odywgd2lkdGggLSBzeCk7Ci0JdyA9IG1pbih3LCB3aWR0aCAtIGR4KTsKKwlpZiAoc3JjLT50 aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpIHsKKwkJdm9pZCAqbWFwOwogCi0JaCA9IG1pbihoLCBo ZWlnaHQgLSBzeSk7Ci0JaCA9IG1pbihoLCBoZWlnaHQgLSBkeSk7CisJCWdlbV9zZXRfZG9tYWlu KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAorCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJ Tl9DUFUsIDApOworCQltYXAgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+ aGFuZGxlLCAwLAorCQkJCSAgICBzcmMtPmJvLT5zaXplLCBQUk9UX1JFQUQpOworCisJCWZvciAo aW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7CisJCQlmb3IgKGludCB4ID0gMDsgeCA8IHc7IHgrKykg eworCQkJCWNvbnN0IHVpbnQzMl90ICpwdHIgPSB5Zl9wdHIobWFwLCBzeCt4LCBzeSt5LAorCQkJ CQkJCSAgICAgc3JjLT5zdHJpZGUsCisJCQkJCQkJICAgICBzcmMtPmJwcCAvIDgpOworCisJCQkJ bGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4K3hdID0gKnB0cjsKKwkJCX0KKwkJfQorCisJ CW11bm1hcChtYXAsIHNyYy0+Ym8tPnNpemUpOworCX0gZWxzZSB7CisJCXVpbnQzMl90ICpsaW5l YXJfc3JjOwogCi0JZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKLQkJaWd0X21lbWNweV9m cm9tX3djKCZsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAotCQkJCSAgICZsaW5lYXJf c3JjWyhzeSt5KSAqIHdpZHRoICsgc3hdLAotCQkJCSAgIHcgKiA0KTsKKwkJZ2VtX3NldF9kb21h aW4oZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCisJCQkgICAgICAgSTkxNV9HRU1fRE9N QUlOX0dUVCwgMCk7CisKKwkJbGluZWFyX3NyYyA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2Zk LCBzcmMtPmJvLT5oYW5kbGUsCisJCQkJCSAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisK KwkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJCWlndF9tZW1jcHlfZnJvbV93Yygm bGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4XSwKKwkJCQkJICAgJmxpbmVhcl9zcmNbKHN5 K3kpICogd2lkdGggKyBzeF0sCisJCQkJCSAgIHcgKiAoc3JjLT5icHAgLyA4KSk7CisJCX0KKwor CQltdW5tYXAobGluZWFyX3NyYywgc3JjLT5iby0+c2l6ZSk7CiAJfQogCiAJbXVubWFwKGxpbmVh cl9kc3QsIGRzdC0+Ym8tPnNpemUpOwotCW11bm1hcChsaW5lYXJfc3JjLCBzcmMtPmJvLT5zaXpl KTsKIH0KIAogc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVj dCBpZ3RfYnVmICpidWYsCkBAIC0yNzQsNiArMzg4LDcgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9i dWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiB7CiAJdWludDMyX3Qg dGlsaW5nID0gcmVxX3RpbGluZzsKIAl1bnNpZ25lZCBsb25nIHBpdGNoOworCWludCBicHAgPSAz MjsKIAogCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7CiAKQEAgLTI4MiwxMiArMzk3LDEz IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLAogCQlpbnQgc2l6ZTsKIAogCQlpZ3RfcmVxdWlyZShpbnRlbF9nZW4oZGF0YS0+ ZGV2aWQpID49IDkpOwotCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgSTkxNV9USUxJTkdfWSk7CisJ CWlndF9hc3NlcnQodGlsaW5nID09IEk5MTVfVElMSU5HX1kgfHwKKwkJCSAgIHRpbGluZyA9PSBJ OTE1X1RJTElOR19ZZik7CiAKLQkJYnVmLT5zdHJpZGUgPSBBTElHTih3aWR0aCAqIDQsIDEyOCk7 CisJCWJ1Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCk7CiAJCWJ1Zi0+ c2l6ZSA9IGJ1Zi0+c3RyaWRlICogaGVpZ2h0OwogCQlidWYtPnRpbGluZyA9IHRpbGluZzsKLQkJ YnVmLT5icHAgPSAzMjsKKwkJYnVmLT5icHAgPSBicHA7CiAKIAkJYXV4X3dpZHRoID0gc2NyYXRj aF9idWZfYXV4X3dpZHRoKGJ1Zik7CiAJCWF1eF9oZWlnaHQgPSBzY3JhdGNoX2J1Zl9hdXhfaGVp Z2h0KGJ1Zik7CkBAIC0yOTksMTggKzQxNSwzMSBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9p bml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAogCQlidWYtPmJvID0gZHJt X2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwogCi0JCWRybV9p bnRlbF9ib19zZXRfdGlsaW5nKGJ1Zi0+Ym8sICZ0aWxpbmcsIGJ1Zi0+c3RyaWRlKTsKLQkJaWd0 X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcpOworCQlpZiAodGlsaW5nID09IEk5MTVfVElM SU5HX1kpIHsKKwkJCWRybV9pbnRlbF9ib19zZXRfdGlsaW5nKGJ1Zi0+Ym8sICZ0aWxpbmcsIGJ1 Zi0+c3RyaWRlKTsKKwkJCWlndF9hc3NlcnRfZXEodGlsaW5nLCByZXFfdGlsaW5nKTsKKwkJfQor CX0gZWxzZSBpZiAocmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZikgeworCQlpbnQgc2l6ZTsK KworCQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogKGJwcCAvIDgpLCAxMjgpOworCQlidWYt PnNpemUgPSBidWYtPnN0cmlkZSAqIGhlaWdodDsKKwkJYnVmLT50aWxpbmcgPSB0aWxpbmc7CisJ CWJ1Zi0+YnBwID0gYnBwOworCisJCXNpemUgPSBidWYtPnN0cmlkZSAqIEFMSUdOKGhlaWdodCwg MzIpOworCisJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZGF0YS0+YnVmbWdyLCAiIiwg c2l6ZSwgNDA5Nik7CiAJfSBlbHNlIHsKIAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvY190 aWxlZChkYXRhLT5idWZtZ3IsICIiLAotCQkJCQkJICAgd2lkdGgsIGhlaWdodCwgNCwKKwkJCQkJ CSAgIHdpZHRoLCBoZWlnaHQsIGJwcCAvIDgsCiAJCQkJCQkgICAmdGlsaW5nLCAmcGl0Y2gsIDAp OwogCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7CiAKIAkJYnVmLT5zdHJpZGUg PSBwaXRjaDsKIAkJYnVmLT50aWxpbmcgPSB0aWxpbmc7CiAJCWJ1Zi0+c2l6ZSA9IHBpdGNoICog aGVpZ2h0OwotCQlidWYtPmJwcCA9IDMyOworCQlidWYtPmJwcCA9IGJwcDsKIAl9CiAKIAlpZ3Rf YXNzZXJ0KGlndF9idWZfd2lkdGgoYnVmKSA9PSB3aWR0aCk7CkBAIC0zOTYsNyArNTI1LDcgQEAg c3RhdGljIHZvaWQgc2NyYXRjaF9idWZfYXV4X2NoZWNrKGRhdGFfdCAqZGF0YSwKIAkJICAgICAi QXV4IHN1cmZhY2UgaW5kaWNhdGVzIHRoYXQgbm90aGluZyB3YXMgY29tcHJlc3NlZFxuIik7CiB9 CiAKLXN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wg dGVzdF9jY3MpCitzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5n LCB1aW50NjRfdCBjY3NfbW9kaWZpZXIpCiB7CiAJc3RydWN0IGlndF9idWYgZHN0LCBjY3MsIHJl ZjsKIAlzdHJ1Y3QgewpAQCAtNDA0LDcgKzUzMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90 ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJCWNvbnN0IGNoYXIgKmZp bGVuYW1lOwogCQl1aW50MzJfdCB0aWxpbmc7CiAJCWludCB4LCB5OwotCX0gc3JjWzNdID0gewor CX0gc3JjW10gPSB7CiAJCXsKIAkJCS5maWxlbmFtZSA9ICJzb3VyY2UtbGluZWFyLnBuZyIsCiAJ CQkudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORSwKQEAgLTQyMCwxOCArNTQ5LDMxIEBAIHN0YXRp YyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3Mp CiAJCQkudGlsaW5nID0gSTkxNV9USUxJTkdfWSwKIAkJCS54ID0gV0lEVEgvMisxLCAueSA9IDEs CiAJCX0sCisJCXsKKwkJCS5maWxlbmFtZSA9ICJzb3VyY2UteWYtdGlsZWQucG5nIiwKKwkJCS50 aWxpbmcgPSBJOTE1X1RJTElOR19ZZiwKKwkJCS54ID0gMSwgLnkgPSAxLAorCQl9LAogCX07CiAK IAlpbnQgb3B0X2R1bXBfYXViID0gaWd0X2F1Yl9kdW1wX2VuYWJsZWQoKTsKKwlpbnQgbnVtX3Ny YyA9IEFSUkFZX1NJWkUoc3JjKTsKKworCS8qIG5vIFlmIGJlZm9yZSBnZW45ICovCisJaWYgKGlu dGVsX2dlbihkYXRhLT5kZXZpZCkgPCA5KQorCQludW1fc3JjLS07CisKKwlpZiAodGlsaW5nID09 IEk5MTVfVElMSU5HX1lmIHx8IGNjc19tb2RpZmllcikKKwkJaWd0X3JlcXVpcmUoaW50ZWxfZ2Vu KGRhdGEtPmRldmlkKSA+PSA5KTsKIAotCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShz cmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJCXNjcmF0Y2hf YnVmX2luaXQoZGF0YSwgJnNyY1tpXS5idWYsIFdJRFRILCBIRUlHSFQsIHNyY1tpXS50aWxpbmcs IGZhbHNlKTsKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZkc3QsIFdJRFRILCBIRUlHSFQsIHRp bGluZywgZmFsc2UpOwotCWlmICh0ZXN0X2NjcykKLQkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAm Y2NzLCBXSURUSCwgSEVJR0hULCBJOTE1X1RJTElOR19ZLCB0cnVlKTsKKwlpZiAoY2NzX21vZGlm aWVyKQorCQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZjY3MsIFdJRFRILCBIRUlHSFQsIGNjc19t b2RpZmllciwgdHJ1ZSk7CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmcmVmLCBXSURUSCwgSEVJ R0hULCBJOTE1X1RJTElOR19OT05FLCBmYWxzZSk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IEFS UkFZX1NJWkUoc3JjKTsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsgaSsrKQog CQlzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YSwgJnNyY1tpXS5idWYsCiAJCQkJCSAwLCAw LCBXSURUSCwgSEVJR0hULAogCQkJCQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwgdHJ1ZSk7CkBAIC00 NDIsMTMgKzU4NCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3Qg dGlsaW5nLCBib29sIHRlc3RfY2NzKQogCXNjcmF0Y2hfYnVmX2NvcHkoZGF0YSwKIAkJCSAmZHN0 LCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJICZyZWYsIDAsIDApOwotCWZvciAoaW50IGkgPSAw OyBpIDwgQVJSQVlfU0laRShzcmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3Jj OyBpKyspCiAJCXNjcmF0Y2hfYnVmX2NvcHkoZGF0YSwKIAkJCQkgJnNyY1tpXS5idWYsIFdJRFRI LzQsIEhFSUdIVC80LCBXSURUSC8yLTIsIEhFSUdIVC8yLTIsCiAJCQkJICZyZWYsIHNyY1tpXS54 LCBzcmNbaV0ueSk7CiAKIAlpZiAob3B0X2R1bXBfcG5nKSB7Ci0JCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShzcmMpOyBpKyspCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NyYzsg aSsrKQogCQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZzcmNbaV0uYnVmLCBzcmNb aV0uZmlsZW5hbWUpOwogCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdCwgImRl c3RpbmF0aW9uLnBuZyIpOwogCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnJlZiwg InJlZmVyZW5jZS5wbmciKTsKQEAgLTQ2OCwyNCArNjEwLDI0IEBAIHN0YXRpYyB2b2lkIHRlc3Qo ZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9jY3MpCiAJICoJIHxkc3R8 c3JjfAogCSAqCSAgLS0tLS0tLQogCSAqLwotCWlmICh0ZXN0X2NjcykKKwlpZiAoY2NzX21vZGlm aWVyKQogCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKIAkJCQkgICZkc3Qs IDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJICAmY2NzLCAwLCAwKTsKIAotCWZvciAoaW50IGkg PSAwOyBpIDwgQVJSQVlfU0laRShzcmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1f c3JjOyBpKyspCiAJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAogCQkJCSAg JnNyY1tpXS5idWYsIFdJRFRILzQsIEhFSUdIVC80LCBXSURUSC8yLTIsIEhFSUdIVC8yLTIsCi0J CQkJICB0ZXN0X2NjcyA/ICZjY3MgOiAmZHN0LCBzcmNbaV0ueCwgc3JjW2ldLnkpOworCQkJCSAg Y2NzX21vZGlmaWVyID8gJmNjcyA6ICZkc3QsIHNyY1tpXS54LCBzcmNbaV0ueSk7CiAKLQlpZiAo dGVzdF9jY3MpCisJaWYgKGNjc19tb2RpZmllcikKIAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+ YmF0Y2gsIE5VTEwsCiAJCQkJICAmY2NzLCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJCSAgJmRz dCwgMCwgMCk7CiAKIAlpZiAob3B0X2R1bXBfcG5nKXsKIAkJc2NyYXRjaF9idWZfd3JpdGVfdG9f cG5nKGRhdGEsICZkc3QsICJyZXN1bHQucG5nIik7Ci0JCWlmICh0ZXN0X2NjcykgeworCQlpZiAo Y2NzX21vZGlmaWVyKSB7CiAJCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmNjcywg ImNvbXByZXNzZWQucG5nIik7CiAJCQlzY3JhdGNoX2J1Zl9hdXhfd3JpdGVfdG9fcG5nKGRhdGEs ICZjY3MsICJjb21wcmVzc2VkLWF1eC5wbmciKTsKIAkJfQpAQCAtNTA1LDcgKzY0Nyw3IEBAIHN0 YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIGJvb2wgdGVzdF9j Y3MpCiAJCXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGEsICZkc3QsICZyZWYsIFdJRFRIIC0gMTAsIEhF SUdIVCAtIDEwKTsKIAl9CiAKLQlpZiAodGVzdF9jY3MpCisJaWYgKGNjc19tb2RpZmllcikKIAkJ c2NyYXRjaF9idWZfYXV4X2NoZWNrKGRhdGEsICZjY3MpOwogfQogCkBAIC01NDYsMTggKzY4OCwz MSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJfQogCiAJaWd0X3N1YnRlc3Qo ImxpbmVhciIpCi0JCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX05PTkUsIGZhbHNlKTsKKwkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgMCk7CiAJaWd0X3N1YnRlc3QoIngtdGlsZWQiKQot CQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19YLCBmYWxzZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVf VElMSU5HX1gsIDApOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkIikKLQkJdGVzdCgmZGF0YSwgSTkx NV9USUxJTkdfWSwgZmFsc2UpOworCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCAwKTsKKwlp Z3Rfc3VidGVzdCgieWYtdGlsZWQiKQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZZiwgMCk7 CiAKIAlpZ3Rfc3VidGVzdCgieS10aWxlZC1jY3MtdG8tbGluZWFyIikKLQkJdGVzdCgmZGF0YSwg STkxNV9USUxJTkdfTk9ORSwgdHJ1ZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX05PTkUs IEk5MTVfVElMSU5HX1kpOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by14LXRpbGVkIikK LQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgdHJ1ZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVf VElMSU5HX1gsIEk5MTVfVElMSU5HX1kpOwogCWlndF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by15 LXRpbGVkIikKLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWSwgdHJ1ZSk7CisJCXRlc3QoJmRh dGEsIEk5MTVfVElMSU5HX1ksIEk5MTVfVElMSU5HX1kpOworCWlndF9zdWJ0ZXN0KCJ5LXRpbGVk LWNjcy10by15Zi10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCBJOTE1X1RJ TElOR19ZKTsKKworCWlndF9zdWJ0ZXN0KCJ5Zi10aWxlZC1jY3MtdG8tbGluZWFyIikKKwkJdGVz dCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWWYpOworCWlndF9zdWJ0ZXN0 KCJ5Zi10aWxlZC1jY3MtdG8teC10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1gs IEk5MTVfVElMSU5HX1lmKTsKKwlpZ3Rfc3VidGVzdCgieWYtdGlsZWQtY2NzLXRvLXktdGlsZWQi KQorCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCBJOTE1X1RJTElOR19ZZik7CisJaWd0X3N1 YnRlc3QoInlmLXRpbGVkLWNjcy10by15Zi10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElM SU5HX1lmLCBJOTE1X1RJTElOR19ZZik7CiAKIAlpZ3RfZml4dHVyZSB7CiAJCWludGVsX2JhdGNo YnVmZmVyX2ZyZWUoZGF0YS5iYXRjaCk7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldg==