From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E64A8922B for ; Wed, 12 Jun 2019 22:58:25 +0000 (UTC) From: Antonio Argenziano Date: Wed, 12 Jun 2019 15:57:26 -0700 Message-Id: <20190612225734.14514-2-antonio.argenziano@intel.com> In-Reply-To: <20190612225734.14514-1-antonio.argenziano@intel.com> References: <20190612225734.14514-1-antonio.argenziano@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 1/9] tests/i915/gem_render_copy.c: Do detiling on the CPU side 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: VHJ5IHRvIHN0ZXAgYXdheSBmcm9tIHVzaW5nIGd0dCBtYXBwaW5nIGZvciBhY2Nlc3NpbmcgdGls ZWQgcGF0dGVybnMgYnkKbGluZWFyaXppbmcgdGhlIGJ1ZmZlcnMgb24gdGhlIENQVSBzaWRlLgoK U2lnbmVkLW9mZi1ieTogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50 ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgfCAyNTIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJf Y29weS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwppbmRleCBiODE0OTQ4My4uY2Mx NTI5ZmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKKysrIGIvdGVz dHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwpAQCAtMTAyLDYgKzEwMiw0MiBAQCBzdGF0aWMgdm9p ZCAqeWZfcHRyKHZvaWQgKnB0ciwKIAkJKCgoeSAmIH4weDFmKSA+PiA1KSAqIHJvd19zaXplKTsK IH0KIAorYm9vbCBkdW1wID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkICp4X3B0cih2b2lkICpwdHIs CisJCSAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCisJCSAgICB1bnNpZ25lZCBp bnQgc3RyaWRlLCB1bnNpZ25lZCBpbnQgY3BwKQoreworCWNvbnN0IGludCB0aWxlX3dpZHRoID0g NTEyOworCWludCByb3dfc2l6ZSA9IDg7CisJY29uc3QgaW50IHRpbGVfc2l6ZSA9IHRpbGVfd2lk dGggKiByb3dfc2l6ZTsKKworCXggKj0gY3BwOyAvKiBjb252ZXJ0IHRvIEJ5dGUgb2Zmc2V0ICov CisKKwlyZXR1cm4gcHRyICsKKwkJKCh4IC8gdGlsZV93aWR0aCkgKiB0aWxlX3dpZHRoKSArCisJ CSh4ICUgdGlsZV93aWR0aCkgKworCQkoKHkgLyByb3dfc2l6ZSkgKiB0aWxlX3NpemUgKiAoc3Ry aWRlIC8gdGlsZV93aWR0aCkpICsKKwkJKCh5ICUgcm93X3NpemUpICogc3RyaWRlKTsKK30KKwor c3RhdGljIHZvaWQgKnlfcHRyKHZvaWQgKnB0ciwKKwkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNp Z25lZCBpbnQgeSwKKwkJICAgIHVuc2lnbmVkIGludCBzdHJpZGUsIHVuc2lnbmVkIGludCBjcHAp Cit7CisJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7CisJaW50IHJvd19zaXplID0gMzI7CisJ Y29uc3QgaW50IHRpbGVfc2l6ZSA9IHRpbGVfd2lkdGggKiByb3dfc2l6ZTsKKworCXggKj0gY3Bw OyAvKiBjb252ZXJ0IHRvIEJ5dGUgb2Zmc2V0ICovCisKKwlyZXR1cm4gcHRyICsKKwkJKCh4IC8g dGlsZV93aWR0aCkgKiB0aWxlX3dpZHRoKSArCisJCSh4ICUgdGlsZV93aWR0aCkgKworCQkoKHkg LyByb3dfc2l6ZSkgKiB0aWxlX3NpemUgKiAoc3RyaWRlIC8gdGlsZV93aWR0aCkpICsKKwkJKCh5 ICUgcm93X3NpemUpICogc3RyaWRlKTsKK30KKwogc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9f eWYoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCQkJICAgICAgY29uc3QgdWlu dDMyX3QgKmxpbmVhcikKIHsKQEAgLTEyNiw2ICsxNjIsNTQgQEAgc3RhdGljIHZvaWQgY29weV9s aW5lYXJfdG9feWYoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCW11bm1hcCht YXAsIGJ1Zi0+Ym8tPnNpemUpOwogfQogCitzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b194KGRh dGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCSAgICAgIGNvbnN0IHVpbnQzMl90 ICpsaW5lYXIpCit7CisJaW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7CisJaW50IHdp ZHRoID0gaWd0X2J1Zl93aWR0aChidWYpOworCXZvaWQgKm1hcDsKKworCWdlbV9zZXRfZG9tYWlu KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJbWFwID0gZ2VtX21tYXBfX2NwdShkYXRhLT5k cm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKKwkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JF QUQgfCBQUk9UX1dSSVRFKTsKKworCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsK KwkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisJCQl1aW50MzJfdCAqcHRyID0g eF9wdHIobWFwLCB4LCB5LAorCQkJCQkgICAgICAgYnVmLT5zdHJpZGUsIGJ1Zi0+YnBwIC8gOCk7 CisKKwkJCSpwdHIgPSBsaW5lYXJbeSAqIHdpZHRoICsgeF07CisJCX0KKwl9CisKKwltdW5tYXAo bWFwLCBidWYtPmJvLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9feShk YXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCQkgICAgICBjb25zdCB1aW50MzJf dCAqbGluZWFyKQoreworCWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOworCWludCB3 aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKKwl2b2lkICptYXA7CisKKwlnZW1fc2V0X2RvbWFp bihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJ Tl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOworCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsIDAsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9S RUFEIHwgUFJPVF9XUklURSk7CisKKwlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7 CisJCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworCQkJdWludDMyX3QgKnB0ciA9 IHlfcHRyKG1hcCwgeCwgeSwKKwkJCQkJICAgICAgIGJ1Zi0+c3RyaWRlLCBidWYtPmJwcCAvIDgp OworCisJCQkqcHRyID0gbGluZWFyW3kgKiB3aWR0aCArIHhdOworCQl9CisJfQorCisJbXVubWFw KG1hcCwgYnVmLT5iby0+c2l6ZSk7Cit9CisKIHN0YXRpYyB2b2lkIGNvcHlfeWZfdG9fbGluZWFy KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAkJCSAgICAgIHVpbnQzMl90ICps aW5lYXIpCiB7CkBAIC0xNTAsNiArMjM0LDU0IEBAIHN0YXRpYyB2b2lkIGNvcHlfeWZfdG9fbGlu ZWFyKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAltdW5tYXAobWFwLCBidWYt PmJvLT5zaXplKTsKIH0KIAorc3RhdGljIHZvaWQgY29weV94X3RvX2xpbmVhcihkYXRhX3QgKmRh dGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCQkgICAgICB1aW50MzJfdCAqbGluZWFyKQorewor CWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOworCWludCB3aWR0aCA9IGlndF9idWZf d2lkdGgoYnVmKTsKKwl2b2lkICptYXA7CisKKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQs IGJ1Zi0+Ym8tPmhhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOworCW1h cCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsIDAsCisJCQkg ICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCWZvciAoaW50IHkgPSAwOyB5IDwgaGVp Z2h0OyB5KyspIHsKKwkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CisJCQl1aW50 MzJfdCAqcHRyID0geF9wdHIobWFwLCB4LCB5LAorCQkJCQkgICAgICAgYnVmLT5zdHJpZGUsIGJ1 Zi0+YnBwIC8gOCk7CisKKwkJCWxpbmVhclt5ICogd2lkdGggKyB4XSA9ICpwdHI7CisJCX0KKwl9 CisKKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQgY29weV95 X3RvX2xpbmVhcihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCQkgICAgICB1 aW50MzJfdCAqbGluZWFyKQoreworCWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOwor CWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKKwl2b2lkICptYXA7CisKKwlnZW1fc2V0 X2RvbWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VN X0RPTUFJTl9DUFUsIDApOworCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYt PmJvLT5oYW5kbGUsIDAsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCWZv ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKwkJZm9yIChpbnQgeCA9IDA7IHggPCB3 aWR0aDsgeCsrKSB7CisJCQl1aW50MzJfdCAqcHRyID0geV9wdHIobWFwLCB4LCB5LAorCQkJCQkg ICAgICAgYnVmLT5zdHJpZGUsIGJ1Zi0+YnBwIC8gOCk7CisKKwkJCWxpbmVhclt5ICogd2lkdGgg KyB4XSA9ICpwdHI7CisJCX0KKwl9CisKKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30K Kwogc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9fZ3R0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGln dF9idWYgKmJ1ZiwKIAkJCSAgICAgICBjb25zdCB1aW50MzJfdCAqbGluZWFyKQogewpAQCAtMTY2 LDYgKzI5OCwyMiBAQCBzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b19ndHQoZGF0YV90ICpkYXRh LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwogfQog CitzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b193YyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3Rf YnVmICpidWYsCisJCQkgICAgICAgY29uc3QgdWludDMyX3QgKmxpbmVhcikKK3sKKwl2b2lkICpt YXA7CisKKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKKwkJ ICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOworCisJbWFw ID0gZ2VtX21tYXBfX3djKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLCAwLAorCQkJICAg IGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCisJbWVtY3B5KG1hcCwg bGluZWFyLCBidWYtPmJvLT5zaXplKTsKKworCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwor fQorCiBzdGF0aWMgdm9pZCBjb3B5X2d0dF90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLAogCQkJICAgICAgIHVpbnQzMl90ICpsaW5lYXIpCiB7CkBAIC0xODIsNiAr MzMwLDIyIEBAIHN0YXRpYyB2b2lkIGNvcHlfZ3R0X3RvX2xpbmVhcihkYXRhX3QgKmRhdGEsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCiAJbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7CiB9CiAKK3N0 YXRpYyB2b2lkIGNvcHlfd2NfdG9fbGluZWFyKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KmJ1ZiwKKwkJCSAgICAgICB1aW50MzJfdCAqbGluZWFyKQoreworCXZvaWQgKm1hcDsKKworCWdl bV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAorCQkgICAgICAgSTkx NV9HRU1fRE9NQUlOX0dUVCwgMCk7CisKKwltYXAgPSBnZW1fbW1hcF9fd2MoZGF0YS0+ZHJtX2Zk LCBidWYtPmJvLT5oYW5kbGUsIDAsCisJCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsK KworCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCwgYnVmLT5iby0+c2l6ZSk7CisKKwlt dW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKK30KKwogc3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5 KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKIHsKIAl2b2lkICpsaW5lYXI7CkBA IC0xOTEsMTIgKzM1NSwzMiBAQCBzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHkoZGF0YV90ICpkYXRh LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQogCiAJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5H X1lmKQogCQljb3B5X3lmX3RvX2xpbmVhcihkYXRhLCBidWYsIGxpbmVhcik7CisJZWxzZSBpZiAo YnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfTk9ORSkKKwkJY29weV93Y190b19saW5lYXIoZGF0 YSwgYnVmLCBsaW5lYXIpOworCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1gp CisJCWNvcHlfeF90b19saW5lYXIoZGF0YSwgYnVmLCBsaW5lYXIpOworCWVsc2UgaWYgKGJ1Zi0+ dGlsaW5nID09IEk5MTVfVElMSU5HX1kpCisJCWNvcHlfeV90b19saW5lYXIoZGF0YSwgYnVmLCBs aW5lYXIpOwogCWVsc2UKIAkJY29weV9ndHRfdG9fbGluZWFyKGRhdGEsIGJ1ZiwgbGluZWFyKTsK IAogCXJldHVybiBsaW5lYXI7CiB9CiAKK3N0YXRpYyB2b2lkIGNvcHlfbGluZWFyX3RvX3RpbGVk KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwgY29uc3QgdWludDMyX3QgKmxpbmVh cikKK3sKKwlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCisJCWNvcHlfbGluZWFy X3RvX3lmKGRhdGEsIGJ1ZiwgbGluZWFyKTsKKwllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1 X1RJTElOR19YKQorCQljb3B5X2xpbmVhcl90b194KGRhdGEsIGJ1ZiwgbGluZWFyKTsKKwllbHNl IGlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQorCQljb3B5X2xpbmVhcl90b195KGRh dGEsIGJ1ZiwgbGluZWFyKTsKKwllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19O T05FKQorCQljb3B5X2xpbmVhcl90b193YyhkYXRhLCBidWYsIGxpbmVhcik7CisJZWxzZQorCQlp Z3RfaW5mbygiVW5rbm93biB0aWxpbmchXG4iKTsKK30KKwogc3RhdGljIHZvaWQgc2NyYXRjaF9i dWZfd3JpdGVfdG9fcG5nKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAkJCQkg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewpAQCAtMzI0LDYgKzUwOCwxMiBAQCBzdGF0aWMg dm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1 ZiAqYnVmLAogCiAJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1lmKQogCQljb3B5X2xp bmVhcl90b195ZihkYXRhLCBidWYsIGxpbmVhcik7CisJZWxzZSBpZiAoYnVmLT50aWxpbmcgPT0g STkxNV9USUxJTkdfTk9ORSkKKwkJY29weV9saW5lYXJfdG9fd2MoZGF0YSwgYnVmLCBsaW5lYXIp OworCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1gpCisJCWNvcHlfbGluZWFy X3RvX3goZGF0YSwgYnVmLCBsaW5lYXIpOworCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1kpCisJCWNvcHlfbGluZWFyX3RvX3koZGF0YSwgYnVmLCBsaW5lYXIpOwogCWVsc2UK IAkJY29weV9saW5lYXJfdG9fZ3R0KGRhdGEsIGJ1ZiwgbGluZWFyKTsKIApAQCAtMzM4LDYgKzUy OCw3IEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCWludCB3aWR0aCA9IGlndF9i dWZfd2lkdGgoZHN0KTsKIAlpbnQgaGVpZ2h0ICA9IGlndF9idWZfaGVpZ2h0KGRzdCk7CiAJdWlu dDMyX3QgKmxpbmVhcl9kc3Q7CisJdWludDMyX3QgKmxpbmVhcl90bXA7CiAKIAlpZ3RfYXNzZXJ0 X2VxKGlndF9idWZfd2lkdGgoZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsKIAlpZ3RfYXNzZXJ0 X2VxKGlndF9idWZfaGVpZ2h0KGRzdCksIGlndF9idWZfaGVpZ2h0KHNyYykpOwpAQCAtMzUyLDgg KzU0Myw4IEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCiAJZ2VtX3NldF9kb21h aW4oZGF0YS0+ZHJtX2ZkLCBkc3QtPmJvLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01B SU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKLQlsaW5lYXJfZHN0ID0gZ2VtX21tYXBfX2d0 dChkYXRhLT5kcm1fZmQsIGRzdC0+Ym8tPmhhbmRsZSwKLQkJCQkgICBkc3QtPmJvLT5zaXplLCBQ Uk9UX1dSSVRFKTsKKworCWxpbmVhcl90bXAgPSBsaW5lYXJfY29weShkYXRhLCBkc3QpOwogCiAJ aWYgKHNyYy0+dGlsaW5nID09IEk5MTVfVElMSU5HX1lmKSB7CiAJCXZvaWQgKm1hcDsKQEAgLTM2 OSwxMSArNTYwLDYyIEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCQkJCQkJCSAg ICAgc3JjLT5zdHJpZGUsCiAJCQkJCQkJICAgICBzcmMtPmJwcCAvIDgpOwogCi0JCQkJbGluZWFy X2RzdFsoZHkreSkgKiB3aWR0aCArIGR4K3hdID0gKnB0cjsKKwkJCQlsaW5lYXJfdG1wWyhkeSt5 KSAqIHdpZHRoICsgZHgreF0gPSAqcHRyOworCQkJfQorCQl9CisKKwkJbXVubWFwKG1hcCwgc3Jj LT5iby0+c2l6ZSk7CisJfSBlbHNlIGlmIChzcmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKSB7 CisJCXZvaWQgKm1hcDsKKworCQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+Ym8t PmhhbmRsZSwKKwkJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwkJbWFwID0gZ2Vt X21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKKwkJCQkgICAgc3Jj LT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKworCQlmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykg eworCQkJZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4KyspIHsKKwkJCQljb25zdCB1aW50MzJfdCAq cHRyID0geV9wdHIobWFwLCBzeCt4LCBzeSt5LAorCQkJCQkJCSAgICAgc3JjLT5zdHJpZGUsCisJ CQkJCQkJICAgICBzcmMtPmJwcCAvIDgpOworCisJCQkJbGluZWFyX3RtcFsoZHkreSkgKiB3aWR0 aCArIGR4K3hdID0gKnB0cjsKKwkJCX0KKwkJfQorCisJCW11bm1hcChtYXAsIHNyYy0+Ym8tPnNp emUpOworCX0gZWxzZSBpZiAoc3JjLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkgeworCQl2b2lk ICptYXA7CisKKwkJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUs CisJCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7CisJCW1hcCA9IGdlbV9tbWFwX19j cHUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsIDAsCisJCQkJICAgIHNyYy0+Ym8tPnNp emUsIFBST1RfUkVBRCk7CisKKwkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJCWZv ciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7CisJCQkJY29uc3QgdWludDMyX3QgKnB0ciA9IHhf cHRyKG1hcCwgc3greCwgc3kreSwKKwkJCQkJCQkgICAgIHNyYy0+c3RyaWRlLAorCQkJCQkJCSAg ICAgc3JjLT5icHAgLyA4KTsKKworCQkJCWxpbmVhcl90bXBbKGR5K3kpICogd2lkdGggKyBkeCt4 XSA9ICpwdHI7CiAJCQl9CiAJCX0KIAogCQltdW5tYXAobWFwLCBzcmMtPmJvLT5zaXplKTsKKwl9 IGVsc2UgaWYgKHNyYy0+dGlsaW5nID09IEk5MTVfVElMSU5HX05PTkUpIHsKKwkJdWludDMyX3Qg KmxpbmVhcl9zcmM7CisKKwkJbGluZWFyX3NyYyA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2Zk LCBzcmMtPmJvLT5oYW5kbGUsIDAsCisJCQkJCSAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7 CisKKwkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJCWlndF9tZW1jcHlfZnJvbV93 YygmbGluZWFyX3RtcFsoZHkreSkgKiB3aWR0aCArIGR4XSwKKwkJCQkJICAgJmxpbmVhcl9zcmNb KHN5K3kpICogd2lkdGggKyBzeF0sCisJCQkJCSAgIHcgKiAoc3JjLT5icHAgLyA4KSk7CisJCX0K KworCQltdW5tYXAobGluZWFyX3NyYywgc3JjLT5iby0+c2l6ZSk7CiAJfSBlbHNlIHsKIAkJdWlu dDMyX3QgKmxpbmVhcl9zcmM7CiAKQEAgLTM4NCw3ICs2MjYsNyBAQCBzY3JhdGNoX2J1Zl9jb3B5 KGRhdGFfdCAqZGF0YSwKIAkJCQkJICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKIAogCQlm b3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgewotCQkJaWd0X21lbWNweV9mcm9tX3djKCZsaW5l YXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAorCQkJaWd0X21lbWNweV9mcm9tX3djKCZsaW5l YXJfdG1wWyhkeSt5KSAqIHdpZHRoICsgZHhdLAogCQkJCQkgICAmbGluZWFyX3NyY1soc3kreSkg KiB3aWR0aCArIHN4XSwKIAkJCQkJICAgdyAqIChzcmMtPmJwcCAvIDgpKTsKIAkJfQpAQCAtMzky LDYgKzYzNCw4IEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCQltdW5tYXAobGlu ZWFyX3NyYywgc3JjLT5iby0+c2l6ZSk7CiAJfQogCisJY29weV9saW5lYXJfdG9fdGlsZWQoZGF0 YSwgZHN0LCBsaW5lYXJfdG1wKTsKKwogCW11bm1hcChsaW5lYXJfZHN0LCBkc3QtPmJvLT5zaXpl KTsKIH0KIAotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=