From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 23B92C433E6 for ; Thu, 21 Jan 2021 20:53:43 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CECE723A60 for ; Thu, 21 Jan 2021 20:53:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CECE723A60 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 62C676E95A; Thu, 21 Jan 2021 20:53:42 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88EA56E95B for ; Thu, 21 Jan 2021 20:53:38 +0000 (UTC) IronPort-SDR: Mq9RmcVo/zkoc5k82oJaFqS9igarcOjm4/30TpaEIFxjSyHZXDd92Bt/pxvqJsU1Og1AzNc9kV izqYflEtQnaQ== X-IronPort-AV: E=McAfee;i="6000,8403,9871"; a="243418150" X-IronPort-AV: E=Sophos;i="5.79,365,1602572400"; d="scan'208";a="243418150" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 12:53:27 -0800 IronPort-SDR: FtIfPPh2OfDi30JPKXzTytulV/W8T6vNEjiYKlsIUEWQAVB3cMwwhjZcds8e6L100CQcHLlLMo pzWUyID6+AHA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,365,1602572400"; d="scan'208";a="427505012" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga001.jf.intel.com with SMTP; 21 Jan 2021 12:53:24 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 21 Jan 2021 22:53:24 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Thu, 21 Jan 2021 22:53:01 +0200 Message-Id: <20210121205302.24897-8-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210121205302.24897-1-ville.syrjala@linux.intel.com> References: <20210121205302.24897-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 7/8] drm/i915: Encapsulate dbuf state handling harder X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklu IG9yZGVyIHRvIG1ha2UgdGhlIGRidWYgc3RhdGUgY29tcHV0YXRpb24gbGVzcyBmcmFnaWxlCmxl dCdzIG1ha2UgaXQgc3RhbmQgb24gaXRzIG93biBmZWV0IGJ5IG5vdCByZXF1aXJpbmcgc29tZW9u ZQp0byBwZWVrIGludG8gYSBjcnlzdGFsbCBiYWxsIGFoZWFkIG9mIHRpbWUgdG8gZmlndXJlIG91 dAp3aGljaCBwaXBlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBzdGF0ZSB1bmRlciB3aGljaCBw b3RlbnRpYWwKZnV0dXJlIGNvbmRpdGlvbnMuIEluc3RlYWQgd2UgY29tcHV0ZSBlYWNoIHBpZWNl IG9mIHRoZSBzdGF0ZQphcyB3ZSBnbyBhbG9uZywgYW5kIGlmIGFueSBmYWxsb3V0IG9jY3VycyB0 aGF0IGFmZmVjdHMgbW9yZSB0aGFuCnRoZSBjdXJyZW50IHNldCBvZiBwaXBlcyB3ZSBhZGQgdGhl IGFmZmVjdGVkIHBpcGVzIHRvIHRoZSBzdGF0ZQpuYXR1cmFsbHkuCgpUaGF0IHJlcXVpcmVzIHRo YXQgd2UgdHJhY2sgYSBmZXcgZXh0cmEgdGhpZ25zIGluIHRoZSBnbG9iYWwKZGJ1ZiBzdGF0ZTog ZGJ1ZiBzbGljZXMgZm9yIGVhY2ggcGlwZSwgYW5kIHRoZSB3ZWlnaHQgZWFjaApwaXBlIGhhcyB3 aGVuIGRpc3RyaWJ1dGluZyB0aGUgc2FtZSBzZXQgb2Ygc2xpY2UocykgYmV0d2VlbgptdWx0aXBs ZSBwaXBlcy4gRWFzeSBlbm91Z2guCgpXZSBkbyBuZWVkIHRvIGZvbGxvdyBhIHNvbWV3aGF0IGNh cmVmdWwgc2VxdWVuY2Ugb2YgY29tcHV0YXRpb25zCnRob3VnaCBhcyB0aGVyZSBhcmUgc2V2ZXJh bCBzdGVwcyBpbnZvbHZlZCBpbiBjb29raW5nIHVwIHRoZSBkYnVmCnN0YXRlLiBUaG9ndWggd2Ug Y291bGQgYXZvaWQgc29tZSBvZiB0aGF0IGJ5IGNvbXB1dGluZyBtb3JlIHRoaW5ncwpvbiBkZW1h bmQgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGVhcmxpZXIgc3RlcCBvZiB0aGUgYWxnb3JpdGhtIHRv CmhhdmUgZmlsbGVkIGl0IG91dC4gSSB0aGluayB0aGUgZW5kIHJlc3VsdCBpcyBzdGlsbCByZWFz b25hYmxlCmFzIHRoZSBlbnRpcmUgc2VxdWVuY2UgaXMgcHJldHR5IG11Y2ggY29uc29saWRhdGVk IGludG8gYSBzaW5nbGUKZnVuY3Rpb24gaW5zdGVhZCBvZiBiZWluZyBzcHJlYWQgYXJvdW5kIGFs bCBvdmVyLgoKVGhlIHJvdWdoIHNlcXVlbmNlIGlzIHRoaXM6CjEuIGNhbGN1bGF0ZSBhY3RpdmVf cGlwZXMKMi4gY2FsY3VsYXRlIGRidWYgc2xpY2VzIGZvciBldmVyeSBwaXBlCjMuIGNhbGN1bGF0 ZSB0b3RhbCBlbmFibGVkIHNsaWNlcwo0LiBjYWxjdWxhdGUgbmV3IGRidWYgd2VpZ2h0cyBmb3Ig YW55IGNydGMgaW4gdGhlIHN0YXRlCjUuIGNhbGN1bGF0ZSBuZXcgZGRiIGVudHJ5IGZvciBldmVy eSBwaXBlIGJhc2VkIG9uIHRoZSBzZXRzIG9mCiAgIHNsaWNlcyBhbmQgd2VpZ2h0cywgYW5kIGFk ZCBhbnkgYWZmZWN0ZWQgY3J0YyB0byB0aGUgc3RhdGUKNi4gY2FsY3VsYXRlIG5ldyBwbGFuZSBk ZGIgZW50cmllcyBmb3IgYWxsIGNydGNzIGluIHRoZSBzdGF0ZSwKICAgYW5kIGFkZCBhbnkgYWZm ZWN0ZWQgcGxhbmUgdG8gdGhlIHN0YXRlIHNvIHRoYXQgd2UnbGwgcGVyZm9ybQogICB0aGUgcmVx dWlzaXRlIGh3IHJlcHJvZ3JhbW1pbmcKCkFuZCBhcyBhIG5pY2UgYm9udXMgd2UgZ2V0IHRvIHRo cm93IGRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dtCm91dCB0aGUgd2luZG93LgoKUmV2aWV3 ZWQtYnk6IFN0YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j ICB8ICAxNSAtCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYyAg fCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg ICA5IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8IDM3 NyArKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggICAg ICAgICAgICAgICB8ICAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAy NjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYwppbmRleCAxZTQwMDY1MzVkMzEuLjc3NjkyOTIyMGQ4YyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEyNTQ4LDIwICsxMjU0OCw2 IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCi0JLyoKLQkgKiBkaXN0cnVzdF9iaW9zX3dtIHdp bGwgZm9yY2UgYSBmdWxsIGRidWYgcmVjb21wdXRhdGlvbgotCSAqIGJ1dCB0aGUgaGFyZHdhcmUg c3RhdGUgd2lsbCBvbmx5IGdldCB1cGRhdGVkIGFjY29yZGluZ2x5Ci0JICogaWYgc3RhdGUtPm1v ZGVzZXQ9PXRydWUuIEhlbmNlIGRpc3RydXN0X2Jpb3Nfd209PXRydWUgJiYKLQkgKiBzdGF0ZS0+ bW9kZXNldD09ZmFsc2UgaXMgYW4gaW52YWxpZCBjb21iaW5hdGlvbiB3aGljaAotCSAqIHdvdWxk IGNhdXNlIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZGJ1ZiBzdGF0ZSB0byBnZXQKLQkgKiBv dXQgb2Ygc3luYy4gV2UgbXVzdCBwcmV2ZW50IHRoYXQuCi0JICoKLQkgKiBGSVhNRSBjbGVhbiB1 cCB0aGlzIG1lc3MgYW5kIGludHJvZHVjZSBiZXR0ZXIKLQkgKiBzdGF0ZSB0cmFja2luZyBmb3Ig ZGJ1Zi4KLQkgKi8KLQlpZiAoZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20pCi0JCWFueV9t cyA9IHRydWU7Ci0KIAlpbnRlbF9mYmNfY2hvb3NlX2NydGMoZGV2X3ByaXYsIHN0YXRlKTsKIAly ZXQgPSBjYWxjX3dhdGVybWFya19kYXRhKHN0YXRlKTsKIAlpZiAocmV0KQpAQCAtMTM0MTIsNyAr MTMzOTgsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCBz dGF0ZS0+d2FrZXJlZik7CiAJCXJldHVybiByZXQ7CiAJfQotCWRldl9wcml2LT53bS5kaXN0cnVz dF9iaW9zX3dtID0gZmFsc2U7CiAJaW50ZWxfc2hhcmVkX2RwbGxfc3dhcF9zdGF0ZShzdGF0ZSk7 CiAJaW50ZWxfYXRvbWljX3RyYWNrX2ZicyhzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCmluZGV4IDg4NWQyZDNj OTFhMy4uZDYyYjE4ZDVlY2Q4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKQEAgLTExMzksNyArMTEzOSw2IEBAIHN0YXRp YyBzc2l6ZV90IGk5MTVfaXBjX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qg Y2hhciBfX3VzZXIgKnVidWYsCiAJCWlmICghZGV2X3ByaXYtPmlwY19lbmFibGVkICYmIGVuYWJs ZSkKIAkJCWRybV9pbmZvKCZkZXZfcHJpdi0+ZHJtLAogCQkJCSAiRW5hYmxpbmcgSVBDOiBXTSB3 aWxsIGJlIHByb3BlciBvbmx5IGFmdGVyIG5leHQgY29tbWl0XG4iKTsKLQkJZGV2X3ByaXYtPndt LmRpc3RydXN0X2Jpb3Nfd20gPSB0cnVlOwogCQlkZXZfcHJpdi0+aXBjX2VuYWJsZWQgPSBlbmFi bGU7CiAJCWludGVsX2VuYWJsZV9pcGMoZGV2X3ByaXYpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IGYwMjIyZGUyZDIxNi4uM2NlOGIyOTZlNWIwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKQEAgLTExMjIsMTUgKzExMjIsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJ CSAqIGNydGNfc3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUuCiAJCSAqLwogCQlzdHJ1Y3Qg bXV0ZXggd21fbXV0ZXg7Ci0KLQkJLyoKLQkJICogU2V0IGR1cmluZyBIVyByZWFkb3V0IG9mIHdh dGVybWFya3MvRERCLiAgU29tZSBwbGF0Zm9ybXMKLQkJICogbmVlZCB0byBrbm93IHdoZW4gd2Un cmUgc3RpbGwgdXNpbmcgQklPUy1wcm92aWRlZCB2YWx1ZXMKLQkJICogKHdoaWNoIHdlIGRvbid0 IGZ1bGx5IHRydXN0KS4KLQkJICoKLQkJICogRklYTUUgZ2V0IHJpZCBvZiB0aGlzLgotCQkgKi8K LQkJYm9vbCBkaXN0cnVzdF9iaW9zX3dtOwogCX0gd207CiAKIAlzdHJ1Y3QgZHJhbV9pbmZvIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDAwYTFkMjM2NjNiOS4uZTdjMjkxMGU4ZDg3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTQxMDAsNTYgKzQxMDAsMjIgQEAgc3RhdGljIHVu c2lnbmVkIGludCBpbnRlbF9jcnRjX2RkYl93ZWlnaHQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3QKIAlyZXR1cm4gaGRpc3BsYXk7CiB9CiAKLXN0YXRpYyB1OCBza2xfY29t cHV0ZV9kYnVmX3NsaWNlcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKLQkJCQkgIHU4IGFjdGl2 ZV9waXBlcyk7Ci0KLXN0YXRpYyBpbnQgaW50ZWxfY3J0Y19kYnVmX3dlaWdodHMoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgc3RydWN0IGludGVsX2NydGMgKmZvcl9j cnRjLAotCQkJCSAgIHVuc2lnbmVkIGludCAqd2VpZ2h0X3N0YXJ0LAotCQkJCSAgIHVuc2lnbmVk IGludCAqd2VpZ2h0X2VuZCwKLQkJCQkgICB1bnNpZ25lZCBpbnQgKndlaWdodF90b3RhbCkKK3N0 YXRpYyB2b2lkIGludGVsX2NydGNfZGJ1Zl93ZWlnaHRzKGNvbnN0IHN0cnVjdCBpbnRlbF9kYnVm X3N0YXRlICpkYnVmX3N0YXRlLAorCQkJCSAgICBlbnVtIHBpcGUgZm9yX3BpcGUsCisJCQkJICAg IHVuc2lnbmVkIGludCAqd2VpZ2h0X3N0YXJ0LAorCQkJCSAgICB1bnNpZ25lZCBpbnQgKndlaWdo dF9lbmQsCisJCQkJICAgIHVuc2lnbmVkIGludCAqd2VpZ2h0X3RvdGFsKQogewotCWNvbnN0IHN0 cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZSA9Ci0JCWludGVsX2F0b21pY19n ZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpOwotCXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpuZXdf ZGJ1Zl9zdGF0ZSA9Ci0JCWludGVsX2F0b21pY19nZXRfbmV3X2RidWZfc3RhdGUoc3RhdGUpOwot CXU4IGFjdGl2ZV9waXBlcyA9IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXM7Ci0JZW51bSBw aXBlIGZvcl9waXBlID0gZm9yX2NydGMtPnBpcGU7Ci0JY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0JdTggZGJ1Zl9z bGljZV9tYXNrOwotCXU4IHRvdGFsX3NsaWNlX21hc2s7Ci0JaW50IGksIHJldDsKLQotCS8qCi0J ICogR2V0IGFsbG93ZWQgREJ1ZiBzbGljZXMgZm9yIGNvcnJlc3BvbmRlbnQgcGlwZSBhbmQgcGxh dGZvcm0uCi0JICovCi0JZGJ1Zl9zbGljZV9tYXNrID0gc2tsX2NvbXB1dGVfZGJ1Zl9zbGljZXMo Zm9yX2NydGMsIGFjdGl2ZV9waXBlcyk7Ci0JdG90YWxfc2xpY2VfbWFzayA9IGRidWZfc2xpY2Vf bWFzazsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQl0b19pOTE1KGRi dWZfc3RhdGUtPmJhc2Uuc3RhdGUtPmJhc2UuZGV2KTsKKwllbnVtIHBpcGUgcGlwZTsKIAogCSp3 ZWlnaHRfc3RhcnQgPSAwOwogCSp3ZWlnaHRfZW5kID0gMDsKIAkqd2VpZ2h0X3RvdGFsID0gMDsK IAotCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Ci0JCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKLQkJdW5zaWduZWQgaW50 IHdlaWdodDsKLQkJdTggcGlwZV9kYnVmX3NsaWNlX21hc2s7Ci0KLQkJaWYgKCFjcnRjX3N0YXRl LT5ody5hY3RpdmUpCi0JCQljb250aW51ZTsKLQotCQlwaXBlX2RidWZfc2xpY2VfbWFzayA9Ci0J CQlza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhjcnRjLCBhY3RpdmVfcGlwZXMpOwotCi0JCS8qCi0J CSAqIEFjY29yZGluZyB0byBCU3BlYyBwaXBlIGNhbiBzaGFyZSBvbmUgZGJ1ZiBzbGljZSB3aXRo IGFub3RoZXIKLQkJICogcGlwZXMgb3IgcGlwZSBjYW4gdXNlIG11bHRpcGxlIGRidWZzLCBpbiBi b3RoIGNhc2VzIHdlCi0JCSAqIGFjY291bnQgZm9yIG90aGVyIHBpcGVzIG9ubHkgaWYgdGhleSBo YXZlIGV4YWN0bHkgc2FtZSBtYXNrLgotCQkgKiBIb3dldmVyIHdlIG5lZWQgdG8gYWNjb3VudCBo b3cgbWFueSBzbGljZXMgd2Ugc2hvdWxkIGVuYWJsZQotCQkgKiBpbiB0b3RhbC4KLQkJICovCi0J CXRvdGFsX3NsaWNlX21hc2sgfD0gcGlwZV9kYnVmX3NsaWNlX21hc2s7CisJZm9yX2VhY2hfcGlw ZShkZXZfcHJpdiwgcGlwZSkgeworCQlpbnQgd2VpZ2h0ID0gZGJ1Zl9zdGF0ZS0+d2VpZ2h0W3Bp cGVdOwogCiAJCS8qCiAJCSAqIERvIG5vdCBhY2NvdW50IHBpcGVzIHVzaW5nIG90aGVyIHNsaWNl IHNldHMKQEAgLTQxNTgsMTIgKzQxMjQsMTAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2RidWZf d2VpZ2h0cyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJICogaS5lIG5vIHBh cnRpYWwgaW50ZXJzZWN0aW9uKSwgc28gaXQgaXMgZW5vdWdoIHRvIGNoZWNrIGZvcgogCQkgKiBl cXVhbGl0eSBmb3Igbm93LgogCQkgKi8KLQkJaWYgKGRidWZfc2xpY2VfbWFzayAhPSBwaXBlX2Ri dWZfc2xpY2VfbWFzaykKKwkJaWYgKGRidWZfc3RhdGUtPnNsaWNlc1twaXBlXSAhPSBkYnVmX3N0 YXRlLT5zbGljZXNbZm9yX3BpcGVdKQogCQkJY29udGludWU7CiAKLQkJd2VpZ2h0ID0gaW50ZWxf Y3J0Y19kZGJfd2VpZ2h0KGNydGNfc3RhdGUpOwogCQkqd2VpZ2h0X3RvdGFsICs9IHdlaWdodDsK LQogCQlpZiAocGlwZSA8IGZvcl9waXBlKSB7CiAJCQkqd2VpZ2h0X3N0YXJ0ICs9IHdlaWdodDsK IAkJCSp3ZWlnaHRfZW5kICs9IHdlaWdodDsKQEAgLTQxNzEsODcgKzQxMzUsNjUgQEAgc3RhdGlj IGludCBpbnRlbF9jcnRjX2RidWZfd2VpZ2h0cyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKIAkJCSp3ZWlnaHRfZW5kICs9IHdlaWdodDsKIAkJfQogCX0KLQotCS8qCi0JICogRklY TUU6IEZvciBub3cgd2UgYWx3YXlzIGVuYWJsZSBzbGljZSBTMSBhcyBwZXIKLQkgKiB0aGUgQnNw ZWMgZGlzcGxheSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KLQkgKi8KLQluZXdfZGJ1Zl9zdGF0 ZS0+ZW5hYmxlZF9zbGljZXMgPSB0b3RhbF9zbGljZV9tYXNrIHwgQklUKERCVUZfUzEpOwotCi0J aWYgKG9sZF9kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyAhPSBuZXdfZGJ1Zl9zdGF0ZS0+ZW5h YmxlZF9zbGljZXMpIHsKLQkJcmV0ID0gaW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxfc3Rh dGUoJm5ld19kYnVmX3N0YXRlLT5iYXNlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0J fQotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2Nh dGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJCSAgIGNvbnN0IHU2 NCB0b3RhbF9kYXRhX3JhdGUsCi0JCQkJICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jLCAv KiBvdXQgKi8KLQkJCQkgICBpbnQgKm51bV9hY3RpdmUgLyogb3V0ICovKQorc2tsX2NydGNfYWxs b2NhdGVfZGRiKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKIHsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Ci0JCXRv X2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRlKTsKLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKLQl1 bnNpZ25lZCBpbnQgd2VpZ2h0X3N0YXJ0LCB3ZWlnaHRfZW5kLCB3ZWlnaHRfdG90YWw7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7 CisJdW5zaWduZWQgaW50IHdlaWdodF90b3RhbCwgd2VpZ2h0X3N0YXJ0LCB3ZWlnaHRfZW5kOwog CWNvbnN0IHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZSA9CiAJCWludGVs X2F0b21pY19nZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9kYnVmX3N0 YXRlICpuZXdfZGJ1Zl9zdGF0ZSA9CiAJCWludGVsX2F0b21pY19nZXRfbmV3X2RidWZfc3RhdGUo c3RhdGUpOwotCXU4IGFjdGl2ZV9waXBlcyA9IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXM7 CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJc3RydWN0IHNrbF9kZGJf ZW50cnkgZGRiX3NsaWNlczsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIGRk Yl9yYW5nZV9zaXplOwogCXUzMiBkYnVmX3NsaWNlX21hc2s7CiAJdTMyIHN0YXJ0LCBlbmQ7CiAJ aW50IHJldDsKIAotCSpudW1fYWN0aXZlID0gaHdlaWdodDgoYWN0aXZlX3BpcGVzKTsKLQotCWlm ICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Ci0JCWFsbG9jLT5zdGFydCA9IDA7Ci0JCWFsbG9j LT5lbmQgPSAwOwotCQlyZXR1cm4gMDsKKwlpZiAobmV3X2RidWZfc3RhdGUtPndlaWdodFtwaXBl XSA9PSAwKSB7CisJCW5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0uc3RhcnQgPSAwOworCQluZXdf ZGJ1Zl9zdGF0ZS0+ZGRiW3BpcGVdLmVuZCA9IDA7CisJCWdvdG8gb3V0OwogCX0KIAotCS8qCi0J ICogSWYgdGhlIHN0YXRlIGRvZXNuJ3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJl IGlzIG5vCi0JICogbW9kZXNldCByZXF1ZXN0LCB0aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byByZWNh bGN1bGF0ZTsKLQkgKiB0aGUgZXhpc3RpbmcgcGlwZSBhbGxvY2F0aW9uIGxpbWl0cyBzaG91bGQg cmVtYWluIHVuY2hhbmdlZC4KLQkgKiBOb3RlIHRoYXQgd2UncmUgc2FmZSBmcm9tIHJhY2luZyBj b21taXRzIHNpbmNlIGFueSByYWNpbmcgY29tbWl0Ci0JICogdGhhdCBjaGFuZ2VzIHRoZSBhY3Rp dmUgQ1JUQyBsaXN0IG9yIGRvIG1vZGVzZXQgd291bGQgbmVlZCB0bwotCSAqIGdyYWIgX2FsbF8g Y3J0YyBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmUgd2UgY3VycmVudGx5IGhvbGQuCi0JICovCi0J aWYgKG9sZF9kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPT0gbmV3X2RidWZfc3RhdGUtPmFjdGl2 ZV9waXBlcyAmJgotCSAgICAhZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20pCi0JCXJldHVy biAwOwotCi0JLyoKLQkgKiBHZXQgYWxsb3dlZCBEQnVmIHNsaWNlcyBmb3IgY29ycmVzcG9uZGVu dCBwaXBlIGFuZCBwbGF0Zm9ybS4KLQkgKi8KLQlkYnVmX3NsaWNlX21hc2sgPSBza2xfY29tcHV0 ZV9kYnVmX3NsaWNlcyhjcnRjLCBhY3RpdmVfcGlwZXMpOworCWRidWZfc2xpY2VfbWFzayA9IG5l d19kYnVmX3N0YXRlLT5zbGljZXNbcGlwZV07CiAKIAlza2xfZGRiX2VudHJ5X2Zvcl9zbGljZXMo ZGV2X3ByaXYsIGRidWZfc2xpY2VfbWFzaywgJmRkYl9zbGljZXMpOwogCWRkYl9yYW5nZV9zaXpl ID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGJfc2xpY2VzKTsKIAotCXJldCA9IGludGVsX2NydGNf ZGJ1Zl93ZWlnaHRzKHN0YXRlLCBjcnRjLAotCQkJCSAgICAgICZ3ZWlnaHRfc3RhcnQsICZ3ZWln aHRfZW5kLCAmd2VpZ2h0X3RvdGFsKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWludGVs X2NydGNfZGJ1Zl93ZWlnaHRzKG5ld19kYnVmX3N0YXRlLCBwaXBlLAorCQkJCSZ3ZWlnaHRfc3Rh cnQsICZ3ZWlnaHRfZW5kLCAmd2VpZ2h0X3RvdGFsKTsKIAogCXN0YXJ0ID0gZGRiX3JhbmdlX3Np emUgKiB3ZWlnaHRfc3RhcnQgLyB3ZWlnaHRfdG90YWw7CiAJZW5kID0gZGRiX3JhbmdlX3NpemUg KiB3ZWlnaHRfZW5kIC8gd2VpZ2h0X3RvdGFsOwogCi0JYWxsb2MtPnN0YXJ0ID0gZGRiX3NsaWNl cy5zdGFydCArIHN0YXJ0OwotCWFsbG9jLT5lbmQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgZW5kOwor CW5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0uc3RhcnQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgc3Rh cnQ7CisJbmV3X2RidWZfc3RhdGUtPmRkYltwaXBlXS5lbmQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsg ZW5kOworCitvdXQ6CisJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwoJm9sZF9kYnVmX3N0YXRlLT5k ZGJbcGlwZV0sCisJCQkJJm5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0pKQorCQlyZXR1cm4gMDsK KworCXJldCA9IGludGVsX2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUt PmJhc2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljcnRjX3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY3J0Yyk7CisJaWYgKElTX0VSUihj cnRjX3N0YXRlKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7CiAKIAlkcm1fZGJnX2tt cygmZGV2X3ByaXYtPmRybSwKLQkJICAgICJbQ1JUQzolZDolc10gZGJ1ZiBzbGljZXMgMHgleCwg ZGRiICglZCAtICVkKSwgYWN0aXZlIHBpcGVzIDB4JXhcbiIsCisJCSAgICAiW0NSVEM6JWQ6JXNd IGRidWYgc2xpY2VzIDB4JXggLT4gMHgleCwgZGRiICglZCAtICVkKSAtPiAoJWQgLSAlZCksIGFj dGl2ZSBwaXBlcyAweCV4IC0+IDB4JXhcbiIsCiAJCSAgICBjcnRjLT5iYXNlLmJhc2UuaWQsIGNy dGMtPmJhc2UubmFtZSwKLQkJICAgIGRidWZfc2xpY2VfbWFzaywgYWxsb2MtPnN0YXJ0LCBhbGxv Yy0+ZW5kLCBhY3RpdmVfcGlwZXMpOworCQkgICAgb2xkX2RidWZfc3RhdGUtPnNsaWNlc1twaXBl XSwgbmV3X2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXSwKKwkJICAgIG9sZF9kYnVmX3N0YXRlLT5k ZGJbcGlwZV0uc3RhcnQsIG9sZF9kYnVmX3N0YXRlLT5kZGJbcGlwZV0uZW5kLAorCQkgICAgbmV3 X2RidWZfc3RhdGUtPmRkYltwaXBlXS5zdGFydCwgbmV3X2RidWZfc3RhdGUtPmRkYltwaXBlXS5l bmQsCisJCSAgICBvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzLCBuZXdfZGJ1Zl9zdGF0ZS0+ YWN0aXZlX3BpcGVzKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDgxNyw1NyArNDc1OSwzMCBAQCBz a2xfcGxhbmVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCitz a2xfYWxsb2NhdGVfcGxhbmVfZGRiKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAor CQkgICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQogCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0 YXRlKHN0YXRlLCBjcnRjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9z dGF0ZSA9CisJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRidWZfc3RhdGUgPQogCQlp bnRlbF9hdG9taWNfZ2V0X25ld19kYnVmX3N0YXRlKHN0YXRlKTsKLQlzdHJ1Y3Qgc2tsX2RkYl9l bnRyeSAqYWxsb2MgPSAmZGJ1Zl9zdGF0ZS0+ZGRiW2NydGMtPnBpcGVdOworCWNvbnN0IHN0cnVj dCBza2xfZGRiX2VudHJ5ICphbGxvYyA9ICZkYnVmX3N0YXRlLT5kZGJbY3J0Yy0+cGlwZV07CisJ aW50IG51bV9hY3RpdmUgPSBod2VpZ2h0OChkYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpOwogCXUx NiBhbGxvY19zaXplLCBzdGFydCA9IDA7CiAJdTE2IHRvdGFsW0k5MTVfTUFYX1BMQU5FU10gPSB7 fTsKIAl1MTYgdXZfdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXU2NCB0b3RhbF9kYXRh X3JhdGU7CiAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKLQlpbnQgbnVtX2FjdGl2ZTsKIAl1MzIg YmxvY2tzOwogCWludCBsZXZlbDsKLQlpbnQgcmV0OwogCiAJLyogQ2xlYXIgdGhlIHBhcnRpdGlv bmluZyBmb3IgZGlzYWJsZWQgcGxhbmVzLiAqLwogCW1lbXNldChjcnRjX3N0YXRlLT53bS5za2wu cGxhbmVfZGRiX3ksIDAsIHNpemVvZihjcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3kpKTsK IAltZW1zZXQoY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91diwgMCwgc2l6ZW9mKGNydGNf c3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfdXYpKTsKIAotCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0 aXZlKSB7Ci0JCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KLQkJCXRvX2ludGVs X2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRlKTsKLQkJc3RydWN0IGludGVsX2Ri dWZfc3RhdGUgKm5ld19kYnVmX3N0YXRlID0KLQkJCWludGVsX2F0b21pY19nZXRfbmV3X2RidWZf c3RhdGUoc3RhdGUpOwotCQljb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqb2xkX2RidWZf c3RhdGUgPQotCQkJaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0KLQkJ LyoKLQkJICogRklYTUUgaGFjayB0byBtYWtlIHN1cmUgd2UgY29tcHV0ZSB0aGlzIHNlbnNpYmx5 IHdoZW4KLQkJICogdHVybmluZyBvZmYgYWxsIHRoZSBwaXBlcy4gT3RoZXJ3aXNlIHdlIGxlYXZl IGl0IGF0Ci0JCSAqIHdoYXRldmVyIHdlIGhhZCBwcmV2aW91c2x5LCBhbmQgdGhlbiBydW50aW1l IFBNIHdpbGwKLQkJICogbWVzcyBpdCB1cCBieSB0dXJuaW5nIG9mZiBhbGwgYnV0IFMxLiBSZW1v dmUgdGhpcwotCQkgKiBvbmNlIHRoZSBkYnVmIHN0YXRlIGNvbXB1dGF0aW9uIGZsb3cgYmVjb21l cyBzYW5lLgotCQkgKi8KLQkJaWYgKG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPT0gMCkg ewotCQkJbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzID0gQklUKERCVUZfUzEpOwotCi0J CQlpZiAob2xkX2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzICE9IG5ld19kYnVmX3N0YXRlLT5l bmFibGVkX3NsaWNlcykgewotCQkJCXJldCA9IGludGVsX2F0b21pY19zZXJpYWxpemVfZ2xvYmFs X3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7Ci0JCQkJaWYgKHJldCkKLQkJCQkJcmV0dXJu IHJldDsKLQkJCX0KLQkJfQotCi0JCWFsbG9jLT5zdGFydCA9IGFsbG9jLT5lbmQgPSAwOworCWlm ICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlyZXR1cm4gMDsKLQl9CiAKIAlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMSkKIAkJdG90YWxfZGF0YV9yYXRlID0KQEAgLTQ4NzYsMTIgKzQ3 OTEsNiBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCiAJCXRvdGFsX2RhdGFfcmF0ZSA9CiAJCQlza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2Rh dGFfcmF0ZShzdGF0ZSwgY3J0Yyk7CiAKLQlyZXQgPSBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRp b25fbGltaXRzKGRldl9wcml2LCBjcnRjX3N0YXRlLAotCQkJCQkJIHRvdGFsX2RhdGFfcmF0ZSwK LQkJCQkJCSBhbGxvYywgJm51bV9hY3RpdmUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0K IAlhbGxvY19zaXplID0gc2tsX2RkYl9lbnRyeV9zaXplKGFsbG9jKTsKIAlpZiAoYWxsb2Nfc2l6 ZSA9PSAwKQogCQlyZXR1cm4gMDsKQEAgLTU3OTYsMzkgKzU3MDUsMTE0IEBAIHNrbF9kZGJfYWRk X2FmZmVjdGVkX3BsYW5lcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGUsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB1OCBpbnRlbF9kYnVmX2VuYWJsZWRfc2xp Y2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpkYnVmX3N0YXRlKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGJ1Zl9zdGF0ZS0+YmFzZS5z dGF0ZS0+YmFzZS5kZXYpOworCXU4IGVuYWJsZWRfc2xpY2VzOworCWVudW0gcGlwZSBwaXBlOwor CisJLyoKKwkgKiBGSVhNRTogRm9yIG5vdyB3ZSBhbHdheXMgZW5hYmxlIHNsaWNlIFMxIGFzIHBl cgorCSAqIHRoZSBCc3BlYyBkaXNwbGF5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgorCSAqLwor CWVuYWJsZWRfc2xpY2VzID0gQklUKERCVUZfUzEpOworCisJZm9yX2VhY2hfcGlwZShkZXZfcHJp diwgcGlwZSkKKwkJZW5hYmxlZF9zbGljZXMgfD0gZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVdOwor CisJcmV0dXJuIGVuYWJsZWRfc2xpY2VzOworfQorCiBzdGF0aWMgaW50CiBza2xfY29tcHV0ZV9k ZGIoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0 cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZTsKLQljb25zdCBzdHJ1Y3QgaW50 ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGU7CisJc3RydWN0IGludGVsX2RidWZfc3RhdGUg Km5ld19kYnVmX3N0YXRlID0gTlVMTDsKIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGU7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRl OwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCWludCByZXQsIGk7CiAKLQlmb3JfZWFjaF9v bGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCi0J CQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewotCQlyZXQgPSBza2xfYWxsb2NhdGVfcGlwZV9k ZGIoc3RhdGUsIGNydGMpOworCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQluZXdfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0 b21pY19nZXRfZGJ1Zl9zdGF0ZShzdGF0ZSk7CisJCWlmIChJU19FUlIobmV3X2RidWZfc3RhdGUp KQorCQkJcmV0dXJuIFBUUl9FUlIobmV3X2RidWZfc3RhdGUpOworCisJCW9sZF9kYnVmX3N0YXRl ID0gaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7CisJCWJyZWFrOworCX0K KworCWlmICghbmV3X2RidWZfc3RhdGUpCisJCXJldHVybiAwOworCisJbmV3X2RidWZfc3RhdGUt PmFjdGl2ZV9waXBlcyA9CisJCWludGVsX2NhbGNfYWN0aXZlX3BpcGVzKHN0YXRlLCBvbGRfZGJ1 Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKKworCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3Bp cGVzICE9IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpIHsKKwkJcmV0ID0gaW50ZWxfYXRv bWljX2xvY2tfZ2xvYmFsX3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CiAJCWlmIChyZXQp CiAJCQlyZXR1cm4gcmV0OworCX0KIAotCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFu ZXMob2xkX2NydGNfc3RhdGUsCi0JCQkJCQkgIG5ld19jcnRjX3N0YXRlKTsKKwlmb3JfZWFjaF9p bnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7CisJCWVudW0gcGlwZSBwaXBlID0gY3J0 Yy0+cGlwZTsKKworCQluZXdfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVdID0KKwkJCXNrbF9jb21w dXRlX2RidWZfc2xpY2VzKGNydGMsIG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpOworCisJ CWlmIChvbGRfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVdID09IG5ld19kYnVmX3N0YXRlLT5zbGlj ZXNbcGlwZV0pCisJCQljb250aW51ZTsKKworCQlyZXQgPSBpbnRlbF9hdG9taWNfbG9ja19nbG9i YWxfc3RhdGUoJm5ld19kYnVmX3N0YXRlLT5iYXNlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiBy ZXQ7CiAJfQogCi0Jb2xkX2RidWZfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29sZF9kYnVmX3N0 YXRlKHN0YXRlKTsKLQluZXdfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfbmV3X2RidWZf c3RhdGUoc3RhdGUpOworCW5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2Ri dWZfZW5hYmxlZF9zbGljZXMobmV3X2RidWZfc3RhdGUpOworCisJaWYgKG9sZF9kYnVmX3N0YXRl LT5lbmFibGVkX3NsaWNlcyAhPSBuZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMpIHsKKwkJ cmV0ID0gaW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxfc3RhdGUoJm5ld19kYnVmX3N0YXRl LT5iYXNlKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CiAKLQlpZiAobmV3X2RidWZfc3Rh dGUgJiYKLQkgICAgbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzICE9IG9sZF9kYnVmX3N0 YXRlLT5lbmFibGVkX3NsaWNlcykKIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCiAJCQkg ICAgIkVuYWJsZWQgZGJ1ZiBzbGljZXMgMHgleCAtPiAweCV4IChvdXQgb2YgJWQgZGJ1ZiBzbGlj ZXMpXG4iLAogCQkJICAgIG9sZF9kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcywKIAkJCSAgICBu ZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMsCiAJCQkgICAgSU5URUxfSU5GTyhkZXZfcHJp diktPm51bV9zdXBwb3J0ZWRfZGJ1Zl9zbGljZXMpOworCX0KKworCWZvcl9lYWNoX25ld19pbnRl bF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisKKwkJbmV3X2RidWZfc3RhdGUtPndlaWdodFtwaXBl XSA9IGludGVsX2NydGNfZGRiX3dlaWdodChuZXdfY3J0Y19zdGF0ZSk7CisKKwkJaWYgKG9sZF9k YnVmX3N0YXRlLT53ZWlnaHRbcGlwZV0gPT0gbmV3X2RidWZfc3RhdGUtPndlaWdodFtwaXBlXSkK KwkJCWNvbnRpbnVlOworCisJCXJldCA9IGludGVsX2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZSgm bmV3X2RidWZfc3RhdGUtPmJhc2UpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisK Kwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7CisJCXJldCA9IHNr bF9jcnRjX2FsbG9jYXRlX2RkYihzdGF0ZSwgY3J0Yyk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4g cmV0OworCX0KKworCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwKKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CisJCXJl dCA9IHNrbF9hbGxvY2F0ZV9wbGFuZV9kZGIoc3RhdGUsIGNydGMpOworCQlpZiAocmV0KQorCQkJ cmV0dXJuIHJldDsKKworCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMob2xkX2Ny dGNfc3RhdGUsCisJCQkJCQkgIG5ld19jcnRjX3N0YXRlKTsKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC01OTY1LDgzICs1OTQ5LDYgQEAgc2tsX3By aW50X3dtX2NoYW5nZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJfQogfQog Ci1zdGF0aWMgaW50IGludGVsX2FkZF9hZmZlY3RlZF9waXBlcyhzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKLQkJCQkgICAgdTggcGlwZV9tYXNrKQotewotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YzsKLQotCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0s IGNydGMpIHsKLQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0KLQkJaWYg KChwaXBlX21hc2sgJiBCSVQoY3J0Yy0+cGlwZSkpID09IDApCi0JCQljb250aW51ZTsKLQotCQlj cnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY3J0 Yyk7Ci0JCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0 YXRlKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotc2tsX2RkYl9hZGRfYWZm ZWN0ZWRfcGlwZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwot CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjOwotCWludCBpLCByZXQ7Ci0KLQlpZiAoZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nf d20pIHsKLQkJLyoKLQkJICogc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cygpIGN1 cnJlbnRseSByZXF1aXJlcwotCQkgKiBhbGwgYWN0aXZlIHBpcGVzIHRvIGJlIGluY2x1ZGVkIGlu IHRoZSBzdGF0ZSBzbyB0aGF0Ci0JCSAqIGl0IGNhbiByZWRpc3RyaWJ1dGUgdGhlIGRidWYgYW1v bmcgdGhlbSwgYW5kIGl0IHJlYWxseQotCQkgKiB3YW50cyB0byByZWNvbXB1dGUgdGhpbmdzIHdo ZW4gZGlzdHJ1c3RfYmlvc193bSBpcyBzZXQKLQkJICogc28gd2UgYWRkIGFsbCB0aGUgcGlwZXMg dG8gdGhlIHN0YXRlLgotCQkgKi8KLQkJcmV0ID0gaW50ZWxfYWRkX2FmZmVjdGVkX3BpcGVzKHN0 YXRlLCB+MCk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCX0KLQotCWZvcl9lYWNoX25l d19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCXN0 cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpuZXdfZGJ1Zl9zdGF0ZTsKLQkJY29uc3Qgc3RydWN0IGlu dGVsX2RidWZfc3RhdGUgKm9sZF9kYnVmX3N0YXRlOwotCi0JCW5ld19kYnVmX3N0YXRlID0gaW50 ZWxfYXRvbWljX2dldF9kYnVmX3N0YXRlKHN0YXRlKTsKLQkJaWYgKElTX0VSUihuZXdfZGJ1Zl9z dGF0ZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihuZXdfZGJ1Zl9zdGF0ZSk7Ci0KLQkJb2xkX2RidWZf c3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29sZF9kYnVmX3N0YXRlKHN0YXRlKTsKLQotCQluZXdf ZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzID0KLQkJCWludGVsX2NhbGNfYWN0aXZlX3BpcGVzKHN0 YXRlLCBvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKLQotCQlpZiAob2xkX2RidWZfc3Rh dGUtPmFjdGl2ZV9waXBlcyA9PSBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKQotCQkJYnJl YWs7Ci0KLQkJcmV0ID0gaW50ZWxfYXRvbWljX2xvY2tfZ2xvYmFsX3N0YXRlKCZuZXdfZGJ1Zl9z dGF0ZS0+YmFzZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCS8qCi0JCSAqIHNr bF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoKSBjdXJyZW50bHkgcmVxdWlyZXMKLQkJ ICogYWxsIGFjdGl2ZSBwaXBlcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgc3RhdGUgc28gdGhhdAot CQkgKiBpdCBjYW4gcmVkaXN0cmlidXRlIHRoZSBkYnVmIGFtb25nIHRoZW0uCi0JCSAqLwotCQly ZXQgPSBpbnRlbF9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RhdGUsCi0JCQkJCSAgICAgICBuZXdfZGJ1 Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJ YnJlYWs7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KIC8qCiAgKiBUbyBtYWtlIHN1cmUgdGhlIGN1 cnNvciB3YXRlcm1hcmsgcmVnaXN0ZXJzIGFyZSBhbHdheXMgY29uc2lzdGVudAogICogd2l0aCBv dXIgY29tcHV0ZWQgc3RhdGUgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBuZWVkcyBzcGVjaWFsCkBA IC02MTA5LDE1ICs2MDE2LDYgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwog CWludCByZXQsIGk7CiAKLQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9waXBlcyhzdGF0ZSk7 Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCS8qCi0JICogQ2FsY3VsYXRlIFdNJ3MgZm9y IGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJhbnNhY3Rpb24uCi0JICogTm90ZSB0 aGF0IHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzIG1heSBoYXZlIGFkZGVkIG1vcmUgQ1JUQydz IHRoYXQKLQkgKiB3ZXJlbid0IG90aGVyd2lzZSBiZWluZyBtb2RpZmllZCBpZiBwaXBlIGFsbG9j YXRpb25zIGhhZCB0byBjaGFuZ2UuCi0JICovCiAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCXJldCA9IHNrbF9idWls ZF9waXBlX3dtKHN0YXRlLCBjcnRjKTsKIAkJaWYgKHJldCkKQEAgLTYyODUsMTEgKzYxODMsNiBA QCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmNydGNfc3RhdGUtPndtLnNr bC5vcHRpbWFsKTsKIAkJY3J0Y19zdGF0ZS0+d20uc2tsLnJhdyA9IGNydGNfc3RhdGUtPndtLnNr bC5vcHRpbWFsOwogCX0KLQotCWlmIChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKSB7Ci0JCS8qIEZ1 bGx5IHJlY29tcHV0ZSBEREIgb24gZmlyc3QgYXRvbWljIGNvbW1pdCAqLwotCQlkZXZfcHJpdi0+ d20uZGlzdHJ1c3RfYmlvc193bSA9IHRydWU7Ci0JfQogfQogCiBzdGF0aWMgdm9pZCBpbGtfcGlw ZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uaAppbmRleCA3MjQyMDRiYjg0NDIuLjk3NTUwY2YwYjZkZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5oCkBAIC03MSw2ICs3MSw4IEBAIHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlIHsKIAlz dHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlIGJhc2U7CiAKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBk ZGJbSTkxNV9NQVhfUElQRVNdOworCXVuc2lnbmVkIGludCB3ZWlnaHRbSTkxNV9NQVhfUElQRVNd OworCXU4IHNsaWNlc1tJOTE1X01BWF9QSVBFU107CiAKIAl1OCBlbmFibGVkX3NsaWNlczsKIAl1 OCBhY3RpdmVfcGlwZXM7Ci0tIAoyLjI2LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=