From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id C5F136EA18 for ; Wed, 18 Dec 2019 17:13:36 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 18 Dec 2019 18:12:50 +0100 Message-Id: <20191218171250.15232-3-zbigniew.kempczynski@intel.com> In-Reply-To: <20191218171250.15232-1-zbigniew.kempczynski@intel.com> References: <20191218171250.15232-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 3/3] i915/gem_render_copy.c: Simplify code by switch to rendercopy bufmgr 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: U3dpdGNoIHRvIHJlbmRlcmNvcHkgYnVmbWdyIHRvIHNpbXBsaWZ5IHdvcmtpbmcgd2l0aCB0aWxl ZCBzdXJmYWNlcy4KClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBLYXRhcnp5bmEgRGVjIDxrYXRhcnp5bmEuZGVjQGludGVsLmNvbT4K Q2M6IFZhbnNoaWRoYXIgS29uZGEgPHZhbnNoaWRoYXIuci5rb25kYUBpbnRlbC5jb20+Ci0tLQog bGliL2ludGVsX2JhdGNoYnVmZmVyLmMgICAgICB8ICA0NyArKysrKwogbGliL2ludGVsX2JhdGNo YnVmZmVyLmggICAgICB8ICAgMiArCiB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIHwgMzM3 ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEw NyBpbnNlcnRpb25zKCspLCAyNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVs X2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCA1MWFhZTRkYy4u MTliYmFkMGUgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCisrKyBiL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiaW9jdGxfd3Jh cHBlcnMuaCIKICNpbmNsdWRlICJtZWRpYV9zcGluLmgiCiAjaW5jbHVkZSAiZ3BncHVfZmlsbC5o IgorI2luY2x1ZGUgImlndF9hdXguaCIKIAogI2luY2x1ZGUgPGk5MTVfZHJtLmg+CiAKQEAgLTUy OSw2ICs1MzAsNTIgQEAgdW5zaWduZWQgaWd0X2J1Zl9oZWlnaHQoY29uc3Qgc3RydWN0IGlndF9i dWYgKmJ1ZikKIAlyZXR1cm4gYnVmLT5zaXplL2J1Zi0+c3RyaWRlOwogfQogCisvKioKKyAqIGln dF9idWZfYXV4X3dpZHRoOgorICogQGJ1ZjogdGhlIGktZy10IGJ1ZmZlciBvYmplY3QKKyAqIEBn ZW46IGRldmljZSBnZW5lcmF0aW9uCisgKgorICogQ29tcHV0ZXMgdGhlIHdpZHRoIG9mIGF1eCBi dWZmZXIgZGF0YS4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIHdpZHRoIG9mIHRoZSBhdXggYnVm ZmVyIGRhdGEuCisgKi8KK3Vuc2lnbmVkIGlndF9idWZfYXV4X3dpZHRoKGludCBnZW4sIGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICpidWYpCit7CisJLyoKKwkgKiBHRU4xMis6IFRoZSBBVVggQ0NTIHVu aXQgc2l6ZSBpcyA2NCBieXRlcyBtYXBwaW5nIDQgbWFpbiBzdXJmYWNlCisJICogdGlsZXMuIFRo dXMgdGhlIHdpZHRoIG9mIHRoZSBDQ1MgdW5pdCBpcyA0KjMyPTEyOCBwaXhlbHMgb24gdGhlCisJ ICogbWFpbiBzdXJmYWNlLgorCSAqLworCWlmIChnZW4gPj0gMTIpCisJCXJldHVybiBESVZfUk9V TkRfVVAoaWd0X2J1Zl93aWR0aChidWYpLCAxMjgpICogNjQ7CisKKwlyZXR1cm4gRElWX1JPVU5E X1VQKGlndF9idWZfd2lkdGgoYnVmKSwgMTAyNCkgKiAxMjg7Cit9CisKKy8qKgorICogaWd0X2J1 Zl9hdXhfaGVpZ2h0OgorICogQGJ1ZjogdGhlIGktZy10IGJ1ZmZlciBvYmplY3QKKyAqIEBnZW46 IGRldmljZSBnZW5lcmF0aW9uCisgKgorICogQ29tcHV0ZXMgdGhlIGhlaWdodCBvZiBhdXggYnVm ZmVyIGRhdGEuCisgKgorICogUmV0dXJuczoKKyAqIFRoZSBoZWlnaHQgb2YgdGhlIGF1eCBidWZm ZXIgZGF0YS4KKyAqLwordW5zaWduZWQgaWd0X2J1Zl9hdXhfaGVpZ2h0KGludCBnZW4sIGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICpidWYpCit7CisJLyoKKwkgKiBHRU4xMis6IFRoZSBBVVggQ0NTIHVu aXQgc2l6ZSBpcyA2NCBieXRlcyBtYXBwaW5nIDQgbWFpbiBzdXJmYWNlCisJICogdGlsZXMuIFRo dXMgdGhlIGhlaWdodCBvZiB0aGUgQ0NTIHVuaXQgaXMgMzIgcGl4ZWwgcm93cyBvbiB0aGUgbWFp bgorCSAqIHN1cmZhY2UuCisJICovCisJaWYgKGdlbiA+PSAxMikKKwkJcmV0dXJuIERJVl9ST1VO RF9VUChpZ3RfYnVmX2hlaWdodChidWYpLCAzMik7CisKKwlyZXR1cm4gRElWX1JPVU5EX1VQKGln dF9idWZfaGVpZ2h0KGJ1ZiksIDUxMikgKiAzMjsKK30KKwogLyoKICAqIHBpdGNoZXMgYXJlIGlu IGJ5dGVzIGlmIHRoZSBzdXJmYWNlcyBhcmUgbGluZWFyLCBudW1iZXIgb2YgZHdvcmRzCiAgKiBv dGhlcndpc2UKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVs X2JhdGNoYnVmZmVyLmgKaW5kZXggMzdlM2FmZmUuLjU5YzI0MjkxIDEwMDY0NAotLS0gYS9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaAorKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaApAQCAtMjUx LDYgKzI1MSw4IEBAIHN0cnVjdCBpZ3RfYnVmIHsKIAogdW5zaWduZWQgaWd0X2J1Zl93aWR0aChj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKTsKIHVuc2lnbmVkIGlndF9idWZfaGVpZ2h0KGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICpidWYpOwordW5zaWduZWQgaWd0X2J1Zl9hdXhfd2lkdGgoaW50IGdl biwgY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1Zik7Cit1bnNpZ25lZCBpZ3RfYnVmX2F1eF9oZWln aHQoaW50IGdlbiwgY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1Zik7CiAKIHZvaWQgaWd0X2JsaXR0 ZXJfZmFzdF9jb3B5KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJCQkgICBjb25z dCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfZGVsdGEsCmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHku YwppbmRleCAxMzdjN2MxOC4uN2RmZjg2OGQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3Jl bmRlcl9jb3B5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwpAQCAtNDcsNiAr NDcsNyBAQAogI2luY2x1ZGUgPGRybS5oPgogCiAjaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCisj aW5jbHVkZSAicmVuZGVyY29weV9idWZtZ3IuaCIKIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJh c2ljIHRlc3QgZm9yIHRoZSByZW5kZXJfY29weSgpIGZ1bmN0aW9uLiIpOwogCkBAIC02MCw2ICs2 MSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo OwogCWlndF9yZW5kZXJfY29weWZ1bmNfdCByZW5kZXJfY29weTsKIAlpZ3RfdmVib3hfY29weWZ1 bmNfdCB2ZWJveF9jb3B5OworCXN0cnVjdCByZW5kZXJjb3B5X2J1Zm1nciAqYm1ncjsKIH0gZGF0 YV90Owogc3RhdGljIGludCBvcHRfZHVtcF9wbmcgPSBmYWxzZTsKIHN0YXRpYyBpbnQgY2hlY2tf YWxsX3BpeGVscyA9IGZhbHNlOwpAQCAtNzMsMTI5ICs3NSwxMyBAQCBzdGF0aWMgY29uc3QgY2hh ciAqbWFrZV9maWxlbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAlyZXR1cm4gYnVmOwogfQog Ci1zdGF0aWMgdm9pZCAqeWZfcHRyKHZvaWQgKnB0ciwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1 bnNpZ25lZCBpbnQgeSwKLQkJICAgIHVuc2lnbmVkIGludCBzdHJpZGUsIHVuc2lnbmVkIGludCBj cHApCitzdGF0aWMgdm9pZCAqYWxsb2NfYWxpZ25lZCh1aW50NjRfdCBzaXplKQogewotCWNvbnN0 IGludCB0aWxlX3NpemUgPSA0ICogMTAyNDsKLQljb25zdCBpbnQgdGlsZV93aWR0aCA9IDEyODsK LQlpbnQgcm93X3NpemUgPSAoc3RyaWRlIC8gdGlsZV93aWR0aCkgKiB0aWxlX3NpemU7CisJdm9p ZCAqcDsKIAotCXggKj0gY3BwOyAvKiBjb252ZXJ0IHRvIEJ5dGUgb2Zmc2V0ICovCisJaWd0X2Fz c2VydF9lcShwb3NpeF9tZW1hbGlnbigmcCwgMTYsIHNpemUpLCAwKTsKIAotCi0JLyoKLQkgKiBX aXRoaW4gYSA0ayBZZiB0aWxlLCB0aGUgYnl0ZSBzd2l6emxpbmcgcGF0dGVybiBpcwotCSAqIG1z Yi4uLi4uLmxzYgotCSAqIHh5eHl4eXl5eHh4eAotCSAqIFRoZSB0aWxlcyB0aGVtc2VsdmVzIGFy ZSBsYWlkIG91dCBpbiByb3cgbWFqb3Igb3JkZXIuCi0JICovCi0JcmV0dXJuIHB0ciArCi0JCSgo eCAmIDB4ZikgKiAxKSArIC8qIDR4MSBwaXhlbHMoMzJicHApID0gMTZCICovCi0JCSgoeSAmIDB4 MykgKiAxNikgKyAvKiA0eDQgcGl4ZWxzID0gNjRCICovCi0JCSgoKHkgJiAweDQpID4+IDIpICog NjQpICsgLyogMXgyIDY0QiBibG9ja3MgKi8KLQkJKCgoeCAmIDB4MTApID4+IDQpICogMTI4KSAr IC8qIDJ4MiA2NEIgYmxvY2tzID0gMjU2QiBibG9jayAqLwotCQkoKCh5ICYgMHg4KSA+PiAzKSAq IDI1NikgKyAvKiAyeDEgMjU2QiBibG9ja3MgKi8KLQkJKCgoeCAmIDB4MjApID4+IDUpICogNTEy KSArIC8qIDJ4MiAyNTZCIGJsb2NrcyAqLwotCQkoKCh5ICYgMHgxMCkgPj4gNCkgKiAxMDI0KSAr IC8qIDR4MiAyNTYgYmxvY2tzICovCi0JCSgoKHggJiAweDQwKSA+PiA2KSAqIDIwNDgpICsgLyog NHg0IDI1NkIgYmxvY2tzID0gNGsgdGlsZSAqLwotCQkoKCh4ICYgfjB4N2YpID4+IDcpICogdGls ZV9zaXplKSArIC8qIHJvdyBvZiB0aWxlcyAqLwotCQkoKCh5ICYgfjB4MWYpID4+IDUpICogcm93 X3NpemUpOwotfQotCi1zdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b195ZihkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCQkgICAgICBjb25zdCB1aW50MzJfdCAqbGluZWFyKQot ewotCWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOwotCWludCB3aWR0aCA9IGlndF9i dWZfd2lkdGgoYnVmKTsKLQl2b2lkICptYXA7Ci0KLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1f ZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVf R0VNX0RPTUFJTl9DUFUpOwotCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYt PmJvLT5oYW5kbGUsIDAsCi0JCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9X UklURSk7Ci0KLQlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0JCWZvciAoaW50 IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotCQkJdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAs IHgsIHksCi0JCQkJCSAgICAgICBidWYtPnN0cmlkZSwgYnVmLT5icHAgLyA4KTsKLQotCQkJKnB0 ciA9IGxpbmVhclt5ICogd2lkdGggKyB4XTsKLQkJfQotCX0KLQotCW11bm1hcChtYXAsIGJ1Zi0+ Ym8tPnNpemUpOwotfQotCi1zdGF0aWMgdm9pZCBjb3B5X3lmX3RvX2xpbmVhcihkYXRhX3QgKmRh dGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCQkgICAgICB1aW50MzJfdCAqbGluZWFyKQotewot CWludCBoZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpOwotCWludCB3aWR0aCA9IGlndF9idWZf d2lkdGgoYnVmKTsKLQl2b2lkICptYXA7Ci0KLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQs IGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOwotCW1h cCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsIDAsCi0JCQkg ICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKLQotCWZvciAoaW50IHkgPSAwOyB5IDwgaGVp Z2h0OyB5KyspIHsKLQkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0JCQl1aW50 MzJfdCAqcHRyID0geWZfcHRyKG1hcCwgeCwgeSwKLQkJCQkJICAgICAgIGJ1Zi0+c3RyaWRlLCBi dWYtPmJwcCAvIDgpOwotCi0JCQlsaW5lYXJbeSAqIHdpZHRoICsgeF0gPSAqcHRyOwotCQl9Ci0J fQotCi0JbXVubWFwKG1hcCwgYnVmLT5iby0+c2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvcHlf bGluZWFyX3RvX2d0dChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCQkgICAg ICAgY29uc3QgdWludDMyX3QgKmxpbmVhcikKLXsKLQl2b2lkICptYXA7Ci0KLQlnZW1fc2V0X2Rv bWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJICAgICAgIEk5MTVfR0VNX0RP TUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwotCi0JbWFwID0gZ2VtX21tYXBfX2d0dChk YXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJCSAgICBidWYtPmJvLT5zaXplLCBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFKTsKLQotCW1lbWNweShtYXAsIGxpbmVhciwgYnVmLT5iby0+c2l6 ZSk7Ci0KLQltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKLX0KLQotc3RhdGljIHZvaWQgY29w eV9ndHRfdG9fbGluZWFyKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCSAg ICAgICB1aW50MzJfdCAqbGluZWFyKQotewotCXZvaWQgKm1hcDsKLQotCWdlbV9zZXRfZG9tYWlu KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0dUVCwgMCk7Ci0KLQltYXAgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+ aGFuZGxlLAotCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCk7Ci0KLQlpZ3RfbWVtY3B5 X2Zyb21fd2MobGluZWFyLCBtYXAsIGJ1Zi0+Ym8tPnNpemUpOwotCi0JbXVubWFwKG1hcCwgYnVm LT5iby0+c2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkICpsaW5lYXJfY29weShkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYpCi17Ci0Jdm9pZCAqbGluZWFyOwotCi0JLyogMTZCIGFsaWdu bWVudCBhbGxvd3MgdG8gcG90ZW50aWFsbHkgbWFrZSB1c2Ugb2YgU1NFNCBmb3IgY29weWluZyAq LwotCWlndF9hc3NlcnRfZXEocG9zaXhfbWVtYWxpZ24oJmxpbmVhciwgMTYsIGJ1Zi0+Ym8tPnNp emUpLCAwKTsKLQotCWlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikKLQkJY29weV95 Zl90b19saW5lYXIoZGF0YSwgYnVmLCBsaW5lYXIpOwotCWVsc2UKLQkJY29weV9ndHRfdG9fbGlu ZWFyKGRhdGEsIGJ1ZiwgbGluZWFyKTsKLQotCXJldHVybiBsaW5lYXI7CisJcmV0dXJuIHA7CiB9 CiAKIHN0YXRpYyB2b2lkCkBAIC0yMDcsMTMgKzkzLDEzIEBAIGNvcHlfZnJvbV9saW5lYXJfYnVm KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKnNyYywgc3RydWN0IGlndF9idWYgKmRzdCkK IAogCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLAogCQkgICAg ICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Ci0JbGluZWFyID0gZ2VtX21tYXBfX2NwdShkYXRh LT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKLQkJCSAgICAgICBzcmMtPmJvLT5zaXplLCBQ Uk9UX1JFQUQpOworCWxpbmVhciA9IF9fZ2VtX21tYXBfb2Zmc2V0X19jcHUoZGF0YS0+ZHJtX2Zk LCBzcmMtPmJvLT5oYW5kbGUsIDAsCisJCQkJCXNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisJ aWYgKCFsaW5lYXIpCisJCWxpbmVhciA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBzcmMt PmJvLT5oYW5kbGUsIDAsCisJCQkJICAgICAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CiAK LQlpZiAoZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCi0JCWNvcHlfbGluZWFyX3RvX3lm KGRhdGEsIGRzdCwgbGluZWFyKTsKLQllbHNlCi0JCWNvcHlfbGluZWFyX3RvX2d0dChkYXRhLCBk c3QsIGxpbmVhcik7CisJbGluZWFyX3RvX2lndF9idWYoZGF0YS0+Ym1nciwgZHN0LCBsaW5lYXIp OwogCiAJbXVubWFwKGxpbmVhciwgc3JjLT5iby0+c2l6ZSk7CiB9CkBAIC0yMjUsNyArMTExLDgg QEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGlndF9idWYgKmJ1ZiwKIAljYWlyb19zdGF0dXNfdCByZXQ7CiAJdm9pZCAqbGluZWFyOwog Ci0JbGluZWFyID0gbGluZWFyX2NvcHkoZGF0YSwgYnVmKTsKKwlsaW5lYXIgPSBhbGxvY19hbGln bmVkKGJ1Zi0+Ym8tPnNpemUpOworCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIGJ1Ziwg bGluZWFyKTsKIAogCXN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0 YShsaW5lYXIsCiAJCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdCMjQsCkBAIC0yMzksNDUgKzEy NiwyMCBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YV90ICpkYXRh LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCWZyZWUobGluZWFyKTsKIH0KIAotc3RhdGljIGludCBz Y3JhdGNoX2J1Zl9hdXhfd2lkdGgodWludDMyX3QgZGV2aWQsIGNvbnN0IHN0cnVjdCBpZ3RfYnVm ICpidWYpCi17Ci0JLyoKLQkgKiBHRU4xMis6IFRoZSBBVVggQ0NTIHVuaXQgc2l6ZSBpcyA2NCBi eXRlcyBtYXBwaW5nIDQgbWFpbiBzdXJmYWNlCi0JICogdGlsZXMuIFRodXMgdGhlIHdpZHRoIG9m IHRoZSBDQ1MgdW5pdCBpcyA0KjMyPTEyOCBwaXhlbHMgb24gdGhlCi0JICogbWFpbiBzdXJmYWNl LgotCSAqLwotCWlmIChpbnRlbF9nZW4oZGV2aWQpID49IDEyKQotCQlyZXR1cm4gRElWX1JPVU5E X1VQKGlndF9idWZfd2lkdGgoYnVmKSwgMTI4KSAqIDY0OwotCi0JcmV0dXJuIERJVl9ST1VORF9V UChpZ3RfYnVmX3dpZHRoKGJ1ZiksIDEwMjQpICogMTI4OwotfQotCi1zdGF0aWMgaW50IHNjcmF0 Y2hfYnVmX2F1eF9oZWlnaHQodWludDMyX3QgZGV2aWQsIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpi dWYpCi17Ci0JLyoKLQkgKiBHRU4xMis6IFRoZSBBVVggQ0NTIHVuaXQgc2l6ZSBpcyA2NCBieXRl cyBtYXBwaW5nIDQgbWFpbiBzdXJmYWNlCi0JICogdGlsZXMuIFRodXMgdGhlIGhlaWdodCBvZiB0 aGUgQ0NTIHVuaXQgaXMgMzIgcGl4ZWwgcm93cyBvbiB0aGUgbWFpbgotCSAqIHN1cmZhY2UuCi0J ICovCi0JaWYgKGludGVsX2dlbihkZXZpZCkgPj0gMTIpCi0JCXJldHVybiBESVZfUk9VTkRfVVAo aWd0X2J1Zl9oZWlnaHQoYnVmKSwgMzIpOwotCi0JcmV0dXJuIERJVl9ST1VORF9VUChpZ3RfYnVm X2hlaWdodChidWYpLCA1MTIpICogMzI7Ci19Ci0KIHN0YXRpYyB2b2lkICpsaW5lYXJfY29weV9h dXgoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQogewogCXZvaWQgKm1hcCwgKmxp bmVhcjsKLQlpbnQgYXV4X3NpemUgPSBzY3JhdGNoX2J1Zl9hdXhfd2lkdGgoZGF0YS0+ZGV2aWQs IGJ1ZikgKgotCQlzY3JhdGNoX2J1Zl9hdXhfaGVpZ2h0KGRhdGEtPmRldmlkLCBidWYpOworCWlu dCBnZW4gPSBpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpOworCWludCBhdXhfc2l6ZSA9IGlndF9idWZf YXV4X3dpZHRoKGdlbiwgYnVmKSAqCisJCWlndF9idWZfYXV4X2hlaWdodChnZW4sIGJ1Zik7CiAK LQlpZ3RfYXNzZXJ0X2VxKHBvc2l4X21lbWFsaWduKCZsaW5lYXIsIDE2LCBhdXhfc2l6ZSksIDAp OworCWxpbmVhciA9IGFsbG9jX2FsaWduZWQoYXV4X3NpemUpOwogCiAJZ2VtX3NldF9kb21haW4o ZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5f R1RULCAwKTsKIAotCW1hcCA9IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5o YW5kbGUsCi0JCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKKwltYXAgPSBnZW1fbW1h cF9fZGV2aWNlX2NvaGVyZW50KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLCAwLAorCQkJ CQlidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwogCiAJaWd0X21lbWNweV9mcm9tX3djKGxpbmVh ciwgbWFwICsgYnVmLT5hdXgub2Zmc2V0LCBhdXhfc2l6ZSk7CiAKQEAgLTI5MywxMyArMTU1LDE1 IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2F1eF93cml0ZV90b19wbmcoZGF0YV90ICpkYXRh LAogCWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKIAljYWlyb19zdGF0dXNfdCByZXQ7CiAJdm9p ZCAqbGluZWFyOworCWludCBnZW4gPSBpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpOworCXVuc2lnbmVk IGludCBhdXhfd2lkdGggPSBpZ3RfYnVmX2F1eF93aWR0aChnZW4sIGJ1Zik7CisJdW5zaWduZWQg aW50IGF1eF9oZWlnaHQgPSBpZ3RfYnVmX2F1eF9oZWlnaHQoZ2VuLCBidWYpOwogCiAJbGluZWFy ID0gbGluZWFyX2NvcHlfYXV4KGRhdGEsIGJ1Zik7CiAKIAlzdXJmYWNlID0gY2Fpcm9faW1hZ2Vf c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEobGluZWFyLAogCQkJCQkJICAgICAgQ0FJUk9fRk9STUFU X0E4LAotCQkJCQkJICAgICAgc2NyYXRjaF9idWZfYXV4X3dpZHRoKGRhdGEtPmRldmlkLCBidWYp LAotCQkJCQkJICAgICAgc2NyYXRjaF9idWZfYXV4X2hlaWdodChkYXRhLT5kZXZpZCwgYnVmKSwK KwkJCQkJCSAgICAgIGF1eF93aWR0aCwgYXV4X2hlaWdodCwKIAkJCQkJCSAgICAgIGJ1Zi0+YXV4 LnN0cmlkZSk7CiAJcmV0ID0gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmcoc3VyZmFjZSwgbWFr ZV9maWxlbmFtZShmaWxlbmFtZSkpOwogCWlndF9hc3NlcnQocmV0ID09IENBSVJPX1NUQVRVU19T VUNDRVNTKTsKQEAgLTMxOCw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3 X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCWNhaXJvX3QgKmNy OwogCXZvaWQgKmxpbmVhcjsKIAotCWxpbmVhciA9IGxpbmVhcl9jb3B5KGRhdGEsIGJ1Zik7CisJ bGluZWFyID0gYWxsb2NfYWxpZ25lZChidWYtPmJvLT5zaXplKTsKIAogCXN1cmZhY2UgPSBjYWly b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShsaW5lYXIsCiAJCQkJCQkgICAgICBDQUlS T19GT1JNQVRfUkdCMjQsCkBAIC0zNTksMTAgKzIyMyw3IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hf YnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAKIAlj YWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CiAKLQlpZiAoYnVmLT50aWxpbmcgPT0gSTkx NV9USUxJTkdfWWYpCi0JCWNvcHlfbGluZWFyX3RvX3lmKGRhdGEsIGJ1ZiwgbGluZWFyKTsKLQll bHNlCi0JCWNvcHlfbGluZWFyX3RvX2d0dChkYXRhLCBidWYsIGxpbmVhcik7CisJbGluZWFyX3Rv X2lndF9idWYoZGF0YS0+Ym1nciwgYnVmLCBsaW5lYXIpOwogCiAJZnJlZShsaW5lYXIpOwogfQpA QCAtMzc1LDYgKzIzNiw3IEBAIHNjcmF0Y2hfYnVmX2NvcHkoZGF0YV90ICpkYXRhLAogCWludCB3 aWR0aCA9IGlndF9idWZfd2lkdGgoZHN0KTsKIAlpbnQgaGVpZ2h0ICA9IGlndF9idWZfaGVpZ2h0 KGRzdCk7CiAJdWludDMyX3QgKmxpbmVhcl9kc3Q7CisJdWludDMyX3QgKmxpbmVhcl9zcmM7CiAK IAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgoZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsK IAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0KGRzdCksIGlndF9idWZfaGVpZ2h0KHNyYykp OwpAQCAtMzg3LDQ5ICsyNDksMjAgQEAgc2NyYXRjaF9idWZfY29weShkYXRhX3QgKmRhdGEsCiAJ aCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7CiAJaCA9IG1pbihoLCBoZWlnaHQgLSBkeSk7CiAKLQln ZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGRzdC0+Ym8tPmhhbmRsZSwKLQkJICAgICAgIEk5 MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwotCWxpbmVhcl9kc3QgPSBn ZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgZHN0LT5iby0+aGFuZGxlLAotCQkJCSAgIGRzdC0+ Ym8tPnNpemUsIFBST1RfV1JJVEUpOworCWxpbmVhcl9kc3QgPSBhbGxvY19hbGlnbmVkKGRzdC0+ Ym8tPnNpemUpOworCWxpbmVhcl9zcmMgPSBhbGxvY19hbGlnbmVkKHNyYy0+Ym8tPnNpemUpOwor CWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIHNyYywgbGluZWFyX3NyYyk7CisJaWd0X2J1 Zl90b19saW5lYXIoZGF0YS0+Ym1nciwgZHN0LCBsaW5lYXJfZHN0KTsKIAotCWlmIChzcmMtPnRp bGluZyA9PSBJOTE1X1RJTElOR19ZZikgewotCQl2b2lkICptYXA7Ci0KLQkJZ2VtX3NldF9kb21h aW4oZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCi0JCQkgICAgICAgSTkxNV9HRU1fRE9N QUlOX0NQVSwgMCk7Ci0JCW1hcCA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJv LT5oYW5kbGUsIDAsCi0JCQkJICAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7Ci0KLQkJZm9y IChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKLQkJCWZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsr KSB7Ci0JCQkJY29uc3QgdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHN4K3gsIHN5K3ksCi0J CQkJCQkJICAgICBzcmMtPnN0cmlkZSwKLQkJCQkJCQkgICAgIHNyYy0+YnBwIC8gOCk7Ci0KLQkJ CQlsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHgreF0gPSAqcHRyOwotCQkJfQotCQl9Ci0K LQkJbXVubWFwKG1hcCwgc3JjLT5iby0+c2l6ZSk7Ci0JfSBlbHNlIHsKLQkJdWludDMyX3QgKmxp bmVhcl9zcmM7Ci0KLQkJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5k bGUsCi0JCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Ci0KLQkJbGluZWFyX3NyYyA9 IGdlbV9tbWFwX19ndHQoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsCi0JCQkJCSAgIHNy Yy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7Ci0KLQkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5Kysp IHsKLQkJCWlndF9tZW1jcHlfZnJvbV93YygmbGluZWFyX2RzdFsoZHkreSkgKiB3aWR0aCArIGR4 XSwKLQkJCQkJICAgJmxpbmVhcl9zcmNbKHN5K3kpICogd2lkdGggKyBzeF0sCi0JCQkJCSAgIHcg KiAoc3JjLT5icHAgLyA4KSk7Ci0JCX0KLQotCQltdW5tYXAobGluZWFyX3NyYywgc3JjLT5iby0+ c2l6ZSk7CisJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKwkJbWVtY3B5KCZsaW5lYXJf ZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAorCQkJCSZsaW5lYXJfc3JjWyhzeSt5KSAqIHdpZHRo ICsgc3hdLAorCQkJCXcgKiAoc3JjLT5icHAgLyA4KSk7CiAJfQorCWZyZWUobGluZWFyX3NyYyk7 CiAKLQltdW5tYXAobGluZWFyX2RzdCwgZHN0LT5iby0+c2l6ZSk7CisJbGluZWFyX3RvX2lndF9i dWYoZGF0YS0+Ym1nciwgZHN0LCBsaW5lYXJfZHN0KTsKKwlmcmVlKGxpbmVhcl9kc3QpOwogfQog CiBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9i dWYgKmJ1ZiwKQEAgLTQzNyw3NSArMjcwLDEwIEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2lu aXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCQkJICAgICB1aW50MzJfdCBy ZXFfdGlsaW5nLAogCQkJICAgICBlbnVtIGk5MTVfY29tcHJlc3Npb24gY29tcHJlc3Npb24pCiB7 Ci0JdWludDMyX3QgdGlsaW5nID0gcmVxX3RpbGluZzsKLQl1bnNpZ25lZCBsb25nIHBpdGNoOwog CWludCBicHAgPSAzMjsKIAotCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7Ci0KLQlpZiAo Y29tcHJlc3Npb24gIT0gSTkxNV9DT01QUkVTU0lPTl9OT05FKSB7Ci0JCWludCBhdXhfd2lkdGgs IGF1eF9oZWlnaHQ7Ci0JCWludCBzaXplOwotCi0JCWlndF9yZXF1aXJlKGludGVsX2dlbihkYXRh LT5kZXZpZCkgPj0gOSk7Ci0JCWlndF9hc3NlcnQodGlsaW5nID09IEk5MTVfVElMSU5HX1kgfHwK LQkJCSAgIHRpbGluZyA9PSBJOTE1X1RJTElOR19ZZik7Ci0KLQkJLyoKLQkJICogT24gR0VOMTIr IHdlIGFsaWduIHRoZSBtYWluIHN1cmZhY2UgdG8gNCAqIDQgbWFpbiBzdXJmYWNlCi0JCSAqIHRp bGVzLCB3aGljaCBpcyA2NGtCLiBUaGVzZSAxNiB0aWxlcyBhcmUgbWFwcGVkIGJ5IDQgQVVYCi0J CSAqIENDUyB1bml0cywgdGhhdCBpcyA0ICogNjQgYnl0ZXMuIFRoZXNlIDQgQ0NTIHVuaXRzIGFy ZSBpbgotCQkgKiB0dXJuIG1hcHBlZCBieSBvbmUgTDEgQVVYIHBhZ2UgdGFibGUgZW50cnkuCi0J CSAqLwotCQlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA+PSAxMikKLQkJCWJ1Zi0+c3RyaWRl ID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCAqIDQpOwotCQllbHNlCi0JCQlidWYtPnN0 cmlkZSA9IEFMSUdOKHdpZHRoICogKGJwcCAvIDgpLCAxMjgpOwotCi0JCWlmIChpbnRlbF9nZW4o ZGF0YS0+ZGV2aWQpID49IDEyKQotCQkJaGVpZ2h0ID0gQUxJR04oaGVpZ2h0LCA0ICogMzIpOwot Ci0JCWJ1Zi0+c2l6ZSA9IGJ1Zi0+c3RyaWRlICogaGVpZ2h0OwotCQlidWYtPnRpbGluZyA9IHRp bGluZzsKLQkJYnVmLT5icHAgPSBicHA7Ci0KLQkJYXV4X3dpZHRoID0gc2NyYXRjaF9idWZfYXV4 X3dpZHRoKGRhdGEtPmRldmlkLCBidWYpOwotCQlhdXhfaGVpZ2h0ID0gc2NyYXRjaF9idWZfYXV4 X2hlaWdodChkYXRhLT5kZXZpZCwgYnVmKTsKLQotCQlidWYtPmNvbXByZXNzaW9uID0gY29tcHJl c3Npb247Ci0JCWJ1Zi0+YXV4Lm9mZnNldCA9IGJ1Zi0+c3RyaWRlICogQUxJR04oaGVpZ2h0LCAz Mik7Ci0JCWJ1Zi0+YXV4LnN0cmlkZSA9IGF1eF93aWR0aDsKLQotCQlzaXplID0gYnVmLT5hdXgu b2Zmc2V0ICsgYXV4X3dpZHRoICogYXV4X2hlaWdodDsKLQotCQlidWYtPmJvID0gZHJtX2ludGVs X2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwotCi0JCWlmICh0aWxpbmcg PT0gSTkxNV9USUxJTkdfWSkgewotCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywg JnRpbGluZywgYnVmLT5zdHJpZGUpOwotCQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxp bmcpOwotCQl9Ci0JfSBlbHNlIGlmIChyZXFfdGlsaW5nID09IEk5MTVfVElMSU5HX1lmKSB7Ci0J CWludCBzaXplOwotCi0JCWJ1Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEy OCk7Ci0JCWJ1Zi0+c2l6ZSA9IGJ1Zi0+c3RyaWRlICogaGVpZ2h0OwotCQlidWYtPnRpbGluZyA9 IHRpbGluZzsKLQkJYnVmLT5icHAgPSBicHA7Ci0KLQkJc2l6ZSA9IGJ1Zi0+c3RyaWRlICogQUxJ R04oaGVpZ2h0LCAzMik7Ci0KLQkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5i dWZtZ3IsICIiLCBzaXplLCA0MDk2KTsKLQl9IGVsc2UgewotCQlidWYtPmJvID0gZHJtX2ludGVs X2JvX2FsbG9jX3RpbGVkKGRhdGEtPmJ1Zm1nciwgIiIsCi0JCQkJCQkgICB3aWR0aCwgaGVpZ2h0 LCBicHAgLyA4LAotCQkJCQkJICAgJnRpbGluZywgJnBpdGNoLCAwKTsKLQkJaWd0X2Fzc2VydF9l cSh0aWxpbmcsIHJlcV90aWxpbmcpOwotCi0JCWJ1Zi0+c3RyaWRlID0gcGl0Y2g7Ci0JCWJ1Zi0+ dGlsaW5nID0gdGlsaW5nOwotCQlidWYtPnNpemUgPSBwaXRjaCAqIGhlaWdodDsKLQkJYnVmLT5i cHAgPSBicHA7Ci0JfQorCWlndF9idWZfaW5pdChkYXRhLT5ibWdyLCBidWYsIHdpZHRoLCBoZWln aHQsIGJwcCwgcmVxX3RpbGluZywKKwkJICAgICBjb21wcmVzc2lvbik7CiAKIAlpZ3RfYXNzZXJ0 KGlndF9idWZfd2lkdGgoYnVmKSA9PSB3aWR0aCk7CiAJaWd0X2Fzc2VydChpZ3RfYnVmX2hlaWdo dChidWYpID09IGhlaWdodCk7CkBAIC01MzAsMTEgKzI5OCwxMyBAQCBzY3JhdGNoX2J1Zl9jaGVj ayhkYXRhX3QgKmRhdGEsCiAJaWd0X2Fzc2VydF9lcShpZ3RfYnVmX2hlaWdodChidWYpLCBpZ3Rf YnVmX2hlaWdodChyZWYpKTsKIAlpZ3RfYXNzZXJ0X2VxKGJ1Zi0+Ym8tPnNpemUsIHJlZi0+Ym8t PnNpemUpOwogCi0JbGluZWFyID0gbGluZWFyX2NvcHkoZGF0YSwgYnVmKTsKKwlsaW5lYXIgPSBh bGxvY19hbGlnbmVkKGJ1Zi0+Ym8tPnNpemUpOworCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJt Z3IsIGJ1ZiwgbGluZWFyKTsKIAlidWZfdmFsID0gbGluZWFyW3kgKiB3aWR0aCArIHhdOwogCWZy ZWUobGluZWFyKTsKIAotCWxpbmVhciA9IGxpbmVhcl9jb3B5KGRhdGEsIHJlZik7CisJbGluZWFy ID0gYWxsb2NfYWxpZ25lZChyZWYtPmJvLT5zaXplKTsKKwlpZ3RfYnVmX3RvX2xpbmVhcihkYXRh LT5ibWdyLCBidWYsIGxpbmVhcik7CiAJcmVmX3ZhbCA9IGxpbmVhclt5ICogd2lkdGggKyB4XTsK IAlmcmVlKGxpbmVhcik7CiAKQEAgLTU1Niw4ICszMjYsMTAgQEAgc2NyYXRjaF9idWZfY2hlY2tf YWxsKGRhdGFfdCAqZGF0YSwKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0KGJ1ZiksIGln dF9idWZfaGVpZ2h0KHJlZikpOwogCWlndF9hc3NlcnRfZXEoYnVmLT5iby0+c2l6ZSwgcmVmLT5i by0+c2l6ZSk7CiAKLQlsaW5lYXJfYnVmID0gbGluZWFyX2NvcHkoZGF0YSwgYnVmKTsKLQlsaW5l YXJfcmVmID0gbGluZWFyX2NvcHkoZGF0YSwgcmVmKTsKKwlsaW5lYXJfYnVmID0gYWxsb2NfYWxp Z25lZChidWYtPmJvLT5zaXplKTsKKwlsaW5lYXJfcmVmID0gYWxsb2NfYWxpZ25lZChyZWYtPmJv LT5zaXplKTsKKwlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdyLCBidWYsIGxpbmVhcl9idWYp OworCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIHJlZiwgbGluZWFyX3JlZik7CiAKIAlm b3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CiAJCWZvciAoaW50IHggPSAwOyB4IDwg d2lkdGg7IHgrKykgewpAQCAtNTc3LDggKzM0OSw5IEBAIHNjcmF0Y2hfYnVmX2NoZWNrX2FsbChk YXRhX3QgKmRhdGEsCiBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YV90ICpk YXRhLAogCQkJCSAgc3RydWN0IGlndF9idWYgKmJ1ZikKIHsKLQlpbnQgYXV4X3NpemUgPSBzY3Jh dGNoX2J1Zl9hdXhfd2lkdGgoZGF0YS0+ZGV2aWQsIGJ1ZikgKgotCQlzY3JhdGNoX2J1Zl9hdXhf aGVpZ2h0KGRhdGEtPmRldmlkLCBidWYpOworCWludCBnZW4gPSBpbnRlbF9nZW4oZGF0YS0+ZGV2 aWQpOworCWludCBhdXhfc2l6ZSA9IGlndF9idWZfYXV4X3dpZHRoKGdlbiwgYnVmKSAqCisJCWln dF9idWZfYXV4X2hlaWdodChnZW4sIGJ1Zik7CiAJdWludDhfdCAqbGluZWFyOwogCWludCBpOwog CkBAIC02NjgsNiArNDQxLDcgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQz Ml90IHNyY190aWxpbmcsIHVpbnQzMl90IGRzdF90aWxpbmcsCiAJCQkJIEk5MTVfQ09NUFJFU1NJ T05fTk9ORSk7CiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmZHN0LCBXSURUSCwgSEVJR0hULCBk c3RfdGlsaW5nLAogCQkJIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisKIAlpZiAoc3JjX2NvbXBy ZXNzZWQpCiAJCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJnNyY19jY3MsIFdJRFRILCBIRUlHSFQs CiAJCQkJIHNyY190aWxpbmcsIHNyY19jb21wcmVzc2lvbik7CkBAIC02ODAsNyArNDU0LDggQEAg c3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHNyY190aWxpbmcsIHVpbnQz Ml90IGRzdF90aWxpbmcsCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCiAJCXNj cmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhLCAmc3JjW2ldLmJ1ZiwKIAkJCQkJIDAsIDAsIFdJ RFRILCBIRUlHSFQsCi0JCQkJCSAwLCAwLCBXSURUSCwgSEVJR0hULCB0cnVlKTsKKwkJCQkJIDAs IDAsIFdJRFRILCBIRUlHSFQsIChpICUgMikpOworCiAJc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJu KGRhdGEsICZkc3QsCiAJCQkJIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJIDAsIDAsIFdJRFRI LCBIRUlHSFQsIGZhbHNlKTsKQEAgLTEwNTEsNiArODI2LDkgQEAgaWd0X21haW5fYXJncygiZGEi LCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsIE5VTEwpCiAJCWRhdGEuYmF0Y2ggPSBpbnRl bF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLmJ1Zm1nciwgZGF0YS5kZXZpZCk7CiAJCWlndF9hc3Nl cnQoZGF0YS5iYXRjaCk7CiAKKwkJZGF0YS5ibWdyID0gcmVuZGVyY29weV9idWZtZ3JfY3JlYXRl KGRhdGEuZHJtX2ZkLCBkYXRhLmJ1Zm1ncik7CisJCWlndF9hc3NlcnQoZGF0YS5ibWdyKTsKKwog CQlpZ3RfZm9ya19oYW5nX2RldGVjdG9yKGRhdGEuZHJtX2ZkKTsKIAl9CiAKQEAgLTExMDQsNSAr ODgyLDYgQEAgaWd0X21haW5fYXJncygiZGEiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIs IE5VTEwpCiAJCWlndF9zdG9wX2hhbmdfZGV0ZWN0b3IoKTsKIAkJaW50ZWxfYmF0Y2hidWZmZXJf ZnJlZShkYXRhLmJhdGNoKTsKIAkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdy KTsKKwkJcmVuZGVyY29weV9idWZtZ3JfZGVzdHJveShkYXRhLmJtZ3IpOwogCX0KIH0KLS0gCjIu MjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==