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 76E716E48E for ; Wed, 8 Jan 2020 12:10:54 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 8 Jan 2020 13:10:42 +0100 Message-Id: <20200108121042.30431-5-zbigniew.kempczynski@intel.com> In-Reply-To: <20200108121042.30431-1-zbigniew.kempczynski@intel.com> References: <20200108121042.30431-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6 4/4] 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 LS0tCiB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIHwgMzcwICsrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMjk3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMg Yi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCmluZGV4IDVhYmIyMDM2Li4xMmI0NTE2NSAx MDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYworKysgYi90ZXN0cy9pOTE1 L2dlbV9yZW5kZXJfY29weS5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8ZHJtLmg+CiAK ICNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKKyNpbmNsdWRlICJyZW5kZXJjb3B5X2J1Zm1nci5o IgogCiBJR1RfVEVTVF9ERVNDUklQVElPTigiQmFzaWMgdGVzdCBmb3IgdGhlIHJlbmRlcl9jb3B5 KCkgZnVuY3Rpb24uIik7CiAKQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCXN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CiAJaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJl bmRlcl9jb3B5OwogCWlndF92ZWJveF9jb3B5ZnVuY190IHZlYm94X2NvcHk7CisJc3RydWN0IHJl bmRlcmNvcHlfYnVmbWdyICpibWdyOwogfSBkYXRhX3Q7CiBzdGF0aWMgaW50IG9wdF9kdW1wX3Bu ZyA9IGZhbHNlOwogc3RhdGljIGludCBjaGVja19hbGxfcGl4ZWxzID0gZmFsc2U7CkBAIC03Mywx MzEgKzc1LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICptYWtlX2ZpbGVuYW1lKGNvbnN0IGNoYXIg KmZpbGVuYW1lKQogCXJldHVybiBidWY7CiB9CiAKLXN0YXRpYyB2b2lkICp5Zl9wdHIodm9pZCAq cHRyLAotCQkgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkgICAgdW5zaWdu ZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNwcCkKK3N0YXRpYyB2b2lkICphbGxvY19hbGln bmVkKHVpbnQ2NF90IHNpemUpCiB7Ci0JY29uc3QgaW50IHRpbGVfc2l6ZSA9IDQgKiAxMDI0Owot CWNvbnN0IGludCB0aWxlX3dpZHRoID0gMTI4OwotCWludCByb3dfc2l6ZSA9IChzdHJpZGUgLyB0 aWxlX3dpZHRoKSAqIHRpbGVfc2l6ZTsKKwl2b2lkICpwOwogCi0JeCAqPSBjcHA7IC8qIGNvbnZl cnQgdG8gQnl0ZSBvZmZzZXQgKi8KKwlpZ3RfYXNzZXJ0X2VxKHBvc2l4X21lbWFsaWduKCZwLCAx Niwgc2l6ZSksIDApOwogCi0KLQkvKgotCSAqIFdpdGhpbiBhIDRrIFlmIHRpbGUsIHRoZSBieXRl IHN3aXp6bGluZyBwYXR0ZXJuIGlzCi0JICogbXNiLi4uLi4ubHNiCi0JICogeHl4eXh5eXl4eHh4 Ci0JICogVGhlIHRpbGVzIHRoZW1zZWx2ZXMgYXJlIGxhaWQgb3V0IGluIHJvdyBtYWpvciBvcmRl ci4KLQkgKi8KLQlyZXR1cm4gcHRyICsKLQkJKCh4ICYgMHhmKSAqIDEpICsgLyogNHgxIHBpeGVs cygzMmJwcCkgPSAxNkIgKi8KLQkJKCh5ICYgMHgzKSAqIDE2KSArIC8qIDR4NCBwaXhlbHMgPSA2 NEIgKi8KLQkJKCgoeSAmIDB4NCkgPj4gMikgKiA2NCkgKyAvKiAxeDIgNjRCIGJsb2NrcyAqLwot CQkoKCh4ICYgMHgxMCkgPj4gNCkgKiAxMjgpICsgLyogMngyIDY0QiBibG9ja3MgPSAyNTZCIGJs b2NrICovCi0JCSgoKHkgJiAweDgpID4+IDMpICogMjU2KSArIC8qIDJ4MSAyNTZCIGJsb2NrcyAq LwotCQkoKCh4ICYgMHgyMCkgPj4gNSkgKiA1MTIpICsgLyogMngyIDI1NkIgYmxvY2tzICovCi0J CSgoKHkgJiAweDEwKSA+PiA0KSAqIDEwMjQpICsgLyogNHgyIDI1NiBibG9ja3MgKi8KLQkJKCgo eCAmIDB4NDApID4+IDYpICogMjA0OCkgKyAvKiA0eDQgMjU2QiBibG9ja3MgPSA0ayB0aWxlICov Ci0JCSgoKHggJiB+MHg3ZikgPj4gNykgKiB0aWxlX3NpemUpICsgLyogcm93IG9mIHRpbGVzICov Ci0JCSgoKHkgJiB+MHgxZikgPj4gNSkgKiByb3dfc2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNv cHlfbGluZWFyX3RvX3lmKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCSAg ICAgIGNvbnN0IHVpbnQzMl90ICpsaW5lYXIpCi17Ci0JaW50IGhlaWdodCA9IGlndF9idWZfaGVp Z2h0KGJ1Zik7Ci0JaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0aChidWYpOwotCXZvaWQgKm1hcDsK LQotCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkgICAg ICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7Ci0JbWFwID0gZ2Vt X21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKLQkJCSAgICBidWYt PmJvLT5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKLQotCWZvciAoaW50IHkgPSAwOyB5 IDwgaGVpZ2h0OyB5KyspIHsKLQkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0J CQl1aW50MzJfdCAqcHRyID0geWZfcHRyKG1hcCwgeCwgeSwKLQkJCQkJICAgICAgIGJ1Zi0+c3Vy ZmFjZVswXS5zdHJpZGUsCi0JCQkJCSAgICAgICBidWYtPmJwcCAvIDgpOwotCi0JCQkqcHRyID0g bGluZWFyW3kgKiB3aWR0aCArIHhdOwotCQl9Ci0JfQotCi0JbXVubWFwKG1hcCwgYnVmLT5iby0+ c2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvcHlfeWZfdG9fbGluZWFyKGRhdGFfdCAqZGF0YSwg c3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCSAgICAgIHVpbnQzMl90ICpsaW5lYXIpCi17Ci0JaW50 IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7Ci0JaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0 aChidWYpOwotCXZvaWQgKm1hcDsKLQotCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVm LT5iby0+aGFuZGxlLAotCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Ci0JbWFwID0g Z2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKLQkJCSAgICBi dWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwotCi0JZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7 IHkrKykgewotCQlmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLQkJCXVpbnQzMl90 ICpwdHIgPSB5Zl9wdHIobWFwLCB4LCB5LAotCQkJCQkgICAgICAgYnVmLT5zdXJmYWNlWzBdLnN0 cmlkZSwKLQkJCQkJICAgICAgIGJ1Zi0+YnBwIC8gOCk7Ci0KLQkJCWxpbmVhclt5ICogd2lkdGgg KyB4XSA9ICpwdHI7Ci0JCX0KLQl9Ci0KLQltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKLX0K LQotc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9fZ3R0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGln dF9idWYgKmJ1ZiwKLQkJCSAgICAgICBjb25zdCB1aW50MzJfdCAqbGluZWFyKQotewotCXZvaWQg Km1hcDsKLQotCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAot CQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Ci0KLQlt YXAgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkJICAg IGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwotCi0JbWVtY3B5KG1hcCwg bGluZWFyLCBidWYtPmJvLT5zaXplKTsKLQotCW11bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwot fQotCi1zdGF0aWMgdm9pZCBjb3B5X2d0dF90b19saW5lYXIoZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLAotCQkJICAgICAgIHVpbnQzMl90ICpsaW5lYXIpCi17Ci0Jdm9pZCAqbWFw OwotCi0JZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCi0JCSAg ICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKLQotCW1hcCA9IGdlbV9tbWFwX19ndHQoZGF0 YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsCi0JCQkgICAgYnVmLT5iby0+c2l6ZSwgUFJPVF9S RUFEKTsKLQotCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCwgYnVmLT5iby0+c2l6ZSk7 Ci0KLQltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKLX0KLQotc3RhdGljIHZvaWQgKmxpbmVh cl9jb3B5KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZikKLXsKLQl2b2lkICpsaW5l YXI7Ci0KLQkvKiAxNkIgYWxpZ25tZW50IGFsbG93cyB0byBwb3RlbnRpYWxseSBtYWtlIHVzZSBv ZiBTU0U0IGZvciBjb3B5aW5nICovCi0JaWd0X2Fzc2VydF9lcShwb3NpeF9tZW1hbGlnbigmbGlu ZWFyLCAxNiwgYnVmLT5iby0+c2l6ZSksIDApOwotCi0JaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1lmKQotCQljb3B5X3lmX3RvX2xpbmVhcihkYXRhLCBidWYsIGxpbmVhcik7Ci0JZWxz ZQotCQljb3B5X2d0dF90b19saW5lYXIoZGF0YSwgYnVmLCBsaW5lYXIpOwotCi0JcmV0dXJuIGxp bmVhcjsKKwlyZXR1cm4gcDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIwOSwxMyArOTMsMTMgQEAg Y29weV9mcm9tX2xpbmVhcl9idWYoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLCBz dHJ1Y3QgaWd0X2J1ZiAqZHN0KQogCiAJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMt PmJvLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKLQlsaW5lYXIg PSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgc3JjLT5iby0+aGFuZGxlLCAwLAotCQkJICAg ICAgIHNyYy0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisJbGluZWFyID0gX19nZW1fbW1hcF9vZmZz ZXRfX2NwdShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKKwkJCQkJc3JjLT5iby0+ c2l6ZSwgUFJPVF9SRUFEKTsKKwlpZiAoIWxpbmVhcikKKwkJbGluZWFyID0gZ2VtX21tYXBfX2Nw dShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKKwkJCQkgICAgICAgc3JjLT5iby0+ c2l6ZSwgUFJPVF9SRUFEKTsKIAotCWlmIChkc3QtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikK LQkJY29weV9saW5lYXJfdG9feWYoZGF0YSwgZHN0LCBsaW5lYXIpOwotCWVsc2UKLQkJY29weV9s aW5lYXJfdG9fZ3R0KGRhdGEsIGRzdCwgbGluZWFyKTsKKwlsaW5lYXJfdG9faWd0X2J1ZihkYXRh LT5ibWdyLCBkc3QsIGxpbmVhcik7CiAKIAltdW5tYXAobGluZWFyLCBzcmMtPmJvLT5zaXplKTsK IH0KQEAgLTIyNyw3ICsxMTEsOCBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl93cml0ZV90b19w bmcoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCWNhaXJvX3N0YXR1c190IHJl dDsKIAl2b2lkICpsaW5lYXI7CiAKLQlsaW5lYXIgPSBsaW5lYXJfY29weShkYXRhLCBidWYpOwor CWxpbmVhciA9IGFsbG9jX2FsaWduZWQoYnVmLT5iby0+c2l6ZSk7CisJaWd0X2J1Zl90b19saW5l YXIoZGF0YS0+Ym1nciwgYnVmLCBsaW5lYXIpOwogCiAJc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1 cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGxpbmVhciwKIAkJCQkJCSAgICAgIENBSVJPX0ZPUk1BVF9S R0IyNCwKQEAgLTI0MSw2NyArMTI2LDQ0IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX3dyaXRl X3RvX3BuZyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAJZnJlZShsaW5lYXIp OwogfQogCi1zdGF0aWMgaW50IHNjcmF0Y2hfYnVmX2F1eF93aWR0aCh1aW50MzJfdCBkZXZpZCwg Y29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZikKLXsKLQkvKgotCSAqIEdFTjEyKzogVGhlIEFVWCBD Q1MgdW5pdCBzaXplIGlzIDY0IGJ5dGVzIG1hcHBpbmcgNCBtYWluIHN1cmZhY2UKLQkgKiB0aWxl cy4gVGh1cyB0aGUgd2lkdGggb2YgdGhlIENDUyB1bml0IGlzIDQqMzI9MTI4IHBpeGVscyBvbiB0 aGUKLQkgKiBtYWluIHN1cmZhY2UuCi0JICovCi0JaWYgKGludGVsX2dlbihkZXZpZCkgPj0gMTIp Ci0JCXJldHVybiBESVZfUk9VTkRfVVAoaWd0X2J1Zl93aWR0aChidWYpLCAxMjgpICogNjQ7Ci0K LQlyZXR1cm4gRElWX1JPVU5EX1VQKGlndF9idWZfd2lkdGgoYnVmKSwgMTAyNCkgKiAxMjg7Ci19 Ci0KLXN0YXRpYyBpbnQgc2NyYXRjaF9idWZfYXV4X2hlaWdodCh1aW50MzJfdCBkZXZpZCwgY29u c3Qgc3RydWN0IGlndF9idWYgKmJ1ZikKLXsKLQkvKgotCSAqIEdFTjEyKzogVGhlIEFVWCBDQ1Mg dW5pdCBzaXplIGlzIDY0IGJ5dGVzIG1hcHBpbmcgNCBtYWluIHN1cmZhY2UKLQkgKiB0aWxlcy4g VGh1cyB0aGUgaGVpZ2h0IG9mIHRoZSBDQ1MgdW5pdCBpcyAzMiBwaXhlbCByb3dzIG9uIHRoZSBt YWluCi0JICogc3VyZmFjZS4KLQkgKi8KLQlpZiAoaW50ZWxfZ2VuKGRldmlkKSA+PSAxMikKLQkJ cmV0dXJuIERJVl9ST1VORF9VUChpZ3RfYnVmX2hlaWdodChidWYpLCAzMik7Ci0KLQlyZXR1cm4g RElWX1JPVU5EX1VQKGlndF9idWZfaGVpZ2h0KGJ1ZiksIDUxMikgKiAzMjsKLX0KLQotc3RhdGlj IHZvaWQgKmxpbmVhcl9jb3B5X2F1eChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYp CitzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHlfY2NzKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9i dWYgKmJ1ZikKIHsKIAl2b2lkICptYXAsICpsaW5lYXI7Ci0JaW50IGF1eF9zaXplID0gc2NyYXRj aF9idWZfYXV4X3dpZHRoKGRhdGEtPmRldmlkLCBidWYpICoKLQkJc2NyYXRjaF9idWZfYXV4X2hl aWdodChkYXRhLT5kZXZpZCwgYnVmKTsKKwlpbnQgZ2VuID0gaW50ZWxfZ2VuKGRhdGEtPmRldmlk KTsKKwlpbnQgY2NzX3NpemUgPSBpZ3RfYnVmX2ludGVsX2Njc193aWR0aChnZW4sIGJ1ZikgKgor CQlpZ3RfYnVmX2ludGVsX2Njc19oZWlnaHQoZ2VuLCBidWYpOwogCi0JaWd0X2Fzc2VydF9lcShw b3NpeF9tZW1hbGlnbigmbGluZWFyLCAxNiwgYXV4X3NpemUpLCAwKTsKKwlsaW5lYXIgPSBhbGxv Y19hbGlnbmVkKGNjc19zaXplKTsKIAogCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwgYnVm LT5iby0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CiAKLQltYXAg PSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgYnVmLT5iby0+aGFuZGxlLAotCQkJICAgIGJ1 Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCk7CisJbWFwID0gZ2VtX21tYXBfX2RldmljZV9jb2hlcmVu dChkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKKwkJCQkJYnVmLT5iby0+c2l6ZSwg UFJPVF9SRUFEKTsKIAotCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCArIGJ1Zi0+Y2Nz WzBdLm9mZnNldCwgYXV4X3NpemUpOworCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIG1hcCAr IGJ1Zi0+Y2NzWzBdLm9mZnNldCwgY2NzX3NpemUpOwogCiAJbXVubWFwKG1hcCwgYnVmLT5iby0+ c2l6ZSk7CiAKIAlyZXR1cm4gbGluZWFyOwogfQogCi1zdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9h dXhfd3JpdGVfdG9fcG5nKGRhdGFfdCAqZGF0YSwKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2Nj c193cml0ZV90b19wbmcoZGF0YV90ICpkYXRhLAogCQkJCQkgc3RydWN0IGlndF9idWYgKmJ1ZiwK IAkJCQkJIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogCWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFj ZTsKIAljYWlyb19zdGF0dXNfdCByZXQ7CiAJdm9pZCAqbGluZWFyOworCWludCBnZW4gPSBpbnRl bF9nZW4oZGF0YS0+ZGV2aWQpOworCXVuc2lnbmVkIGludCBjY3Nfd2lkdGggPSBpZ3RfYnVmX2lu dGVsX2Njc193aWR0aChnZW4sIGJ1Zik7CisJdW5zaWduZWQgaW50IGNjc19oZWlnaHQgPSBpZ3Rf YnVmX2ludGVsX2Njc19oZWlnaHQoZ2VuLCBidWYpOwogCi0JbGluZWFyID0gbGluZWFyX2NvcHlf YXV4KGRhdGEsIGJ1Zik7CisJbGluZWFyID0gbGluZWFyX2NvcHlfY2NzKGRhdGEsIGJ1Zik7CiAK IAlzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEobGluZWFyLAog CQkJCQkJICAgICAgQ0FJUk9fRk9STUFUX0E4LAotCQkJCQkJICAgICAgc2NyYXRjaF9idWZfYXV4 X3dpZHRoKGRhdGEtPmRldmlkLCBidWYpLAotCQkJCQkJICAgICAgc2NyYXRjaF9idWZfYXV4X2hl aWdodChkYXRhLT5kZXZpZCwgYnVmKSwKKwkJCQkJCSAgICAgIGNjc193aWR0aCwgY2NzX2hlaWdo dCwKIAkJCQkJCSAgICAgIGJ1Zi0+Y2NzWzBdLnN0cmlkZSk7CiAJcmV0ID0gY2Fpcm9fc3VyZmFj ZV93cml0ZV90b19wbmcoc3VyZmFjZSwgbWFrZV9maWxlbmFtZShmaWxlbmFtZSkpOwogCWlndF9h c3NlcnQocmV0ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKQEAgLTMyMCw3ICsxODIsNyBAQCBz dGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLAogCWNhaXJvX3QgKmNyOwogCXZvaWQgKmxpbmVhcjsKIAotCWxpbmVhciA9 IGxpbmVhcl9jb3B5KGRhdGEsIGJ1Zik7CisJbGluZWFyID0gYWxsb2NfYWxpZ25lZChidWYtPmJv LT5zaXplKTsKIAogCXN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0 YShsaW5lYXIsCiAJCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdCMjQsCkBAIC0zNjEsMTAgKzIy Myw3IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYsCiAKIAljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7 CiAKLQlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpCi0JCWNvcHlfbGluZWFyX3Rv X3lmKGRhdGEsIGJ1ZiwgbGluZWFyKTsKLQllbHNlCi0JCWNvcHlfbGluZWFyX3RvX2d0dChkYXRh LCBidWYsIGxpbmVhcik7CisJbGluZWFyX3RvX2lndF9idWYoZGF0YS0+Ym1nciwgYnVmLCBsaW5l YXIpOwogCiAJZnJlZShsaW5lYXIpOwogfQpAQCAtMzc3LDYgKzIzNiw3IEBAIHNjcmF0Y2hfYnVm X2NvcHkoZGF0YV90ICpkYXRhLAogCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoZHN0KTsKIAlp bnQgaGVpZ2h0ICA9IGlndF9idWZfaGVpZ2h0KGRzdCk7CiAJdWludDMyX3QgKmxpbmVhcl9kc3Q7 CisJdWludDMyX3QgKmxpbmVhcl9zcmM7CiAKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgo ZHN0KSwgaWd0X2J1Zl93aWR0aChzcmMpKTsKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0 KGRzdCksIGlndF9idWZfaGVpZ2h0KHNyYykpOwpAQCAtMzg5LDQ5ICsyNDksMjAgQEAgc2NyYXRj aF9idWZfY29weShkYXRhX3QgKmRhdGEsCiAJaCA9IG1pbihoLCBoZWlnaHQgLSBzeSk7CiAJaCA9 IG1pbihoLCBoZWlnaHQgLSBkeSk7CiAKLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGRz dC0+Ym8tPmhhbmRsZSwKLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RP TUFJTl9HVFQpOwotCWxpbmVhcl9kc3QgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwgZHN0 LT5iby0+aGFuZGxlLAotCQkJCSAgIGRzdC0+Ym8tPnNpemUsIFBST1RfV1JJVEUpOworCWxpbmVh cl9kc3QgPSBhbGxvY19hbGlnbmVkKGRzdC0+Ym8tPnNpemUpOworCWxpbmVhcl9zcmMgPSBhbGxv Y19hbGlnbmVkKHNyYy0+Ym8tPnNpemUpOworCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3Is IHNyYywgbGluZWFyX3NyYyk7CisJaWd0X2J1Zl90b19saW5lYXIoZGF0YS0+Ym1nciwgZHN0LCBs aW5lYXJfZHN0KTsKIAotCWlmIChzcmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZikgewotCQl2 b2lkICptYXA7Ci0KLQkJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5k bGUsCi0JCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Ci0JCW1hcCA9IGdlbV9tbWFw X19jcHUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmJvLT5oYW5kbGUsIDAsCi0JCQkJICAgIHNyYy0+Ym8t PnNpemUsIFBST1RfUkVBRCk7Ci0KLQkJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKLQkJ CWZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7Ci0JCQkJY29uc3QgdWludDMyX3QgKnB0ciA9 IHlmX3B0cihtYXAsIHN4K3gsIHN5K3ksCi0JCQkJCQkJICAgICBzcmMtPnN1cmZhY2VbMF0uc3Ry aWRlLAotCQkJCQkJCSAgICAgc3JjLT5icHAgLyA4KTsKLQotCQkJCWxpbmVhcl9kc3RbKGR5K3kp ICogd2lkdGggKyBkeCt4XSA9ICpwdHI7Ci0JCQl9Ci0JCX0KLQotCQltdW5tYXAobWFwLCBzcmMt PmJvLT5zaXplKTsKLQl9IGVsc2UgewotCQl1aW50MzJfdCAqbGluZWFyX3NyYzsKLQotCQlnZW1f c2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwKLQkJCSAgICAgICBJOTE1 X0dFTV9ET01BSU5fR1RULCAwKTsKLQotCQlsaW5lYXJfc3JjID0gZ2VtX21tYXBfX2d0dChkYXRh LT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwKLQkJCQkJICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9S RUFEKTsKLQotCQlmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgewotCQkJaWd0X21lbWNweV9m cm9tX3djKCZsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLAotCQkJCQkgICAmbGluZWFy X3NyY1soc3kreSkgKiB3aWR0aCArIHN4XSwKLQkJCQkJICAgdyAqIChzcmMtPmJwcCAvIDgpKTsK LQkJfQotCi0JCW11bm1hcChsaW5lYXJfc3JjLCBzcmMtPmJvLT5zaXplKTsKKwlmb3IgKGludCB5 ID0gMDsgeSA8IGg7IHkrKykgeworCQltZW1jcHkoJmxpbmVhcl9kc3RbKGR5K3kpICogd2lkdGgg KyBkeF0sCisJCQkJJmxpbmVhcl9zcmNbKHN5K3kpICogd2lkdGggKyBzeF0sCisJCQkJdyAqIChz cmMtPmJwcCAvIDgpKTsKIAl9CisJZnJlZShsaW5lYXJfc3JjKTsKIAotCW11bm1hcChsaW5lYXJf ZHN0LCBkc3QtPmJvLT5zaXplKTsKKwlsaW5lYXJfdG9faWd0X2J1ZihkYXRhLT5ibWdyLCBkc3Qs IGxpbmVhcl9kc3QpOworCWZyZWUobGluZWFyX2RzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNjcmF0 Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLApAQCAtNDM5LDc2 ICsyNzAsMTAgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCiAJCQkgICAgIHVpbnQzMl90IHJlcV90aWxpbmcsCiAJCQkgICAg IGVudW0gaTkxNV9jb21wcmVzc2lvbiBjb21wcmVzc2lvbikKIHsKLQl1aW50MzJfdCB0aWxpbmcg PSByZXFfdGlsaW5nOwotCXVuc2lnbmVkIGxvbmcgcGl0Y2g7CiAJaW50IGJwcCA9IDMyOwogCi0J bWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKLQotCWlmIChjb21wcmVzc2lvbiAhPSBJOTE1 X0NPTVBSRVNTSU9OX05PTkUpIHsKLQkJaW50IGF1eF93aWR0aCwgYXV4X2hlaWdodDsKLQkJaW50 IHNpemU7Ci0KLQkJaWd0X3JlcXVpcmUoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA+PSA5KTsKLQkJ aWd0X2Fzc2VydCh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSB8fAotCQkJICAgdGlsaW5nID09IEk5 MTVfVElMSU5HX1lmKTsKLQotCQkvKgotCQkgKiBPbiBHRU4xMisgd2UgYWxpZ24gdGhlIG1haW4g c3VyZmFjZSB0byA0ICogNCBtYWluIHN1cmZhY2UKLQkJICogdGlsZXMsIHdoaWNoIGlzIDY0a0Iu IFRoZXNlIDE2IHRpbGVzIGFyZSBtYXBwZWQgYnkgNCBBVVgKLQkJICogQ0NTIHVuaXRzLCB0aGF0 IGlzIDQgKiA2NCBieXRlcy4gVGhlc2UgNCBDQ1MgdW5pdHMgYXJlIGluCi0JCSAqIHR1cm4gbWFw cGVkIGJ5IG9uZSBMMSBBVVggcGFnZSB0YWJsZSBlbnRyeS4KLQkJICovCi0JCWlmIChpbnRlbF9n ZW4oZGF0YS0+ZGV2aWQpID49IDEyKQotCQkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IEFMSUdO KHdpZHRoICogKGJwcCAvIDgpLCAxMjggKiA0KTsKLQkJZWxzZQotCQkJYnVmLT5zdXJmYWNlWzBd LnN0cmlkZSA9IEFMSUdOKHdpZHRoICogKGJwcCAvIDgpLCAxMjgpOwotCi0JCWlmIChpbnRlbF9n ZW4oZGF0YS0+ZGV2aWQpID49IDEyKQotCQkJaGVpZ2h0ID0gQUxJR04oaGVpZ2h0LCA0ICogMzIp OwotCi0JCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAqIGhl aWdodDsKLQkJYnVmLT50aWxpbmcgPSB0aWxpbmc7Ci0JCWJ1Zi0+YnBwID0gYnBwOwotCi0JCWF1 eF93aWR0aCA9IHNjcmF0Y2hfYnVmX2F1eF93aWR0aChkYXRhLT5kZXZpZCwgYnVmKTsKLQkJYXV4 X2hlaWdodCA9IHNjcmF0Y2hfYnVmX2F1eF9oZWlnaHQoZGF0YS0+ZGV2aWQsIGJ1Zik7Ci0KLQkJ YnVmLT5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9uOwotCQlidWYtPmNjc1swXS5vZmZzZXQgPSBi dWYtPnN1cmZhY2VbMF0uc3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Ci0JCWJ1Zi0+Y2NzWzBd LnN0cmlkZSA9IGF1eF93aWR0aDsKLQotCQlzaXplID0gYnVmLT5jY3NbMF0ub2Zmc2V0ICsgYXV4 X3dpZHRoICogYXV4X2hlaWdodDsKLQotCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGRh dGEtPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwotCi0JCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJ TkdfWSkgewotCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywKLQkJ CQkJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUpOwotCQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJl cV90aWxpbmcpOwotCQl9Ci0JfSBlbHNlIGlmIChyZXFfdGlsaW5nID09IEk5MTVfVElMSU5HX1lm KSB7Ci0JCWludCBzaXplOwotCi0JCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBBTElHTih3aWR0 aCAqIChicHAgLyA4KSwgMTI4KTsKLQkJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBidWYtPnN1cmZh Y2VbMF0uc3RyaWRlICogaGVpZ2h0OwotCQlidWYtPnRpbGluZyA9IHRpbGluZzsKLQkJYnVmLT5i cHAgPSBicHA7Ci0KLQkJc2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBBTElHTihoZWln aHQsIDMyKTsKLQotCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwg IiIsIHNpemUsIDQwOTYpOwotCX0gZWxzZSB7Ci0JCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxs b2NfdGlsZWQoZGF0YS0+YnVmbWdyLCAiIiwKLQkJCQkJCSAgIHdpZHRoLCBoZWlnaHQsIGJwcCAv IDgsCi0JCQkJCQkgICAmdGlsaW5nLCAmcGl0Y2gsIDApOwotCQlpZ3RfYXNzZXJ0X2VxKHRpbGlu ZywgcmVxX3RpbGluZyk7Ci0KLQkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IHBpdGNoOwotCQli dWYtPnRpbGluZyA9IHRpbGluZzsKLQkJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBwaXRjaCAqIGhl aWdodDsKLQkJYnVmLT5icHAgPSBicHA7Ci0JfQorCWlndF9idWZfaW5pdChkYXRhLT5ibWdyLCBi dWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwgcmVxX3RpbGluZywKKwkJICAgICBjb21wcmVzc2lvbik7 CiAKIAlpZ3RfYXNzZXJ0KGlndF9idWZfd2lkdGgoYnVmKSA9PSB3aWR0aCk7CiAJaWd0X2Fzc2Vy dChpZ3RfYnVmX2hlaWdodChidWYpID09IGhlaWdodCk7CkBAIC01MzMsMTEgKzI5OCwxMyBAQCBz Y3JhdGNoX2J1Zl9jaGVjayhkYXRhX3QgKmRhdGEsCiAJaWd0X2Fzc2VydF9lcShpZ3RfYnVmX2hl aWdodChidWYpLCBpZ3RfYnVmX2hlaWdodChyZWYpKTsKIAlpZ3RfYXNzZXJ0X2VxKGJ1Zi0+Ym8t PnNpemUsIHJlZi0+Ym8tPnNpemUpOwogCi0JbGluZWFyID0gbGluZWFyX2NvcHkoZGF0YSwgYnVm KTsKKwlsaW5lYXIgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+Ym8tPnNpemUpOworCWlndF9idWZfdG9f bGluZWFyKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyKTsKIAlidWZfdmFsID0gbGluZWFyW3kgKiB3 aWR0aCArIHhdOwogCWZyZWUobGluZWFyKTsKIAotCWxpbmVhciA9IGxpbmVhcl9jb3B5KGRhdGEs IHJlZik7CisJbGluZWFyID0gYWxsb2NfYWxpZ25lZChyZWYtPmJvLT5zaXplKTsKKwlpZ3RfYnVm X3RvX2xpbmVhcihkYXRhLT5ibWdyLCBidWYsIGxpbmVhcik7CiAJcmVmX3ZhbCA9IGxpbmVhclt5 ICogd2lkdGggKyB4XTsKIAlmcmVlKGxpbmVhcik7CiAKQEAgLTU1OSw4ICszMjYsMTAgQEAgc2Ny YXRjaF9idWZfY2hlY2tfYWxsKGRhdGFfdCAqZGF0YSwKIAlpZ3RfYXNzZXJ0X2VxKGlndF9idWZf aGVpZ2h0KGJ1ZiksIGlndF9idWZfaGVpZ2h0KHJlZikpOwogCWlndF9hc3NlcnRfZXEoYnVmLT5i by0+c2l6ZSwgcmVmLT5iby0+c2l6ZSk7CiAKLQlsaW5lYXJfYnVmID0gbGluZWFyX2NvcHkoZGF0 YSwgYnVmKTsKLQlsaW5lYXJfcmVmID0gbGluZWFyX2NvcHkoZGF0YSwgcmVmKTsKKwlsaW5lYXJf YnVmID0gYWxsb2NfYWxpZ25lZChidWYtPmJvLT5zaXplKTsKKwlsaW5lYXJfcmVmID0gYWxsb2Nf YWxpZ25lZChyZWYtPmJvLT5zaXplKTsKKwlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdyLCBi dWYsIGxpbmVhcl9idWYpOworCWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIHJlZiwgbGlu ZWFyX3JlZik7CiAKIAlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CiAJCWZvciAo aW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewpAQCAtNTc3LDI1ICszNDYsMjYgQEAgc2NyYXRj aF9idWZfY2hlY2tfYWxsKGRhdGFfdCAqZGF0YSwKIAlmcmVlKGxpbmVhcl9idWYpOwogfQogCi1z dGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YV90ICpkYXRhLAorc3RhdGljIHZv aWQgc2NyYXRjaF9idWZfY2NzX2NoZWNrKGRhdGFfdCAqZGF0YSwKIAkJCQkgIHN0cnVjdCBpZ3Rf YnVmICpidWYpCiB7Ci0JaW50IGF1eF9zaXplID0gc2NyYXRjaF9idWZfYXV4X3dpZHRoKGRhdGEt PmRldmlkLCBidWYpICoKLQkJc2NyYXRjaF9idWZfYXV4X2hlaWdodChkYXRhLT5kZXZpZCwgYnVm KTsKKwlpbnQgZ2VuID0gaW50ZWxfZ2VuKGRhdGEtPmRldmlkKTsKKwlpbnQgY2NzX3NpemUgPSBp Z3RfYnVmX2ludGVsX2Njc193aWR0aChnZW4sIGJ1ZikgKgorCQlpZ3RfYnVmX2ludGVsX2Njc19o ZWlnaHQoZ2VuLCBidWYpOwogCXVpbnQ4X3QgKmxpbmVhcjsKIAlpbnQgaTsKIAotCWxpbmVhciA9 IGxpbmVhcl9jb3B5X2F1eChkYXRhLCBidWYpOworCWxpbmVhciA9IGxpbmVhcl9jb3B5X2Njcyhk YXRhLCBidWYpOwogCi0JZm9yIChpID0gMDsgaSA8IGF1eF9zaXplOyBpKyspIHsKKwlmb3IgKGkg PSAwOyBpIDwgY2NzX3NpemU7IGkrKykgewogCQlpZiAobGluZWFyW2ldKQogCQkJYnJlYWs7CiAJ fQogCiAJZnJlZShsaW5lYXIpOwogCi0JaWd0X2Fzc2VydF9mKGkgPCBhdXhfc2l6ZSwKLQkJICAg ICAiQXV4IHN1cmZhY2UgaW5kaWNhdGVzIHRoYXQgbm90aGluZyB3YXMgY29tcHJlc3NlZFxuIik7 CisJaWd0X2Fzc2VydF9mKGkgPCBjY3Nfc2l6ZSwKKwkJICAgICAiQ2NzIHN1cmZhY2UgaW5kaWNh dGVzIHRoYXQgbm90aGluZyB3YXMgY29tcHJlc3NlZFxuIik7CiB9CiAKICNkZWZpbmUgU09VUkNF X01JWEVEX1RJTEVECTEKQEAgLTY3MSw2ICs0NDEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFf dCAqZGF0YSwgdWludDMyX3Qgc3JjX3RpbGluZywgdWludDMyX3QgZHN0X3RpbGluZywKIAkJCQkg STkxNV9DT01QUkVTU0lPTl9OT05FKTsKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZkc3QsIFdJ RFRILCBIRUlHSFQsIGRzdF90aWxpbmcsCiAJCQkgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwog CWlmIChzcmNfY29tcHJlc3NlZCkKIAkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAmc3JjX2Njcywg V0lEVEgsIEhFSUdIVCwKIAkJCQkgc3JjX3RpbGluZywgc3JjX2NvbXByZXNzaW9uKTsKQEAgLTY4 Myw3ICs0NTQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3Qgc3Jj X3RpbGluZywgdWludDMyX3QgZHN0X3RpbGluZywKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bV9z cmM7IGkrKykKIAkJc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJuKGRhdGEsICZzcmNbaV0uYnVmLAog CQkJCQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwKLQkJCQkJIDAsIDAsIFdJRFRILCBIRUlHSFQsIHRy dWUpOworCQkJCQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwgKGkgJSAyKSk7CisKIAlzY3JhdGNoX2J1 Zl9kcmF3X3BhdHRlcm4oZGF0YSwgJmRzdCwKIAkJCQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwKIAkJ CQkgMCwgMCwgV0lEVEgsIEhFSUdIVCwgZmFsc2UpOwpAQCAtNzkzLDE0ICs1NjUsMTQgQEAgc3Rh dGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHNyY190aWxpbmcsIHVpbnQzMl90 IGRzdF90aWxpbmcsCiAJCWlmIChzcmNfY29tcHJlc3NlZCkgewogCQkJc2NyYXRjaF9idWZfd3Jp dGVfdG9fcG5nKGRhdGEsICZzcmNfY2NzLAogCQkJCQkJICJjb21wcmVzc2VkLXNyYy5wbmciKTsK LQkJCXNjcmF0Y2hfYnVmX2F1eF93cml0ZV90b19wbmcoZGF0YSwgJnNyY19jY3MsCi0JCQkJCQkg ICAgICJjb21wcmVzc2VkLXNyYy1hdXgucG5nIik7CisJCQlzY3JhdGNoX2J1Zl9jY3Nfd3JpdGVf dG9fcG5nKGRhdGEsICZzcmNfY2NzLAorCQkJCQkJICAgICAiY29tcHJlc3NlZC1zcmMtY2NzLnBu ZyIpOwogCQl9CiAJCWlmIChkc3RfY29tcHJlc3NlZCkgewogCQkJc2NyYXRjaF9idWZfd3JpdGVf dG9fcG5nKGRhdGEsICZkc3RfY2NzLAogCQkJCQkJICJjb21wcmVzc2VkLWRzdC5wbmciKTsKLQkJ CXNjcmF0Y2hfYnVmX2F1eF93cml0ZV90b19wbmcoZGF0YSwgJmRzdF9jY3MsCi0JCQkJCQkgICAg ICJjb21wcmVzc2VkLWRzdC1hdXgucG5nIik7CisJCQlzY3JhdGNoX2J1Zl9jY3Nfd3JpdGVfdG9f cG5nKGRhdGEsICZkc3RfY2NzLAorCQkJCQkJICAgICAiY29tcHJlc3NlZC1kc3QtY2NzLnBuZyIp OwogCQl9CiAJfQogCkBAIC04MTksOSArNTkxLDkgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3Qg KmRhdGEsIHVpbnQzMl90IHNyY190aWxpbmcsIHVpbnQzMl90IGRzdF90aWxpbmcsCiAJfQogCiAJ aWYgKHNyY19jb21wcmVzc2VkKQotCQlzY3JhdGNoX2J1Zl9hdXhfY2hlY2soZGF0YSwgJnNyY19j Y3MpOworCQlzY3JhdGNoX2J1Zl9jY3NfY2hlY2soZGF0YSwgJnNyY19jY3MpOwogCWlmIChkc3Rf Y29tcHJlc3NlZCkKLQkJc2NyYXRjaF9idWZfYXV4X2NoZWNrKGRhdGEsICZkc3RfY2NzKTsKKwkJ c2NyYXRjaF9idWZfY2NzX2NoZWNrKGRhdGEsICZkc3RfY2NzKTsKIAogCXNjcmF0Y2hfYnVmX2Zp bmkoJnJlZik7CiAJaWYgKGRzdF9jb21wcmVzc2VkKQpAQCAtMTA1NCw2ICs4MjYsOSBAQCBpZ3Rf bWFpbl9hcmdzKCJkYSIsIE5VTEwsIGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgTlVMTCkKIAkJZGF0 YS5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEuYnVmbWdyLCBkYXRhLmRldmlk KTsKIAkJaWd0X2Fzc2VydChkYXRhLmJhdGNoKTsKIAorCQlkYXRhLmJtZ3IgPSByZW5kZXJjb3B5 X2J1Zm1ncl9jcmVhdGUoZGF0YS5kcm1fZmQsIGRhdGEuYnVmbWdyKTsKKwkJaWd0X2Fzc2VydChk YXRhLmJtZ3IpOworCiAJCWlndF9mb3JrX2hhbmdfZGV0ZWN0b3IoZGF0YS5kcm1fZmQpOwogCX0K IApAQCAtMTEwNyw1ICs4ODIsNiBAQCBpZ3RfbWFpbl9hcmdzKCJkYSIsIE5VTEwsIGhlbHBfc3Ry LCBvcHRfaGFuZGxlciwgTlVMTCkKIAkJaWd0X3N0b3BfaGFuZ19kZXRlY3RvcigpOwogCQlpbnRl bF9iYXRjaGJ1ZmZlcl9mcmVlKGRhdGEuYmF0Y2gpOwogCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ry b3koZGF0YS5idWZtZ3IpOworCQlyZW5kZXJjb3B5X2J1Zm1ncl9kZXN0cm95KGRhdGEuYm1ncik7 CiAJfQogfQotLSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXYK