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 796E1C63798 for ; Thu, 22 Jul 2021 05:39:36 +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 48AC361001 for ; Thu, 22 Jul 2021 05:39:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 48AC361001 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 D0EC26EEB8; Thu, 22 Jul 2021 05:39:32 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBC7B6E85E for ; Thu, 22 Jul 2021 05:39:25 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10052"; a="208456075" X-IronPort-AV: E=Sophos;i="5.84,260,1620716400"; d="scan'208";a="208456075" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2021 22:39:25 -0700 X-IronPort-AV: E=Sophos;i="5.84,260,1620716400"; d="scan'208";a="470415088" Received: from jkandi-mobl.amr.corp.intel.com (HELO josouza-mobl2.intel.com) ([10.209.170.189]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2021 22:39:25 -0700 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= To: intel-gfx@lists.freedesktop.org Date: Wed, 21 Jul 2021 22:43:35 -0700 Message-Id: <20210722054338.12891-7-jose.souza@intel.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210722054338.12891-1-jose.souza@intel.com> References: <20210722054338.12891-1-jose.souza@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 07/10] drm/i915/bios: Enable parse of two DSI panels data 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: , Cc: Jani Nikula Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Q29udGludWluZyB0aGUgY29udmVyc2lvbiBmcm9tIHNpbmdsZSBpbnRlZ3JhdGVkIFZCVCBkYXRh IHRvIHR3bywgbm93CmhhbmRsaW5nIERTSSBkYXRhLgoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNv dXphQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2ku YyAgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9z LmMgICAgfCAxNjMgKysrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9iaW9zLmggICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kc2kuYyAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHNpX3ZidC5jIHwgIDU4ICsrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfcGFuZWwuYyAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L3Zsdl9kc2kuYyAgICAgICB8ICAxNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICAgICAgfCAgMzAgKystLQogOCBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9u cygrKSwgMTI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaWNsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNp LmMKaW5kZXggNDNlYzdmY2QzZjVkMi4uMGE4MzYwZDE5NmNjNyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pY2xfZHNpLmMKQEAgLTE4NDYsNyArMTg0Niw4IEBAIHN0YXRpYyB2b2lkIGlj bF9kcGh5X3BhcmFtX2luaXQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpKQogewogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2ktPmJhc2UuYmFzZS5kZXY7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBtaXBpX2Nv bmZpZyAqbWlwaV9jb25maWcgPSBkZXZfcHJpdi0+dmJ0LmRzaS5jb25maWc7CisJY29uc3Qgc3Ry dWN0IHZidF9kc2lfaW5mbyAqdmJ0X2RzaV9pbmZvID0gaW50ZWxfYmlvc19kc2lfaW5mbygmaW50 ZWxfZHNpLT5iYXNlKTsKKwlzdHJ1Y3QgbWlwaV9jb25maWcgKm1pcGlfY29uZmlnID0gdmJ0X2Rz aV9pbmZvLT5jb25maWc7CiAJdTMyIHRscHhfbnM7CiAJdTMyIHByZXBhcmVfY250LCBleGl0X3pl cm9fY250LCBjbGtfemVyb19jbnQsIHRyYWlsX2NudDsKIAl1MzIgdGhzX3ByZXBhcmVfbnMsIHRj bGtfdHJhaWxfbnM7CkBAIC0xOTc3LDYgKzE5NzgsNyBAQCB2b2lkIGljbF9kc2lfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAq aW50ZWxfY29ubmVjdG9yOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGU7CisJY29uc3Qgc3RydWN0IHZidF9kc2lf aW5mbyAqdmJ0X2RzaV9pbmZvOwogCWVudW0gcG9ydCBwb3J0OwogCiAJaWYgKCFpbnRlbF9iaW9z X2lzX2RzaV9wcmVzZW50KGRldl9wcml2LCAmcG9ydCkpCkBAIC0yMDQ0LDEzICsyMDQ2LDE1IEBA IHZvaWQgaWNsX2RzaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlp bnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9tb2RlLCBOVUxM KTsKIAlpbnRlbF9wYW5lbF9zZXR1cF9iYWNrbGlnaHQoY29ubmVjdG9yLCBJTlZBTElEX1BJUEUp OwogCi0JaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZpZy0+ZHVhbF9saW5rKQorCXZidF9kc2lf aW5mbyA9IGludGVsX2Jpb3NfZHNpX2luZm8oZW5jb2Rlcik7CisKKwlpZiAodmJ0X2RzaV9pbmZv LT5jb25maWctPmR1YWxfbGluaykKIAkJaW50ZWxfZHNpLT5wb3J0cyA9IEJJVChQT1JUX0EpIHwg QklUKFBPUlRfQik7CiAJZWxzZQogCQlpbnRlbF9kc2ktPnBvcnRzID0gQklUKHBvcnQpOwogCi0J aW50ZWxfZHNpLT5kY3NfYmFja2xpZ2h0X3BvcnRzID0gZGV2X3ByaXYtPnZidC5kc2kuYmxfcG9y dHM7Ci0JaW50ZWxfZHNpLT5kY3NfY2FiY19wb3J0cyA9IGRldl9wcml2LT52YnQuZHNpLmNhYmNf cG9ydHM7CisJaW50ZWxfZHNpLT5kY3NfYmFja2xpZ2h0X3BvcnRzID0gdmJ0X2RzaV9pbmZvLT5i bF9wb3J0czsKKwlpbnRlbF9kc2ktPmRjc19jYWJjX3BvcnRzID0gdmJ0X2RzaV9pbmZvLT5jYWJj X3BvcnRzOwogCiAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewog CQlzdHJ1Y3QgaW50ZWxfZHNpX2hvc3QgKmhvc3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jpb3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfYmlvcy5jCmluZGV4IGRlNjkwZTk2ZGU3MjMuLmExYTFjYzBjNDYyZmQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jCkBAIC0xMDIyLDU1ICsxMDIy LDU2IEBAIHBhcnNlX3BzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3Qgc3Ry dWN0IGJkYl9oZWFkZXIgKmJkYiwKIH0KIAogc3RhdGljIHZvaWQgcGFyc2VfZHNpX2JhY2tsaWdo dF9wb3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKLQkJCQkgICAgICB1MTYgdmVy c2lvbiwgZW51bSBwb3J0IHBvcnQpCisJCQkJICAgICAgdTE2IHZlcnNpb24sIGVudW0gcG9ydCBw b3J0LAorCQkJCSAgICAgIHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyAqaW5mbykKIHsKLQlpZiAo IWk5MTUtPnZidC5kc2kuY29uZmlnLT5kdWFsX2xpbmsgfHwgdmVyc2lvbiA8IDE5NykgewotCQlp OTE1LT52YnQuZHNpLmJsX3BvcnRzID0gQklUKHBvcnQpOwotCQlpZiAoaTkxNS0+dmJ0LmRzaS5j b25maWctPmNhYmNfc3VwcG9ydGVkKQotCQkJaTkxNS0+dmJ0LmRzaS5jYWJjX3BvcnRzID0gQklU KHBvcnQpOworCWlmICghaW5mby0+ZHNpLmNvbmZpZy0+ZHVhbF9saW5rIHx8IHZlcnNpb24gPCAx OTcpIHsKKwkJaW5mby0+ZHNpLmJsX3BvcnRzID0gQklUKHBvcnQpOworCQlpZiAoaW5mby0+ZHNp LmNvbmZpZy0+Y2FiY19zdXBwb3J0ZWQpCisJCQlpbmZvLT5kc2kuY2FiY19wb3J0cyA9IEJJVChw b3J0KTsKIAogCQlyZXR1cm47CiAJfQogCi0Jc3dpdGNoIChpOTE1LT52YnQuZHNpLmNvbmZpZy0+ ZGxfZGNzX2JhY2tsaWdodF9wb3J0cykgeworCXN3aXRjaCAoaW5mby0+ZHNpLmNvbmZpZy0+ZGxf ZGNzX2JhY2tsaWdodF9wb3J0cykgewogCWNhc2UgRExfRENTX1BPUlRfQToKLQkJaTkxNS0+dmJ0 LmRzaS5ibF9wb3J0cyA9IEJJVChQT1JUX0EpOworCQlpbmZvLT5kc2kuYmxfcG9ydHMgPSBCSVQo UE9SVF9BKTsKIAkJYnJlYWs7CiAJY2FzZSBETF9EQ1NfUE9SVF9DOgotCQlpOTE1LT52YnQuZHNp LmJsX3BvcnRzID0gQklUKFBPUlRfQyk7CisJCWluZm8tPmRzaS5ibF9wb3J0cyA9IEJJVChQT1JU X0MpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCWNhc2UgRExfRENTX1BPUlRfQV9BTkRfQzoKLQkJ aTkxNS0+dmJ0LmRzaS5ibF9wb3J0cyA9IEJJVChQT1JUX0EpIHwgQklUKFBPUlRfQyk7CisJCWlu Zm8tPmRzaS5ibF9wb3J0cyA9IEJJVChQT1JUX0EpIHwgQklUKFBPUlRfQyk7CiAJCWJyZWFrOwog CX0KIAotCWlmICghaTkxNS0+dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQorCWlmICgh aW5mby0+ZHNpLmNvbmZpZy0+Y2FiY19zdXBwb3J0ZWQpCiAJCXJldHVybjsKIAotCXN3aXRjaCAo aTkxNS0+dmJ0LmRzaS5jb25maWctPmRsX2Rjc19jYWJjX3BvcnRzKSB7CisJc3dpdGNoIChpbmZv LT5kc2kuY29uZmlnLT5kbF9kY3NfY2FiY19wb3J0cykgewogCWNhc2UgRExfRENTX1BPUlRfQToK LQkJaTkxNS0+dmJ0LmRzaS5jYWJjX3BvcnRzID0gQklUKFBPUlRfQSk7CisJCWluZm8tPmRzaS5j YWJjX3BvcnRzID0gQklUKFBPUlRfQSk7CiAJCWJyZWFrOwogCWNhc2UgRExfRENTX1BPUlRfQzoK LQkJaTkxNS0+dmJ0LmRzaS5jYWJjX3BvcnRzID0gQklUKFBPUlRfQyk7CisJCWluZm8tPmRzaS5j YWJjX3BvcnRzID0gQklUKFBPUlRfQyk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJY2FzZSBETF9E Q1NfUE9SVF9BX0FORF9DOgotCQlpOTE1LT52YnQuZHNpLmNhYmNfcG9ydHMgPQotCQkJCQlCSVQo UE9SVF9BKSB8IEJJVChQT1JUX0MpOworCQlpbmZvLT5kc2kuY2FiY19wb3J0cyA9IEJJVChQT1JU X0EpIHwgQklUKFBPUlRfQyk7CiAJCWJyZWFrOwogCX0KIH0KIAogc3RhdGljIHZvaWQKIHBhcnNl X21pcGlfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAotCQkgIGNvbnN0IHN0 cnVjdCBiZGJfaGVhZGVyICpiZGIpCisJCSAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYiwK KwkJICBzdHJ1Y3QgZGRpX3ZidF9wb3J0X2luZm8gKmluZm8sCisJCSAgaW50IHBhbmVsX2luZGV4 KQogewogCWNvbnN0IHN0cnVjdCBiZGJfbWlwaV9jb25maWcgKnN0YXJ0OwogCWNvbnN0IHN0cnVj dCBtaXBpX2NvbmZpZyAqY29uZmlnOwogCWNvbnN0IHN0cnVjdCBtaXBpX3Bwc19kYXRhICpwcHM7 Ci0JaW50IHBhbmVsX3R5cGUgPSBpOTE1LT52YnQucGFuZWxfdHlwZTsKIAllbnVtIHBvcnQgcG9y dDsKIAogCS8qIHBhcnNlIE1JUEkgYmxvY2tzIG9ubHkgaWYgTEZQIHR5cGUgaXMgTUlQSSAqLwpA QCAtMTA3OCwxNCArMTA3OSwxNCBAQCBwYXJzZV9taXBpX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKIAkJcmV0dXJuOwogCiAJLyogSW5pdGlhbGl6ZSB0aGlzIHRvIHVuZGVm aW5lZCBpbmRpY2F0aW5nIG5vIGdlbmVyaWMgTUlQSSBzdXBwb3J0ICovCi0JaTkxNS0+dmJ0LmRz aS5wYW5lbF9pZCA9IE1JUElfRFNJX1VOREVGSU5FRF9QQU5FTF9JRDsKKwlpbmZvLT5kc2kucGFu ZWxfaWQgPSBNSVBJX0RTSV9VTkRFRklORURfUEFORUxfSUQ7CiAKIAkvKiBCbG9jayAjNDAgaXMg YWxyZWFkeSBwYXJzZWQgYW5kIHBhbmVsX2ZpeGVkX21vZGUgaXMKIAkgKiBzdG9yZWQgaW4gaTkx NS0+bGZwX2x2ZHNfdmJ0X21vZGUKIAkgKiByZXN1c2UgdGhpcyB3aGVuIG5lZWRlZAogCSAqLwog Ci0JLyogUGFyc2UgIzUyIGZvciBwYW5lbCBpbmRleCB1c2VkIGZyb20gcGFuZWxfdHlwZSBhbHJl YWR5CisJLyogUGFyc2UgIzUyIGZvciBwYW5lbCBpbmRleCB1c2VkIGZyb20gcGFuZWxfaW5kZXgg YWxyZWFkeQogCSAqIHBhcnNlZAogCSAqLwogCXN0YXJ0ID0gZmluZF9zZWN0aW9uKGJkYiwgQkRC X01JUElfQ09ORklHKTsKQEAgLTEwOTUsMjcgKzEwOTYsMjcgQEAgcGFyc2VfbWlwaV9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJfQogCiAJZHJtX2RiZygmaTkxNS0+ZHJt LCAiRm91bmQgTUlQSSBDb25maWcgYmxvY2ssIHBhbmVsIGluZGV4ID0gJWRcbiIsCi0JCXBhbmVs X3R5cGUpOworCQlwYW5lbF9pbmRleCk7CiAKIAkvKgogCSAqIGdldCBob2xkIG9mIHRoZSBjb3Jy ZWN0IGNvbmZpZ3VyYXRpb24gYmxvY2sgYW5kIHBwcyBkYXRhIGFzIHBlcgotCSAqIHRoZSBwYW5l bF90eXBlIGFzIGluZGV4CisJICogdGhlIHBhbmVsX2luZGV4IGFzIGluZGV4CiAJICovCi0JY29u ZmlnID0gJnN0YXJ0LT5jb25maWdbcGFuZWxfdHlwZV07Ci0JcHBzID0gJnN0YXJ0LT5wcHNbcGFu ZWxfdHlwZV07CisJY29uZmlnID0gJnN0YXJ0LT5jb25maWdbcGFuZWxfaW5kZXhdOworCXBwcyA9 ICZzdGFydC0+cHBzW3BhbmVsX2luZGV4XTsKIAogCS8qIHN0b3JlIGFzIG9mIG5vdyBmdWxsIGRh dGEuIFRyaW0gd2hlbiB3ZSByZWFsaXNlIGFsbCBpcyBub3QgbmVlZGVkICovCi0JaTkxNS0+dmJ0 LmRzaS5jb25maWcgPSBrbWVtZHVwKGNvbmZpZywgc2l6ZW9mKHN0cnVjdCBtaXBpX2NvbmZpZyks IEdGUF9LRVJORUwpOwotCWlmICghaTkxNS0+dmJ0LmRzaS5jb25maWcpCisJaW5mby0+ZHNpLmNv bmZpZyA9IGttZW1kdXAoY29uZmlnLCBzaXplb2Yoc3RydWN0IG1pcGlfY29uZmlnKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFpbmZvLT5kc2kuY29uZmlnKQogCQlyZXR1cm47CiAKLQlpOTE1LT52YnQu ZHNpLnBwcyA9IGttZW1kdXAocHBzLCBzaXplb2Yoc3RydWN0IG1pcGlfcHBzX2RhdGEpLCBHRlBf S0VSTkVMKTsKLQlpZiAoIWk5MTUtPnZidC5kc2kucHBzKSB7Ci0JCWtmcmVlKGk5MTUtPnZidC5k c2kuY29uZmlnKTsKKwlpbmZvLT5kc2kucHBzID0ga21lbWR1cChwcHMsIHNpemVvZihzdHJ1Y3Qg bWlwaV9wcHNfZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghaW5mby0+ZHNpLnBwcykgeworCQlr ZnJlZShpbmZvLT5kc2kuY29uZmlnKTsKIAkJcmV0dXJuOwogCX0KIAotCXBhcnNlX2RzaV9iYWNr bGlnaHRfcG9ydHMoaTkxNSwgYmRiLT52ZXJzaW9uLCBwb3J0KTsKKwlwYXJzZV9kc2lfYmFja2xp Z2h0X3BvcnRzKGk5MTUsIGJkYi0+dmVyc2lvbiwgcG9ydCwgaW5mbyk7CiAKIAkvKiBGSVhNRSBp cyB0aGUgOTAgdnMuIDI3MCBjb3JyZWN0PyAqLwogCXN3aXRjaCAoY29uZmlnLT5yb3RhdGlvbikg ewpAQCAtMTEyNCwyNSArMTEyNSwyNSBAQCBwYXJzZV9taXBpX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICogTW9zdCAoYWxsPykgVkJUcyBjbGFpbSAwIGRlZ3JlZXMg ZGVzcGl0ZSBoYXZpbmcKIAkJICogYW4gdXBzaWRlIGRvd24gcGFuZWwsIHRodXMgd2UgZG8gbm90 IHRydXN0IHRoaXMuCiAJCSAqLwotCQlpOTE1LT52YnQuZHNpLm9yaWVudGF0aW9uID0KKwkJaW5m by0+ZHNpLm9yaWVudGF0aW9uID0KIAkJCURSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1VOS05P V047CiAJCWJyZWFrOwogCWNhc2UgRU5BQkxFX1JPVEFUSU9OXzkwOgotCQlpOTE1LT52YnQuZHNp Lm9yaWVudGF0aW9uID0KKwkJaW5mby0+ZHNpLm9yaWVudGF0aW9uID0KIAkJCURSTV9NT0RFX1BB TkVMX09SSUVOVEFUSU9OX1JJR0hUX1VQOwogCQlicmVhazsKIAljYXNlIEVOQUJMRV9ST1RBVElP Tl8xODA6Ci0JCWk5MTUtPnZidC5kc2kub3JpZW50YXRpb24gPQorCQlpbmZvLT5kc2kub3JpZW50 YXRpb24gPQogCQkJRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fQk9UVE9NX1VQOwogCQlicmVh azsKIAljYXNlIEVOQUJMRV9ST1RBVElPTl8yNzA6Ci0JCWk5MTUtPnZidC5kc2kub3JpZW50YXRp b24gPQorCQlpbmZvLT5kc2kub3JpZW50YXRpb24gPQogCQkJRFJNX01PREVfUEFORUxfT1JJRU5U QVRJT05fTEVGVF9VUDsKIAkJYnJlYWs7CiAJfQogCiAJLyogV2UgaGF2ZSBtYW5kYXRvcnkgbWlw aSBjb25maWcgYmxvY2tzLiBJbml0aWFsaXplIGFzIGdlbmVyaWMgcGFuZWwgKi8KLQlpOTE1LT52 YnQuZHNpLnBhbmVsX2lkID0gTUlQSV9EU0lfR0VORVJJQ19QQU5FTF9JRDsKKwlpbmZvLT5kc2ku cGFuZWxfaWQgPSBNSVBJX0RTSV9HRU5FUklDX1BBTkVMX0lEOwogfQogCiAvKiBGaW5kIHRoZSBz ZXF1ZW5jZSBibG9jayBhbmQgc2l6ZSBmb3IgdGhlIGdpdmVuIHBhbmVsLiAqLwpAQCAtMTMwNSwx MyArMTMwNiwxNCBAQCBzdGF0aWMgaW50IGdvdG9fbmV4dF9zZXF1ZW5jZV92Myhjb25zdCB1OCAq ZGF0YSwgaW50IGluZGV4LCBpbnQgdG90YWwpCiAgKiBHZXQgbGVuIG9mIHByZS1maXhlZCBkZWFz c2VydCBmcmFnbWVudCBmcm9tIGEgdjEgaW5pdCBPVFAgc2VxdWVuY2UsCiAgKiBza2lwIGFsbCBk ZWxheSArIGdwaW8gb3BlcmFuZHMgYW5kIHN0b3AgYXQgdGhlIGZpcnN0IERTSSBwYWNrZXQgb3Au CiAgKi8KLXN0YXRpYyBpbnQgZ2V0X2luaXRfb3RwX2RlYXNzZXJ0X2ZyYWdtZW50X2xlbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3N0YXRpYyBpbnQgZ2V0X2luaXRfb3RwX2RlYXNz ZXJ0X2ZyYWdtZW50X2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQkJICAg ICAgc3RydWN0IGRkaV92YnRfcG9ydF9pbmZvICppbmZvKQogewotCWNvbnN0IHU4ICpkYXRhID0g aTkxNS0+dmJ0LmRzaS5zZXF1ZW5jZVtNSVBJX1NFUV9JTklUX09UUF07CisJY29uc3QgdTggKmRh dGEgPSBpbmZvLT5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfSU5JVF9PVFBdOwogCWludCBpbmRleCwg bGVuOwogCiAJaWYgKGRybV9XQVJOX09OKCZpOTE1LT5kcm0sCi0JCQkhZGF0YSB8fCBpOTE1LT52 YnQuZHNpLnNlcV92ZXJzaW9uICE9IDEpKQorCQkJIWRhdGEgfHwgaW5mby0+ZHNpLnNlcV92ZXJz aW9uICE9IDEpKQogCQlyZXR1cm4gMDsKIAogCS8qIGluZGV4ID0gMSB0byBza2lwIHNlcXVlbmNl IGJ5dGUgKi8KQEAgLTEzMzksNyArMTM0MSw4IEBAIHN0YXRpYyBpbnQgZ2V0X2luaXRfb3RwX2Rl YXNzZXJ0X2ZyYWdtZW50X2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKICAqIHRo ZXNlIGRldmljZXMgd2Ugc3BsaXQgdGhlIGluaXQgT1RQIHNlcXVlbmNlIGludG8gYSBkZWFzc2Vy dCBzZXF1ZW5jZSBhbmQKICAqIHRoZSBhY3R1YWwgaW5pdCBPVFAgcGFydC4KICAqLwotc3RhdGlj IHZvaWQgZml4dXBfbWlwaV9zZXF1ZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CitzdGF0aWMgdm9pZCBmaXh1cF9taXBpX3NlcXVlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKKwkJCQkgc3RydWN0IGRkaV92YnRfcG9ydF9pbmZvICppbmZvKQogewogCXU4ICpp bml0X290cDsKIAlpbnQgbGVuOwpAQCAtMTM0OSwxOCArMTM1MiwxOCBAQCBzdGF0aWMgdm9pZCBm aXh1cF9taXBpX3NlcXVlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJcmV0 dXJuOwogCiAJLyogTGltaXQgdGhpcyB0byB2MSB2aWQtbW9kZSBzZXF1ZW5jZXMgKi8KLQlpZiAo aTkxNS0+dmJ0LmRzaS5jb25maWctPmlzX2NtZF9tb2RlIHx8Ci0JICAgIGk5MTUtPnZidC5kc2ku c2VxX3ZlcnNpb24gIT0gMSkKKwlpZiAoaW5mby0+ZHNpLmNvbmZpZy0+aXNfY21kX21vZGUgfHwK KwkgICAgaW5mby0+ZHNpLnNlcV92ZXJzaW9uICE9IDEpCiAJCXJldHVybjsKIAogCS8qIE9ubHkg ZG8gdGhpcyBpZiB0aGVyZSBhcmUgb3RwIGFuZCBhc3NlcnQgc2VxcyBhbmQgbm8gZGVhc3NlcnQg c2VxICovCi0JaWYgKCFpOTE1LT52YnQuZHNpLnNlcXVlbmNlW01JUElfU0VRX0lOSVRfT1RQXSB8 fAotCSAgICAhaTkxNS0+dmJ0LmRzaS5zZXF1ZW5jZVtNSVBJX1NFUV9BU1NFUlRfUkVTRVRdIHx8 Ci0JICAgIGk5MTUtPnZidC5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfREVBU1NFUlRfUkVTRVRdKQor CWlmICghaW5mby0+ZHNpLnNlcXVlbmNlW01JUElfU0VRX0lOSVRfT1RQXSB8fAorCSAgICAhaW5m by0+ZHNpLnNlcXVlbmNlW01JUElfU0VRX0FTU0VSVF9SRVNFVF0gfHwKKwkgICAgaW5mby0+ZHNp LnNlcXVlbmNlW01JUElfU0VRX0RFQVNTRVJUX1JFU0VUXSkKIAkJcmV0dXJuOwogCiAJLyogVGhl IGRlYXNzZXJ0LXNlcXVlbmNlIGVuZHMgYXQgdGhlIGZpcnN0IERTSSBwYWNrZXQgKi8KLQlsZW4g PSBnZXRfaW5pdF9vdHBfZGVhc3NlcnRfZnJhZ21lbnRfbGVuKGk5MTUpOworCWxlbiA9IGdldF9p bml0X290cF9kZWFzc2VydF9mcmFnbWVudF9sZW4oaTkxNSwgaW5mbyk7CiAJaWYgKCFsZW4pCiAJ CXJldHVybjsKIApAQCAtMTM2OCwyNiArMTM3MSwyNyBAQCBzdGF0aWMgdm9pZCBmaXh1cF9taXBp X3NlcXVlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJICAgICJVc2luZyBp bml0IE9UUCBmcmFnbWVudCB0byBkZWFzc2VydCByZXNldFxuIik7CiAKIAkvKiBDb3B5IHRoZSBm cmFnbWVudCwgdXBkYXRlIHNlcSBieXRlIGFuZCB0ZXJtaW5hdGUgaXQgKi8KLQlpbml0X290cCA9 ICh1OCAqKWk5MTUtPnZidC5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfSU5JVF9PVFBdOwotCWk5MTUt PnZidC5kc2kuZGVhc3NlcnRfc2VxID0ga21lbWR1cChpbml0X290cCwgbGVuICsgMSwgR0ZQX0tF Uk5FTCk7Ci0JaWYgKCFpOTE1LT52YnQuZHNpLmRlYXNzZXJ0X3NlcSkKKwlpbml0X290cCA9ICh1 OCAqKWluZm8tPmRzaS5zZXF1ZW5jZVtNSVBJX1NFUV9JTklUX09UUF07CisJaW5mby0+ZHNpLmRl YXNzZXJ0X3NlcSA9IGttZW1kdXAoaW5pdF9vdHAsIGxlbiArIDEsIEdGUF9LRVJORUwpOworCWlm ICghaW5mby0+ZHNpLmRlYXNzZXJ0X3NlcSkKIAkJcmV0dXJuOwotCWk5MTUtPnZidC5kc2kuZGVh c3NlcnRfc2VxWzBdID0gTUlQSV9TRVFfREVBU1NFUlRfUkVTRVQ7Ci0JaTkxNS0+dmJ0LmRzaS5k ZWFzc2VydF9zZXFbbGVuXSA9IE1JUElfU0VRX0VMRU1fRU5EOworCWluZm8tPmRzaS5kZWFzc2Vy dF9zZXFbMF0gPSBNSVBJX1NFUV9ERUFTU0VSVF9SRVNFVDsKKwlpbmZvLT5kc2kuZGVhc3NlcnRf c2VxW2xlbl0gPSBNSVBJX1NFUV9FTEVNX0VORDsKIAkvKiBVc2UgdGhlIGNvcHkgZm9yIGRlYXNz ZXJ0ICovCi0JaTkxNS0+dmJ0LmRzaS5zZXF1ZW5jZVtNSVBJX1NFUV9ERUFTU0VSVF9SRVNFVF0g PQotCQlpOTE1LT52YnQuZHNpLmRlYXNzZXJ0X3NlcTsKKwlpbmZvLT5kc2kuc2VxdWVuY2VbTUlQ SV9TRVFfREVBU1NFUlRfUkVTRVRdID0KKwkJaW5mby0+ZHNpLmRlYXNzZXJ0X3NlcTsKIAkvKiBS ZXBsYWNlIHRoZSBsYXN0IGJ5dGUgb2YgdGhlIGZyYWdtZW50IHdpdGggaW5pdCBPVFAgc2VxIGJ5 dGUgKi8KIAlpbml0X290cFtsZW4gLSAxXSA9IE1JUElfU0VRX0lOSVRfT1RQOwogCS8qIEFuZCBt YWtlIE1JUElfTUlQSV9TRVFfSU5JVF9PVFAgcG9pbnQgdG8gaXQgKi8KLQlpOTE1LT52YnQuZHNp LnNlcXVlbmNlW01JUElfU0VRX0lOSVRfT1RQXSA9IGluaXRfb3RwICsgbGVuIC0gMTsKKwlpbmZv LT5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfSU5JVF9PVFBdID0gaW5pdF9vdHAgKyBsZW4gLSAxOwog fQogCiBzdGF0aWMgdm9pZAogcGFyc2VfbWlwaV9zZXF1ZW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKLQkJICAgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCisJCSAgICBj b25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiLAorCQkgICAgc3RydWN0IGRkaV92YnRfcG9ydF9p bmZvICppbmZvLAorCQkgICAgaW50IHBhbmVsX2luZGV4KQogewotCWludCBwYW5lbF90eXBlID0g aTkxNS0+dmJ0LnBhbmVsX3R5cGU7CiAJY29uc3Qgc3RydWN0IGJkYl9taXBpX3NlcXVlbmNlICpz ZXF1ZW5jZTsKIAljb25zdCB1OCAqc2VxX2RhdGE7CiAJdTMyIHNlcV9zaXplOwpAQCAtMTM5NSw3 ICsxMzk5LDcgQEAgcGFyc2VfbWlwaV9zZXF1ZW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKIAlpbnQgaW5kZXggPSAwOwogCiAJLyogT25seSBvdXIgZ2VuZXJpYyBwYW5lbCBkcml2 ZXIgdXNlcyB0aGUgc2VxdWVuY2UgYmxvY2suICovCi0JaWYgKGk5MTUtPnZidC5kc2kucGFuZWxf aWQgIT0gTUlQSV9EU0lfR0VORVJJQ19QQU5FTF9JRCkKKwlpZiAoaW5mby0+ZHNpLnBhbmVsX2lk ICE9IE1JUElfRFNJX0dFTkVSSUNfUEFORUxfSUQpCiAJCXJldHVybjsKIAogCXNlcXVlbmNlID0g ZmluZF9zZWN0aW9uKGJkYiwgQkRCX01JUElfU0VRVUVOQ0UpOwpAQCAtMTQxNiw3ICsxNDIwLDcg QEAgcGFyc2VfbWlwaV9zZXF1ZW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlk cm1fZGJnKCZpOTE1LT5kcm0sICJGb3VuZCBNSVBJIHNlcXVlbmNlIGJsb2NrIHYldVxuIiwKIAkJ c2VxdWVuY2UtPnZlcnNpb24pOwogCi0Jc2VxX2RhdGEgPSBmaW5kX3BhbmVsX3NlcXVlbmNlX2Js b2NrKHNlcXVlbmNlLCBwYW5lbF90eXBlLCAmc2VxX3NpemUpOworCXNlcV9kYXRhID0gZmluZF9w YW5lbF9zZXF1ZW5jZV9ibG9jayhzZXF1ZW5jZSwgcGFuZWxfaW5kZXgsICZzZXFfc2l6ZSk7CiAJ aWYgKCFzZXFfZGF0YSkKIAkJcmV0dXJuOwogCkBAIC0xNDQxLDcgKzE0NDUsNyBAQCBwYXJzZV9t aXBpX3NlcXVlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJZHJtX2RiZ19r bXMoJmk5MTUtPmRybSwKIAkJCQkgICAgIlVuc3VwcG9ydGVkIHNlcXVlbmNlICV1XG4iLCBzZXFf aWQpOwogCi0JCWk5MTUtPnZidC5kc2kuc2VxdWVuY2Vbc2VxX2lkXSA9IGRhdGEgKyBpbmRleDsK KwkJaW5mby0+ZHNpLnNlcXVlbmNlW3NlcV9pZF0gPSBkYXRhICsgaW5kZXg7CiAKIAkJaWYgKHNl cXVlbmNlLT52ZXJzaW9uID49IDMpCiAJCQlpbmRleCA9IGdvdG9fbmV4dF9zZXF1ZW5jZV92Myhk YXRhLCBpbmRleCwgc2VxX3NpemUpOwpAQCAtMTQ1NCwxOCArMTQ1OCwxOCBAQCBwYXJzZV9taXBp X3NlcXVlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQl9CiAJfQogCi0JaTkx NS0+dmJ0LmRzaS5kYXRhID0gZGF0YTsKLQlpOTE1LT52YnQuZHNpLnNpemUgPSBzZXFfc2l6ZTsK LQlpOTE1LT52YnQuZHNpLnNlcV92ZXJzaW9uID0gc2VxdWVuY2UtPnZlcnNpb247CisJaW5mby0+ ZHNpLmRhdGEgPSBkYXRhOworCWluZm8tPmRzaS5zaXplID0gc2VxX3NpemU7CisJaW5mby0+ZHNp LnNlcV92ZXJzaW9uID0gc2VxdWVuY2UtPnZlcnNpb247CiAKLQlmaXh1cF9taXBpX3NlcXVlbmNl cyhpOTE1KTsKKwlmaXh1cF9taXBpX3NlcXVlbmNlcyhpOTE1LCBpbmZvKTsKIAogCWRybV9kYmco Jmk5MTUtPmRybSwgIk1JUEkgcmVsYXRlZCBWQlQgcGFyc2luZyBjb21wbGV0ZVxuIik7CiAJcmV0 dXJuOwogCiBlcnI6CiAJa2ZyZWUoZGF0YSk7Ci0JbWVtc2V0KGk5MTUtPnZidC5kc2kuc2VxdWVu Y2UsIDAsIHNpemVvZihpOTE1LT52YnQuZHNpLnNlcXVlbmNlKSk7CisJbWVtc2V0KGluZm8tPmRz aS5zZXF1ZW5jZSwgMCwgc2l6ZW9mKGluZm8tPmRzaS5zZXF1ZW5jZSkpOwogfQogCiBzdGF0aWMg dm9pZApAQCAtMTk5MCw2ICsxOTk0LDggQEAgc3RhdGljIHZvaWQgcGFyc2VfaW50ZWdyYXRlZF9w YW5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlwYXJzZV9sZnBfYmFja2xpZ2h0 KGk5MTUsIGJkYiwgaW5mbywgcGFuZWxfaW5kZXgpOwogCXBhcnNlX2VkcChpOTE1LCBiZGIsIGlu Zm8sIHBhbmVsX2luZGV4KTsKIAlwYXJzZV9wc3IoaTkxNSwgYmRiLCBpbmZvLCBwYW5lbF9pbmRl eCk7CisJcGFyc2VfbWlwaV9jb25maWcoaTkxNSwgYmRiLCBpbmZvLCBwYW5lbF9pbmRleCk7CisJ cGFyc2VfbWlwaV9zZXF1ZW5jZShpOTE1LCBiZGIsIGluZm8sIHBhbmVsX2luZGV4KTsKIH0KIAog c3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CkBAIC0yNDg2LDggKzI0OTIsNiBAQCB2b2lkIGludGVsX2Jpb3NfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAlwYXJzZV9wYW5lbF90eXBlKGk5MTUsIGJkYik7CiAJcGFyc2Vf c2R2b19wYW5lbF9kYXRhKGk5MTUsIGJkYik7CiAJcGFyc2VfZHJpdmVyX2ZlYXR1cmVzKGk5MTUs IGJkYik7Ci0JcGFyc2VfbWlwaV9jb25maWcoaTkxNSwgYmRiKTsKLQlwYXJzZV9taXBpX3NlcXVl bmNlKGk5MTUsIGJkYik7CiAKIAkvKiBEZXBlbmRzIG9uIGNoaWxkIGRldmljZSBsaXN0ICovCiAJ cGFyc2VfY29tcHJlc3Npb25fcGFyYW1ldGVycyhpOTE1LCBiZGIpOwpAQCAtMjUyMiwyMCArMjUy NiwyMyBAQCB2b2lkIGludGVsX2Jpb3NfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfUE9SVFM7IGkrKykg ewotCQlrZnJlZShpOTE1LT52YnQuZGRpX3BvcnRfaW5mb1tpXS5sZnBfbHZkc192YnRfbW9kZSk7 Ci0JCWk5MTUtPnZidC5kZGlfcG9ydF9pbmZvW2ldLmxmcF9sdmRzX3ZidF9tb2RlID0gTlVMTDsK KwkJc3RydWN0IGRkaV92YnRfcG9ydF9pbmZvICppbmZvID0gJmk5MTUtPnZidC5kZGlfcG9ydF9p bmZvW2ldOworCisJCWtmcmVlKGluZm8tPmxmcF9sdmRzX3ZidF9tb2RlKTsKKwkJaW5mby0+bGZw X2x2ZHNfdmJ0X21vZGUgPSBOVUxMOworCisJCWtmcmVlKGluZm8tPmRzaS5kYXRhKTsKKwkJaW5m by0+ZHNpLmRhdGEgPSBOVUxMOworCQlrZnJlZShpbmZvLT5kc2kucHBzKTsKKwkJaW5mby0+ZHNp LnBwcyA9IE5VTEw7CisJCWtmcmVlKGluZm8tPmRzaS5jb25maWcpOworCQlpbmZvLT5kc2kuY29u ZmlnID0gTlVMTDsKKwkJa2ZyZWUoaW5mby0+ZHNpLmRlYXNzZXJ0X3NlcSk7CisJCWluZm8tPmRz aS5kZWFzc2VydF9zZXEgPSBOVUxMOwogCX0KIAogCWtmcmVlKGk5MTUtPnZidC5zZHZvX2x2ZHNf dmJ0X21vZGUpOwogCWk5MTUtPnZidC5zZHZvX2x2ZHNfdmJ0X21vZGUgPSBOVUxMOwotCWtmcmVl KGk5MTUtPnZidC5kc2kuZGF0YSk7Ci0JaTkxNS0+dmJ0LmRzaS5kYXRhID0gTlVMTDsKLQlrZnJl ZShpOTE1LT52YnQuZHNpLnBwcyk7Ci0JaTkxNS0+dmJ0LmRzaS5wcHMgPSBOVUxMOwotCWtmcmVl KGk5MTUtPnZidC5kc2kuY29uZmlnKTsKLQlpOTE1LT52YnQuZHNpLmNvbmZpZyA9IE5VTEw7Ci0J a2ZyZWUoaTkxNS0+dmJ0LmRzaS5kZWFzc2VydF9zZXEpOwotCWk5MTUtPnZidC5kc2kuZGVhc3Nl cnRfc2VxID0gTlVMTDsKIH0KIAogLyoqCkBAIC0zMTQ5LDMgKzMxNTYsMTEgQEAgaW50ZWxfYmlv c19wc3JfaW5mbyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiAJcmV0dXJuICZpOTE1LT52 YnQuZGRpX3BvcnRfaW5mb1tlbmNvZGVyLT5wb3J0XS5wc3I7CiB9CisKK2NvbnN0IHN0cnVjdCB2 YnRfZHNpX2luZm8gKgoraW50ZWxfYmlvc19kc2lfaW5mbyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOworCisJcmV0dXJuICZpOTE1LT52YnQuZGRpX3BvcnRfaW5mb1tlbmNv ZGVyLT5wb3J0XS5kc2k7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Jpb3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlv cy5oCmluZGV4IGM3MDE4NzFkOWE3NGQuLjZlOTUzYTg5Yzg0Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5oCkBAIC0yNzIsNSArMjcyLDYgQEAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmludGVsX2Jpb3NfbGZwX2x2ZHNfaW5mbyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW4KIGNvbnN0IHN0cnVjdCB2YnRfYmFja2xpZ2h0X2luZm8gKmludGVsX2Jp b3NfYmFja2xpZ2h0X2luZm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwogc3RydWN0 IHZidF9lZHBfaW5mbyAqaW50ZWxfYmlvc19lZHBfaW5mbyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2Rlcik7CiBjb25zdCBzdHJ1Y3QgdmJ0X3Bzcl9pbmZvICppbnRlbF9iaW9zX3Bzcl9pbmZv KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOworY29uc3Qgc3RydWN0IHZidF9kc2lfaW5mbyAq aW50ZWxfYmlvc19kc2lfaW5mbyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7CiAKICNl bmRpZiAvKiBfSU5URUxfQklPU19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHNpLmMKaW5kZXggZjQ1M2NlYjhkMTQ5NC4uMmNkODE5YTdmOWRkNiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2kuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzaS5jCkBAIC0xMTUsMTQgKzExNSwxMCBAQCBzdHJ1 Y3QgaW50ZWxfZHNpX2hvc3QgKmludGVsX2RzaV9ob3N0X2luaXQoc3RydWN0IGludGVsX2RzaSAq aW50ZWxfZHNpLAogZW51bSBkcm1fcGFuZWxfb3JpZW50YXRpb24KIGludGVsX2RzaV9nZXRfcGFu ZWxfb3JpZW50YXRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNl LmRldik7CisJY29uc3Qgc3RydWN0IHZidF9kc2lfaW5mbyAqdmJ0X2RzaV9pbmZvID0gaW50ZWxf Ymlvc19kc2lfaW5mbyhjb25uZWN0b3ItPmVuY29kZXIpOwogCWVudW0gZHJtX3BhbmVsX29yaWVu dGF0aW9uIG9yaWVudGF0aW9uOwogCi0Jb3JpZW50YXRpb24gPSBkZXZfcHJpdi0+dmJ0LmRzaS5v cmllbnRhdGlvbjsKLQlpZiAob3JpZW50YXRpb24gIT0gRFJNX01PREVfUEFORUxfT1JJRU5UQVRJ T05fVU5LTk9XTikKLQkJcmV0dXJuIG9yaWVudGF0aW9uOwotCi0Jb3JpZW50YXRpb24gPSBkZXZf cHJpdi0+dmJ0Lm9yaWVudGF0aW9uOworCW9yaWVudGF0aW9uID0gdmJ0X2RzaV9pbmZvLT5vcmll bnRhdGlvbjsKIAlpZiAob3JpZW50YXRpb24gIT0gRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05f VU5LTk9XTikKIAkJcmV0dXJuIG9yaWVudGF0aW9uOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzaV92YnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHNpX3ZidC5jCmluZGV4IDIyMThkZTA3NzNiZjAuLjI0ZGU3NzVlZTdi MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpX3Zi dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpX3ZidC5jCkBA IC0yMjUsOSArMjI1LDExIEBAIHN0YXRpYyBjb25zdCB1OCAqbWlwaV9leGVjX2RlbGF5KHN0cnVj dCBpbnRlbF9kc2kgKmludGVsX2RzaSwgY29uc3QgdTggKmRhdGEpCiAJcmV0dXJuIGRhdGE7CiB9 CiAKLXN0YXRpYyB2b2lkIHZsdl9leGVjX2dwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorc3RhdGljIHZvaWQgdmx2X2V4ZWNfZ3BpbyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2ksCiAJCQkgIHU4IGdwaW9fc291cmNlLCB1OCBncGlvX2luZGV4LCBib29sIHZhbHVlKQog eworCWNvbnN0IHN0cnVjdCB2YnRfZHNpX2luZm8gKnZidF9kc2lfaW5mbyA9IGludGVsX2Jpb3Nf ZHNpX2luZm8oJmludGVsX2RzaS0+YmFzZSk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShpbnRlbF9kc2ktPmJhc2UuYmFzZS5kZXYpOwogCXN0cnVjdCBncGlv X21hcCAqbWFwOwogCXUxNiBwY29uZjAsIHBhZHZhbDsKIAl1MzIgdG1wOwpAQCAtMjQxLDcgKzI0 Myw3IEBAIHN0YXRpYyB2b2lkIHZsdl9leGVjX2dwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCiAJbWFwID0gJnZsdl9ncGlvX3RhYmxlW2dwaW9faW5kZXhdOwogCi0JaWYg KGRldl9wcml2LT52YnQuZHNpLnNlcV92ZXJzaW9uID49IDMpIHsKKwlpZiAodmJ0X2RzaV9pbmZv LT5zZXFfdmVyc2lvbiA+PSAzKSB7CiAJCS8qIFhYWDogdGhpcyBhc3N1bWVzIHZsdl9ncGlvX3Rh YmxlIG9ubHkgaGFzIE5DIEdQSU9zLiAqLwogCQlwb3J0ID0gSU9TRl9QT1JUX0dQSU9fTkM7CiAJ fSBlbHNlIHsKQEAgLTI3MiwxNCArMjc0LDE2IEBAIHN0YXRpYyB2b2lkIHZsdl9leGVjX2dwaW8o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXZsdl9pb3NmX3NiX3B1dChkZXZf cHJpdiwgQklUKFZMVl9JT1NGX1NCX0dQSU8pKTsKIH0KIAotc3RhdGljIHZvaWQgY2h2X2V4ZWNf Z3BpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCitzdGF0aWMgdm9pZCBjaHZf ZXhlY19ncGlvKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwKIAkJCSAgdTggZ3Bpb19zb3Vy Y2UsIHU4IGdwaW9faW5kZXgsIGJvb2wgdmFsdWUpCiB7CisJY29uc3Qgc3RydWN0IHZidF9kc2lf aW5mbyAqdmJ0X2RzaV9pbmZvID0gaW50ZWxfYmlvc19kc2lfaW5mbygmaW50ZWxfZHNpLT5iYXNl KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2Rz aS0+YmFzZS5iYXNlLmRldik7CiAJdTE2IGNmZzAsIGNmZzE7CiAJdTE2IGZhbWlseV9udW07CiAJ dTggcG9ydDsKIAotCWlmIChkZXZfcHJpdi0+dmJ0LmRzaS5zZXFfdmVyc2lvbiA+PSAzKSB7CisJ aWYgKHZidF9kc2lfaW5mby0+c2VxX3ZlcnNpb24gPj0gMykgewogCQlpZiAoZ3Bpb19pbmRleCA+ PSBDSFZfR1BJT19JRFhfU1RBUlRfU0UpIHsKIAkJCS8qIFhYWDogaXQncyB1bmNsZWFyIHdoZXRo ZXIgMjU1LT41NyBpcyBwYXJ0IG9mIFNFLiAqLwogCQkJZ3Bpb19pbmRleCAtPSBDSFZfR1BJT19J RFhfU1RBUlRfU0U7CkBAIC0zMjUsOSArMzI5LDEwIEBAIHN0YXRpYyB2b2lkIGNodl9leGVjX2dw aW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXZsdl9pb3NmX3NiX3B1dChk ZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0dQSU8pKTsKIH0KIAotc3RhdGljIHZvaWQgYnh0X2V4 ZWNfZ3BpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCitzdGF0aWMgdm9pZCBi eHRfZXhlY19ncGlvKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwKIAkJCSAgdTggZ3Bpb19z b3VyY2UsIHU4IGdwaW9faW5kZXgsIGJvb2wgdmFsdWUpCiB7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kc2ktPmJhc2UuYmFzZS5kZXYpOwogCS8q IFhYWDogdGhpcyB0YWJsZSBpcyBhIHF1aWNrIHVnbHkgaGFjay4gKi8KIAlzdGF0aWMgc3RydWN0 IGdwaW9fZGVzYyAqYnh0X2dwaW9fdGFibGVbVThfTUFYICsgMV07CiAJc3RydWN0IGdwaW9fZGVz YyAqZ3Bpb19kZXNjID0gYnh0X2dwaW9fdGFibGVbZ3Bpb19pbmRleF07CkBAIC0zNTEsMTQgKzM1 NiwxNyBAQCBzdGF0aWMgdm9pZCBieHRfZXhlY19ncGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlncGlvZF9zZXRfdmFsdWUoZ3Bpb19kZXNjLCB2YWx1ZSk7CiB9CiAKLXN0 YXRpYyB2b2lkIGljbF9leGVjX2dwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorc3RhdGljIHZvaWQgaWNsX2V4ZWNfZ3BpbyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ks CiAJCQkgIHU4IGdwaW9fc291cmNlLCB1OCBncGlvX2luZGV4LCBib29sIHZhbHVlKQogewotCWRy bV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiU2tpcHBpbmcgSUNMIEdQSU8gZWxlbWVudCBleGVj dXRpb25cbiIpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBpbnRlbF9kc2ktPmJhc2UuYmFz ZS5kZXY7CisKKwlkcm1fZGJnX2ttcyhkcm0sICJTa2lwcGluZyBJQ0wgR1BJTyBlbGVtZW50IGV4 ZWN1dGlvblxuIik7CiB9CiAKIHN0YXRpYyBjb25zdCB1OCAqbWlwaV9leGVjX2dwaW8oc3RydWN0 IGludGVsX2RzaSAqaW50ZWxfZHNpLCBjb25zdCB1OCAqZGF0YSkKIHsKKwljb25zdCBzdHJ1Y3Qg dmJ0X2RzaV9pbmZvICp2YnRfZHNpX2luZm8gPSBpbnRlbF9iaW9zX2RzaV9pbmZvKCZpbnRlbF9k c2ktPmJhc2UpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2ktPmJhc2UuYmFz ZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwogCXU4IGdwaW9fc291cmNlLCBncGlvX2luZGV4ID0gMCwgZ3Bpb19udW1iZXI7CkBAIC0zNjYs MTMgKzM3NCwxMyBAQCBzdGF0aWMgY29uc3QgdTggKm1pcGlfZXhlY19ncGlvKHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgY29uc3QgdTggKmRhdGEpCiAKIAlkcm1fZGJnX2ttcygmZGV2X3By aXYtPmRybSwgIlxuIik7CiAKLQlpZiAoZGV2X3ByaXYtPnZidC5kc2kuc2VxX3ZlcnNpb24gPj0g MykKKwlpZiAodmJ0X2RzaV9pbmZvLT5zZXFfdmVyc2lvbiA+PSAzKQogCQlncGlvX2luZGV4ID0g KmRhdGErKzsKIAogCWdwaW9fbnVtYmVyID0gKmRhdGErKzsKIAogCS8qIGdwaW8gc291cmNlIGlu IHNlcXVlbmNlIHYyIG9ubHkgKi8KLQlpZiAoZGV2X3ByaXYtPnZidC5kc2kuc2VxX3ZlcnNpb24g PT0gMikKKwlpZiAodmJ0X2RzaV9pbmZvLT5zZXFfdmVyc2lvbiA9PSAyKQogCQlncGlvX3NvdXJj ZSA9ICgqZGF0YSA+PiAxKSAmIDM7CiAJZWxzZQogCQlncGlvX3NvdXJjZSA9IDA7CkBAIC0zODEs MTMgKzM4OSwxMyBAQCBzdGF0aWMgY29uc3QgdTggKm1pcGlfZXhlY19ncGlvKHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgY29uc3QgdTggKmRhdGEpCiAJdmFsdWUgPSAqZGF0YSsrICYgMTsK IAogCWlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0gMTEpCi0JCWljbF9leGVjX2dwaW8oZGV2 X3ByaXYsIGdwaW9fc291cmNlLCBncGlvX2luZGV4LCB2YWx1ZSk7CisJCWljbF9leGVjX2dwaW8o aW50ZWxfZHNpLCBncGlvX3NvdXJjZSwgZ3Bpb19pbmRleCwgdmFsdWUpOwogCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpKQotCQl2bHZfZXhlY19ncGlvKGRldl9wcml2LCBncGlvX3Nv dXJjZSwgZ3Bpb19udW1iZXIsIHZhbHVlKTsKKwkJdmx2X2V4ZWNfZ3BpbyhpbnRlbF9kc2ksIGdw aW9fc291cmNlLCBncGlvX251bWJlciwgdmFsdWUpOwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQotCQljaHZfZXhlY19ncGlvKGRldl9wcml2LCBncGlvX3NvdXJjZSwgZ3Bpb19u dW1iZXIsIHZhbHVlKTsKKwkJY2h2X2V4ZWNfZ3BpbyhpbnRlbF9kc2ksIGdwaW9fc291cmNlLCBn cGlvX251bWJlciwgdmFsdWUpOwogCWVsc2UKLQkJYnh0X2V4ZWNfZ3BpbyhkZXZfcHJpdiwgZ3Bp b19zb3VyY2UsIGdwaW9faW5kZXgsIHZhbHVlKTsKKwkJYnh0X2V4ZWNfZ3BpbyhpbnRlbF9kc2ks IGdwaW9fc291cmNlLCBncGlvX2luZGV4LCB2YWx1ZSk7CiAKIAlyZXR1cm4gZGF0YTsKIH0KQEAg LTU3NywxNSArNTg1LDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzZXF1ZW5jZV9uYW1lKGVudW0g bWlwaV9zZXEgc2VxX2lkKQogc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ZidF9leGVjKHN0cnVjdCBp bnRlbF9kc2kgKmludGVsX2RzaSwKIAkJCSAgICAgICBlbnVtIG1pcGlfc2VxIHNlcV9pZCkKIHsK Kwljb25zdCBzdHJ1Y3QgdmJ0X2RzaV9pbmZvICp2YnRfZHNpX2luZm8gPSBpbnRlbF9iaW9zX2Rz aV9pbmZvKCZpbnRlbF9kc2ktPmJhc2UpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2KTsKIAljb25zdCB1OCAqZGF0 YTsKIAlmbl9taXBpX2VsZW1fZXhlYyBtaXBpX2VsZW1fZXhlYzsKIAogCWlmIChkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwKLQkJCXNlcV9pZCA+PSBBUlJBWV9TSVpFKGRldl9wcml2LT52YnQu ZHNpLnNlcXVlbmNlKSkpCisJCQlzZXFfaWQgPj0gQVJSQVlfU0laRSh2YnRfZHNpX2luZm8tPnNl cXVlbmNlKSkpCiAJCXJldHVybjsKIAotCWRhdGEgPSBkZXZfcHJpdi0+dmJ0LmRzaS5zZXF1ZW5j ZVtzZXFfaWRdOworCWRhdGEgPSB2YnRfZHNpX2luZm8tPnNlcXVlbmNlW3NlcV9pZF07CiAJaWYg KCFkYXRhKQogCQlyZXR1cm47CiAKQEAgLTU5OCw3ICs2MDcsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kc2lfdmJ0X2V4ZWMoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLAogCWRhdGErKzsKIAog CS8qIFNraXAgU2l6ZSBvZiBTZXF1ZW5jZS4gKi8KLQlpZiAoZGV2X3ByaXYtPnZidC5kc2kuc2Vx X3ZlcnNpb24gPj0gMykKKwlpZiAodmJ0X2RzaV9pbmZvLT5zZXFfdmVyc2lvbiA+PSAzKQogCQlk YXRhICs9IDQ7CiAKIAl3aGlsZSAoMSkgewpAQCAtNjE0LDcgKzYyMyw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2RzaV92YnRfZXhlYyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksCiAJCQltaXBp X2VsZW1fZXhlYyA9IE5VTEw7CiAKIAkJLyogU2l6ZSBvZiBPcGVyYXRpb24uICovCi0JCWlmIChk ZXZfcHJpdi0+dmJ0LmRzaS5zZXFfdmVyc2lvbiA+PSAzKQorCQlpZiAodmJ0X2RzaV9pbmZvLT5z ZXFfdmVyc2lvbiA+PSAzKQogCQkJb3BlcmF0aW9uX3NpemUgPSAqZGF0YSsrOwogCiAJCWlmICht aXBpX2VsZW1fZXhlYykgewpAQCAtNjYyLDEwICs2NzEsMTAgQEAgdm9pZCBpbnRlbF9kc2lfdmJ0 X2V4ZWNfc2VxdWVuY2Uoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLAogCiB2b2lkIGludGVs X2RzaV9tc2xlZXAoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBpbnQgbXNlYykKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RzaS0+YmFz ZS5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IHZidF9kc2lfaW5mbyAqdmJ0X2RzaV9pbmZvID0g aW50ZWxfYmlvc19kc2lfaW5mbygmaW50ZWxfZHNpLT5iYXNlKTsKIAogCS8qIEZvciB2MyBWQlRz IGluIHZpZC1tb2RlIHRoZSBkZWxheXMgYXJlIHBhcnQgb2YgdGhlIFZCVCBzZXF1ZW5jZXMgKi8K LQlpZiAoaXNfdmlkX21vZGUoaW50ZWxfZHNpKSAmJiBkZXZfcHJpdi0+dmJ0LmRzaS5zZXFfdmVy c2lvbiA+PSAzKQorCWlmIChpc192aWRfbW9kZShpbnRlbF9kc2kpICYmIHZidF9kc2lfaW5mby0+ c2VxX3ZlcnNpb24gPj0gMykKIAkJcmV0dXJuOwogCiAJbXNsZWVwKG1zZWMpOwpAQCAtNzI3LDgg KzczNiw5IEBAIGJvb2wgaW50ZWxfZHNpX3ZidF9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVs X2RzaSwgdTE2IHBhbmVsX2lkKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9k c2ktPmJhc2UuYmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwotCXN0cnVjdCBtaXBpX2NvbmZpZyAqbWlwaV9jb25maWcgPSBkZXZfcHJp di0+dmJ0LmRzaS5jb25maWc7Ci0Jc3RydWN0IG1pcGlfcHBzX2RhdGEgKnBwcyA9IGRldl9wcml2 LT52YnQuZHNpLnBwczsKKwljb25zdCBzdHJ1Y3QgdmJ0X2RzaV9pbmZvICp2YnRfZHNpX2luZm8g PSBpbnRlbF9iaW9zX2RzaV9pbmZvKCZpbnRlbF9kc2ktPmJhc2UpOworCXN0cnVjdCBtaXBpX2Nv bmZpZyAqbWlwaV9jb25maWcgPSB2YnRfZHNpX2luZm8tPmNvbmZpZzsKKwlzdHJ1Y3QgbWlwaV9w cHNfZGF0YSAqcHBzID0gdmJ0X2RzaV9pbmZvLT5wcHM7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUgPSBpbnRlbF9iaW9zX2xmcF9sdmRzX2luZm8oJmludGVsX2RzaS0+YmFz ZSk7CiAJdTE2IGJ1cnN0X21vZGVfcmF0aW87CiAJZW51bSBwb3J0IHBvcnQ7CkBAIC04NzAsNyAr ODgwLDggQEAgdm9pZCBpbnRlbF9kc2lfdmJ0X2dwaW9faW5pdChzdHJ1Y3QgaW50ZWxfZHNpICpp bnRlbF9kc2ksIGJvb2wgcGFuZWxfaXNfb24pCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGludGVsX2RzaS0+YmFzZS5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IG1pcGlfY29uZmlnICptaXBpX2NvbmZpZyA9 IGRldl9wcml2LT52YnQuZHNpLmNvbmZpZzsKKwljb25zdCBzdHJ1Y3QgdmJ0X2RzaV9pbmZvICp2 YnRfZHNpX2luZm8gPSBpbnRlbF9iaW9zX2RzaV9pbmZvKCZpbnRlbF9kc2ktPmJhc2UpOworCXN0 cnVjdCBtaXBpX2NvbmZpZyAqbWlwaV9jb25maWcgPSB2YnRfZHNpX2luZm8tPmNvbmZpZzsKIAll bnVtIGdwaW9kX2ZsYWdzIGZsYWdzID0gcGFuZWxfaXNfb24gPyBHUElPRF9PVVRfSElHSCA6IEdQ SU9EX09VVF9MT1c7CiAJYm9vbCB3YW50X2JhY2tsaWdodF9ncGlvID0gZmFsc2U7CiAJYm9vbCB3 YW50X3BhbmVsX2dwaW8gPSBmYWxzZTsKQEAgLTkyNSw3ICs5MzYsOCBAQCB2b2lkIGludGVsX2Rz aV92YnRfZ3Bpb19jbGVhbnVwKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkKIHsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2OwogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgbWlwaV9j b25maWcgKm1pcGlfY29uZmlnID0gZGV2X3ByaXYtPnZidC5kc2kuY29uZmlnOworCWNvbnN0IHN0 cnVjdCB2YnRfZHNpX2luZm8gKnZidF9kc2lfaW5mbyA9IGludGVsX2Jpb3NfZHNpX2luZm8oJmlu dGVsX2RzaS0+YmFzZSk7CisJc3RydWN0IG1pcGlfY29uZmlnICptaXBpX2NvbmZpZyA9IHZidF9k c2lfaW5mby0+Y29uZmlnOwogCiAJaWYgKGludGVsX2RzaS0+Z3Bpb19wYW5lbCkgewogCQlncGlv ZF9wdXQoaW50ZWxfZHNpLT5ncGlvX3BhbmVsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfcGFuZWwuYwppbmRleCA5Yzg5MjQ3NmQ4NjIxLi45MmQ5M2RkZjI4MTQwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wYW5lbC5jCkBAIC0xOTI0LDYgKzE5 MjQsNyBAQCBjbnBfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciwgZW51bSBwaXBlIHVudXNlZCkKIHN0YXRpYyBpbnQgZXh0X3B3bV9zZXR1cF9iYWNrbGln aHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCSAgIGVudW0gcGlwZSBw aXBlKQogeworCWNvbnN0IHN0cnVjdCB2YnRfZHNpX2luZm8gKnZidF9kc2lfaW5mbyA9IGludGVs X2Jpb3NfZHNpX2luZm8oY29ubmVjdG9yLT5lbmNvZGVyKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25u ZWN0b3ItPnBhbmVsOwpAQCAtMTkzMSw3ICsxOTMyLDcgQEAgc3RhdGljIGludCBleHRfcHdtX3Nl dHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJdTMyIGxl dmVsOwogCiAJLyogR2V0IHRoZSByaWdodCBQV00gY2hpcCBmb3IgRFNJIGJhY2tsaWdodCBhY2Nv cmRpbmcgdG8gVkJUICovCi0JaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZpZy0+cHdtX2JsYyA9 PSBQUFNfQkxDX1BNSUMpIHsKKwlpZiAodmJ0X2RzaV9pbmZvLT5jb25maWctPnB3bV9ibGMgPT0g UFBTX0JMQ19QTUlDKSB7CiAJCXBhbmVsLT5iYWNrbGlnaHQucHdtID0gcHdtX2dldChkZXYtPmRl diwgInB3bV9wbWljX2JhY2tsaWdodCIpOwogCQlkZXNjID0gIlBNSUMiOwogCX0gZWxzZSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2kuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaS5jCmluZGV4IDBlZTRmZjM0MWUyNWQuLjA3 NTg3MjZmYTE5YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2 X2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaS5jCkBAIC03 ODAsNiArNzgwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZV9lbmFibGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVu Y190b19pbnRlbF9kc2koZW5jb2Rlcik7CisJY29uc3Qgc3RydWN0IHZidF9kc2lfaW5mbyAqdmJ0 X2RzaV9pbmZvID0gaW50ZWxfYmlvc19kc2lfaW5mbygmaW50ZWxfZHNpLT5iYXNlKTsKIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0 Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5i YXNlLmRldik7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwpAQCAtODM3LDcgKzgzOCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAogCSAqIHRoZSBkZWxheSBpbiB0aGF0IGNhc2UuIElmIHRoZXJlIGlzIG5v IGRlYXNzZXJ0LXNlcSwgdGhlbiBhbgogCSAqIHVuY29uZGl0aW9uYWwgbXNsZWVwIGlzIHVzZWQg dG8gZ2l2ZSB0aGUgcGFuZWwgdGltZSB0byBwb3dlci1vbi4KIAkgKi8KLQlpZiAoZGV2X3ByaXYt PnZidC5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfREVBU1NFUlRfUkVTRVRdKSB7CisJaWYgKHZidF9k c2lfaW5mby0+c2VxdWVuY2VbTUlQSV9TRVFfREVBU1NFUlRfUkVTRVRdKSB7CiAJCWludGVsX2Rz aV9tc2xlZXAoaW50ZWxfZHNpLCBpbnRlbF9kc2ktPnBhbmVsX29uX2RlbGF5KTsKIAkJaW50ZWxf ZHNpX3ZidF9leGVjX3NlcXVlbmNlKGludGVsX2RzaSwgTUlQSV9TRVFfREVBU1NFUlRfUkVTRVQp OwogCX0gZWxzZSB7CkBAIC0xNjY1LDcgKzE2NjYsOCBAQCBzdGF0aWMgdm9pZCB2bHZfZHBoeV9w YXJhbV9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkKIHsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgbWlwaV9jb25maWcgKm1p cGlfY29uZmlnID0gZGV2X3ByaXYtPnZidC5kc2kuY29uZmlnOworCWNvbnN0IHN0cnVjdCB2YnRf ZHNpX2luZm8gKnZidF9kc2lfaW5mbyA9IGludGVsX2Jpb3NfZHNpX2luZm8oJmludGVsX2RzaS0+ YmFzZSk7CisJc3RydWN0IG1pcGlfY29uZmlnICptaXBpX2NvbmZpZyA9IHZidF9kc2lfaW5mby0+ Y29uZmlnOwogCXUzMiB0bHB4X25zLCBleHRyYV9ieXRlX2NvdW50LCB0bHB4X3VpOwogCXUzMiB1 aV9udW0sIHVpX2RlbjsKIAl1MzIgcHJlcGFyZV9jbnQsIGV4aXRfemVyb19jbnQsIGNsa196ZXJv X2NudCwgdHJhaWxfY250OwpAQCAtMTgzNSw2ICsxODM3LDcgQEAgdm9pZCB2bHZfZHNpX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmludGVsX2Nvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwog CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjdXJyZW50X21vZGUsICpmaXhlZF9tb2RlOworCWNv bnN0IHN0cnVjdCB2YnRfZHNpX2luZm8gKnZidF9kc2lfaW5mbzsKIAllbnVtIHBvcnQgcG9ydDsK IAllbnVtIHBpcGUgcGlwZTsKIApAQCAtMTg5OCwxNCArMTkwMSwxNSBAQCB2b2lkIHZsdl9kc2lf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX2VuY29kZXIt PnBpcGVfbWFzayA9IEJJVChQSVBFX0IpOwogCiAJaW50ZWxfZHNpLT5wYW5lbF9wb3dlcl9vZmZf dGltZSA9IGt0aW1lX2dldF9ib290dGltZSgpOworCXZidF9kc2lfaW5mbyA9IGludGVsX2Jpb3Nf ZHNpX2luZm8oaW50ZWxfZW5jb2Rlcik7CiAKLQlpZiAoZGV2X3ByaXYtPnZidC5kc2kuY29uZmln LT5kdWFsX2xpbmspCisJaWYgKHZidF9kc2lfaW5mby0+Y29uZmlnLT5kdWFsX2xpbmspCiAJCWlu dGVsX2RzaS0+cG9ydHMgPSBCSVQoUE9SVF9BKSB8IEJJVChQT1JUX0MpOwogCWVsc2UKIAkJaW50 ZWxfZHNpLT5wb3J0cyA9IEJJVChwb3J0KTsKIAotCWludGVsX2RzaS0+ZGNzX2JhY2tsaWdodF9w b3J0cyA9IGRldl9wcml2LT52YnQuZHNpLmJsX3BvcnRzOwotCWludGVsX2RzaS0+ZGNzX2NhYmNf cG9ydHMgPSBkZXZfcHJpdi0+dmJ0LmRzaS5jYWJjX3BvcnRzOworCWludGVsX2RzaS0+ZGNzX2Jh Y2tsaWdodF9wb3J0cyA9IHZidF9kc2lfaW5mby0+YmxfcG9ydHM7CisJaW50ZWxfZHNpLT5kY3Nf Y2FiY19wb3J0cyA9IHZidF9kc2lfaW5mby0+Y2FiY19wb3J0czsKIAogCS8qIENyZWF0ZSBhIERT SSBob3N0IChhbmQgYSBkZXZpY2UpIGZvciBlYWNoIHBvcnQuICovCiAJZm9yX2VhY2hfZHNpX3Bv cnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg MjMzZGZjZjg1NGI1Mi4uYWRjYWNiOGNiMjQ4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBA IC02OTksNiArNjk5LDIxIEBAIHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyB7CiAJCWludCB0cDJf dHAzX3dha2V1cF90aW1lX3VzOwogCQlpbnQgcHNyMl90cDJfdHAzX3dha2V1cF90aW1lX3VzOwog CX0gcHNyOworCisJLyogTUlQSSBEU0kgKi8KKwlzdHJ1Y3QgdmJ0X2RzaV9pbmZvIHsKKwkJdTE2 IHBhbmVsX2lkOworCQlzdHJ1Y3QgbWlwaV9jb25maWcgKmNvbmZpZzsKKwkJc3RydWN0IG1pcGlf cHBzX2RhdGEgKnBwczsKKwkJdTE2IGJsX3BvcnRzOworCQl1MTYgY2FiY19wb3J0czsKKwkJdTgg c2VxX3ZlcnNpb247CisJCXUzMiBzaXplOworCQl1OCAqZGF0YTsKKwkJY29uc3QgdTggKnNlcXVl bmNlW01JUElfU0VRX01BWF07CisJCXU4ICpkZWFzc2VydF9zZXE7IC8qIFVzZWQgYnkgZml4dXBf bWlwaV9zZXF1ZW5jZXMoKSAqLworCQllbnVtIGRybV9wYW5lbF9vcmllbnRhdGlvbiBvcmllbnRh dGlvbjsKKwl9IGRzaTsKIH07CiAKIHN0cnVjdCBpbnRlbF92YnRfZGF0YSB7CkBAIC03MTksMjEg KzczNCw2IEBAIHN0cnVjdCBpbnRlbF92YnRfZGF0YSB7CiAJdW5zaWduZWQgaW50IGJpb3NfbHZk c192YWw7IC8qIGluaXRpYWwgW1BDSF9dTFZEUyByZWcgdmFsIGluIFZCSU9TICovCiAJZW51bSBk cm1fcGFuZWxfb3JpZW50YXRpb24gb3JpZW50YXRpb247CiAKLQkvKiBNSVBJIERTSSAqLwotCXN0 cnVjdCB7Ci0JCXUxNiBwYW5lbF9pZDsKLQkJc3RydWN0IG1pcGlfY29uZmlnICpjb25maWc7Ci0J CXN0cnVjdCBtaXBpX3Bwc19kYXRhICpwcHM7Ci0JCXUxNiBibF9wb3J0czsKLQkJdTE2IGNhYmNf cG9ydHM7Ci0JCXU4IHNlcV92ZXJzaW9uOwotCQl1MzIgc2l6ZTsKLQkJdTggKmRhdGE7Ci0JCWNv bnN0IHU4ICpzZXF1ZW5jZVtNSVBJX1NFUV9NQVhdOwotCQl1OCAqZGVhc3NlcnRfc2VxOyAvKiBV c2VkIGJ5IGZpeHVwX21pcGlfc2VxdWVuY2VzKCkgKi8KLQkJZW51bSBkcm1fcGFuZWxfb3JpZW50 YXRpb24gb3JpZW50YXRpb247Ci0JfSBkc2k7Ci0KIAlpbnQgY3J0X2RkY19waW47CiAKIAlzdHJ1 Y3QgbGlzdF9oZWFkIGRpc3BsYXlfZGV2aWNlczsKLS0gCjIuMzIuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==