From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id DECBB6E348 for ; Sat, 9 Mar 2019 03:36:26 +0000 (UTC) From: Dhinakaran Pandiyan Date: Fri, 8 Mar 2019 19:36:21 -0800 Message-Id: <20190309033621.12356-1-dhinakaran.pandiyan@intel.com> In-Reply-To: <20190307013325.30705-1-dhinakaran.pandiyan@intel.com> References: <20190307013325.30705-1-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 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 Cgp2NDogRnJvbSBESwogUmV3cml0ZSBZZiB0aWxpbmcgYWxnb3JpdGhtIHRvIGJlIG1vcmUgZGVz Y3JpcHRpdmUKCkNjOiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFyekBpbnRlbC5jb20+ CkNjOiBLYXRhcnp5bmEgRGVjIDxrYXRhcnp5bmEuZGVjQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5j b20+Ci0tLQogdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYyB8IDI3OCArKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCsp LCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29w eS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwppbmRleCAwY2Q0ZTUwZi4uOGQ2MmEw ZjQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKKysrIGIvdGVzdHMv aTkxNS9nZW1fcmVuZGVyX2NvcHkuYwpAQCAtNzIsMTEgKzcyLDEwNCBAQCBzdGF0aWMgY29uc3Qg Y2hhciAqbWFrZV9maWxlbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAlyZXR1cm4gYnVmOwog fQogCi1zdGF0aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1 ZiAqYnVmKQorc3RhdGljIHZvaWQgKnlmX3B0cih2b2lkICpwdHIsCisJCSAgICB1bnNpZ25lZCBp bnQgeCwgdW5zaWduZWQgaW50IHksCisJCSAgICB1bnNpZ25lZCBpbnQgc3RyaWRlLCB1bnNpZ25l ZCBpbnQgY3BwKQogewotCXZvaWQgKm1hcCwgKmxpbmVhcjsKKwljb25zdCBpbnQgdGlsZV9zaXpl ID0gNCAqIDEwMjQ7CisJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7CisJaW50IHJvd19zaXpl ID0gKHN0cmlkZSAvIHRpbGVfd2lkdGgpICogdGlsZV9zaXplOwogCi0JaWd0X2Fzc2VydF9lcShw b3NpeF9tZW1hbGlnbigmbGluZWFyLCAxNiwgYnVmLT5iby0+c2l6ZSksIDApOworCXggKj0gY3Bw OyAvKiBjb252ZXJ0IHRvIEJ5dGUgb2Zmc2V0ICovCisKKworCS8qCisJICogV2l0aGluIGEgNGsg WWYgdGlsZSwgdGhlIGJ5dGUgc3dpenpsaW5nIHBhdHRlcm4gaXMKKwkgKiBtc2IuLi4uLi5sc2IK KwkgKiB4eXh5eHl5eXh4eHgKKwkgKiBUaGUgdGlsZXMgdGhlbXNlbHZlcyBhcmUgbGFpZCBvdXQg aW4gcm93IG1ham9yIG9yZGVyLgorCSAqLworCXJldHVybiBwdHIgKworCQkoKHggJiAweGYpICog MSkgKyAvKiA0eDEgcGl4ZWxzKDMyYnBwKSA9IDE2QiAqLworCQkoKHkgJiAweDMpICogMTYpICsg LyogNHg0IHBpeGVscyA9IDY0QiAqLworCQkoKCh5ICYgMHg0KSA+PiAyKSAqIDY0KSArIC8qIDF4 MiA2NEIgYmxvY2tzICovCisJCSgoKHggJiAweDEwKSA+PiA0KSAqIDEyOCkgKyAvKiAyeDIgNjRC IGJsb2NrcyA9IDI1NkIgYmxvY2sgKi8KKwkJKCgoeSAmIDB4OCkgPj4gMykgKiAyNTYpICsgLyog MngxIDI1NkIgYmxvY2tzICovCisJCSgoKHggJiAweDIwKSA+PiA1KSAqIDUxMikgKyAvKiAyeDIg MjU2QiBibG9ja3MgKi8KKwkJKCgoeSAmIDB4MTApID4+IDQpICogMTAyNCkgKyAvKiA0eDIgMjU2 IGJsb2NrcyAqLworCQkoKCh4ICYgMHg0MCkgPj4gNikgKiAyMDQ4KSArIC8qIDR4NCAyNTZCIGJs b2NrcyA9IDRrIHRpbGUgKi8KKwkJKCgoeCAmIH4weDdmKSA+PiA3KSAqIHRpbGVfc2l6ZSkgKyAv KiByb3cgb2YgdGlsZXMgKi8KKwkJKCgoeSAmIH4weDFmKSA+PiA1KSAqIHJvd19zaXplKTsKK30K Kworc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9feWYoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLAorCQkJICAgICAgY29uc3QgdWludDMyX3QgKmxpbmVhcikKK3sKKwlpbnQgaGVp Z2h0ID0gaWd0X2J1Zl9oZWlnaHQoYnVmKTsKKwlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRoKGJ1 Zik7CisJdm9pZCAqbWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJv LT5oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9ET01BSU5f Q1BVKTsKKwltYXAgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxl LCAwLAorCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCisJ Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworCQlmb3IgKGludCB4ID0gMDsgeCA8 IHdpZHRoOyB4KyspIHsKKwkJCXVpbnQzMl90ICpwdHIgPSB5Zl9wdHIobWFwLCB4LCB5LAorCQkJ CQkgICAgICAgYnVmLT5zdHJpZGUsIGJ1Zi0+YnBwIC8gOCk7CisKKwkJCSpwdHIgPSBsaW5lYXJb eSAqIHdpZHRoICsgeF07CisJCX0KKwl9CisKKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsK K30KKworc3RhdGljIHZvaWQgY29weV95Zl90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLAorCQkJICAgICAgdWludDMyX3QgKmxpbmVhcikKK3sKKwlpbnQgaGVpZ2h0 ID0gaWd0X2J1Zl9oZWlnaHQoYnVmKTsKKwlpbnQgd2lkdGggPSBpZ3RfYnVmX3dpZHRoKGJ1Zik7 CisJdm9pZCAqbWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5o YW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwltYXAgPSBnZW1fbW1h cF9fY3B1KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLCAwLAorCQkJICAgIGJ1Zi0+Ym8t PnNpemUsIFBST1RfUkVBRCk7CisKKwlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7 CisJCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworCQkJdWludDMyX3QgKnB0ciA9 IHlmX3B0cihtYXAsIHgsIHksCisJCQkJCSAgICAgICBidWYtPnN0cmlkZSwgYnVmLT5icHAgLyA4 KTsKKworCQkJbGluZWFyW3kgKiB3aWR0aCArIHhdID0gKnB0cjsKKwkJfQorCX0KKworCW11bm1h cChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworfQorCitzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b19n dHQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorCQkJICAgICAgIGNvbnN0IHVp bnQzMl90ICpsaW5lYXIpCit7CisJdm9pZCAqbWFwOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJ OTE1X0dFTV9ET01BSU5fR1RUKTsKKworCW1hcCA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2Zk LCBidWYtPmJvLT5oYW5kbGUsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEIHwgUFJP VF9XUklURSk7CisKKwltZW1jcHkobWFwLCBsaW5lYXIsIGJ1Zi0+Ym8tPnNpemUpOworCisJbXVu bWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfZ3R0X3RvX2xp bmVhcihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCQkgICAgICAgdWludDMy X3QgKmxpbmVhcikKK3sKKwl2b2lkICptYXA7CiAKIAlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1f ZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwpA QCAtODcsNiArMTgwLDE5IEBAIHN0YXRpYyB2b2lkICpsaW5lYXJfY29weShkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYpCiAJaWd0X21lbWNweV9mcm9tX3djKGxpbmVhciwgbWFwLCBi dWYtPmJvLT5zaXplKTsKIAogCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOworfQorCitzdGF0 aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQor eworCXZvaWQgKmxpbmVhcjsKKworCS8qIDE2QiBhbGlnbm1lbnQgYWxsb3dzIHRvIHBvdGVudGlh bGx5IG1ha2UgdXNlIG9mIFNTRTQgZm9yIGNvcHlpbmcgKi8KKwlpZ3RfYXNzZXJ0X2VxKHBvc2l4 X21lbWFsaWduKCZsaW5lYXIsIDE2LCBidWYtPmJvLT5zaXplKSwgMCk7CisKKwlpZiAoYnVmLT50 aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCisJCWNvcHlfeWZfdG9fbGluZWFyKGRhdGEsIGJ1Ziwg bGluZWFyKTsKKwllbHNlCisJCWNvcHlfZ3R0X3RvX2xpbmVhcihkYXRhLCBidWYsIGxpbmVhcik7 CiAKIAlyZXR1cm4gbGluZWFyOwogfQpAQCAtMTczLDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHNj cmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYs CiAJY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwogCWNhaXJvX3BhdHRlcm5fdCAqcGF0OwogCWNh aXJvX3QgKmNyOwotCXZvaWQgKm1hcCwgKmxpbmVhcjsKKwl2b2lkICpsaW5lYXI7CiAKIAlsaW5l YXIgPSBsaW5lYXJfY29weShkYXRhLCBidWYpOwogCkBAIC0yMTYsMTUgKzMyMiwxMCBAQCBzdGF0 aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLAogCiAJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogCi0JZ2VtX3Nl dF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCi0JCSAgICAgICBJOTE1X0dF TV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKLQotCW1hcCA9IGdlbV9tbWFwX19n dHQoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCi0JCQkgICAgYnVmLT5iby0+c2l6ZSwg UFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0KLQltZW1jcHkobWFwLCBsaW5lYXIsIGJ1Zi0+Ym8t PnNpemUpOwotCi0JbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7CisJaWYgKGJ1Zi0+dGlsaW5n ID09IEk5MTVfVElMSU5HX1lmKQorCQljb3B5X2xpbmVhcl90b195ZihkYXRhLCBidWYsIGxpbmVh cik7CisJZWxzZQorCQljb3B5X2xpbmVhcl90b19ndHQoZGF0YSwgYnVmLCBsaW5lYXIpOwogCiAJ ZnJlZShsaW5lYXIpOwogfQpAQCAtMjM2LDM2ICszMzcsNjIgQEAgc2NyYXRjaF9idWZfY29weShk YXRhX3QgKmRhdGEsCiB7CiAJaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0aChkc3QpOwogCWludCBo ZWlnaHQgID0gaWd0X2J1Zl9oZWlnaHQoZHN0KTsKLQl1aW50MzJfdCAqbGluZWFyX2RzdCwgKmxp bmVhcl9zcmM7CisJdWludDMyX3QgKmxpbmVhcl9kc3Q7CiAKIAlpZ3RfYXNzZXJ0X2VxKGlndF9i dWZfd2lkdGgoZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsKIAlpZ3RfYXNzZXJ0X2VxKGlndF9i dWZfaGVpZ2h0KGRzdCksIGlndF9idWZfaGVpZ2h0KHNyYykpOwogCWlndF9hc3NlcnRfZXEoZHN0 LT5iby0+c2l6ZSwgc3JjLT5iby0+c2l6ZSk7CisJaWd0X2Fzc2VydF9lcShkc3QtPmJwcCwgc3Jj LT5icHApOworCisJdyA9IG1pbih3LCB3aWR0aCAtIHN4KTsKKwl3ID0gbWluKHcsIHdpZHRoIC0g ZHgpOworCisJaCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7CisJaCA9IG1pbihoLCBoZWlnaHQgLSBk eSk7CiAKIAlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGRzdC0+Ym8tPmhhbmRsZSwKIAkJ ICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwotCWdlbV9z ZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAotCQkgICAgICAgSTkxNV9H RU1fRE9NQUlOX0dUVCwgMCk7Ci0KIAlsaW5lYXJfZHN0ID0gZ2VtX21tYXBfX2d0dChkYXRhLT5k cm1fZmQsIGRzdC0+Ym8tPmhhbmRsZSwKIAkJCQkgICBkc3QtPmJvLT5zaXplLCBQUk9UX1dSSVRF KTsKLQlsaW5lYXJfc3JjID0gZ2VtX21tYXBfX2d0dChkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhh bmRsZSwKLQkJCQkgICBzcmMtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwogCi0JdyA9IG1pbih3LCB3 aWR0aCAtIHN4KTsKLQl3ID0gbWluKHcsIHdpZHRoIC0gZHgpOworCWlmIChzcmMtPnRpbGluZyA9 PSBJOTE1X1RJTElOR19ZZikgeworCQl2b2lkICptYXA7CiAKLQloID0gbWluKGgsIGhlaWdodCAt IHN5KTsKLQloID0gbWluKGgsIGhlaWdodCAtIGR5KTsKKwkJZ2VtX3NldF9kb21haW4oZGF0YS0+ ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCisJCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwg MCk7CisJCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUs IDAsCisJCQkJICAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisKKwkJZm9yIChpbnQgeSA9 IDA7IHkgPCBoOyB5KyspIHsKKwkJCWZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7CisJCQkJ Y29uc3QgdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHN4K3gsIHN5K3ksCisJCQkJCQkJICAg ICBzcmMtPnN0cmlkZSwKKwkJCQkJCQkgICAgIHNyYy0+YnBwIC8gOCk7CiAKLQlmb3IgKGludCB5 ID0gMDsgeSA8IGg7IHkrKykgewotCQlpZ3RfbWVtY3B5X2Zyb21fd2MoJmxpbmVhcl9kc3RbKGR5 K3kpICogd2lkdGggKyBkeF0sCi0JCQkJICAgJmxpbmVhcl9zcmNbKHN5K3kpICogd2lkdGggKyBz eF0sCi0JCQkJICAgdyAqIDQpOworCQkJCWxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGggKyBkeCt4 XSA9ICpwdHI7CisJCQl9CisJCX0KKworCQltdW5tYXAobWFwLCBzcmMtPmJvLT5zaXplKTsKKwl9 IGVsc2UgeworCQl1aW50MzJfdCAqbGluZWFyX3NyYzsKKworCQlnZW1fc2V0X2RvbWFpbihkYXRh LT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwKKwkJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RU LCAwKTsKKworCQlsaW5lYXJfc3JjID0gZ2VtX21tYXBfX2d0dChkYXRhLT5kcm1fZmQsIHNyYy0+ Ym8tPmhhbmRsZSwKKwkJCQkJICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCQlmb3Ig KGludCB5ID0gMDsgeSA8IGg7IHkrKykgeworCQkJaWd0X21lbWNweV9mcm9tX3djKCZsaW5lYXJf ZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAorCQkJCQkgICAmbGluZWFyX3NyY1soc3kreSkgKiB3 aWR0aCArIHN4XSwKKwkJCQkJICAgdyAqIChzcmMtPmJwcCAvIDgpKTsKKwkJfQorCisJCW11bm1h cChsaW5lYXJfc3JjLCBzcmMtPmJvLT5zaXplKTsKIAl9CiAKIAltdW5tYXAobGluZWFyX2RzdCwg ZHN0LT5iby0+c2l6ZSk7Ci0JbXVubWFwKGxpbmVhcl9zcmMsIHNyYy0+Ym8tPnNpemUpOwogfQog CiBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9i dWYgKmJ1ZiwKQEAgLTI3NCw2ICs0MDEsNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0 KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIHsKIAl1aW50MzJfdCB0aWxpbmcg PSByZXFfdGlsaW5nOwogCXVuc2lnbmVkIGxvbmcgcGl0Y2g7CisJaW50IGJwcCA9IDMyOwogCiAJ bWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKIApAQCAtMjgyLDEyICs0MTAsMTMgQEAgc3Rh dGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpi dWYsCiAJCWludCBzaXplOwogCiAJCWlndF9yZXF1aXJlKGludGVsX2dlbihkYXRhLT5kZXZpZCkg Pj0gOSk7Ci0JCWlndF9hc3NlcnRfZXEodGlsaW5nLCBJOTE1X1RJTElOR19ZKTsKKwkJaWd0X2Fz c2VydCh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSB8fAorCQkJICAgdGlsaW5nID09IEk5MTVfVElM SU5HX1lmKTsKIAotCQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKKwkJYnVm LT5zdHJpZGUgPSBBTElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsKIAkJYnVmLT5zaXplID0g YnVmLT5zdHJpZGUgKiBoZWlnaHQ7CiAJCWJ1Zi0+dGlsaW5nID0gdGlsaW5nOwotCQlidWYtPmJw cCA9IDMyOworCQlidWYtPmJwcCA9IGJwcDsKIAogCQlhdXhfd2lkdGggPSBzY3JhdGNoX2J1Zl9h dXhfd2lkdGgoYnVmKTsKIAkJYXV4X2hlaWdodCA9IHNjcmF0Y2hfYnVmX2F1eF9oZWlnaHQoYnVm KTsKQEAgLTI5OSwxOCArNDI4LDMxIEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0 YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCiAJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxf Ym9fYWxsb2MoZGF0YS0+YnVmbWdyLCAiIiwgc2l6ZSwgNDA5Nik7CiAKLQkJZHJtX2ludGVsX2Jv X3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywgYnVmLT5zdHJpZGUpOwotCQlpZ3RfYXNzZXJ0 X2VxKHRpbGluZywgcmVxX3RpbGluZyk7CisJCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkg eworCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywgYnVmLT5zdHJp ZGUpOworCQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcpOworCQl9CisJfSBlbHNl IGlmIChyZXFfdGlsaW5nID09IEk5MTVfVElMSU5HX1lmKSB7CisJCWludCBzaXplOworCisJCWJ1 Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCk7CisJCWJ1Zi0+c2l6ZSA9 IGJ1Zi0+c3RyaWRlICogaGVpZ2h0OworCQlidWYtPnRpbGluZyA9IHRpbGluZzsKKwkJYnVmLT5i cHAgPSBicHA7CisKKwkJc2l6ZSA9IGJ1Zi0+c3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7CisK KwkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBzaXplLCA0 MDk2KTsKIAl9IGVsc2UgewogCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jX3RpbGVkKGRh dGEtPmJ1Zm1nciwgIiIsCi0JCQkJCQkgICB3aWR0aCwgaGVpZ2h0LCA0LAorCQkJCQkJICAgd2lk dGgsIGhlaWdodCwgYnBwIC8gOCwKIAkJCQkJCSAgICZ0aWxpbmcsICZwaXRjaCwgMCk7CiAJCWln dF9hc3NlcnRfZXEodGlsaW5nLCByZXFfdGlsaW5nKTsKIAogCQlidWYtPnN0cmlkZSA9IHBpdGNo OwogCQlidWYtPnRpbGluZyA9IHRpbGluZzsKIAkJYnVmLT5zaXplID0gcGl0Y2ggKiBoZWlnaHQ7 Ci0JCWJ1Zi0+YnBwID0gMzI7CisJCWJ1Zi0+YnBwID0gYnBwOwogCX0KIAogCWlndF9hc3NlcnQo aWd0X2J1Zl93aWR0aChidWYpID09IHdpZHRoKTsKQEAgLTM5Niw3ICs1MzgsNyBAQCBzdGF0aWMg dm9pZCBzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YV90ICpkYXRhLAogCQkgICAgICJBdXggc3Vy ZmFjZSBpbmRpY2F0ZXMgdGhhdCBub3RoaW5nIHdhcyBjb21wcmVzc2VkXG4iKTsKIH0KIAotc3Rh dGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2Nj cykKK3N0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2 NF90IGNjc19tb2RpZmllcikKIHsKIAlzdHJ1Y3QgaWd0X2J1ZiBkc3QsIGNjcywgcmVmOwogCXN0 cnVjdCB7CkBAIC00MDQsNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEs IHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKIAkJY29uc3QgY2hhciAqZmlsZW5hbWU7 CiAJCXVpbnQzMl90IHRpbGluZzsKIAkJaW50IHgsIHk7Ci0JfSBzcmNbM10gPSB7CisJfSBzcmNb XSA9IHsKIAkJewogCQkJLmZpbGVuYW1lID0gInNvdXJjZS1saW5lYXIucG5nIiwKIAkJCS50aWxp bmcgPSBJOTE1X1RJTElOR19OT05FLApAQCAtNDIwLDE4ICs1NjIsMzEgQEAgc3RhdGljIHZvaWQg dGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKIAkJCS50 aWxpbmcgPSBJOTE1X1RJTElOR19ZLAogCQkJLnggPSBXSURUSC8yKzEsIC55ID0gMSwKIAkJfSwK KwkJeworCQkJLmZpbGVuYW1lID0gInNvdXJjZS15Zi10aWxlZC5wbmciLAorCQkJLnRpbGluZyA9 IEk5MTVfVElMSU5HX1lmLAorCQkJLnggPSAxLCAueSA9IDEsCisJCX0sCiAJfTsKIAogCWludCBv cHRfZHVtcF9hdWIgPSBpZ3RfYXViX2R1bXBfZW5hYmxlZCgpOworCWludCBudW1fc3JjID0gQVJS QVlfU0laRShzcmMpOworCisJLyogbm8gWWYgYmVmb3JlIGdlbjkgKi8KKwlpZiAoaW50ZWxfZ2Vu KGRhdGEtPmRldmlkKSA8IDkpCisJCW51bV9zcmMtLTsKKworCWlmICh0aWxpbmcgPT0gSTkxNV9U SUxJTkdfWWYgfHwgY2NzX21vZGlmaWVyKQorCQlpZ3RfcmVxdWlyZShpbnRlbF9nZW4oZGF0YS0+ ZGV2aWQpID49IDkpOwogCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkr KykKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykKIAkJc2NyYXRjaF9idWZfaW5p dChkYXRhLCAmc3JjW2ldLmJ1ZiwgV0lEVEgsIEhFSUdIVCwgc3JjW2ldLnRpbGluZywgZmFsc2Up OwogCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJmRzdCwgV0lEVEgsIEhFSUdIVCwgdGlsaW5nLCBm YWxzZSk7Ci0JaWYgKHRlc3RfY2NzKQotCQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZjY3MsIFdJ RFRILCBIRUlHSFQsIEk5MTVfVElMSU5HX1ksIHRydWUpOworCWlmIChjY3NfbW9kaWZpZXIpCisJ CXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJmNjcywgV0lEVEgsIEhFSUdIVCwgY2NzX21vZGlmaWVy LCB0cnVlKTsKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZyZWYsIFdJRFRILCBIRUlHSFQsIEk5 MTVfVElMSU5HX05PTkUsIGZhbHNlKTsKIAotCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0la RShzcmMpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJCXNjcmF0 Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhLCAmc3JjW2ldLmJ1ZiwKIAkJCQkJIDAsIDAsIFdJRFRI LCBIRUlHSFQsCiAJCQkJCSAwLCAwLCBXSURUSCwgSEVJR0hULCB0cnVlKTsKQEAgLTQ0MiwxMyAr NTk3LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCB0aWxpbmcs IGJvb2wgdGVzdF9jY3MpCiAJc2NyYXRjaF9idWZfY29weShkYXRhLAogCQkJICZkc3QsIDAsIDAs IFdJRFRILCBIRUlHSFQsCiAJCQkgJnJlZiwgMCwgMCk7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHNyYyk7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkrKykK IAkJc2NyYXRjaF9idWZfY29weShkYXRhLAogCQkJCSAmc3JjW2ldLmJ1ZiwgV0lEVEgvNCwgSEVJ R0hULzQsIFdJRFRILzItMiwgSEVJR0hULzItMiwKIAkJCQkgJnJlZiwgc3JjW2ldLngsIHNyY1tp XS55KTsKIAogCWlmIChvcHRfZHVtcF9wbmcpIHsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHNyYyk7IGkrKykKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJ CQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnNyY1tpXS5idWYsIHNyY1tpXS5maWxl bmFtZSk7CiAJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmZHN0LCAiZGVzdGluYXRp b24ucG5nIik7CiAJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmcmVmLCAicmVmZXJl bmNlLnBuZyIpOwpAQCAtNDY4LDI0ICs2MjMsMjQgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3Qg KmRhdGEsIHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKIAkgKgkgfGRzdHxzcmN8CiAJ ICoJICAtLS0tLS0tCiAJICovCi0JaWYgKHRlc3RfY2NzKQorCWlmIChjY3NfbW9kaWZpZXIpCiAJ CWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAogCQkJCSAgJmRzdCwgMCwgMCwg V0lEVEgsIEhFSUdIVCwKIAkJCQkgICZjY3MsIDAsIDApOwogCi0JZm9yIChpbnQgaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHNyYyk7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zcmM7IGkr KykKIAkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCiAJCQkJICAmc3JjW2ld LmJ1ZiwgV0lEVEgvNCwgSEVJR0hULzQsIFdJRFRILzItMiwgSEVJR0hULzItMiwKLQkJCQkgIHRl c3RfY2NzID8gJmNjcyA6ICZkc3QsIHNyY1tpXS54LCBzcmNbaV0ueSk7CisJCQkJICBjY3NfbW9k aWZpZXIgPyAmY2NzIDogJmRzdCwgc3JjW2ldLngsIHNyY1tpXS55KTsKIAotCWlmICh0ZXN0X2Nj cykKKwlpZiAoY2NzX21vZGlmaWVyKQogCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwg TlVMTCwKIAkJCQkgICZjY3MsIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJICAmZHN0LCAwLCAw KTsKIAogCWlmIChvcHRfZHVtcF9wbmcpewogCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0 YSwgJmRzdCwgInJlc3VsdC5wbmciKTsKLQkJaWYgKHRlc3RfY2NzKSB7CisJCWlmIChjY3NfbW9k aWZpZXIpIHsKIAkJCXNjcmF0Y2hfYnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmY2NzLCAiY29tcHJl c3NlZC5wbmciKTsKIAkJCXNjcmF0Y2hfYnVmX2F1eF93cml0ZV90b19wbmcoZGF0YSwgJmNjcywg ImNvbXByZXNzZWQtYXV4LnBuZyIpOwogCQl9CkBAIC01MDUsNyArNjYwLDcgQEAgc3RhdGljIHZv aWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHRpbGluZywgYm9vbCB0ZXN0X2NjcykKIAkJ c2NyYXRjaF9idWZfY2hlY2soZGF0YSwgJmRzdCwgJnJlZiwgV0lEVEggLSAxMCwgSEVJR0hUIC0g MTApOwogCX0KIAotCWlmICh0ZXN0X2NjcykKKwlpZiAoY2NzX21vZGlmaWVyKQogCQlzY3JhdGNo X2J1Zl9hdXhfY2hlY2soZGF0YSwgJmNjcyk7CiB9CiAKQEAgLTU0NiwxOCArNzAxLDMxIEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl9CiAKIAlpZ3Rfc3VidGVzdCgibGluZWFy IikKLQkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgZmFsc2UpOworCQl0ZXN0KCZkYXRh LCBJOTE1X1RJTElOR19OT05FLCAwKTsKIAlpZ3Rfc3VidGVzdCgieC10aWxlZCIpCi0JCXRlc3Qo JmRhdGEsIEk5MTVfVElMSU5HX1gsIGZhbHNlKTsKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdf WCwgMCk7CiAJaWd0X3N1YnRlc3QoInktdGlsZWQiKQotCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElO R19ZLCBmYWxzZSk7CisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1ksIDApOworCWlndF9zdWJ0 ZXN0KCJ5Zi10aWxlZCIpCisJCXRlc3QoJmRhdGEsIEk5MTVfVElMSU5HX1lmLCAwKTsKIAogCWln dF9zdWJ0ZXN0KCJ5LXRpbGVkLWNjcy10by1saW5lYXIiKQotCQl0ZXN0KCZkYXRhLCBJOTE1X1RJ TElOR19OT05FLCB0cnVlKTsKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9U SUxJTkdfWSk7CiAJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRvLXgtdGlsZWQiKQotCQl0ZXN0 KCZkYXRhLCBJOTE1X1RJTElOR19YLCB0cnVlKTsKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdf WCwgSTkxNV9USUxJTkdfWSk7CiAJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRvLXktdGlsZWQi KQotCQl0ZXN0KCZkYXRhLCBJOTE1X1RJTElOR19ZLCB0cnVlKTsKKwkJdGVzdCgmZGF0YSwgSTkx NV9USUxJTkdfWSwgSTkxNV9USUxJTkdfWSk7CisJaWd0X3N1YnRlc3QoInktdGlsZWQtY2NzLXRv LXlmLXRpbGVkIikKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWWYsIEk5MTVfVElMSU5HX1kp OworCisJaWd0X3N1YnRlc3QoInlmLXRpbGVkLWNjcy10by1saW5lYXIiKQorCQl0ZXN0KCZkYXRh LCBJOTE1X1RJTElOR19OT05FLCBJOTE1X1RJTElOR19ZZik7CisJaWd0X3N1YnRlc3QoInlmLXRp bGVkLWNjcy10by14LXRpbGVkIikKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWCwgSTkxNV9U SUxJTkdfWWYpOworCWlndF9zdWJ0ZXN0KCJ5Zi10aWxlZC1jY3MtdG8teS10aWxlZCIpCisJCXRl c3QoJmRhdGEsIEk5MTVfVElMSU5HX1ksIEk5MTVfVElMSU5HX1lmKTsKKwlpZ3Rfc3VidGVzdCgi eWYtdGlsZWQtY2NzLXRvLXlmLXRpbGVkIikKKwkJdGVzdCgmZGF0YSwgSTkxNV9USUxJTkdfWWYs IEk5MTVfVElMSU5HX1lmKTsKIAogCWlndF9maXh0dXJlIHsKIAkJaW50ZWxfYmF0Y2hidWZmZXJf ZnJlZShkYXRhLmJhdGNoKTsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2