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=-13.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 DF157C433E5 for ; Fri, 17 Jul 2020 21:14: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 B932720717 for ; Fri, 17 Jul 2020 21:14:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B932720717 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 65ED46E248; Fri, 17 Jul 2020 21:14:43 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6BC766E249 for ; Fri, 17 Jul 2020 21:14:42 +0000 (UTC) IronPort-SDR: rkW8UZRgGS+AAhAwpYgthSCnxMiStyrHSQhDVhq4so+dSj+00qFYAvuZ8OHl09ooWOLqiyKEoy ROSEU7knaPpw== X-IronPort-AV: E=McAfee;i="6000,8403,9685"; a="148843962" X-IronPort-AV: E=Sophos;i="5.75,364,1589266800"; d="scan'208";a="148843962" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jul 2020 14:14:41 -0700 IronPort-SDR: mphi4FPARds2ABIJrPfB7iJZKgofg9LPXhursUuWlxasrH3GRYuBm8dBZAVobO3kZnF4Po2yAO DP43ns/1/VXA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,364,1589266800"; d="scan'208";a="286930645" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga006.jf.intel.com with SMTP; 17 Jul 2020 14:14:39 -0700 Received: by stinkbox (sSMTP sendmail emulation); Sat, 18 Jul 2020 00:14:39 +0300 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Sat, 18 Jul 2020 00:13:44 +0300 Message-Id: <20200717211345.26851-20-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200717211345.26851-1-ville.syrjala@linux.intel.com> References: <20200717211345.26851-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 19/20] drm/i915: Complete the gamma/degamma state checking 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" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBuZXcgLmdhbW1hX2VxdWFsKCkgYW5kIC5kZWdhbW1hX2VxdWFsKCkgdmZ1bmNzIHRvIGJlIHVz ZWQKYnkgdGhlIHN0YXRlIGNoZWNrZXIgdG8gdmVyaWZ5IHRoZSBnYW1tYS9kZWdhbW1hIExVVHMu IFdlIG5lZWQKc29tZXdoYXQgY3VzdG9tIGJlaGF2aW91ciBmb3Igc29tZSBwbGF0Zm9ybXMgZHVl IHRvIHNvbWV0aW1lcwpzd2FwcGluZyB0aGUgcm9sZXMgb2YgdGhlIGdhbW1hIGFuZCBkZWdhbW1h IExVVHMgKGR1ZSB0bwpSR0IgbGltaXRlZCBjb2xvciByYW5nZSBvciBZQ2JDciBvdXRwdXQgQ1ND IHVzYWdlKS4gQWxzbyBnbGsKaGFzIGEgc3BlY2lhbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUg Q1NDIGVuYWJsZSBiaXQgYW5kCnRoZSBkZWdhbW1hIExVVCBzbyBpdCBhbHNvIG5lZWRzIGN1c3Rv bWl6ZWQgYmVoYXZpb3VyLgoKV2UgY291bGQgcG9udGlhbGx5IGNvbXB1dGUgdGhlIHN0YXRlIGlu IGEgYmV0dGVyIHdheSB0byBtYWtlIHRoZXNlCnN0YXRlIGNoZWNrIGhhY2tzIHVubmVjZXNzYXJ5 LCBidXQgdGhhdCdzIGdvaW5nIHRvIHJlcXVpcmUgc29tZQphY3R1YWwgdGhvdWdodCBzbyB3ZSds bCBsZWF2ZSBpdCBmb3IgdGhlIGZ1dHVyZS4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jICAgfCA0MzUgKysrKysrKysrKysrKysrLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5oICAgfCAgMTAgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIHwgIDI1ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICAgNyArCiA0IGZpbGVzIGNo YW5nZWQsIDM3OCBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKaW5kZXggZjcxNGM4N2Q4ZTQyLi5jYTZjNjY3 OTM2OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29s b3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKQEAg LTE2MjgsMjYgKzE2MjgsNzEgQEAgc3RhdGljIGludCBpOXh4X2dhbW1hX3ByZWNpc2lvbihjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAl9CiB9CiAKK3N0YXRpYyBi b29sIGlsa19jcnRjX2hhc19kZWdhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQoreworCXJldHVybiBjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgJiYKKwkJKGNy dGNfc3RhdGUtPmNzY19tb2RlICYgQ1NDX1BPU0lUSU9OX0JFRk9SRV9HQU1NQSkgPT0gMDsKK30K Kwogc3RhdGljIGJvb2wgaWxrX2NydGNfaGFzX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogewogCXJldHVybiBjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUg JiYKIAkJKGNydGNfc3RhdGUtPmNzY19tb2RlICYgQ1NDX1BPU0lUSU9OX0JFRk9SRV9HQU1NQSkg IT0gMDsKIH0KIAorc3RhdGljIGludCBpbGtfbHV0X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1h X21vZGUpIHsKKwljYXNlIEdBTU1BX01PREVfTU9ERV84QklUOgorCQlyZXR1cm4gODsKKwljYXNl IEdBTU1BX01PREVfTU9ERV8xMEJJVDoKKwkJcmV0dXJuIDEwOworCWRlZmF1bHQ6CisJCU1JU1NJ TkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsKKwkJcmV0dXJuIDA7CisJfQorfQorCitz dGF0aWMgaW50IGlsa19kZWdhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlpZiAoaWxrX2NydGNfaGFzX2RlZ2FtbWEoY3J0Y19zdGF0 ZSkpCisJCXJldHVybiBpbGtfbHV0X3ByZWNpc2lvbihjcnRjX3N0YXRlKTsKKwllbHNlCisJCXJl dHVybiAwOworfQorCiBzdGF0aWMgaW50IGlsa19nYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7Ci0JaWYgKCFpbGtfY3J0Y19oYXNfZ2Ft bWEoY3J0Y19zdGF0ZSkpCisJaWYgKGlsa19jcnRjX2hhc19nYW1tYShjcnRjX3N0YXRlKSkKKwkJ cmV0dXJuIGlsa19sdXRfcHJlY2lzaW9uKGNydGNfc3RhdGUpOworCWVsc2UKIAkJcmV0dXJuIDA7 Cit9CiAKLQlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpIHsKLQljYXNlIEdBTU1BX01P REVfTU9ERV84QklUOgotCQlyZXR1cm4gODsKLQljYXNlIEdBTU1BX01PREVfTU9ERV8xMEJJVDoK K3N0YXRpYyBpbnQgaXZiX2RlZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQoreworCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgJiYK KwkgICAgY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQpCiAJ CXJldHVybiAxMDsKLQlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSk7CisJZWxzZQorCQlyZXR1cm4gaWxrX2RlZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUp OworfQorCitzdGF0aWMgaW50IGl2Yl9nYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJaWYgKGNydGNfc3RhdGUtPmdhbW1hX2VuYWJs ZSAmJgorCSAgICBjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV9TUExJ VCkKKwkJcmV0dXJuIDEwOworCWVsc2UKKwkJcmV0dXJuIGlsa19nYW1tYV9wcmVjaXNpb24oY3J0 Y19zdGF0ZSk7Cit9CisKK3N0YXRpYyBpbnQgY2h2X2RlZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWlmIChjcnRjX3N0YXRlLT5j Z21fbW9kZSAmIENHTV9QSVBFX01PREVfREVHQU1NQSkKKwkJcmV0dXJuIDE0OworCWVsc2UKIAkJ cmV0dXJuIDA7Ci0JfQogfQogCiBzdGF0aWMgaW50IGNodl9nYW1tYV9wcmVjaXNpb24oY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCkBAIC0xNjU4LDIwICsxNzAzLDIw IEBAIHN0YXRpYyBpbnQgY2h2X2dhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJcmV0dXJuIGk5eHhfZ2FtbWFfcHJlY2lzaW9uKGNydGNf c3RhdGUpOwogfQogCitzdGF0aWMgaW50IGdsa19kZWdhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlpZiAoY3J0Y19zdGF0ZS0+Y3Nj X2VuYWJsZSkKKwkJcmV0dXJuIDE2OworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBp bnQgZ2xrX2dhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIHsKLQlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKKwlpZiAoY3J0Y19z dGF0ZS0+Z2FtbWFfZW5hYmxlKQorCQlyZXR1cm4gaWxrX2x1dF9wcmVjaXNpb24oY3J0Y19zdGF0 ZSk7CisJZWxzZQogCQlyZXR1cm4gMDsKLQotCXN3aXRjaCAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9k ZSkgewotCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Ci0JCXJldHVybiA4OwotCWNhc2UgR0FN TUFfTU9ERV9NT0RFXzEwQklUOgotCQlyZXR1cm4gMTA7Ci0JZGVmYXVsdDoKLQkJTUlTU0lOR19D QVNFKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpOwotCQlyZXR1cm4gMDsKLQl9CiB9CiAKIHN0YXRp YyBib29sIGljbF9jcnRjX2hhc19kZWdhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQpAQCAtMTY4NCw2ICsxNzI5LDE0IEBAIHN0YXRpYyBib29sIGljbF9jcnRj X2hhc19nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAly ZXR1cm4gY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIFBPU1RfQ1NDX0dBTU1BX0VOQUJMRTsKIH0K IAorc3RhdGljIGludCBpY2xfZGVnYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJaWYgKGljbF9jcnRjX2hhc19kZWdhbW1hKGNydGNf c3RhdGUpKQorCQlyZXR1cm4gMTY7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKwogc3RhdGljIGlu dCBpY2xfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogewogCWlmICghaWNsX2NydGNfaGFzX2dhbW1hKGNydGNfc3RhdGUpKQpAQCAtMTcw Miw5NyArMTc1NSwzMTAgQEAgc3RhdGljIGludCBpY2xfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCX0KIH0KIAotaW50IGludGVsX2Nv bG9yX2dldF9nYW1tYV9iaXRfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQotewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwotCi0JaWYgKEhBU19HTUNIKGRldl9wcml2 KSkgewotCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCQlyZXR1cm4gY2h2X2dhbW1h X3ByZWNpc2lvbihjcnRjX3N0YXRlKTsKLQkJZWxzZQotCQkJcmV0dXJuIGk5eHhfZ2FtbWFfcHJl Y2lzaW9uKGNydGNfc3RhdGUpOwotCX0gZWxzZSB7Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDExKQotCQkJcmV0dXJuIGljbF9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7Ci0JCWVs c2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYp KQotCQkJcmV0dXJuIGdsa19nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7Ci0JCWVsc2UgaWYg KElTX0lST05MQUtFKGRldl9wcml2KSkKLQkJCXJldHVybiBpbGtfZ2FtbWFfcHJlY2lzaW9uKGNy dGNfc3RhdGUpOwotCX0KLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgYm9vbCBlcnJfY2hlY2so c3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDEsCi0JCSAgICAgIHN0cnVjdCBkcm1fY29sb3JfbHV0 ICpsdXQyLCB1MzIgZXJyKQorc3RhdGljIGJvb2wgbHV0X2VudHJ5X2VxdWFsKGNvbnN0IHN0cnVj dCBkcm1fY29sb3JfbHV0ICpsdXQxLAorCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0 ICpsdXQyLCB1MzIgZXJyKQogewogCXJldHVybiAoKGFicygobG9uZylsdXQyLT5yZWQgLSBsdXQx LT5yZWQpKSA8PSBlcnIpICYmCiAJCSgoYWJzKChsb25nKWx1dDItPmJsdWUgLSBsdXQxLT5ibHVl KSkgPD0gZXJyKSAmJgogCQkoKGFicygobG9uZylsdXQyLT5ncmVlbiAtIGx1dDEtPmdyZWVuKSkg PD0gZXJyKTsKIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfY29sb3JfbHV0X2VudHJpZXNfZXF1YWwo c3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDEsCi0JCQkJCSAgc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dDIsCi0JCQkJCSAgaW50IGx1dF9zaXplLCB1MzIgZXJyKQorc3RhdGljIGludCBpbnRlbF9j b2xvcl9sdXRfc2l6ZShjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCiB7Ci0J aW50IGk7CisJcmV0dXJuIGJsb2IgPyBkcm1fY29sb3JfbHV0X3NpemUoYmxvYikgOiAwOworfQor CitzdGF0aWMgYm9vbCBpbnRlbF9jb2xvcl9sdXRfc2l6ZXNfZXF1YWwoY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKKwkJCQkJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iMikKK3sKKwlyZXR1cm4gaW50ZWxfY29sb3JfbHV0X3NpemUoYmxvYjEpID09IGlu dGVsX2NvbG9yX2x1dF9zaXplKGJsb2IyKTsKK30KKworc3RhdGljIGJvb2wgaW50ZWxfbHV0X2Vx dWFsKGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsCisJCQkgICAgY29uc3Qg c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMiwKKwkJCSAgICBpbnQgYml0X3ByZWNpc2lv bikKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0MSwgKmx1dDI7CisJaW50IGks IGx1dF9zaXplOworCisJaWYgKCFpbnRlbF9jb2xvcl9sdXRfc2l6ZXNfZXF1YWwoYmxvYjEsIGJs b2IyKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFibG9iMSkKKwkJcmV0dXJuIHRydWU7CisK KwlpZiAoIWJpdF9wcmVjaXNpb24pCisJCXJldHVybiBmYWxzZTsKKworCWx1dF9zaXplID0gZHJt X2NvbG9yX2x1dF9zaXplKGJsb2IxKTsKKwlsdXQxID0gYmxvYjEtPmRhdGE7CisJbHV0MiA9IGJs b2IyLT5kYXRhOwogCiAJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKLQkJaWYgKCFl cnJfY2hlY2soJmx1dDFbaV0sICZsdXQyW2ldLCBlcnIpKQorCQlpZiAoIWx1dF9lbnRyeV9lcXVh bCgmbHV0MVtpXSwgJmx1dDJbaV0sCisJCQkJICAgICAweGZmZmYgPj4gYml0X3ByZWNpc2lvbikp CiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaW50ZWxf Y29sb3JfbHV0X2VxdWFsKHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsCi0JCQkgICBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IyLAotCQkJICAgdTMyIGdhbW1hX21vZGUsIHUz MiBiaXRfcHJlY2lzaW9uKQorc3RhdGljIGJvb2wgaTl4eF9kZWdhbW1hX2VxdWFsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMSwKKwkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTIsCisJCQkgICAgICAgYm9vbCBmYXN0c2V0 KQogewotCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQxLCAqbHV0MjsKLQlpbnQgbHV0X3NpemUx LCBsdXRfc2l6ZTI7Ci0JdTMyIGVycjsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KmRlZ2FtbWFfbHV0MSA9IGNydGNfc3RhdGUxLT5ody5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0MiA9IGNydGNfc3RhdGUyLT5ody5kZWdh bW1hX2x1dDsKIAotCWlmICghYmxvYjEgIT0gIWJsb2IyKQorCS8qIG5vIGRlZ2FtbWEgKi8KKwly ZXR1cm4gIWRlZ2FtbWFfbHV0MSAmJiAhZGVnYW1tYV9sdXQyOworfQorCitzdGF0aWMgYm9vbCBp OXh4X2dhbW1hX2VxdWFsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl MSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUyLAor CQkJICAgICBib29sIGZhc3RzZXQpCit7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpnYW1tYV9sdXQxID0gY3J0Y19zdGF0ZTEtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dDIgPSBjcnRjX3N0YXRlMi0+aHcuZ2FtbWFfbHV0 OworCisJcmV0dXJuIGludGVsX2x1dF9lcXVhbChnYW1tYV9sdXQxLCBnYW1tYV9sdXQyLAorCQkJ ICAgICAgIGk5eHhfZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUxKSk7Cit9CisKK3N0YXRpYyBi b29sIGNodl9kZWdhbW1hX2VxdWFsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlMSwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlMiwKKwkJCSAgICAgIGJvb2wgZmFzdHNldCkKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmRlZ2FtbWFfbHV0MSA9IGNydGNfc3RhdGUxLT5ody5kZWdhbW1hX2x1dDsKKwlj b25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0MiA9IGNydGNfc3RhdGUy LT5ody5kZWdhbW1hX2x1dDsKKworCXJldHVybiBpbnRlbF9sdXRfZXF1YWwoZGVnYW1tYV9sdXQx LCBkZWdhbW1hX2x1dDIsCisJCQkgICAgICAgY2h2X2RlZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3Rh dGUxKSk7Cit9CisKK3N0YXRpYyBib29sIGNodl9nYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUyLAorCQkJICAgIGJvb2wgZmFzdHNldCkKK3sKKwljb25zdCBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dDEgPSBjcnRjX3N0YXRlMS0+aHcuZ2Ft bWFfbHV0OworCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0MiA9IGNy dGNfc3RhdGUyLT5ody5nYW1tYV9sdXQ7CisKKwlyZXR1cm4gaW50ZWxfbHV0X2VxdWFsKGdhbW1h X2x1dDEsIGdhbW1hX2x1dDIsCisJCQkgICAgICAgY2h2X2dhbW1hX3ByZWNpc2lvbihjcnRjX3N0 YXRlMSkpOworfQorCitzdGF0aWMgYm9vbCBpbGtfZGVnYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTIsCisJCQkgICAgICBib29sIGZhc3RzZXQpCit7CisJ Y29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dDEgPSBjcnRjX3N0YXRl Mi0+aHcuZGVnYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdh bW1hX2x1dDIgPSBjcnRjX3N0YXRlMi0+aHcuZGVnYW1tYV9sdXQ7CisKKwlpZiAoIWZhc3RzZXQp IHsKKwkJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQyID0gY3J0Y19z dGF0ZTItPmh3LmdhbW1hX2x1dDsKKworCQkvKgorCQkgKiBGb3IgcmVhZG91dCBjcnRjX3N0YXRl MSBpcyB0aGUgc29mdHdhcmUgc3RhdGUsCisJCSAqIGNydGNfc3RhdGUyIGlzIHRoZSBoYXJkd2Fy ZSBzdGF0ZS4KKwkJICoKKwkJICogT24gSUxLLUJEVyB0aGUgc2luZ2xlIExVVCBtYXkgYXBwZWFy IGJlZm9yZSBvciBhZnRlciB0aGUKKwkJICogQ1NDIGR1ZSB0byB2YXJpb3VzIHJlYXNvbnMuIFJl YWRvdXQgZG9lcyBub3Qga25vdyB3aGV0aGVyCisJCSAqIHRoZSB1c2VyIHN1cHBsaWVkIGl0IGFz IGEgZ2FtbWEgTFVUIG9yIGRlZ2FtbWEgTFVULiBJZiB0aGUKKwkJICogc29mdHdhcmUgYW5kIGhh cmR3YXJlIHN0YXRlcyBsb29rIGluY29uc2lzdGVudCBhc3N1bWUKKwkJICogcmVhZG91dCBnb3Qg dGhpbmdzIHRoZSB3cm9uZyB3YXkgYXJvdW5kLgorCQkgKgorCQkgKiBGSVhNRSB0aGluayBhYm91 dCBhc3NpZ25pbmcgdGhlc2UgY29uc2lzdGVudGx5IGZyb20gdGhlIGhhcmR3YXJlCisJCSAqIFBP ViBhbHJlYWR5IHdoZW4gY29tcHV0aW5nIHRoZSBzdGF0ZS4gV291bGQgYXZvaWQgdGhpcyBoaWRl b3VzCisJCSAqIGhhY2ssIGJ1dCBwb3NzaWJseSBub3QgZW50aXJlbHkgdHJpdmlhbCB0byBkbyBz aW5jZSB3ZSBjdXJyZW50bHkKKwkJICoganVzdCBibGluZGx5IGNvcHkgdGhvc2UgZnJvbSB0aGUg dWFwaSBzdGF0ZS4KKwkJICovCisJCWlmICghIWRlZ2FtbWFfbHV0MSAhPSAhIWRlZ2FtbWFfbHV0 MikKKwkJCXN3YXAoZ2FtbWFfbHV0MiwgZGVnYW1tYV9sdXQyKTsKKwl9CisKKwlyZXR1cm4gaW50 ZWxfbHV0X2VxdWFsKGRlZ2FtbWFfbHV0MSwgZGVnYW1tYV9sdXQyLAorCQkJICAgICAgIGlsa19k ZWdhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRlMSkpOworfQorCitzdGF0aWMgYm9vbCBpbGtfZ2Ft bWFfZXF1YWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUxLAorCQkJ ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwKKwkJCSAgICBi b29sIGZhc3RzZXQpCit7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9s dXQxID0gY3J0Y19zdGF0ZTEtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmdhbW1hX2x1dDIgPSBjcnRjX3N0YXRlMi0+aHcuZ2FtbWFfbHV0OworCisJaWYg KCFmYXN0c2V0KSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9s dXQyID0gY3J0Y19zdGF0ZTItPmh3LmRlZ2FtbWFfbHV0OworCisJCS8qCisJCSAqIEZvciByZWFk b3V0IGNydGNfc3RhdGUxIGlzIHRoZSBzb2Z0d2FyZSBzdGF0ZSwKKwkJICogY3J0Y19zdGF0ZTIg aXMgdGhlIGhhcmR3YXJlIHN0YXRlLgorCQkgKgorCQkgKiBPbiBJTEstQkRXIHRoZSBzaW5nbGUg TFVUIG1heSBhcHBlYXIgYmVmb3JlIG9yIGFmdGVyIHRoZQorCQkgKiBDU0MgZHVlIHRvIHZhcmlv dXMgcmVhc29ucy4gUmVhZG91dCBkb2VzIG5vdCBrbm93IHdoZXRoZXIKKwkJICogdGhlIHVzZXIg c3VwcGxpZWQgaXQgYXMgYSBnYW1tYSBMVVQgb3IgZGVnYW1tYSBMVVQuIElmIHRoZQorCQkgKiBz b2Z0d2FyZSBhbmQgaGFyZHdhcmUgc3RhdGVzIGxvb2sgaW5jb25zaXN0ZW50IGFzc3VtZQorCQkg KiByZWFkb3V0IGdvdCB0aGluZ3MgdGhlIHdyb25nIHdheSBhcm91bmQuCisJCSAqCisJCSAqIEZJ WE1FIHRoaW5rIGFib3V0IGFzc2lnbmluZyB0aGVzZSBjb25zaXN0ZW50bHkgZnJvbSB0aGUgaGFy ZHdhcmUKKwkJICogUE9WIGFscmVhZHkgd2hlbiBjb21wdXRpbmcgdGhlIHN0YXRlLiBXb3VsZCBh dm9pZCB0aGlzIGhpZGVvdXMKKwkJICogaGFjaywgYnV0IHBvc3NpYmx5IG5vdCBlbnRpcmVseSB0 cml2aWFsIHRvIGRvIHNpbmNlIHdlIGN1cnJlbnRseQorCQkgKiBqdXN0IGJsaW5kbHkgY29weSB0 aG9zZSBmcm9tIHRoZSB1YXBpIHN0YXRlLgorCQkgKi8KKwkJaWYgKCEhZ2FtbWFfbHV0MSAhPSAh IWdhbW1hX2x1dDIpCisJCQlzd2FwKGdhbW1hX2x1dDIsIGRlZ2FtbWFfbHV0Mik7CisJfQorCisJ cmV0dXJuIGludGVsX2x1dF9lcXVhbChnYW1tYV9sdXQxLCBnYW1tYV9sdXQyLAorCQkJICAgICAg IGlsa19nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZTEpKTsKK30KKworc3RhdGljIGJvb2wgaXZi X2x1dF9zcGxpdF9lcXVhbChjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IxLAor CQkJCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjIsCisJCQkJaW50IGJpdF9w cmVjaXNpb24pCit7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDEsICpsdXQyOwor CWludCBpLCBsdXRfc2l6ZSwgaHdfbHV0X3NpemU7CisKKwlpZiAoIWludGVsX2NvbG9yX2x1dF9z aXplc19lcXVhbChibG9iMSwgYmxvYjIpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoIWJsb2Ix KQogCQlyZXR1cm4gdHJ1ZTsKIAotCWx1dF9zaXplMSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9i MSk7Ci0JbHV0X3NpemUyID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IyKTsKLQotCS8qIGNoZWNr IHN3IGFuZCBodyBsdXQgc2l6ZSAqLwotCWlmIChsdXRfc2l6ZTEgIT0gbHV0X3NpemUyKQorCWlm ICghYml0X3ByZWNpc2lvbikKIAkJcmV0dXJuIGZhbHNlOwogCisJbHV0X3NpemUgPSBkcm1fY29s b3JfbHV0X3NpemUoYmxvYjEpOworCWh3X2x1dF9zaXplID0gaXZiX2x1dF8xMF9zaXplKFBBTF9Q UkVDX1NQTElUX01PREUpOwogCWx1dDEgPSBibG9iMS0+ZGF0YTsKIAlsdXQyID0gYmxvYjItPmRh dGE7CiAKLQllcnIgPSAweGZmZmYgPj4gYml0X3ByZWNpc2lvbjsKKwlmb3IgKGkgPSAwOyBpIDwg aHdfbHV0X3NpemU7IGkrKykgeworCQkvKiBXZSBkaXNjYXJkIGhhbGYgdGhlIHVzZXIgZW50cmll cyBpbiBzcGxpdCBnYW1tYSBtb2RlICovCisJCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpl bnRyeTEgPQorCQkJJmx1dDFbaSAqIChsdXRfc2l6ZSAtIDEpIC8gKGh3X2x1dF9zaXplIC0gMSld OworCQljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnkyID0KKwkJCSZsdXQyW2kgKiAo bHV0X3NpemUgLSAxKSAvIChod19sdXRfc2l6ZSAtIDEpXTsKIAotCS8qIGNoZWNrIHN3IGFuZCBo dyBsdXQgZW50cnkgdG8gYmUgZXF1YWwgKi8KLQlzd2l0Y2ggKGdhbW1hX21vZGUgJiBHQU1NQV9N T0RFX01PREVfTUFTSykgewotCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Ci0JY2FzZSBHQU1N QV9NT0RFX01PREVfMTBCSVQ6Ci0JCWlmICghaW50ZWxfY29sb3JfbHV0X2VudHJpZXNfZXF1YWwo bHV0MSwgbHV0MiwKLQkJCQkJCSAgIGx1dF9zaXplMiwgZXJyKSkKKwkJaWYgKCFsdXRfZW50cnlf ZXF1YWwoZW50cnkxLCBlbnRyeTIsIDB4ZmZmZiA+PiBiaXRfcHJlY2lzaW9uKSkKIAkJCXJldHVy biBmYWxzZTsKLQkJYnJlYWs7Ci0JY2FzZSBHQU1NQV9NT0RFX01PREVfMTJCSVRfTVVMVElfU0VH TUVOVEVEOgotCQlpZiAoIWludGVsX2NvbG9yX2x1dF9lbnRyaWVzX2VxdWFsKGx1dDEsIGx1dDIs Ci0JCQkJCQkgICA5LCBlcnIpKQotCQkJcmV0dXJuIGZhbHNlOwotCQlicmVhazsKLQlkZWZhdWx0 OgotCQlNSVNTSU5HX0NBU0UoZ2FtbWFfbW9kZSk7Ci0JCXJldHVybiBmYWxzZTsKIAl9CiAKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgaXZiX2RlZ2FtbWFfZXF1YWwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUxLAorCQkJICAgICAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUyLAorCQkJICAgICAgYm9vbCBmYXN0c2V0KQor eworCWlmIChjcnRjX3N0YXRlMS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQp IHsKKwkJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dDEgPSBjcnRj X3N0YXRlMS0+aHcuZGVnYW1tYV9sdXQ7CisJCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqZGVnYW1tYV9sdXQyID0gY3J0Y19zdGF0ZTItPmh3LmRlZ2FtbWFfbHV0OworCisJCXJldHVy biBpdmJfbHV0X3NwbGl0X2VxdWFsKGRlZ2FtbWFfbHV0MSwgZGVnYW1tYV9sdXQyLAorCQkJCQkg ICBpdmJfZGVnYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZTEpKTsKKwl9IGVsc2UgeworCQlyZXR1 cm4gaWxrX2RlZ2FtbWFfZXF1YWwoY3J0Y19zdGF0ZTEsIGNydGNfc3RhdGUyLCBmYXN0c2V0KTsK Kwl9Cit9CisKK3N0YXRpYyBib29sIGl2Yl9nYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUyLAorCQkJICAgIGJvb2wgZmFzdHNldCkKK3sKKwlpZiAoY3J0Y19z dGF0ZTEtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFX1NQTElUKSB7CisJCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0MSA9IGNydGNfc3RhdGUxLT5ody5nYW1t YV9sdXQ7CisJCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0MiA9IGNy dGNfc3RhdGUyLT5ody5nYW1tYV9sdXQ7CisKKwkJcmV0dXJuIGl2Yl9sdXRfc3BsaXRfZXF1YWwo Z2FtbWFfbHV0MSwgZ2FtbWFfbHV0MiwKKwkJCQkJICAgaXZiX2dhbW1hX3ByZWNpc2lvbihjcnRj X3N0YXRlMSkpOworCX0gZWxzZSB7CisJCXJldHVybiBpbGtfZ2FtbWFfZXF1YWwoY3J0Y19zdGF0 ZTEsIGNydGNfc3RhdGUyLCBmYXN0c2V0KTsKKwl9Cit9CisKK3N0YXRpYyBib29sIGdsa19kZWdh bW1hX2VxdWFsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMSwKKwkJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwKKwkJCSAg ICAgIGJvb2wgZmFzdHNldCkKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRl Z2FtbWFfbHV0MSA9IGNydGNfc3RhdGUxLT5ody5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0MiA9IGNydGNfc3RhdGUyLT5ody5kZWdhbW1h X2x1dDsKKworCWlmICghZmFzdHNldCkgeworCQkvKgorCQkgKiBGb3IgcmVhZG91dCBjcnRjX3N0 YXRlMSBpcyB0aGUgc29mdHdhcmUgc3RhdGUsCisJCSAqIGNydGNfc3RhdGUyIGlzIHRoZSBoYXJk d2FyZSBzdGF0ZS4KKwkJICoKKwkJICogUmVhZG91dCBjYW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNl IGJldHdlZW4gYW4gYWN0dWFsCisJCSAqIGRlZ2FtbWEgTFVUIGFuZCB0aGUgbGluZWFyIGRlZ2Ft bWEgTFVUIHdlIGhhdmUgdG8gbG9hZAorCQkgKiB3aGVuZXZlciB0aGUgcGlwZSBDU0MgaXMgYWN0 aXZlLiBJZ25vcmUgdGhlIGhhcmR3YXJlCisJCSAqIGRlZ2FtbWEgTFVUIHdoZW4gd2UgZG9uJ3Qg aGF2ZSBhIHNvZnR3YXJlIGRlZ2FtbWEgTFVULgorCQkgKgorCQkgKiBGSVhNRSB0aGluayBhYm91 dCBhc3NpZ25pbmcgYW4gaW50ZXJuYWwgbGluZWFyIGx1dCBhbHJlYWR5CisJCSAqIHdoZW4gY29t cHV0aW5nIHRoZSBzdGF0ZS4gV291bGQgYXZvaWQgdGhpcyBoaWRlb3VzIGhhY2ssCisJCSAqIGJ1 dCBwb3NzaWJseSBub3QgZW50aXJlbHkgdHJpdmlhbCB0byBkbyBzaW5jZSB3ZSBjdXJyZW50bHkK KwkJICoganVzdCBibGluZGx5IGNvcHkgdGhpcyBmcm9tIHRoZSB1YXBpIHN0YXRlLgorCQkgKi8K KwkJaWYgKCFkZWdhbW1hX2x1dDEpCisJCQlkZWdhbW1hX2x1dDIgPSBOVUxMOworCX0KKworCXJl dHVybiBpbnRlbF9sdXRfZXF1YWwoZGVnYW1tYV9sdXQxLCBkZWdhbW1hX2x1dDIsCisJCQkgICAg ICAgZ2xrX2RlZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUxKSk7Cit9CisKK3N0YXRpYyBib29s IGdsa19nYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTEsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUyLAor CQkJICAgIGJvb2wgZmFzdHNldCkKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KmdhbW1hX2x1dDEgPSBjcnRjX3N0YXRlMS0+aHcuZ2FtbWFfbHV0OworCWNvbnN0IHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0MiA9IGNydGNfc3RhdGUyLT5ody5nYW1tYV9sdXQ7 CisKKwlyZXR1cm4gaW50ZWxfbHV0X2VxdWFsKGdhbW1hX2x1dDEsIGdhbW1hX2x1dDIsCisJCQkg ICAgICAgZ2xrX2dhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRlMSkpOworfQorCitzdGF0aWMgYm9v bCBpY2xfZGVnYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTEsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTIsCisJCQkgICAgICBib29sIGZhc3RzZXQpCit7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpkZWdhbW1hX2x1dDEgPSBjcnRjX3N0YXRlMS0+aHcuZGVnYW1tYV9sdXQ7CisJY29u c3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dDIgPSBjcnRjX3N0YXRlMi0+ aHcuZGVnYW1tYV9sdXQ7CisKKwlyZXR1cm4gaW50ZWxfbHV0X2VxdWFsKGRlZ2FtbWFfbHV0MSwg ZGVnYW1tYV9sdXQyLAorCQkJICAgICAgIGljbF9kZWdhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRl MSkpOworfQorCitzdGF0aWMgYm9vbCBpY2xfZ2FtbWFfZXF1YWwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUxLAorCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlMiwKKwkJCSAgICBib29sIGZhc3RzZXQpCit7CisJY29uc3Qgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQxID0gY3J0Y19zdGF0ZTEtPmh3LmdhbW1h X2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dDIgPSBjcnRj X3N0YXRlMi0+aHcuZ2FtbWFfbHV0OworCisJcmV0dXJuIGludGVsX2x1dF9lcXVhbChnYW1tYV9s dXQxLCBnYW1tYV9sdXQyLAorCQkJICAgICAgIGljbF9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0 ZTEpKTsKK30KKworYm9vbCBpbnRlbF9jb2xvcl9kZWdhbW1hX2x1dF9lcXVhbChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsCisJCQkJICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUyLAorCQkJCSAgIGJvb2wgZmFzdHNldCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUxLT51 YXBpLmNydGMtPmRldik7CisKKwlyZXR1cm4gZGV2X3ByaXYtPmRpc3BsYXkuZGVnYW1tYV9lcXVh bChjcnRjX3N0YXRlMSwgY3J0Y19zdGF0ZTIsIGZhc3RzZXQpOworfQorCitib29sIGludGVsX2Nv bG9yX2dhbW1hX2x1dF9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTEsCisJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwK KwkJCQkgYm9vbCBmYXN0c2V0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Y19zdGF0ZTEtPnVhcGkuY3J0Yy0+ZGV2KTsKKworCXJldHVybiBkZXZf cHJpdi0+ZGlzcGxheS5nYW1tYV9lcXVhbChjcnRjX3N0YXRlMSwgY3J0Y19zdGF0ZTIsIGZhc3Rz ZXQpOworfQorCiBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICppOXh4X3JlYWRfbHV0 Xzgoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CkBAIC0yMjg5LDE2ICsyNTU1LDIy IEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJCWRl dl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IGk5eHhfY29sb3JfY29tbWl0OwogCQkJZGV2 X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gY2h2X2xvYWRfbHV0czsKIAkJCWRldl9wcml2LT5k aXNwbGF5LnJlYWRfbHV0cyA9IGNodl9yZWFkX2x1dHM7CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5n YW1tYV9lcXVhbCA9IGNodl9nYW1tYV9lcXVhbDsKKwkJCWRldl9wcml2LT5kaXNwbGF5LmRlZ2Ft bWFfZXF1YWwgPSBjaHZfZGVnYW1tYV9lcXVhbDsKIAkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpIHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NoZWNrID0gaTl4eF9j b2xvcl9jaGVjazsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IGk5eHhfY29s b3JfY29tbWl0OwogCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTk2NV9sb2FkX2x1 dHM7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMgPSBpOTY1X3JlYWRfbHV0czsKKwkJ CWRldl9wcml2LT5kaXNwbGF5LmdhbW1hX2VxdWFsID0gaTl4eF9nYW1tYV9lcXVhbDsKKwkJCWRl dl9wcml2LT5kaXNwbGF5LmRlZ2FtbWFfZXF1YWwgPSBpOXh4X2RlZ2FtbWFfZXF1YWw7CiAJCX0g ZWxzZSB7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jaGVjayA9IGk5eHhfY29sb3JfY2hl Y2s7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQgPSBpOXh4X2NvbG9yX2NvbW1p dDsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9hZF9sdXRzOwogCQkJ ZGV2X3ByaXYtPmRpc3BsYXkucmVhZF9sdXRzID0gaTl4eF9yZWFkX2x1dHM7CisJCQlkZXZfcHJp di0+ZGlzcGxheS5nYW1tYV9lcXVhbCA9IGk5eHhfZ2FtbWFfZXF1YWw7CisJCQlkZXZfcHJpdi0+ ZGlzcGxheS5kZWdhbW1hX2VxdWFsID0gaTl4eF9kZWdhbW1hX2VxdWFsOwogCQl9CiAJfSBlbHNl IHsKIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCkBAIC0yMzIwLDE5ICsyNTkyLDMw IEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRf bHV0cyA9IGljbF9sb2FkX2x1dHM7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMgPSBp Y2xfcmVhZF9sdXRzOworCQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2FtbWFfZXF1YWwgPSBpY2xfZ2Ft bWFfZXF1YWw7CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5kZWdhbW1hX2VxdWFsID0gaWNsX2RlZ2Ft bWFfZXF1YWw7CiAJCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VN SU5JTEFLRShkZXZfcHJpdikpIHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGds a19sb2FkX2x1dHM7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMgPSBnbGtfcmVhZF9s dXRzOworCQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2FtbWFfZXF1YWwgPSBnbGtfZ2FtbWFfZXF1YWw7 CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5kZWdhbW1hX2VxdWFsID0gZ2xrX2RlZ2FtbWFfZXF1YWw7 CiAJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7CiAJCQlkZXZfcHJpdi0+ ZGlzcGxheS5sb2FkX2x1dHMgPSBiZHdfbG9hZF9sdXRzOwogCQkJZGV2X3ByaXYtPmRpc3BsYXku cmVhZF9sdXRzID0gYmR3X3JlYWRfbHV0czsKKwkJCWRldl9wcml2LT5kaXNwbGF5LmdhbW1hX2Vx dWFsID0gaXZiX2dhbW1hX2VxdWFsOworCQkJZGV2X3ByaXYtPmRpc3BsYXkuZGVnYW1tYV9lcXVh bCA9IGl2Yl9kZWdhbW1hX2VxdWFsOwogCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNykgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaXZiX2xvYWRfbHV0czsK IAkJCWRldl9wcml2LT5kaXNwbGF5LnJlYWRfbHV0cyA9IGl2Yl9yZWFkX2x1dHM7CisJCQlkZXZf cHJpdi0+ZGlzcGxheS5nYW1tYV9lcXVhbCA9IGl2Yl9nYW1tYV9lcXVhbDsKKwkJCWRldl9wcml2 LT5kaXNwbGF5LmRlZ2FtbWFfZXF1YWwgPSBpdmJfZGVnYW1tYV9lcXVhbDsKIAkJfSBlbHNlIHsK IAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGlsa19sb2FkX2x1dHM7CiAJCQlkZXZf cHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMgPSBpbGtfcmVhZF9sdXRzOworCQkJZGV2X3ByaXYtPmRp c3BsYXkuZ2FtbWFfZXF1YWwgPSBpbGtfZ2FtbWFfZXF1YWw7CisJCQlkZXZfcHJpdi0+ZGlzcGxh eS5kZWdhbW1hX2VxdWFsID0gaWxrX2RlZ2FtbWFfZXF1YWw7CiAJCX0KKwogCX0KIAogCWRybV9j cnRjX2VuYWJsZV9jb2xvcl9tZ210KCZjcnRjLT5iYXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jb2xvci5oCmluZGV4IDE3MzcyN2FhYTI0ZC4uMDc5ZWE5MGMyMmM4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5oCkBAIC0xNyw5ICsx NywxMSBAQCBpbnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpOwogdm9pZCBpbnRlbF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpOwogdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogdm9pZCBpbnRlbF9jb2xvcl9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKLWludCBpbnRl bF9jb2xvcl9nZXRfZ2FtbWFfYml0X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSk7Ci1ib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmJsb2IxLAotCQkJICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpi bG9iMiwKLQkJCSAgIHUzMiBnYW1tYV9tb2RlLCB1MzIgYml0X3ByZWNpc2lvbik7Citib29sIGlu dGVsX2NvbG9yX2dhbW1hX2x1dF9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTEsCisJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlMiwKKwkJCQkgYm9vbCBmYXN0c2V0KTsKK2Jvb2wgaW50ZWxfY29sb3JfZGVnYW1tYV9sdXRf ZXF1YWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUxLAorCQkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwKKwkJCQkgICBib29s IGZhc3RzZXQpOwogCiAjZW5kaWYgLyogX19JTlRFTF9DT0xPUl9IX18gKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggOTI3OWRmNzc1N2ZjLi5l ODBiNGNkOGVlYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jCkBAIC0xMzYzNSw3ICsxMzYzNSw2IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3VycmVudF9jb25maWctPnVhcGku Y3J0Yy0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlw ZV9jb25maWctPnVhcGkuY3J0Yyk7CiAJYm9vbCByZXQgPSB0cnVlOwotCXUzMiBicF9nYW1tYSA9 IDA7CiAJYm9vbCBmaXh1cF9pbmhlcml0ZWQgPSBmYXN0c2V0ICYmCiAJCWN1cnJlbnRfY29uZmln LT5pbmhlcml0ZWQgJiYgIXBpcGVfY29uZmlnLT5pbmhlcml0ZWQ7CiAKQEAgLTEzNzk4LDIxICsx Mzc5NywxMCBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKIAl9IFwKIH0gd2hpbGUgKDApCiAKLSNkZWZpbmUg UElQRV9DT05GX0NIRUNLX0NPTE9SX0xVVChuYW1lMSwgbmFtZTIsIGJpdF9wcmVjaXNpb24pIGRv IHsgXAotCWlmIChjdXJyZW50X2NvbmZpZy0+bmFtZTEgIT0gcGlwZV9jb25maWctPm5hbWUxKSB7 IFwKLQkJcGlwZV9jb25maWdfbWlzbWF0Y2goZmFzdHNldCwgY3J0YywgX19zdHJpbmdpZnkobmFt ZTEpLCBcCi0JCQkJIihleHBlY3RlZCAlaSwgZm91bmQgJWksIHdvbid0IGNvbXBhcmUgbHV0IHZh bHVlcykiLCBcCi0JCQkJY3VycmVudF9jb25maWctPm5hbWUxLCBcCi0JCQkJcGlwZV9jb25maWct Pm5hbWUxKTsgXAotCQlyZXQgPSBmYWxzZTtcCi0JfSBlbHNlIHsgXAotCQlpZiAoIWludGVsX2Nv bG9yX2x1dF9lcXVhbChjdXJyZW50X2NvbmZpZy0+bmFtZTIsIFwKLQkJCQkJcGlwZV9jb25maWct Pm5hbWUyLCBwaXBlX2NvbmZpZy0+bmFtZTEsIFwKLQkJCQkJYml0X3ByZWNpc2lvbikpIHsgXAot CQkJcGlwZV9jb25maWdfbWlzbWF0Y2goZmFzdHNldCwgY3J0YywgX19zdHJpbmdpZnkobmFtZTIp LCBcCi0JCQkJCSJod19zdGF0ZSBkb2Vzbid0IG1hdGNoIHN3X3N0YXRlIik7IFwKLQkJCXJldCA9 IGZhbHNlOyBcCi0JCX0gXAorI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQ09MT1JfTFVUKG5hbWUp IGRvIHsgXAorCWlmICghaW50ZWxfY29sb3JfIyNuYW1lIyNfZXF1YWwoY3VycmVudF9jb25maWcs IHBpcGVfY29uZmlnLCBmYXN0c2V0KSkgeyBcCisJCXBpcGVfY29uZmlnX21pc21hdGNoKGZhc3Rz ZXQsIGNydGMsICJody4iIF9fc3RyaW5naWZ5KG5hbWUpLCAiICIpOyBcCisJCXJldCA9IGZhbHNl OyBcCiAJfSBcCiB9IHdoaWxlICgwKQogCkBAIC0xMzkxOCw5ICsxMzkwNiw4IEBAIGludGVsX3Bp cGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRf Y29uZmlnLAogCQlQSVBFX0NPTkZfQ0hFQ0tfSShsaW5ldGltZSk7CiAJCVBJUEVfQ09ORl9DSEVD S19JKGlwc19saW5ldGltZSk7CiAKLQkJYnBfZ2FtbWEgPSBpbnRlbF9jb2xvcl9nZXRfZ2FtbWFf Yml0X3ByZWNpc2lvbihwaXBlX2NvbmZpZyk7Ci0JCWlmIChicF9nYW1tYSkKLQkJCVBJUEVfQ09O Rl9DSEVDS19DT0xPUl9MVVQoZ2FtbWFfbW9kZSwgaHcuZ2FtbWFfbHV0LCBicF9nYW1tYSk7CisJ CVBJUEVfQ09ORl9DSEVDS19DT0xPUl9MVVQoZ2FtbWFfbHV0KTsKKwkJUElQRV9DT05GX0NIRUNL X0NPTE9SX0xVVChkZWdhbW1hX2x1dCk7CiAJfQogCiAJUElQRV9DT05GX0NIRUNLX0JPT0woZG91 YmxlX3dpZGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZTRmN2Y2NTE4OTQ1Li41NGQy MjRiZTI1NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0 cnVjdCBzZHZvX2RldmljZV9tYXBwaW5nIHsKIAl1OCBkZGNfcGluOwogfTsKIAorc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iOwogc3RydWN0IGludGVsX2Nvbm5lY3RvcjsKIHN0cnVjdCBpbnRlbF9l bmNvZGVyOwogc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKQEAgLTMzNCw2ICszMzUsMTIgQEAg c3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3MgewogCSAqLwogCXZvaWQgKCpsb2FkX2x1dHMp KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIAl2b2lkICgqcmVh ZF9sdXRzKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CisJYm9vbCAoKmdh bW1hX2VxdWFsKShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsCisJ CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUyLAorCQkJICAg IGJvb2wgZmFzdHNldCk7CisJYm9vbCAoKmRlZ2FtbWFfZXF1YWwpKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMSwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlMiwKKwkJCSAgICAgIGJvb2wgZmFzdHNldCk7CiB9OwogCiBz dHJ1Y3QgaW50ZWxfY3NyIHsKLS0gCjIuMjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==